diff --git a/toolchain/check/import_ref.cpp b/toolchain/check/import_ref.cpp index 6006250d40ef..704a3ec5d1e7 100644 --- a/toolchain/check/import_ref.cpp +++ b/toolchain/check/import_ref.cpp @@ -315,20 +315,12 @@ class ImportContext { } auto local_types() -> SemIR::TypeStore& { return local_ir().types(); } - // Add a generic that has been partially imported but needs to be finished. - auto AddPendingGeneric(PendingGeneric pending) -> void { - pending_generics_.push_back(pending); - } - // Add a specific that has been partially imported but needs to be finished. auto AddPendingSpecific(PendingSpecific pending) -> void { pending_specifics_.push_back(pending); } protected: - auto pending_generics() -> llvm::SmallVector& { - return pending_generics_; - } auto pending_specifics() -> llvm::SmallVector& { return pending_specifics_; } @@ -342,8 +334,6 @@ class ImportContext { // can probably be removed entirely if we stop importing generic eval blocks // and instead evaluate them directly in the imported IR. - // Generics that we have partially imported but not yet finished importing. - llvm::SmallVector pending_generics_; // Specifics that we have partially imported but not yet finished importing. llvm::SmallVector pending_specifics_; }; @@ -461,8 +451,8 @@ class ImportRefResolver : public ImportContext { auto GetLocalConstantValueOrPush(SemIR::InstId inst_id) -> SemIR::ConstantId; private: - // A step in work_stack_. - struct Work { + // An instruction to import. + struct InstWork { // The instruction to work on. SemIR::InstId inst_id; // Whether this work item set the constant value for the instruction and @@ -470,6 +460,12 @@ class ImportRefResolver : public ImportContext { bool retry_with_constant_value = false; }; + // A generic to import. + struct GenericWork { + SemIR::GenericId import_id; + SemIR::GenericId local_id; + }; + // The constant found by FindResolvedConstId. struct ResolvedConstId { // The constant for the instruction. `None` if not yet resolved. @@ -494,7 +490,7 @@ class ImportRefResolver : public ImportContext { auto PerformPendingWork() -> void; - llvm::SmallVector work_stack_; + llvm::SmallVector> work_stack_; // The size of work_stack_ at the start of resolving the current instruction. size_t initial_work_ = 0; }; @@ -799,7 +795,8 @@ struct GenericData { }; } // namespace -// Gets a local version of the data associated with a generic. +// Gets a local version of the data associated with a generic. This is processed +// through `ResolveResult::FinishGenericOrDone`. static auto GetLocalGenericData(ImportRefResolver& resolver, SemIR::GenericId import_generic_id) -> GenericData { @@ -827,11 +824,36 @@ static auto GetLocalGenericData(ImportRefResolver& resolver, return generic_data; } -// Adds the given local generic data to the given generic. -static auto SetGenericData(ImportContext& context, - SemIR::GenericId import_generic_id, - SemIR::GenericId new_generic_id, - const GenericData& generic_data) -> void { +// Rebuilds an eval block and sets locations. +// TODO: Import the generic eval block rather than calling +// RebuildGenericEvalBlock to rebuild it. +static auto ResolveLocalEvalBlock(ImportContext& context, + SemIR::InstBlockId import_block_id, + llvm::ArrayRef local_block, + SemIR::GenericId generic_id, + SemIR::GenericInstIndex::Region region) + -> SemIR::InstBlockId { + auto eval_block_id = RebuildGenericEvalBlock(context.local_context(), + generic_id, region, local_block); + + // Set the locations of the instructions in the inst block to match those of + // the imported instructions. + for (auto [import_inst_id, local_inst_id] : + llvm::zip_equal(context.import_inst_blocks().Get(import_block_id), + context.local_inst_blocks().Get(eval_block_id))) { + auto import_ir_inst_id = AddImportIRInst(context, import_inst_id); + context.local_insts().SetLocId(local_inst_id, import_ir_inst_id); + } + return eval_block_id; +} + +// Adds the given local generic data to the given generic. This should only be +// called by `ResolveResult`. +static auto SetGenericDataForResolveResult(ImportContext& context, + SemIR::GenericId import_generic_id, + SemIR::GenericId new_generic_id, + const GenericData& generic_data) + -> void { if (!import_generic_id.has_value()) { return; } @@ -852,16 +874,46 @@ static auto SetGenericData(ImportContext& context, } new_generic.bindings_id = context.local_inst_blocks().Add(new_bindings); - // TODO: Import the generic eval block rather than calling - // RebuildGenericEvalBlock to rebuild it so that order doesn't matter. - new_generic.decl_block_id = RebuildGenericEvalBlock( - context.local_context(), new_generic_id, - SemIR::GenericInstIndex::Region::Declaration, generic_data.decl_block); + new_generic.decl_block_id = ResolveLocalEvalBlock( + context, import_generic.decl_block_id, generic_data.decl_block, + new_generic_id, SemIR::GenericInstIndex::Region::Declaration); +} - // Track that we need to fill in the remaining information in - // FinishPendingGeneric. - context.AddPendingGeneric( - {.import_id = import_generic_id, .local_id = new_generic_id}); +// Given a generic that's gone through the initial setup with `GenericData`, +// finish the import. +static auto TryFinishGeneric(ImportRefResolver& resolver, + SemIR::GenericId import_generic_id, + SemIR::GenericId local_generic_id) -> bool { + const auto& import_generic = + resolver.import_generics().Get(import_generic_id); + + llvm::SmallVector definition_block; + if (import_generic.definition_block_id.has_value()) { + definition_block = + GetLocalInstBlockContents(resolver, import_generic.definition_block_id); + } + + if (resolver.HasNewWork()) { + return false; + } + + auto& local_generic = resolver.local_generics().Get(local_generic_id); + CARBON_CHECK(!local_generic.self_specific_id.has_value(), + "Currently assuming we can't find a GenericId multiple ways"); + + // TODO: Consider getting this through a constant. + local_generic.self_specific_id = + MakeSelfSpecific(resolver.local_context(), + SemIR::LocId(local_generic.decl_id), local_generic_id); + resolver.AddPendingSpecific({.import_id = import_generic.self_specific_id, + .local_id = local_generic.self_specific_id}); + + if (import_generic.definition_block_id.has_value()) { + local_generic.definition_block_id = ResolveLocalEvalBlock( + resolver, import_generic.definition_block_id, definition_block, + local_generic_id, SemIR::GenericInstIndex::Region::Definition); + } + return true; } // Gets a local constant value corresponding to an imported generic ID. May @@ -1312,6 +1364,10 @@ struct ResolveResult { // Whether resolution has been attempted once and needs to be retried. bool retry = false; + // If a generic needs to be resolved, the generic information. + SemIR::GenericId import_generic_id = SemIR::GenericId::None; + SemIR::GenericId local_generic_id = SemIR::GenericId::None; + // Produces a resolve result that tries resolving this instruction again. If // `const_id` is specified, then this is the end of the second phase, and the // constant value will be passed to the next resolution attempt. Otherwise, @@ -1340,6 +1396,27 @@ struct ResolveResult { return Done(const_id); } + // If there's no generic, this is equivalent to `Done`. If there is a generic, + // it's still done, but the fetched generic data is processed and the generic + // is enqueued for further work. + static auto FinishGenericOrDone(ImportRefResolver& resolver, + SemIR::ConstantId const_id, + SemIR::InstId decl_id, + SemIR::GenericId import_generic_id, + SemIR::GenericId local_generic_id, + GenericData generic_data) -> ResolveResult { + if (!import_generic_id.has_value()) { + return Done(const_id, decl_id); + } + + SetGenericDataForResolveResult(resolver, import_generic_id, + local_generic_id, generic_data); + return {.const_id = const_id, + .decl_id = decl_id, + .import_generic_id = import_generic_id, + .local_generic_id = local_generic_id}; + } + // Adds `inst` to the local context as a deduplicated constant and returns a // successful `ResolveResult`. Requires that there is no new work. // @@ -1514,9 +1591,9 @@ static auto TryResolveTypedInst(ImportRefResolver& resolver, // Populate the entity. new_assoc_const.parent_scope_id = parent_scope_id; - SetGenericData(resolver, import_assoc_const.generic_id, - new_assoc_const.generic_id, generic_data); - return ResolveResult::Done(const_id, new_assoc_const.decl_id); + return ResolveResult::FinishGenericOrDone( + resolver, const_id, new_assoc_const.decl_id, + import_assoc_const.generic_id, new_assoc_const.generic_id, generic_data); } static auto TryResolveTypedInst(ImportRefResolver& resolver, @@ -1855,8 +1932,6 @@ static auto TryResolveTypedInst(ImportRefResolver& resolver, implicit_param_patterns); new_class.param_patterns_id = GetLocalCanonicalInstBlockId( resolver, import_class.param_patterns_id, param_patterns); - SetGenericData(resolver, import_class.generic_id, new_class.generic_id, - generic_data); new_class.self_type_id = resolver.local_context().types().GetTypeIdForTypeConstantId( self_const_id); @@ -1872,7 +1947,9 @@ static auto TryResolveTypedInst(ImportRefResolver& resolver, vtable_decl_id); } - return ResolveResult::Done(class_const_id, new_class.first_decl_id()); + return ResolveResult::FinishGenericOrDone( + resolver, class_const_id, new_class.first_decl_id(), + import_class.generic_id, new_class.generic_id, generic_data); } static auto TryResolveTypedInst(ImportRefResolver& resolver, @@ -2142,8 +2219,6 @@ static auto TryResolveTypedInst(ImportRefResolver& resolver, new_function.param_patterns_id = GetLocalCanonicalInstBlockId( resolver, import_function.param_patterns_id, param_patterns); new_function.return_slot_pattern_id = return_slot_pattern_id; - SetGenericData(resolver, import_function.generic_id, new_function.generic_id, - generic_data); if (import_function.definition_id.has_value()) { new_function.definition_id = new_function.first_owning_decl_id; @@ -2172,7 +2247,9 @@ static auto TryResolveTypedInst(ImportRefResolver& resolver, } } - return ResolveResult::Done(function_const_id, new_function.first_decl_id()); + return ResolveResult::FinishGenericOrDone( + resolver, function_const_id, new_function.first_decl_id(), + import_function.generic_id, new_function.generic_id, generic_data); } static auto TryResolveTypedInst(ImportRefResolver& resolver, @@ -2460,8 +2537,6 @@ static auto TryResolveTypedInst(ImportRefResolver& resolver, new_impl.implicit_param_patterns_id = GetLocalCanonicalInstBlockId( resolver, import_impl.implicit_param_patterns_id, implicit_param_patterns); - SetGenericData(resolver, import_impl.generic_id, new_impl.generic_id, - generic_data); // Create instructions for self and constraint to hold the symbolic constant // value for a generic impl. @@ -2482,7 +2557,9 @@ static auto TryResolveTypedInst(ImportRefResolver& resolver, resolver.local_impls().GetOrAddLookupBucket(new_impl).push_back(impl_id); } - return ResolveResult::Done(impl_const_id, new_impl.first_decl_id()); + return ResolveResult::FinishGenericOrDone( + resolver, impl_const_id, new_impl.first_decl_id(), import_impl.generic_id, + new_impl.generic_id, generic_data); } static auto TryResolveTypedInst(ImportRefResolver& resolver, @@ -2538,10 +2615,9 @@ static auto TryResolveTypedInst(ImportRefResolver& resolver, new_require.extend_self = import_require.extend_self; new_require.parent_scope_id = parent_scope_id; - SetGenericData(resolver, import_require.generic_id, new_require.generic_id, - generic_data); - - return ResolveResult::Done(require_decl_const_id, require_decl_id); + return ResolveResult::FinishGenericOrDone( + resolver, require_decl_const_id, require_decl_id, + import_require.generic_id, new_require.generic_id, generic_data); } static auto TryResolveTypedInst(ImportRefResolver& resolver, @@ -2697,15 +2773,15 @@ static auto TryResolveTypedInst(ImportRefResolver& resolver, resolver, import_interface.param_patterns_id, param_patterns); new_interface.require_impls_block_id = GetLocalCanonicalRequireImplsBlockId( resolver, import_interface.require_impls_block_id, require_impls); - SetGenericData(resolver, import_interface.generic_id, - new_interface.generic_id, generic_data); if (import_interface.is_complete()) { CARBON_CHECK(self_param_id); AddInterfaceDefinition(resolver, import_interface, new_interface, *self_param_id); } - return ResolveResult::Done(interface_const_id, new_interface.first_decl_id()); + return ResolveResult::FinishGenericOrDone( + resolver, interface_const_id, new_interface.first_decl_id(), + import_interface.generic_id, new_interface.generic_id, generic_data); } // Make a declaration of a named constraint. This is done as a separate step @@ -2857,16 +2933,16 @@ static auto TryResolveTypedInst(ImportRefResolver& resolver, GetLocalCanonicalRequireImplsBlockId( resolver, import_named_constraint.require_impls_block_id, require_impls); - SetGenericData(resolver, import_named_constraint.generic_id, - new_named_constraint.generic_id, generic_data); if (import_named_constraint.is_complete()) { CARBON_CHECK(self_param_id); AddNamedConstraintDefinition(resolver, import_named_constraint, new_named_constraint, *self_param_id); } - return ResolveResult::Done(named_constraint_const_id, - new_named_constraint.first_decl_id()); + return ResolveResult::FinishGenericOrDone( + resolver, named_constraint_const_id, new_named_constraint.first_decl_id(), + import_named_constraint.generic_id, new_named_constraint.generic_id, + generic_data); } static auto TryResolveTypedInst(ImportRefResolver& resolver, @@ -3791,37 +3867,58 @@ static auto TryResolveInst(ImportRefResolver& resolver, SemIR::InstId inst_id, auto ImportRefResolver::ResolveOneInst(SemIR::InstId inst_id) -> SemIR::ConstantId { - work_stack_.push_back({.inst_id = inst_id}); + work_stack_.push_back(InstWork{.inst_id = inst_id}); while (!work_stack_.empty()) { - auto work = work_stack_.back(); - CARBON_CHECK(work.inst_id.has_value()); + auto work_variant = work_stack_.back(); + CARBON_KIND_SWITCH(work_variant) { + case CARBON_KIND(InstWork work): { + CARBON_CHECK(work.inst_id.has_value()); - // Step 1: check for a constant value. - auto existing = FindResolvedConstId(work.inst_id); - if (existing.const_id.has_value() && !work.retry_with_constant_value) { - work_stack_.pop_back(); - continue; - } + // Step 1: check for a constant value. + auto existing = FindResolvedConstId(work.inst_id); + if (existing.const_id.has_value() && !work.retry_with_constant_value) { + work_stack_.pop_back(); + continue; + } - // Step 2: resolve the instruction. - initial_work_ = work_stack_.size(); - auto [new_const_id, _, retry] = - TryResolveInst(*this, work.inst_id, existing.const_id); - CARBON_CHECK(!HasNewWork() || retry); + // Step 2: resolve the instruction. + initial_work_ = work_stack_.size(); + auto result = TryResolveInst(*this, work.inst_id, existing.const_id); + CARBON_CHECK(!HasNewWork() || result.retry); - CARBON_CHECK( - !existing.const_id.has_value() || existing.const_id == new_const_id, - "Constant value changed in third phase."); - if (!existing.const_id.has_value()) { - SetResolvedConstId(work.inst_id, existing.indirect_insts, new_const_id); - } + CARBON_CHECK(!existing.const_id.has_value() || + existing.const_id == result.const_id, + "Constant value changed in third phase."); + if (!existing.const_id.has_value()) { + SetResolvedConstId(work.inst_id, existing.indirect_insts, + result.const_id); + } - // Step 3: pop or retry. - if (retry) { - work_stack_[initial_work_ - 1].retry_with_constant_value = - new_const_id.has_value(); - } else { - work_stack_.pop_back(); + // Step 3: pop or retry. + if (result.retry) { + std::get(work_stack_[initial_work_ - 1]) + .retry_with_constant_value = result.const_id.has_value(); + } else { + work_stack_.pop_back(); + + if (result.import_generic_id.has_value()) { + work_stack_.push_back( + GenericWork{.import_id = result.import_generic_id, + .local_id = result.local_generic_id}); + } + } + break; + } + case CARBON_KIND(GenericWork generic_work): { + // Generics may require 2 steps to finish, similar to step 2 and step 3 + // of instructions. + initial_work_ = work_stack_.size(); + if (TryFinishGeneric(*this, generic_work.import_id, + generic_work.local_id)) { + work_stack_.pop_back(); + } + break; + } } } auto constant_id = @@ -3857,7 +3954,7 @@ auto ImportRefResolver::GetLocalConstantValueOrPush(SemIR::InstId inst_id) } auto const_id = local_constant_values_for_import_insts().GetAttached(inst_id); if (!const_id.has_value()) { - work_stack_.push_back({.inst_id = inst_id}); + work_stack_.push_back(InstWork{.inst_id = inst_id}); } return const_id; } @@ -3946,52 +4043,6 @@ static auto ResolveLocalInstBlockContents(ImportRefResolver& resolver, return inst_ids; } -// Resolves and returns a local eval block for a region of an imported -// generic. -static auto ResolveLocalEvalBlock(ImportRefResolver& resolver, - const SemIR::Generic& import_generic, - SemIR::GenericId generic_id, - SemIR::GenericInstIndex::Region region) - -> SemIR::InstBlockId { - auto import_block_id = import_generic.GetEvalBlock(region); - if (!import_block_id.has_value()) { - return SemIR::InstBlockId::None; - } - - auto inst_ids = ResolveLocalInstBlockContents(resolver, import_block_id); - auto eval_block_id = RebuildGenericEvalBlock(resolver.local_context(), - generic_id, region, inst_ids); - - // Set the locations of the instructions in the inst block to match those of - // the imported instructions. - for (auto [import_inst_id, local_inst_id] : - llvm::zip_equal(resolver.import_inst_blocks().Get(import_block_id), - resolver.local_inst_blocks().Get(eval_block_id))) { - auto import_ir_inst_id = AddImportIRInst(resolver, import_inst_id); - resolver.local_insts().SetLocId(local_inst_id, import_ir_inst_id); - } - return eval_block_id; -} - -// Fills in the remaining information in a partially-imported generic. -static auto FinishPendingGeneric(ImportRefResolver& resolver, - ImportContext::PendingGeneric pending) - -> void { - const auto& import_generic = - resolver.import_generics().Get(pending.import_id); - auto& local_generic = resolver.local_generics().Get(pending.local_id); - - local_generic.self_specific_id = - MakeSelfSpecific(resolver.local_context(), - SemIR::LocId(local_generic.decl_id), pending.local_id); - resolver.AddPendingSpecific({.import_id = import_generic.self_specific_id, - .local_id = local_generic.self_specific_id}); - - local_generic.definition_block_id = - ResolveLocalEvalBlock(resolver, import_generic, pending.local_id, - SemIR::GenericInstIndex::Region::Definition); -} - // Resolves and returns a local inst block of constant instructions // corresponding to an imported inst block. static auto ResolveLocalInstBlock(ImportRefResolver& resolver, @@ -4029,21 +4080,8 @@ static auto FinishPendingSpecific(ImportRefResolver& resolver, auto ImportRefResolver::PerformPendingWork() -> void { // Note that the individual Finish steps can add new pending work, so keep // going until we have no more work to do. - while (!pending_generics().empty() || !pending_specifics().empty()) { - // Process generics in the order that we added them because a later - // generic might refer to an earlier one, and the calls to - // RebuildGenericEvalBlock assume that the reachable SemIR is in a valid - // state. - // TODO: Import the generic eval block rather than calling - // RebuildGenericEvalBlock to rebuild it so that order doesn't matter. - for (auto generic_id : GrowingRange(pending_generics())) { - FinishPendingGeneric(*this, generic_id); - } - pending_generics().clear(); - - while (!pending_specifics().empty()) { - FinishPendingSpecific(*this, pending_specifics().pop_back_val()); - } + while (!pending_specifics().empty()) { + FinishPendingSpecific(*this, pending_specifics().pop_back_val()); } } diff --git a/toolchain/check/testdata/basics/raw_sem_ir/one_file.carbon b/toolchain/check/testdata/basics/raw_sem_ir/one_file.carbon index 52ae9dc95cf2..9f7e75c305ed 100644 --- a/toolchain/check/testdata/basics/raw_sem_ir/one_file.carbon +++ b/toolchain/check/testdata/basics/raw_sem_ir/one_file.carbon @@ -40,137 +40,184 @@ fn Foo[T:! type](p: T*) -> (T*, ()) { // CHECK:STDOUT: import_ir_inst9: {ir_id: import_ir60000004, inst_id: inst4800001B} // CHECK:STDOUT: import_ir_instA: {ir_id: import_ir60000004, inst_id: inst4800001D} // CHECK:STDOUT: import_ir_instB: {ir_id: import_ir60000004, inst_id: inst48000010} -// CHECK:STDOUT: import_ir_instC: {ir_id: import_ir60000004, inst_id: inst48000060} -// CHECK:STDOUT: import_ir_instD: {ir_id: import_ir60000004, inst_id: inst4800005E} -// CHECK:STDOUT: import_ir_instE: {ir_id: import_ir60000004, inst_id: inst48000074} -// CHECK:STDOUT: import_ir_instF: {ir_id: import_ir60000004, inst_id: inst4800005F} -// CHECK:STDOUT: import_ir_inst10: {ir_id: import_ir60000004, inst_id: inst48000053} -// CHECK:STDOUT: import_ir_inst11: {ir_id: import_ir60000004, inst_id: inst4800004F} -// CHECK:STDOUT: import_ir_inst12: {ir_id: import_ir60000004, inst_id: inst48000059} -// CHECK:STDOUT: import_ir_inst13: {ir_id: import_ir60000004, inst_id: inst4800005C} -// CHECK:STDOUT: import_ir_inst14: {ir_id: import_ir60000004, inst_id: inst48000074} -// CHECK:STDOUT: import_ir_inst15: {ir_id: import_ir60000004, inst_id: inst4800006F} -// CHECK:STDOUT: import_ir_inst16: {ir_id: import_ir60000004, inst_id: inst48000070} -// CHECK:STDOUT: import_ir_inst17: {ir_id: import_ir60000004, inst_id: inst4800006B} -// CHECK:STDOUT: import_ir_inst18: {ir_id: import_ir60000004, inst_id: inst4800006D} -// CHECK:STDOUT: import_ir_inst19: {ir_id: import_ir60000004, inst_id: inst4800004F} -// CHECK:STDOUT: import_ir_inst1A: {ir_id: import_ir60000004, inst_id: inst48000077} -// CHECK:STDOUT: import_ir_inst1B: {ir_id: import_ir60000004, inst_id: inst48000078} -// CHECK:STDOUT: import_ir_inst1C: {ir_id: import_ir60000004, inst_id: inst4800007C} -// CHECK:STDOUT: import_ir_inst1D: {ir_id: import_ir60000004, inst_id: inst48000084} -// CHECK:STDOUT: import_ir_inst1E: {ir_id: import_ir60000004, inst_id: inst4800008B} -// CHECK:STDOUT: import_ir_inst1F: {ir_id: import_ir60000004, inst_id: inst4800008F} -// CHECK:STDOUT: import_ir_inst20: {ir_id: import_ir60000004, inst_id: inst48000090} -// CHECK:STDOUT: import_ir_inst21: {ir_id: import_ir60000004, inst_id: inst48000095} -// CHECK:STDOUT: import_ir_inst22: {ir_id: import_ir60000004, inst_id: inst480000AA} -// CHECK:STDOUT: import_ir_inst23: {ir_id: import_ir60000004, inst_id: inst480000A8} -// CHECK:STDOUT: import_ir_inst24: {ir_id: import_ir60000004, inst_id: inst480000A6} -// CHECK:STDOUT: import_ir_inst25: {ir_id: import_ir60000004, inst_id: inst480000A7} -// CHECK:STDOUT: import_ir_inst26: {ir_id: import_ir60000004, inst_id: inst480000C2} -// CHECK:STDOUT: import_ir_inst27: {ir_id: import_ir60000004, inst_id: inst480000C0} -// CHECK:STDOUT: import_ir_inst28: {ir_id: import_ir60000004, inst_id: inst480000BE} -// CHECK:STDOUT: import_ir_inst29: {ir_id: import_ir60000004, inst_id: inst480000BF} -// CHECK:STDOUT: import_ir_inst2A: {ir_id: import_ir60000004, inst_id: inst480000DA} -// CHECK:STDOUT: import_ir_inst2B: {ir_id: import_ir60000004, inst_id: inst480000D8} -// CHECK:STDOUT: import_ir_inst2C: {ir_id: import_ir60000004, inst_id: inst480000D6} -// CHECK:STDOUT: import_ir_inst2D: {ir_id: import_ir60000004, inst_id: inst480000D7} -// CHECK:STDOUT: import_ir_inst2E: {ir_id: import_ir60000004, inst_id: inst480000F2} -// CHECK:STDOUT: import_ir_inst2F: {ir_id: import_ir60000004, inst_id: inst480000F0} -// CHECK:STDOUT: import_ir_inst30: {ir_id: import_ir60000004, inst_id: inst480000EE} -// CHECK:STDOUT: import_ir_inst31: {ir_id: import_ir60000004, inst_id: inst480000EF} -// CHECK:STDOUT: import_ir_inst32: {ir_id: import_ir60000004, inst_id: inst4800010F} -// CHECK:STDOUT: import_ir_inst33: {ir_id: import_ir60000004, inst_id: inst4800010D} -// CHECK:STDOUT: import_ir_inst34: {ir_id: import_ir60000004, inst_id: inst48000120} -// CHECK:STDOUT: import_ir_inst35: {ir_id: import_ir60000004, inst_id: inst4800010E} -// CHECK:STDOUT: import_ir_inst36: {ir_id: import_ir60000004, inst_id: inst48000107} -// CHECK:STDOUT: import_ir_inst37: {ir_id: import_ir60000004, inst_id: inst48000104} -// CHECK:STDOUT: import_ir_inst38: {ir_id: import_ir60000004, inst_id: inst48000109} -// CHECK:STDOUT: import_ir_inst39: {ir_id: import_ir60000004, inst_id: inst4800010C} -// CHECK:STDOUT: import_ir_inst3A: {ir_id: import_ir60000004, inst_id: inst48000120} -// CHECK:STDOUT: import_ir_inst3B: {ir_id: import_ir60000004, inst_id: inst4800011B} -// CHECK:STDOUT: import_ir_inst3C: {ir_id: import_ir60000004, inst_id: inst4800011C} -// CHECK:STDOUT: import_ir_inst3D: {ir_id: import_ir60000004, inst_id: inst48000117} -// CHECK:STDOUT: import_ir_inst3E: {ir_id: import_ir60000004, inst_id: inst48000119} -// CHECK:STDOUT: import_ir_inst3F: {ir_id: import_ir60000004, inst_id: inst48000104} -// CHECK:STDOUT: import_ir_inst40: {ir_id: import_ir60000004, inst_id: inst48000123} -// CHECK:STDOUT: import_ir_inst41: {ir_id: import_ir60000004, inst_id: inst48000124} -// CHECK:STDOUT: import_ir_inst42: {ir_id: import_ir60000004, inst_id: inst48000127} -// CHECK:STDOUT: import_ir_inst43: {ir_id: import_ir60000004, inst_id: inst4800012D} -// CHECK:STDOUT: import_ir_inst44: {ir_id: import_ir60000004, inst_id: inst4800012B} -// CHECK:STDOUT: import_ir_inst45: {ir_id: import_ir60000004, inst_id: inst(TypeType)} -// CHECK:STDOUT: import_ir_inst46: {ir_id: import_ir60000004, inst_id: inst4800012A} -// CHECK:STDOUT: import_ir_inst47: {ir_id: import_ir60000004, inst_id: inst48000143} -// CHECK:STDOUT: import_ir_inst48: {ir_id: import_ir60000004, inst_id: inst48000141} -// CHECK:STDOUT: import_ir_inst49: {ir_id: import_ir60000004, inst_id: inst4800013F} -// CHECK:STDOUT: import_ir_inst4A: {ir_id: import_ir60000004, inst_id: inst48000140} -// CHECK:STDOUT: import_ir_inst4B: {ir_id: import_ir60000004, inst_id: inst48000175} -// CHECK:STDOUT: import_ir_inst4C: {ir_id: import_ir60000004, inst_id: inst48000173} -// CHECK:STDOUT: import_ir_inst4D: {ir_id: import_ir60000004, inst_id: inst4800018D} -// CHECK:STDOUT: import_ir_inst4E: {ir_id: import_ir60000004, inst_id: inst48000174} -// CHECK:STDOUT: import_ir_inst4F: {ir_id: import_ir60000004, inst_id: inst4800015E} -// CHECK:STDOUT: import_ir_inst50: {ir_id: import_ir60000004, inst_id: inst48000158} -// CHECK:STDOUT: import_ir_inst51: {ir_id: import_ir60000004, inst_id: inst48000156} -// CHECK:STDOUT: import_ir_inst52: {ir_id: import_ir60000004, inst_id: inst4800015B} -// CHECK:STDOUT: import_ir_inst53: {ir_id: import_ir60000004, inst_id: inst4800016E} -// CHECK:STDOUT: import_ir_inst54: {ir_id: import_ir60000004, inst_id: inst48000170} -// CHECK:STDOUT: import_ir_inst55: {ir_id: import_ir60000004, inst_id: inst4800018D} -// CHECK:STDOUT: import_ir_inst56: {ir_id: import_ir60000004, inst_id: inst48000188} -// CHECK:STDOUT: import_ir_inst57: {ir_id: import_ir60000004, inst_id: inst48000189} -// CHECK:STDOUT: import_ir_inst58: {ir_id: import_ir60000004, inst_id: inst48000184} -// CHECK:STDOUT: import_ir_inst59: {ir_id: import_ir60000004, inst_id: inst48000186} -// CHECK:STDOUT: import_ir_inst5A: {ir_id: import_ir60000004, inst_id: inst48000156} -// CHECK:STDOUT: import_ir_inst5B: {ir_id: import_ir60000004, inst_id: inst4800015B} -// CHECK:STDOUT: import_ir_inst5C: {ir_id: import_ir60000004, inst_id: inst48000190} -// CHECK:STDOUT: import_ir_inst5D: {ir_id: import_ir60000004, inst_id: inst48000191} -// CHECK:STDOUT: import_ir_inst5E: {ir_id: import_ir60000004, inst_id: inst48000196} -// CHECK:STDOUT: import_ir_inst5F: {ir_id: import_ir60000004, inst_id: inst4800019E} -// CHECK:STDOUT: import_ir_inst60: {ir_id: import_ir60000004, inst_id: inst480001A2} -// CHECK:STDOUT: import_ir_inst61: {ir_id: import_ir60000004, inst_id: inst480001A4} -// CHECK:STDOUT: import_ir_inst62: {ir_id: import_ir60000004, inst_id: inst480001A5} -// CHECK:STDOUT: import_ir_inst63: {ir_id: import_ir60000004, inst_id: inst480001A8} -// CHECK:STDOUT: import_ir_inst64: {ir_id: import_ir60000004, inst_id: inst480001B4} -// CHECK:STDOUT: import_ir_inst65: {ir_id: import_ir60000004, inst_id: inst480001B9} -// CHECK:STDOUT: import_ir_inst66: {ir_id: import_ir60000004, inst_id: inst480001BD} -// CHECK:STDOUT: import_ir_inst67: {ir_id: import_ir60000004, inst_id: inst480001BE} -// CHECK:STDOUT: import_ir_inst68: {ir_id: import_ir60000004, inst_id: inst480001C3} -// CHECK:STDOUT: import_ir_inst69: {ir_id: import_ir60000004, inst_id: inst480001FE} -// CHECK:STDOUT: import_ir_inst6A: {ir_id: import_ir60000004, inst_id: inst480001FC} -// CHECK:STDOUT: import_ir_inst6B: {ir_id: import_ir60000004, inst_id: inst4800021A} -// CHECK:STDOUT: import_ir_inst6C: {ir_id: import_ir60000004, inst_id: inst480001FD} -// CHECK:STDOUT: import_ir_inst6D: {ir_id: import_ir60000004, inst_id: inst480001E2} -// CHECK:STDOUT: import_ir_inst6E: {ir_id: import_ir60000004, inst_id: inst480001DC} -// CHECK:STDOUT: import_ir_inst6F: {ir_id: import_ir60000004, inst_id: inst480001D7} -// CHECK:STDOUT: import_ir_inst70: {ir_id: import_ir60000004, inst_id: inst480001D5} -// CHECK:STDOUT: import_ir_inst71: {ir_id: import_ir60000004, inst_id: inst480001DA} -// CHECK:STDOUT: import_ir_inst72: {ir_id: import_ir60000004, inst_id: inst480001DF} -// CHECK:STDOUT: import_ir_inst73: {ir_id: import_ir60000004, inst_id: inst480001F6} -// CHECK:STDOUT: import_ir_inst74: {ir_id: import_ir60000004, inst_id: inst480001F8} -// CHECK:STDOUT: import_ir_inst75: {ir_id: import_ir60000004, inst_id: inst4800021A} -// CHECK:STDOUT: import_ir_inst76: {ir_id: import_ir60000004, inst_id: inst48000215} -// CHECK:STDOUT: import_ir_inst77: {ir_id: import_ir60000004, inst_id: inst48000216} -// CHECK:STDOUT: import_ir_inst78: {ir_id: import_ir60000004, inst_id: inst48000211} -// CHECK:STDOUT: import_ir_inst79: {ir_id: import_ir60000004, inst_id: inst48000213} -// CHECK:STDOUT: import_ir_inst7A: {ir_id: import_ir60000004, inst_id: inst480001D5} -// CHECK:STDOUT: import_ir_inst7B: {ir_id: import_ir60000004, inst_id: inst480001DA} -// CHECK:STDOUT: import_ir_inst7C: {ir_id: import_ir60000004, inst_id: inst480001DF} -// CHECK:STDOUT: import_ir_inst7D: {ir_id: import_ir60000004, inst_id: inst4800021D} -// CHECK:STDOUT: import_ir_inst7E: {ir_id: import_ir60000004, inst_id: inst4800021E} -// CHECK:STDOUT: import_ir_inst7F: {ir_id: import_ir60000004, inst_id: inst48000223} -// CHECK:STDOUT: import_ir_inst80: {ir_id: import_ir60000004, inst_id: inst4800022A} -// CHECK:STDOUT: import_ir_inst81: {ir_id: import_ir60000004, inst_id: inst4800022E} -// CHECK:STDOUT: import_ir_inst82: {ir_id: import_ir60000004, inst_id: inst48000230} -// CHECK:STDOUT: import_ir_inst83: {ir_id: import_ir60000004, inst_id: inst48000231} -// CHECK:STDOUT: import_ir_inst84: {ir_id: import_ir60000004, inst_id: inst48000234} -// CHECK:STDOUT: import_ir_inst85: {ir_id: import_ir60000004, inst_id: inst4800023E} -// CHECK:STDOUT: import_ir_inst86: {ir_id: import_ir60000004, inst_id: inst48000242} -// CHECK:STDOUT: import_ir_inst87: {ir_id: import_ir60000004, inst_id: inst48000244} -// CHECK:STDOUT: import_ir_inst88: {ir_id: import_ir60000004, inst_id: inst48000245} -// CHECK:STDOUT: import_ir_inst89: {ir_id: import_ir60000004, inst_id: inst48000248} -// CHECK:STDOUT: import_ir_inst8A: {ir_id: import_ir60000004, inst_id: inst48000254} -// CHECK:STDOUT: import_ir_inst8B: {ir_id: import_ir60000004, inst_id: inst48000259} -// CHECK:STDOUT: import_ir_inst8C: {ir_id: import_ir60000004, inst_id: inst4800025D} -// CHECK:STDOUT: import_ir_inst8D: {ir_id: import_ir60000004, inst_id: inst4800025E} -// CHECK:STDOUT: import_ir_inst8E: {ir_id: import_ir60000004, inst_id: inst48000263} +// CHECK:STDOUT: import_ir_instC: {ir_id: import_ir60000004, inst_id: inst48000014} +// CHECK:STDOUT: import_ir_instD: {ir_id: import_ir60000004, inst_id: inst48000017} +// CHECK:STDOUT: import_ir_instE: {ir_id: import_ir60000004, inst_id: inst4800001C} +// CHECK:STDOUT: import_ir_instF: {ir_id: import_ir60000004, inst_id: inst48000060} +// CHECK:STDOUT: import_ir_inst10: {ir_id: import_ir60000004, inst_id: inst4800005E} +// CHECK:STDOUT: import_ir_inst11: {ir_id: import_ir60000004, inst_id: inst48000074} +// CHECK:STDOUT: import_ir_inst12: {ir_id: import_ir60000004, inst_id: inst4800005F} +// CHECK:STDOUT: import_ir_inst13: {ir_id: import_ir60000004, inst_id: inst48000053} +// CHECK:STDOUT: import_ir_inst14: {ir_id: import_ir60000004, inst_id: inst48000059} +// CHECK:STDOUT: import_ir_inst15: {ir_id: import_ir60000004, inst_id: inst4800005C} +// CHECK:STDOUT: import_ir_inst16: {ir_id: import_ir60000004, inst_id: inst4800004F} +// CHECK:STDOUT: import_ir_inst17: {ir_id: import_ir60000004, inst_id: inst48000051} +// CHECK:STDOUT: import_ir_inst18: {ir_id: import_ir60000004, inst_id: inst48000057} +// CHECK:STDOUT: import_ir_inst19: {ir_id: import_ir60000004, inst_id: inst4800005B} +// CHECK:STDOUT: import_ir_inst1A: {ir_id: import_ir60000004, inst_id: inst48000062} +// CHECK:STDOUT: import_ir_inst1B: {ir_id: import_ir60000004, inst_id: inst48000074} +// CHECK:STDOUT: import_ir_inst1C: {ir_id: import_ir60000004, inst_id: inst4800006F} +// CHECK:STDOUT: import_ir_inst1D: {ir_id: import_ir60000004, inst_id: inst48000070} +// CHECK:STDOUT: import_ir_inst1E: {ir_id: import_ir60000004, inst_id: inst4800006B} +// CHECK:STDOUT: import_ir_inst1F: {ir_id: import_ir60000004, inst_id: inst4800006D} +// CHECK:STDOUT: import_ir_inst20: {ir_id: import_ir60000004, inst_id: inst4800004F} +// CHECK:STDOUT: import_ir_inst21: {ir_id: import_ir60000004, inst_id: inst48000066} +// CHECK:STDOUT: import_ir_inst22: {ir_id: import_ir60000004, inst_id: inst48000067} +// CHECK:STDOUT: import_ir_inst23: {ir_id: import_ir60000004, inst_id: inst48000068} +// CHECK:STDOUT: import_ir_inst24: {ir_id: import_ir60000004, inst_id: inst4800006C} +// CHECK:STDOUT: import_ir_inst25: {ir_id: import_ir60000004, inst_id: inst4800007C} +// CHECK:STDOUT: import_ir_inst26: {ir_id: import_ir60000004, inst_id: inst48000084} +// CHECK:STDOUT: import_ir_inst27: {ir_id: import_ir60000004, inst_id: inst4800008B} +// CHECK:STDOUT: import_ir_inst28: {ir_id: import_ir60000004, inst_id: inst4800008F} +// CHECK:STDOUT: import_ir_inst29: {ir_id: import_ir60000004, inst_id: inst48000090} +// CHECK:STDOUT: import_ir_inst2A: {ir_id: import_ir60000004, inst_id: inst48000095} +// CHECK:STDOUT: import_ir_inst2B: {ir_id: import_ir60000004, inst_id: inst48000077} +// CHECK:STDOUT: import_ir_inst2C: {ir_id: import_ir60000004, inst_id: inst48000078} +// CHECK:STDOUT: import_ir_inst2D: {ir_id: import_ir60000004, inst_id: inst480000AA} +// CHECK:STDOUT: import_ir_inst2E: {ir_id: import_ir60000004, inst_id: inst480000A8} +// CHECK:STDOUT: import_ir_inst2F: {ir_id: import_ir60000004, inst_id: inst480000A6} +// CHECK:STDOUT: import_ir_inst30: {ir_id: import_ir60000004, inst_id: inst480000A7} +// CHECK:STDOUT: import_ir_inst31: {ir_id: import_ir60000004, inst_id: inst480000C2} +// CHECK:STDOUT: import_ir_inst32: {ir_id: import_ir60000004, inst_id: inst480000C0} +// CHECK:STDOUT: import_ir_inst33: {ir_id: import_ir60000004, inst_id: inst480000BE} +// CHECK:STDOUT: import_ir_inst34: {ir_id: import_ir60000004, inst_id: inst480000BF} +// CHECK:STDOUT: import_ir_inst35: {ir_id: import_ir60000004, inst_id: inst480000DA} +// CHECK:STDOUT: import_ir_inst36: {ir_id: import_ir60000004, inst_id: inst480000D8} +// CHECK:STDOUT: import_ir_inst37: {ir_id: import_ir60000004, inst_id: inst480000D6} +// CHECK:STDOUT: import_ir_inst38: {ir_id: import_ir60000004, inst_id: inst480000D7} +// CHECK:STDOUT: import_ir_inst39: {ir_id: import_ir60000004, inst_id: inst480000F2} +// CHECK:STDOUT: import_ir_inst3A: {ir_id: import_ir60000004, inst_id: inst480000F0} +// CHECK:STDOUT: import_ir_inst3B: {ir_id: import_ir60000004, inst_id: inst480000EE} +// CHECK:STDOUT: import_ir_inst3C: {ir_id: import_ir60000004, inst_id: inst480000EF} +// CHECK:STDOUT: import_ir_inst3D: {ir_id: import_ir60000004, inst_id: inst4800010F} +// CHECK:STDOUT: import_ir_inst3E: {ir_id: import_ir60000004, inst_id: inst4800010D} +// CHECK:STDOUT: import_ir_inst3F: {ir_id: import_ir60000004, inst_id: inst48000120} +// CHECK:STDOUT: import_ir_inst40: {ir_id: import_ir60000004, inst_id: inst4800010E} +// CHECK:STDOUT: import_ir_inst41: {ir_id: import_ir60000004, inst_id: inst48000107} +// CHECK:STDOUT: import_ir_inst42: {ir_id: import_ir60000004, inst_id: inst48000109} +// CHECK:STDOUT: import_ir_inst43: {ir_id: import_ir60000004, inst_id: inst4800010C} +// CHECK:STDOUT: import_ir_inst44: {ir_id: import_ir60000004, inst_id: inst48000104} +// CHECK:STDOUT: import_ir_inst45: {ir_id: import_ir60000004, inst_id: inst48000106} +// CHECK:STDOUT: import_ir_inst46: {ir_id: import_ir60000004, inst_id: inst4800010B} +// CHECK:STDOUT: import_ir_inst47: {ir_id: import_ir60000004, inst_id: inst48000111} +// CHECK:STDOUT: import_ir_inst48: {ir_id: import_ir60000004, inst_id: inst48000120} +// CHECK:STDOUT: import_ir_inst49: {ir_id: import_ir60000004, inst_id: inst4800011B} +// CHECK:STDOUT: import_ir_inst4A: {ir_id: import_ir60000004, inst_id: inst4800011C} +// CHECK:STDOUT: import_ir_inst4B: {ir_id: import_ir60000004, inst_id: inst48000117} +// CHECK:STDOUT: import_ir_inst4C: {ir_id: import_ir60000004, inst_id: inst48000119} +// CHECK:STDOUT: import_ir_inst4D: {ir_id: import_ir60000004, inst_id: inst48000104} +// CHECK:STDOUT: import_ir_inst4E: {ir_id: import_ir60000004, inst_id: inst48000113} +// CHECK:STDOUT: import_ir_inst4F: {ir_id: import_ir60000004, inst_id: inst48000114} +// CHECK:STDOUT: import_ir_inst50: {ir_id: import_ir60000004, inst_id: inst48000118} +// CHECK:STDOUT: import_ir_inst51: {ir_id: import_ir60000004, inst_id: inst48000123} +// CHECK:STDOUT: import_ir_inst52: {ir_id: import_ir60000004, inst_id: inst48000124} +// CHECK:STDOUT: import_ir_inst53: {ir_id: import_ir60000004, inst_id: inst48000127} +// CHECK:STDOUT: import_ir_inst54: {ir_id: import_ir60000004, inst_id: inst4800012D} +// CHECK:STDOUT: import_ir_inst55: {ir_id: import_ir60000004, inst_id: inst4800012B} +// CHECK:STDOUT: import_ir_inst56: {ir_id: import_ir60000004, inst_id: inst(TypeType)} +// CHECK:STDOUT: import_ir_inst57: {ir_id: import_ir60000004, inst_id: inst4800012A} +// CHECK:STDOUT: import_ir_inst58: {ir_id: import_ir60000004, inst_id: inst48000143} +// CHECK:STDOUT: import_ir_inst59: {ir_id: import_ir60000004, inst_id: inst48000141} +// CHECK:STDOUT: import_ir_inst5A: {ir_id: import_ir60000004, inst_id: inst4800013F} +// CHECK:STDOUT: import_ir_inst5B: {ir_id: import_ir60000004, inst_id: inst48000140} +// CHECK:STDOUT: import_ir_inst5C: {ir_id: import_ir60000004, inst_id: inst48000175} +// CHECK:STDOUT: import_ir_inst5D: {ir_id: import_ir60000004, inst_id: inst48000173} +// CHECK:STDOUT: import_ir_inst5E: {ir_id: import_ir60000004, inst_id: inst4800018D} +// CHECK:STDOUT: import_ir_inst5F: {ir_id: import_ir60000004, inst_id: inst48000174} +// CHECK:STDOUT: import_ir_inst60: {ir_id: import_ir60000004, inst_id: inst4800015E} +// CHECK:STDOUT: import_ir_inst61: {ir_id: import_ir60000004, inst_id: inst48000158} +// CHECK:STDOUT: import_ir_inst62: {ir_id: import_ir60000004, inst_id: inst4800016E} +// CHECK:STDOUT: import_ir_inst63: {ir_id: import_ir60000004, inst_id: inst48000170} +// CHECK:STDOUT: import_ir_inst64: {ir_id: import_ir60000004, inst_id: inst48000156} +// CHECK:STDOUT: import_ir_inst65: {ir_id: import_ir60000004, inst_id: inst4800015B} +// CHECK:STDOUT: import_ir_inst66: {ir_id: import_ir60000004, inst_id: inst48000157} +// CHECK:STDOUT: import_ir_inst67: {ir_id: import_ir60000004, inst_id: inst4800015D} +// CHECK:STDOUT: import_ir_inst68: {ir_id: import_ir60000004, inst_id: inst48000164} +// CHECK:STDOUT: import_ir_inst69: {ir_id: import_ir60000004, inst_id: inst48000167} +// CHECK:STDOUT: import_ir_inst6A: {ir_id: import_ir60000004, inst_id: inst4800016B} +// CHECK:STDOUT: import_ir_inst6B: {ir_id: import_ir60000004, inst_id: inst4800016F} +// CHECK:STDOUT: import_ir_inst6C: {ir_id: import_ir60000004, inst_id: inst48000177} +// CHECK:STDOUT: import_ir_inst6D: {ir_id: import_ir60000004, inst_id: inst4800018D} +// CHECK:STDOUT: import_ir_inst6E: {ir_id: import_ir60000004, inst_id: inst48000188} +// CHECK:STDOUT: import_ir_inst6F: {ir_id: import_ir60000004, inst_id: inst48000189} +// CHECK:STDOUT: import_ir_inst70: {ir_id: import_ir60000004, inst_id: inst48000184} +// CHECK:STDOUT: import_ir_inst71: {ir_id: import_ir60000004, inst_id: inst48000186} +// CHECK:STDOUT: import_ir_inst72: {ir_id: import_ir60000004, inst_id: inst48000156} +// CHECK:STDOUT: import_ir_inst73: {ir_id: import_ir60000004, inst_id: inst4800015B} +// CHECK:STDOUT: import_ir_inst74: {ir_id: import_ir60000004, inst_id: inst4800017D} +// CHECK:STDOUT: import_ir_inst75: {ir_id: import_ir60000004, inst_id: inst4800017E} +// CHECK:STDOUT: import_ir_inst76: {ir_id: import_ir60000004, inst_id: inst4800017F} +// CHECK:STDOUT: import_ir_inst77: {ir_id: import_ir60000004, inst_id: inst48000180} +// CHECK:STDOUT: import_ir_inst78: {ir_id: import_ir60000004, inst_id: inst48000181} +// CHECK:STDOUT: import_ir_inst79: {ir_id: import_ir60000004, inst_id: inst48000185} +// CHECK:STDOUT: import_ir_inst7A: {ir_id: import_ir60000004, inst_id: inst48000196} +// CHECK:STDOUT: import_ir_inst7B: {ir_id: import_ir60000004, inst_id: inst4800019E} +// CHECK:STDOUT: import_ir_inst7C: {ir_id: import_ir60000004, inst_id: inst480001A2} +// CHECK:STDOUT: import_ir_inst7D: {ir_id: import_ir60000004, inst_id: inst480001A4} +// CHECK:STDOUT: import_ir_inst7E: {ir_id: import_ir60000004, inst_id: inst480001A5} +// CHECK:STDOUT: import_ir_inst7F: {ir_id: import_ir60000004, inst_id: inst480001A8} +// CHECK:STDOUT: import_ir_inst80: {ir_id: import_ir60000004, inst_id: inst480001B4} +// CHECK:STDOUT: import_ir_inst81: {ir_id: import_ir60000004, inst_id: inst480001B9} +// CHECK:STDOUT: import_ir_inst82: {ir_id: import_ir60000004, inst_id: inst480001BD} +// CHECK:STDOUT: import_ir_inst83: {ir_id: import_ir60000004, inst_id: inst480001BE} +// CHECK:STDOUT: import_ir_inst84: {ir_id: import_ir60000004, inst_id: inst480001C3} +// CHECK:STDOUT: import_ir_inst85: {ir_id: import_ir60000004, inst_id: inst48000190} +// CHECK:STDOUT: import_ir_inst86: {ir_id: import_ir60000004, inst_id: inst48000191} +// CHECK:STDOUT: import_ir_inst87: {ir_id: import_ir60000004, inst_id: inst480001FE} +// CHECK:STDOUT: import_ir_inst88: {ir_id: import_ir60000004, inst_id: inst480001FC} +// CHECK:STDOUT: import_ir_inst89: {ir_id: import_ir60000004, inst_id: inst4800021A} +// CHECK:STDOUT: import_ir_inst8A: {ir_id: import_ir60000004, inst_id: inst480001FD} +// CHECK:STDOUT: import_ir_inst8B: {ir_id: import_ir60000004, inst_id: inst480001E2} +// CHECK:STDOUT: import_ir_inst8C: {ir_id: import_ir60000004, inst_id: inst480001DC} +// CHECK:STDOUT: import_ir_inst8D: {ir_id: import_ir60000004, inst_id: inst480001D7} +// CHECK:STDOUT: import_ir_inst8E: {ir_id: import_ir60000004, inst_id: inst480001F6} +// CHECK:STDOUT: import_ir_inst8F: {ir_id: import_ir60000004, inst_id: inst480001F8} +// CHECK:STDOUT: import_ir_inst90: {ir_id: import_ir60000004, inst_id: inst480001D5} +// CHECK:STDOUT: import_ir_inst91: {ir_id: import_ir60000004, inst_id: inst480001DA} +// CHECK:STDOUT: import_ir_inst92: {ir_id: import_ir60000004, inst_id: inst480001DF} +// CHECK:STDOUT: import_ir_inst93: {ir_id: import_ir60000004, inst_id: inst480001D6} +// CHECK:STDOUT: import_ir_inst94: {ir_id: import_ir60000004, inst_id: inst480001DB} +// CHECK:STDOUT: import_ir_inst95: {ir_id: import_ir60000004, inst_id: inst480001E1} +// CHECK:STDOUT: import_ir_inst96: {ir_id: import_ir60000004, inst_id: inst480001E9} +// CHECK:STDOUT: import_ir_inst97: {ir_id: import_ir60000004, inst_id: inst480001EC} +// CHECK:STDOUT: import_ir_inst98: {ir_id: import_ir60000004, inst_id: inst480001EF} +// CHECK:STDOUT: import_ir_inst99: {ir_id: import_ir60000004, inst_id: inst480001F3} +// CHECK:STDOUT: import_ir_inst9A: {ir_id: import_ir60000004, inst_id: inst480001F7} +// CHECK:STDOUT: import_ir_inst9B: {ir_id: import_ir60000004, inst_id: inst48000200} +// CHECK:STDOUT: import_ir_inst9C: {ir_id: import_ir60000004, inst_id: inst4800021A} +// CHECK:STDOUT: import_ir_inst9D: {ir_id: import_ir60000004, inst_id: inst48000215} +// CHECK:STDOUT: import_ir_inst9E: {ir_id: import_ir60000004, inst_id: inst48000216} +// CHECK:STDOUT: import_ir_inst9F: {ir_id: import_ir60000004, inst_id: inst48000211} +// CHECK:STDOUT: import_ir_instA0: {ir_id: import_ir60000004, inst_id: inst48000213} +// CHECK:STDOUT: import_ir_instA1: {ir_id: import_ir60000004, inst_id: inst480001D5} +// CHECK:STDOUT: import_ir_instA2: {ir_id: import_ir60000004, inst_id: inst480001DA} +// CHECK:STDOUT: import_ir_instA3: {ir_id: import_ir60000004, inst_id: inst480001DF} +// CHECK:STDOUT: import_ir_instA4: {ir_id: import_ir60000004, inst_id: inst48000208} +// CHECK:STDOUT: import_ir_instA5: {ir_id: import_ir60000004, inst_id: inst48000209} +// CHECK:STDOUT: import_ir_instA6: {ir_id: import_ir60000004, inst_id: inst4800020A} +// CHECK:STDOUT: import_ir_instA7: {ir_id: import_ir60000004, inst_id: inst4800020B} +// CHECK:STDOUT: import_ir_instA8: {ir_id: import_ir60000004, inst_id: inst4800020C} +// CHECK:STDOUT: import_ir_instA9: {ir_id: import_ir60000004, inst_id: inst4800020D} +// CHECK:STDOUT: import_ir_instAA: {ir_id: import_ir60000004, inst_id: inst4800020E} +// CHECK:STDOUT: import_ir_instAB: {ir_id: import_ir60000004, inst_id: inst48000212} +// CHECK:STDOUT: import_ir_instAC: {ir_id: import_ir60000004, inst_id: inst48000223} +// CHECK:STDOUT: import_ir_instAD: {ir_id: import_ir60000004, inst_id: inst4800022A} +// CHECK:STDOUT: import_ir_instAE: {ir_id: import_ir60000004, inst_id: inst4800022E} +// CHECK:STDOUT: import_ir_instAF: {ir_id: import_ir60000004, inst_id: inst48000230} +// CHECK:STDOUT: import_ir_instB0: {ir_id: import_ir60000004, inst_id: inst48000231} +// CHECK:STDOUT: import_ir_instB1: {ir_id: import_ir60000004, inst_id: inst48000234} +// CHECK:STDOUT: import_ir_instB2: {ir_id: import_ir60000004, inst_id: inst4800023E} +// CHECK:STDOUT: import_ir_instB3: {ir_id: import_ir60000004, inst_id: inst48000242} +// CHECK:STDOUT: import_ir_instB4: {ir_id: import_ir60000004, inst_id: inst48000244} +// CHECK:STDOUT: import_ir_instB5: {ir_id: import_ir60000004, inst_id: inst48000245} +// CHECK:STDOUT: import_ir_instB6: {ir_id: import_ir60000004, inst_id: inst48000248} +// CHECK:STDOUT: import_ir_instB7: {ir_id: import_ir60000004, inst_id: inst48000254} +// CHECK:STDOUT: import_ir_instB8: {ir_id: import_ir60000004, inst_id: inst48000259} +// CHECK:STDOUT: import_ir_instB9: {ir_id: import_ir60000004, inst_id: inst4800025D} +// CHECK:STDOUT: import_ir_instBA: {ir_id: import_ir60000004, inst_id: inst4800025E} +// CHECK:STDOUT: import_ir_instBB: {ir_id: import_ir60000004, inst_id: inst48000263} +// CHECK:STDOUT: import_ir_instBC: {ir_id: import_ir60000004, inst_id: inst4800021D} +// CHECK:STDOUT: import_ir_instBD: {ir_id: import_ir60000004, inst_id: inst4800021E} // CHECK:STDOUT: clang_decls: {} // CHECK:STDOUT: name_scopes: // CHECK:STDOUT: name_scope0: {inst: instD, parent_scope: name_scope, has_error: false, extended_scopes: [], names: {name(Core): inst6000000F, name0: inst60000037}} @@ -262,37 +309,37 @@ fn Foo[T:! type](p: T*) -> (T*, ()) { // CHECK:STDOUT: generic60000000: {decl: inst60000037, bindings: inst_block60000012} // CHECK:STDOUT: generic60000001: {decl: inst60000051, bindings: inst_block6000001A} // CHECK:STDOUT: generic60000002: {decl: inst60000060, bindings: inst_block60000021} -// CHECK:STDOUT: generic60000003: {decl: inst60000070, bindings: inst_block60000026} +// CHECK:STDOUT: generic60000003: {decl: inst60000070, bindings: inst_block60000025} // CHECK:STDOUT: generic60000004: {decl: inst6000009D, bindings: inst_block60000031} -// CHECK:STDOUT: generic60000005: {decl: inst600000A8, bindings: inst_block60000036} +// CHECK:STDOUT: generic60000005: {decl: inst600000A8, bindings: inst_block60000035} // CHECK:STDOUT: generic60000006: {decl: inst600000BF, bindings: inst_block60000040} -// CHECK:STDOUT: generic60000007: {decl: inst600000D5, bindings: inst_block60000047} +// CHECK:STDOUT: generic60000007: {decl: inst600000D5, bindings: inst_block60000046} // CHECK:STDOUT: generic60000008: {decl: inst600000FA, bindings: inst_block60000058} -// CHECK:STDOUT: generic60000009: {decl: inst60000114, bindings: inst_block6000005F} +// CHECK:STDOUT: generic60000009: {decl: inst60000114, bindings: inst_block6000005E} // CHECK:STDOUT: specifics: // CHECK:STDOUT: specific60000000: {generic: generic60000000, args: inst_block60000013} // CHECK:STDOUT: specific60000001: {generic: generic60000001, args: inst_block6000001C} // CHECK:STDOUT: specific60000002: {generic: generic60000002, args: inst_block6000001F} // CHECK:STDOUT: specific60000003: {generic: generic60000002, args: inst_block60000022} -// CHECK:STDOUT: specific60000004: {generic: generic60000003, args: inst_block6000001F} -// CHECK:STDOUT: specific60000005: {generic: generic60000001, args: inst_block6000001F} -// CHECK:STDOUT: specific60000006: {generic: generic60000001, args: inst_block6000002B} +// CHECK:STDOUT: specific60000004: {generic: generic60000001, args: inst_block6000001F} +// CHECK:STDOUT: specific60000005: {generic: generic60000003, args: inst_block6000001F} +// CHECK:STDOUT: specific60000006: {generic: generic60000001, args: inst_block60000028} // CHECK:STDOUT: specific60000007: {generic: generic60000004, args: inst_block60000013} // CHECK:STDOUT: specific60000008: {generic: generic60000004, args: inst_block60000032} // CHECK:STDOUT: specific60000009: {generic: generic60000005, args: inst_block60000013} // CHECK:STDOUT: specific6000000A: {generic: generic60000006, args: inst_block6000003D} // CHECK:STDOUT: specific6000000B: {generic: generic60000006, args: inst_block60000041} -// CHECK:STDOUT: specific6000000C: {generic: generic60000007, args: inst_block6000003D} -// CHECK:STDOUT: specific6000000D: {generic: generic60000001, args: inst_block6000004D} -// CHECK:STDOUT: specific6000000E: {generic: generic60000001, args: inst_block6000004E} -// CHECK:STDOUT: specific6000000F: {generic: generic60000001, args: inst_block6000004F} +// CHECK:STDOUT: specific6000000C: {generic: generic60000001, args: inst_block60000049} +// CHECK:STDOUT: specific6000000D: {generic: generic60000007, args: inst_block6000003D} +// CHECK:STDOUT: specific6000000E: {generic: generic60000001, args: inst_block6000004B} +// CHECK:STDOUT: specific6000000F: {generic: generic60000001, args: inst_block6000004C} // CHECK:STDOUT: specific60000010: {generic: generic60000008, args: inst_block60000055} // CHECK:STDOUT: specific60000011: {generic: generic60000008, args: inst_block60000059} -// CHECK:STDOUT: specific60000012: {generic: generic60000009, args: inst_block60000055} -// CHECK:STDOUT: specific60000013: {generic: generic60000001, args: inst_block60000065} -// CHECK:STDOUT: specific60000014: {generic: generic60000001, args: inst_block60000066} -// CHECK:STDOUT: specific60000015: {generic: generic60000001, args: inst_block60000067} -// CHECK:STDOUT: specific60000016: {generic: generic60000001, args: inst_block60000068} +// CHECK:STDOUT: specific60000012: {generic: generic60000001, args: inst_block60000061} +// CHECK:STDOUT: specific60000013: {generic: generic60000009, args: inst_block60000055} +// CHECK:STDOUT: specific60000014: {generic: generic60000001, args: inst_block60000063} +// CHECK:STDOUT: specific60000015: {generic: generic60000001, args: inst_block60000064} +// CHECK:STDOUT: specific60000016: {generic: generic60000001, args: inst_block60000065} // CHECK:STDOUT: specific60000017: {generic: generic60000001, args: inst_block6000006F} // CHECK:STDOUT: specific60000018: {generic: generic60000001, args: inst_block60000071} // CHECK:STDOUT: struct_type_fields: @@ -419,23 +466,23 @@ fn Foo[T:! type](p: T*) -> (T*, ()) { // CHECK:STDOUT: inst6000005C: {kind: SymbolicBindingType, arg0: entity_name60000004, arg1: inst6000005B, type: type(TypeType)} // CHECK:STDOUT: inst6000005D: {kind: PatternType, arg0: inst6000005C, type: type(TypeType)} // CHECK:STDOUT: inst6000005E: {kind: LookupImplWitness, arg0: inst6000001A, arg1: specific_interface60000000, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst6000005F: {kind: ImportRefUnloaded, arg0: import_ir_instC, arg1: entity_name} +// CHECK:STDOUT: inst6000005F: {kind: ImportRefUnloaded, arg0: import_ir_instF, arg1: entity_name} // CHECK:STDOUT: inst60000060: {kind: ImplDecl, arg0: impl60000000, arg1: inst_block_empty} // CHECK:STDOUT: inst60000061: {kind: SymbolicBinding, arg0: entity_name60000001, arg1: inst, type: type(inst60000049)} // CHECK:STDOUT: inst60000062: {kind: SymbolicBindingType, arg0: entity_name60000001, arg1: inst60000061, type: type(TypeType)} // CHECK:STDOUT: inst60000063: {kind: ConstType, arg0: inst60000062, type: type(TypeType)} -// CHECK:STDOUT: inst60000064: {kind: ImportRefUnloaded, arg0: import_ir_instE, arg1: entity_name} +// CHECK:STDOUT: inst60000064: {kind: ImportRefUnloaded, arg0: import_ir_inst11, arg1: entity_name} // CHECK:STDOUT: inst60000065: {kind: ImplWitnessTable, arg0: inst_block6000001E, arg1: impl60000000} // CHECK:STDOUT: inst60000066: {kind: ImplWitness, arg0: inst60000065, arg1: specific60000002, type: type(inst(WitnessType))} // CHECK:STDOUT: inst60000067: {kind: PatternType, arg0: inst60000049, type: type(TypeType)} // CHECK:STDOUT: inst60000068: {kind: SymbolicBindingPattern, arg0: entity_name60000010, type: type(inst60000067)} -// CHECK:STDOUT: inst60000069: {kind: ImportRefLoaded, arg0: import_ir_inst11, arg1: entity_name, type: type(inst60000049)} -// CHECK:STDOUT: inst6000006A: {kind: SymbolicBinding, arg0: entity_name60000001, arg1: inst, type: type(inst60000049)} -// CHECK:STDOUT: inst6000006B: {kind: SymbolicBindingType, arg0: entity_name60000001, arg1: inst6000006A, type: type(TypeType)} -// CHECK:STDOUT: inst6000006C: {kind: ConstType, arg0: inst6000006B, type: type(TypeType)} -// CHECK:STDOUT: inst6000006D: {kind: ImplWitness, arg0: inst60000065, arg1: specific60000003, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst6000006E: {kind: ImportRefLoaded, arg0: import_ir_inst12, arg1: entity_name, type: type(TypeType)} -// CHECK:STDOUT: inst6000006F: {kind: ImportRefLoaded, arg0: import_ir_inst13, arg1: entity_name, type: type(TypeType)} +// CHECK:STDOUT: inst60000069: {kind: ImportRefLoaded, arg0: import_ir_inst14, arg1: entity_name, type: type(TypeType)} +// CHECK:STDOUT: inst6000006A: {kind: ImportRefLoaded, arg0: import_ir_inst15, arg1: entity_name, type: type(TypeType)} +// CHECK:STDOUT: inst6000006B: {kind: ImportRefLoaded, arg0: import_ir_inst16, arg1: entity_name, type: type(inst60000049)} +// CHECK:STDOUT: inst6000006C: {kind: SymbolicBinding, arg0: entity_name60000001, arg1: inst, type: type(inst60000049)} +// CHECK:STDOUT: inst6000006D: {kind: SymbolicBindingType, arg0: entity_name60000001, arg1: inst6000006C, type: type(TypeType)} +// CHECK:STDOUT: inst6000006E: {kind: ConstType, arg0: inst6000006D, type: type(TypeType)} +// CHECK:STDOUT: inst6000006F: {kind: ImplWitness, arg0: inst60000065, arg1: specific60000003, type: type(inst(WitnessType))} // CHECK:STDOUT: inst60000070: {kind: FunctionDecl, arg0: function60000002, arg1: inst_block_empty, type: type(symbolic_constant60000029)} // CHECK:STDOUT: inst60000071: {kind: FunctionType, arg0: function60000002, arg1: specific60000002, type: type(TypeType)} // CHECK:STDOUT: inst60000072: {kind: StructValue, arg0: inst_block_empty, type: type(symbolic_constant60000029)} @@ -444,99 +491,99 @@ fn Foo[T:! type](p: T*) -> (T*, ()) { // CHECK:STDOUT: inst60000075: {kind: OutParamPattern, arg0: inst60000074, arg1: call_param1, type: type(symbolic_constant6000002E)} // CHECK:STDOUT: inst60000076: {kind: ValueBindingPattern, arg0: entity_name60000011, type: type(symbolic_constant6000002E)} // CHECK:STDOUT: inst60000077: {kind: ValueParamPattern, arg0: inst60000076, arg1: call_param0, type: type(symbolic_constant6000002E)} -// CHECK:STDOUT: inst60000078: {kind: ImportRefLoaded, arg0: import_ir_inst19, arg1: entity_name, type: type(inst60000049)} +// CHECK:STDOUT: inst60000078: {kind: ImportRefLoaded, arg0: import_ir_inst20, arg1: entity_name, type: type(inst60000049)} // CHECK:STDOUT: inst60000079: {kind: SymbolicBinding, arg0: entity_name60000001, arg1: inst, type: type(inst60000049)} // CHECK:STDOUT: inst6000007A: {kind: SymbolicBindingType, arg0: entity_name60000001, arg1: inst60000079, type: type(TypeType)} // CHECK:STDOUT: inst6000007B: {kind: ConstType, arg0: inst6000007A, type: type(TypeType)} // CHECK:STDOUT: inst6000007C: {kind: PatternType, arg0: inst6000007B, type: type(TypeType)} -// CHECK:STDOUT: inst6000007D: {kind: FunctionType, arg0: function60000002, arg1: specific60000003, type: type(TypeType)} -// CHECK:STDOUT: inst6000007E: {kind: StructValue, arg0: inst_block_empty, type: type(symbolic_constant60000037)} -// CHECK:STDOUT: inst6000007F: {kind: RequireCompleteType, arg0: inst60000063, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst60000080: {kind: RequireCompleteType, arg0: inst60000062, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst60000081: {kind: LookupImplWitness, arg0: inst60000061, arg1: specific_interface60000000, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst60000082: {kind: FunctionTypeWithSelfType, arg0: inst60000052, arg1: inst60000061, type: type(TypeType)} -// CHECK:STDOUT: inst60000083: {kind: ImplWitnessAccess, arg0: inst60000081, arg1: element0, type: type(symbolic_constant6000003F)} -// CHECK:STDOUT: inst60000084: {kind: SpecificImplFunction, arg0: inst60000083, arg1: specific60000005, type: type(inst(SpecificFunctionType))} -// CHECK:STDOUT: inst60000085: {kind: RequireCompleteType, arg0: inst6000007B, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst60000086: {kind: RequireCompleteType, arg0: inst6000007A, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst60000087: {kind: LookupImplWitness, arg0: inst60000079, arg1: specific_interface60000000, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst60000088: {kind: FunctionTypeWithSelfType, arg0: inst60000052, arg1: inst60000079, type: type(TypeType)} -// CHECK:STDOUT: inst60000089: {kind: ImplWitnessAccess, arg0: inst60000087, arg1: element0, type: type(symbolic_constant60000048)} -// CHECK:STDOUT: inst6000008A: {kind: SpecificImplFunction, arg0: inst60000089, arg1: specific60000006, type: type(inst(SpecificFunctionType))} +// CHECK:STDOUT: inst6000007D: {kind: LookupImplWitness, arg0: inst60000061, arg1: specific_interface60000000, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst6000007E: {kind: FunctionTypeWithSelfType, arg0: inst60000052, arg1: inst60000061, type: type(TypeType)} +// CHECK:STDOUT: inst6000007F: {kind: ImplWitnessAccess, arg0: inst6000007D, arg1: element0, type: type(symbolic_constant60000037)} +// CHECK:STDOUT: inst60000080: {kind: SpecificImplFunction, arg0: inst6000007F, arg1: specific60000004, type: type(inst(SpecificFunctionType))} +// CHECK:STDOUT: inst60000081: {kind: RequireCompleteType, arg0: inst60000062, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst60000082: {kind: RequireCompleteType, arg0: inst60000063, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst60000083: {kind: RequireCompleteType, arg0: inst6000007B, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst60000084: {kind: RequireCompleteType, arg0: inst6000007A, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst60000085: {kind: LookupImplWitness, arg0: inst60000079, arg1: specific_interface60000000, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst60000086: {kind: FunctionTypeWithSelfType, arg0: inst60000052, arg1: inst60000079, type: type(TypeType)} +// CHECK:STDOUT: inst60000087: {kind: ImplWitnessAccess, arg0: inst60000085, arg1: element0, type: type(symbolic_constant60000045)} +// CHECK:STDOUT: inst60000088: {kind: SpecificImplFunction, arg0: inst60000087, arg1: specific60000006, type: type(inst(SpecificFunctionType))} +// CHECK:STDOUT: inst60000089: {kind: FunctionType, arg0: function60000002, arg1: specific60000003, type: type(TypeType)} +// CHECK:STDOUT: inst6000008A: {kind: StructValue, arg0: inst_block_empty, type: type(symbolic_constant60000049)} // CHECK:STDOUT: inst6000008B: {kind: PatternType, arg0: inst60000062, type: type(TypeType)} -// CHECK:STDOUT: inst6000008C: {kind: ImportRefUnloaded, arg0: import_ir_inst22, arg1: entity_name} +// CHECK:STDOUT: inst6000008C: {kind: ImportRefUnloaded, arg0: import_ir_inst2D, arg1: entity_name} // CHECK:STDOUT: inst6000008D: {kind: ImplDecl, arg0: impl60000001, arg1: inst_block_empty} -// CHECK:STDOUT: inst6000008E: {kind: ImportRefLoaded, arg0: import_ir_inst24, arg1: entity_name, type: type(TypeType)} -// CHECK:STDOUT: inst6000008F: {kind: ImportRefLoaded, arg0: import_ir_inst25, arg1: entity_name, type: type(TypeType)} -// CHECK:STDOUT: inst60000090: {kind: ImportRefUnloaded, arg0: import_ir_inst26, arg1: entity_name} +// CHECK:STDOUT: inst6000008E: {kind: ImportRefLoaded, arg0: import_ir_inst2F, arg1: entity_name, type: type(TypeType)} +// CHECK:STDOUT: inst6000008F: {kind: ImportRefLoaded, arg0: import_ir_inst30, arg1: entity_name, type: type(TypeType)} +// CHECK:STDOUT: inst60000090: {kind: ImportRefUnloaded, arg0: import_ir_inst31, arg1: entity_name} // CHECK:STDOUT: inst60000091: {kind: ImplDecl, arg0: impl60000002, arg1: inst_block_empty} -// CHECK:STDOUT: inst60000092: {kind: ImportRefLoaded, arg0: import_ir_inst28, arg1: entity_name, type: type(TypeType)} -// CHECK:STDOUT: inst60000093: {kind: ImportRefLoaded, arg0: import_ir_inst29, arg1: entity_name, type: type(TypeType)} -// CHECK:STDOUT: inst60000094: {kind: ImportRefUnloaded, arg0: import_ir_inst2A, arg1: entity_name} +// CHECK:STDOUT: inst60000092: {kind: ImportRefLoaded, arg0: import_ir_inst33, arg1: entity_name, type: type(TypeType)} +// CHECK:STDOUT: inst60000093: {kind: ImportRefLoaded, arg0: import_ir_inst34, arg1: entity_name, type: type(TypeType)} +// CHECK:STDOUT: inst60000094: {kind: ImportRefUnloaded, arg0: import_ir_inst35, arg1: entity_name} // CHECK:STDOUT: inst60000095: {kind: ImplDecl, arg0: impl60000003, arg1: inst_block_empty} -// CHECK:STDOUT: inst60000096: {kind: ImportRefLoaded, arg0: import_ir_inst2C, arg1: entity_name, type: type(TypeType)} -// CHECK:STDOUT: inst60000097: {kind: ImportRefLoaded, arg0: import_ir_inst2D, arg1: entity_name, type: type(TypeType)} -// CHECK:STDOUT: inst60000098: {kind: ImportRefUnloaded, arg0: import_ir_inst2E, arg1: entity_name} +// CHECK:STDOUT: inst60000096: {kind: ImportRefLoaded, arg0: import_ir_inst37, arg1: entity_name, type: type(TypeType)} +// CHECK:STDOUT: inst60000097: {kind: ImportRefLoaded, arg0: import_ir_inst38, arg1: entity_name, type: type(TypeType)} +// CHECK:STDOUT: inst60000098: {kind: ImportRefUnloaded, arg0: import_ir_inst39, arg1: entity_name} // CHECK:STDOUT: inst60000099: {kind: ImplDecl, arg0: impl60000004, arg1: inst_block_empty} -// CHECK:STDOUT: inst6000009A: {kind: ImportRefLoaded, arg0: import_ir_inst30, arg1: entity_name, type: type(TypeType)} -// CHECK:STDOUT: inst6000009B: {kind: ImportRefLoaded, arg0: import_ir_inst31, arg1: entity_name, type: type(TypeType)} -// CHECK:STDOUT: inst6000009C: {kind: ImportRefLoaded, arg0: import_ir_inst32, arg1: entity_name, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst6000009A: {kind: ImportRefLoaded, arg0: import_ir_inst3B, arg1: entity_name, type: type(TypeType)} +// CHECK:STDOUT: inst6000009B: {kind: ImportRefLoaded, arg0: import_ir_inst3C, arg1: entity_name, type: type(TypeType)} +// CHECK:STDOUT: inst6000009C: {kind: ImportRefLoaded, arg0: import_ir_inst3D, arg1: entity_name, type: type(inst(WitnessType))} // CHECK:STDOUT: inst6000009D: {kind: ImplDecl, arg0: impl60000005, arg1: inst_block_empty} -// CHECK:STDOUT: inst6000009E: {kind: ImportRefUnloaded, arg0: import_ir_inst34, arg1: entity_name} +// CHECK:STDOUT: inst6000009E: {kind: ImportRefUnloaded, arg0: import_ir_inst3F, arg1: entity_name} // CHECK:STDOUT: inst6000009F: {kind: ImplWitnessTable, arg0: inst_block6000002F, arg1: impl60000005} // CHECK:STDOUT: inst600000A0: {kind: ImplWitness, arg0: inst6000009F, arg1: specific60000007, type: type(inst(WitnessType))} // CHECK:STDOUT: inst600000A1: {kind: SymbolicBindingPattern, arg0: entity_name60000017, type: type(inst60000016)} -// CHECK:STDOUT: inst600000A2: {kind: ImportRefLoaded, arg0: import_ir_inst37, arg1: entity_name, type: type(TypeType)} -// CHECK:STDOUT: inst600000A3: {kind: SymbolicBinding, arg0: entity_name60000001, arg1: inst, type: type(TypeType)} -// CHECK:STDOUT: inst600000A4: {kind: PointerType, arg0: inst600000A3, type: type(TypeType)} -// CHECK:STDOUT: inst600000A5: {kind: ImplWitness, arg0: inst6000009F, arg1: specific60000008, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst600000A6: {kind: ImportRefLoaded, arg0: import_ir_inst38, arg1: entity_name, type: type(TypeType)} -// CHECK:STDOUT: inst600000A7: {kind: ImportRefLoaded, arg0: import_ir_inst39, arg1: entity_name, type: type(TypeType)} -// CHECK:STDOUT: inst600000A8: {kind: FunctionDecl, arg0: function60000003, arg1: inst_block_empty, type: type(symbolic_constant60000055)} +// CHECK:STDOUT: inst600000A2: {kind: ImportRefLoaded, arg0: import_ir_inst42, arg1: entity_name, type: type(TypeType)} +// CHECK:STDOUT: inst600000A3: {kind: ImportRefLoaded, arg0: import_ir_inst43, arg1: entity_name, type: type(TypeType)} +// CHECK:STDOUT: inst600000A4: {kind: ImportRefLoaded, arg0: import_ir_inst44, arg1: entity_name, type: type(TypeType)} +// CHECK:STDOUT: inst600000A5: {kind: SymbolicBinding, arg0: entity_name60000001, arg1: inst, type: type(TypeType)} +// CHECK:STDOUT: inst600000A6: {kind: PointerType, arg0: inst600000A5, type: type(TypeType)} +// CHECK:STDOUT: inst600000A7: {kind: ImplWitness, arg0: inst6000009F, arg1: specific60000008, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst600000A8: {kind: FunctionDecl, arg0: function60000003, arg1: inst_block_empty, type: type(symbolic_constant60000056)} // CHECK:STDOUT: inst600000A9: {kind: FunctionType, arg0: function60000003, arg1: specific60000007, type: type(TypeType)} -// CHECK:STDOUT: inst600000AA: {kind: StructValue, arg0: inst_block_empty, type: type(symbolic_constant60000055)} -// CHECK:STDOUT: inst600000AB: {kind: ReturnSlotPattern, arg0: inst, type: type(symbolic_constant60000059)} -// CHECK:STDOUT: inst600000AC: {kind: OutParamPattern, arg0: inst600000AB, arg1: call_param1, type: type(symbolic_constant60000059)} -// CHECK:STDOUT: inst600000AD: {kind: ValueBindingPattern, arg0: entity_name60000018, type: type(symbolic_constant60000059)} -// CHECK:STDOUT: inst600000AE: {kind: ValueParamPattern, arg0: inst600000AD, arg1: call_param0, type: type(symbolic_constant60000059)} -// CHECK:STDOUT: inst600000AF: {kind: ImportRefLoaded, arg0: import_ir_inst3F, arg1: entity_name, type: type(TypeType)} +// CHECK:STDOUT: inst600000AA: {kind: StructValue, arg0: inst_block_empty, type: type(symbolic_constant60000056)} +// CHECK:STDOUT: inst600000AB: {kind: ReturnSlotPattern, arg0: inst, type: type(symbolic_constant6000005A)} +// CHECK:STDOUT: inst600000AC: {kind: OutParamPattern, arg0: inst600000AB, arg1: call_param1, type: type(symbolic_constant6000005A)} +// CHECK:STDOUT: inst600000AD: {kind: ValueBindingPattern, arg0: entity_name60000018, type: type(symbolic_constant6000005A)} +// CHECK:STDOUT: inst600000AE: {kind: ValueParamPattern, arg0: inst600000AD, arg1: call_param0, type: type(symbolic_constant6000005A)} +// CHECK:STDOUT: inst600000AF: {kind: ImportRefLoaded, arg0: import_ir_inst4D, arg1: entity_name, type: type(TypeType)} // CHECK:STDOUT: inst600000B0: {kind: SymbolicBinding, arg0: entity_name60000001, arg1: inst, type: type(TypeType)} // CHECK:STDOUT: inst600000B1: {kind: PointerType, arg0: inst600000B0, type: type(TypeType)} // CHECK:STDOUT: inst600000B2: {kind: PatternType, arg0: inst600000B1, type: type(TypeType)} // CHECK:STDOUT: inst600000B3: {kind: FunctionType, arg0: function60000003, arg1: specific60000008, type: type(TypeType)} // CHECK:STDOUT: inst600000B4: {kind: StructValue, arg0: inst_block_empty, type: type(symbolic_constant60000061)} -// CHECK:STDOUT: inst600000B5: {kind: RequireCompleteType, arg0: inst600000A4, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst600000B6: {kind: ImportRefUnloaded, arg0: import_ir_inst43, arg1: entity_name} +// CHECK:STDOUT: inst600000B5: {kind: RequireCompleteType, arg0: inst600000A6, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst600000B6: {kind: ImportRefUnloaded, arg0: import_ir_inst54, arg1: entity_name} // CHECK:STDOUT: inst600000B7: {kind: ImplDecl, arg0: impl60000006, arg1: inst_block_empty} -// CHECK:STDOUT: inst600000B8: {kind: ImportRefLoaded, arg0: import_ir_inst45, arg1: entity_name, type: type(TypeType)} -// CHECK:STDOUT: inst600000B9: {kind: ImportRefLoaded, arg0: import_ir_inst46, arg1: entity_name, type: type(TypeType)} -// CHECK:STDOUT: inst600000BA: {kind: ImportRefUnloaded, arg0: import_ir_inst47, arg1: entity_name} +// CHECK:STDOUT: inst600000B8: {kind: ImportRefLoaded, arg0: import_ir_inst56, arg1: entity_name, type: type(TypeType)} +// CHECK:STDOUT: inst600000B9: {kind: ImportRefLoaded, arg0: import_ir_inst57, arg1: entity_name, type: type(TypeType)} +// CHECK:STDOUT: inst600000BA: {kind: ImportRefUnloaded, arg0: import_ir_inst58, arg1: entity_name} // CHECK:STDOUT: inst600000BB: {kind: ImplDecl, arg0: impl60000007, arg1: inst_block_empty} -// CHECK:STDOUT: inst600000BC: {kind: ImportRefLoaded, arg0: import_ir_inst49, arg1: entity_name, type: type(TypeType)} -// CHECK:STDOUT: inst600000BD: {kind: ImportRefLoaded, arg0: import_ir_inst4A, arg1: entity_name, type: type(TypeType)} -// CHECK:STDOUT: inst600000BE: {kind: ImportRefUnloaded, arg0: import_ir_inst4B, arg1: entity_name} +// CHECK:STDOUT: inst600000BC: {kind: ImportRefLoaded, arg0: import_ir_inst5A, arg1: entity_name, type: type(TypeType)} +// CHECK:STDOUT: inst600000BD: {kind: ImportRefLoaded, arg0: import_ir_inst5B, arg1: entity_name, type: type(TypeType)} +// CHECK:STDOUT: inst600000BE: {kind: ImportRefUnloaded, arg0: import_ir_inst5C, arg1: entity_name} // CHECK:STDOUT: inst600000BF: {kind: ImplDecl, arg0: impl60000008, arg1: inst_block_empty} // CHECK:STDOUT: inst600000C0: {kind: SymbolicBinding, arg0: entity_name6000001A, arg1: inst, type: type(inst60000049)} // CHECK:STDOUT: inst600000C1: {kind: SymbolicBindingType, arg0: entity_name6000001A, arg1: inst600000C0, type: type(TypeType)} // CHECK:STDOUT: inst600000C2: {kind: TupleType, arg0: inst_block6000003B, type: type(TypeType)} -// CHECK:STDOUT: inst600000C3: {kind: ImportRefUnloaded, arg0: import_ir_inst4D, arg1: entity_name} +// CHECK:STDOUT: inst600000C3: {kind: ImportRefUnloaded, arg0: import_ir_inst5E, arg1: entity_name} // CHECK:STDOUT: inst600000C4: {kind: ImplWitnessTable, arg0: inst_block6000003C, arg1: impl60000008} // CHECK:STDOUT: inst600000C5: {kind: ImplWitness, arg0: inst600000C4, arg1: specific6000000A, type: type(inst(WitnessType))} // CHECK:STDOUT: inst600000C6: {kind: TupleType, arg0: inst_block6000003E, type: type(TypeType)} // CHECK:STDOUT: inst600000C7: {kind: TupleValue, arg0: inst_block6000003D, type: type(inst600000C6)} // CHECK:STDOUT: inst600000C8: {kind: SymbolicBindingPattern, arg0: entity_name60000022, type: type(inst60000067)} // CHECK:STDOUT: inst600000C9: {kind: SymbolicBindingPattern, arg0: entity_name60000023, type: type(inst60000067)} -// CHECK:STDOUT: inst600000CA: {kind: ImportRefLoaded, arg0: import_ir_inst51, arg1: entity_name, type: type(inst60000049)} -// CHECK:STDOUT: inst600000CB: {kind: ImportRefLoaded, arg0: import_ir_inst52, arg1: entity_name, type: type(inst60000049)} -// CHECK:STDOUT: inst600000CC: {kind: SymbolicBinding, arg0: entity_name60000001, arg1: inst, type: type(inst60000049)} -// CHECK:STDOUT: inst600000CD: {kind: SymbolicBinding, arg0: entity_name6000001A, arg1: inst, type: type(inst60000049)} -// CHECK:STDOUT: inst600000CE: {kind: TupleValue, arg0: inst_block60000041, type: type(inst600000C6)} -// CHECK:STDOUT: inst600000CF: {kind: SymbolicBindingType, arg0: entity_name60000001, arg1: inst600000CC, type: type(TypeType)} -// CHECK:STDOUT: inst600000D0: {kind: SymbolicBindingType, arg0: entity_name6000001A, arg1: inst600000CD, type: type(TypeType)} -// CHECK:STDOUT: inst600000D1: {kind: TupleType, arg0: inst_block60000042, type: type(TypeType)} -// CHECK:STDOUT: inst600000D2: {kind: ImplWitness, arg0: inst600000C4, arg1: specific6000000B, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst600000D3: {kind: ImportRefLoaded, arg0: import_ir_inst53, arg1: entity_name, type: type(TypeType)} -// CHECK:STDOUT: inst600000D4: {kind: ImportRefLoaded, arg0: import_ir_inst54, arg1: entity_name, type: type(TypeType)} +// CHECK:STDOUT: inst600000CA: {kind: ImportRefLoaded, arg0: import_ir_inst62, arg1: entity_name, type: type(TypeType)} +// CHECK:STDOUT: inst600000CB: {kind: ImportRefLoaded, arg0: import_ir_inst63, arg1: entity_name, type: type(TypeType)} +// CHECK:STDOUT: inst600000CC: {kind: ImportRefLoaded, arg0: import_ir_inst64, arg1: entity_name, type: type(inst60000049)} +// CHECK:STDOUT: inst600000CD: {kind: ImportRefLoaded, arg0: import_ir_inst65, arg1: entity_name, type: type(inst60000049)} +// CHECK:STDOUT: inst600000CE: {kind: SymbolicBinding, arg0: entity_name60000001, arg1: inst, type: type(inst60000049)} +// CHECK:STDOUT: inst600000CF: {kind: SymbolicBinding, arg0: entity_name6000001A, arg1: inst, type: type(inst60000049)} +// CHECK:STDOUT: inst600000D0: {kind: TupleValue, arg0: inst_block60000041, type: type(inst600000C6)} +// CHECK:STDOUT: inst600000D1: {kind: SymbolicBindingType, arg0: entity_name60000001, arg1: inst600000CE, type: type(TypeType)} +// CHECK:STDOUT: inst600000D2: {kind: SymbolicBindingType, arg0: entity_name6000001A, arg1: inst600000CF, type: type(TypeType)} +// CHECK:STDOUT: inst600000D3: {kind: TupleType, arg0: inst_block60000042, type: type(TypeType)} +// CHECK:STDOUT: inst600000D4: {kind: ImplWitness, arg0: inst600000C4, arg1: specific6000000B, type: type(inst(WitnessType))} // CHECK:STDOUT: inst600000D5: {kind: FunctionDecl, arg0: function60000004, arg1: inst_block_empty, type: type(symbolic_constant6000007A)} // CHECK:STDOUT: inst600000D6: {kind: FunctionType, arg0: function60000004, arg1: specific6000000A, type: type(TypeType)} // CHECK:STDOUT: inst600000D7: {kind: StructValue, arg0: inst_block_empty, type: type(symbolic_constant6000007A)} @@ -545,40 +592,40 @@ fn Foo[T:! type](p: T*) -> (T*, ()) { // CHECK:STDOUT: inst600000DA: {kind: OutParamPattern, arg0: inst600000D9, arg1: call_param1, type: type(symbolic_constant6000007F)} // CHECK:STDOUT: inst600000DB: {kind: ValueBindingPattern, arg0: entity_name60000024, type: type(symbolic_constant6000007F)} // CHECK:STDOUT: inst600000DC: {kind: ValueParamPattern, arg0: inst600000DB, arg1: call_param0, type: type(symbolic_constant6000007F)} -// CHECK:STDOUT: inst600000DD: {kind: ImportRefLoaded, arg0: import_ir_inst5A, arg1: entity_name, type: type(inst60000049)} -// CHECK:STDOUT: inst600000DE: {kind: ImportRefLoaded, arg0: import_ir_inst5B, arg1: entity_name, type: type(inst60000049)} +// CHECK:STDOUT: inst600000DD: {kind: ImportRefLoaded, arg0: import_ir_inst72, arg1: entity_name, type: type(inst60000049)} +// CHECK:STDOUT: inst600000DE: {kind: ImportRefLoaded, arg0: import_ir_inst73, arg1: entity_name, type: type(inst60000049)} // CHECK:STDOUT: inst600000DF: {kind: SymbolicBinding, arg0: entity_name60000001, arg1: inst, type: type(inst60000049)} // CHECK:STDOUT: inst600000E0: {kind: SymbolicBindingType, arg0: entity_name60000001, arg1: inst600000DF, type: type(TypeType)} // CHECK:STDOUT: inst600000E1: {kind: SymbolicBinding, arg0: entity_name6000001A, arg1: inst, type: type(inst60000049)} // CHECK:STDOUT: inst600000E2: {kind: SymbolicBindingType, arg0: entity_name6000001A, arg1: inst600000E1, type: type(TypeType)} -// CHECK:STDOUT: inst600000E3: {kind: TupleType, arg0: inst_block60000048, type: type(TypeType)} +// CHECK:STDOUT: inst600000E3: {kind: TupleType, arg0: inst_block60000047, type: type(TypeType)} // CHECK:STDOUT: inst600000E4: {kind: PatternType, arg0: inst600000E3, type: type(TypeType)} -// CHECK:STDOUT: inst600000E5: {kind: FunctionType, arg0: function60000004, arg1: specific6000000B, type: type(TypeType)} -// CHECK:STDOUT: inst600000E6: {kind: StructValue, arg0: inst_block_empty, type: type(symbolic_constant6000008C)} -// CHECK:STDOUT: inst600000E7: {kind: RequireCompleteType, arg0: inst600000C2, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst600000E8: {kind: RequireCompleteType, arg0: inst600000C1, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst600000E9: {kind: LookupImplWitness, arg0: inst600000C0, arg1: specific_interface60000000, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst600000EA: {kind: FunctionTypeWithSelfType, arg0: inst60000052, arg1: inst600000C0, type: type(TypeType)} -// CHECK:STDOUT: inst600000EB: {kind: ImplWitnessAccess, arg0: inst600000E9, arg1: element0, type: type(symbolic_constant60000099)} -// CHECK:STDOUT: inst600000EC: {kind: SpecificImplFunction, arg0: inst600000EB, arg1: specific6000000D, type: type(inst(SpecificFunctionType))} -// CHECK:STDOUT: inst600000ED: {kind: RequireCompleteType, arg0: inst600000E3, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst600000EE: {kind: RequireCompleteType, arg0: inst600000E0, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst600000EF: {kind: LookupImplWitness, arg0: inst600000DF, arg1: specific_interface60000000, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst600000F0: {kind: FunctionTypeWithSelfType, arg0: inst60000052, arg1: inst600000DF, type: type(TypeType)} -// CHECK:STDOUT: inst600000F1: {kind: ImplWitnessAccess, arg0: inst600000EF, arg1: element0, type: type(symbolic_constant600000A2)} -// CHECK:STDOUT: inst600000F2: {kind: SpecificImplFunction, arg0: inst600000F1, arg1: specific6000000E, type: type(inst(SpecificFunctionType))} -// CHECK:STDOUT: inst600000F3: {kind: RequireCompleteType, arg0: inst600000E2, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst600000F4: {kind: LookupImplWitness, arg0: inst600000E1, arg1: specific_interface60000000, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst600000F5: {kind: FunctionTypeWithSelfType, arg0: inst60000052, arg1: inst600000E1, type: type(TypeType)} -// CHECK:STDOUT: inst600000F6: {kind: ImplWitnessAccess, arg0: inst600000F4, arg1: element0, type: type(symbolic_constant600000A7)} -// CHECK:STDOUT: inst600000F7: {kind: SpecificImplFunction, arg0: inst600000F6, arg1: specific6000000F, type: type(inst(SpecificFunctionType))} +// CHECK:STDOUT: inst600000E5: {kind: LookupImplWitness, arg0: inst600000C0, arg1: specific_interface60000000, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst600000E6: {kind: FunctionTypeWithSelfType, arg0: inst60000052, arg1: inst600000C0, type: type(TypeType)} +// CHECK:STDOUT: inst600000E7: {kind: ImplWitnessAccess, arg0: inst600000E5, arg1: element0, type: type(symbolic_constant6000008C)} +// CHECK:STDOUT: inst600000E8: {kind: SpecificImplFunction, arg0: inst600000E7, arg1: specific6000000C, type: type(inst(SpecificFunctionType))} +// CHECK:STDOUT: inst600000E9: {kind: RequireCompleteType, arg0: inst600000C1, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst600000EA: {kind: RequireCompleteType, arg0: inst600000C2, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst600000EB: {kind: RequireCompleteType, arg0: inst600000E3, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst600000EC: {kind: RequireCompleteType, arg0: inst600000E0, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst600000ED: {kind: LookupImplWitness, arg0: inst600000DF, arg1: specific_interface60000000, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst600000EE: {kind: FunctionTypeWithSelfType, arg0: inst60000052, arg1: inst600000DF, type: type(TypeType)} +// CHECK:STDOUT: inst600000EF: {kind: ImplWitnessAccess, arg0: inst600000ED, arg1: element0, type: type(symbolic_constant6000009F)} +// CHECK:STDOUT: inst600000F0: {kind: SpecificImplFunction, arg0: inst600000EF, arg1: specific6000000E, type: type(inst(SpecificFunctionType))} +// CHECK:STDOUT: inst600000F1: {kind: RequireCompleteType, arg0: inst600000E2, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst600000F2: {kind: LookupImplWitness, arg0: inst600000E1, arg1: specific_interface60000000, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst600000F3: {kind: FunctionTypeWithSelfType, arg0: inst60000052, arg1: inst600000E1, type: type(TypeType)} +// CHECK:STDOUT: inst600000F4: {kind: ImplWitnessAccess, arg0: inst600000F2, arg1: element0, type: type(symbolic_constant600000A4)} +// CHECK:STDOUT: inst600000F5: {kind: SpecificImplFunction, arg0: inst600000F4, arg1: specific6000000F, type: type(inst(SpecificFunctionType))} +// CHECK:STDOUT: inst600000F6: {kind: FunctionType, arg0: function60000004, arg1: specific6000000B, type: type(TypeType)} +// CHECK:STDOUT: inst600000F7: {kind: StructValue, arg0: inst_block_empty, type: type(symbolic_constant600000A8)} // CHECK:STDOUT: inst600000F8: {kind: PatternType, arg0: inst600000C1, type: type(TypeType)} -// CHECK:STDOUT: inst600000F9: {kind: ImportRefUnloaded, arg0: import_ir_inst69, arg1: entity_name} +// CHECK:STDOUT: inst600000F9: {kind: ImportRefUnloaded, arg0: import_ir_inst87, arg1: entity_name} // CHECK:STDOUT: inst600000FA: {kind: ImplDecl, arg0: impl60000009, arg1: inst_block_empty} // CHECK:STDOUT: inst600000FB: {kind: SymbolicBinding, arg0: entity_name60000029, arg1: inst, type: type(inst60000049)} // CHECK:STDOUT: inst600000FC: {kind: SymbolicBindingType, arg0: entity_name60000029, arg1: inst600000FB, type: type(TypeType)} // CHECK:STDOUT: inst600000FD: {kind: TupleType, arg0: inst_block60000053, type: type(TypeType)} -// CHECK:STDOUT: inst600000FE: {kind: ImportRefUnloaded, arg0: import_ir_inst6B, arg1: entity_name} +// CHECK:STDOUT: inst600000FE: {kind: ImportRefUnloaded, arg0: import_ir_inst89, arg1: entity_name} // CHECK:STDOUT: inst600000FF: {kind: ImplWitnessTable, arg0: inst_block60000054, arg1: impl60000009} // CHECK:STDOUT: inst60000100: {kind: ImplWitness, arg0: inst600000FF, arg1: specific60000010, type: type(inst(WitnessType))} // CHECK:STDOUT: inst60000101: {kind: TupleType, arg0: inst_block60000056, type: type(TypeType)} @@ -586,20 +633,20 @@ fn Foo[T:! type](p: T*) -> (T*, ()) { // CHECK:STDOUT: inst60000103: {kind: SymbolicBindingPattern, arg0: entity_name60000034, type: type(inst60000067)} // CHECK:STDOUT: inst60000104: {kind: SymbolicBindingPattern, arg0: entity_name60000035, type: type(inst60000067)} // CHECK:STDOUT: inst60000105: {kind: SymbolicBindingPattern, arg0: entity_name60000036, type: type(inst60000067)} -// CHECK:STDOUT: inst60000106: {kind: ImportRefLoaded, arg0: import_ir_inst70, arg1: entity_name, type: type(inst60000049)} -// CHECK:STDOUT: inst60000107: {kind: ImportRefLoaded, arg0: import_ir_inst71, arg1: entity_name, type: type(inst60000049)} -// CHECK:STDOUT: inst60000108: {kind: ImportRefLoaded, arg0: import_ir_inst72, arg1: entity_name, type: type(inst60000049)} -// CHECK:STDOUT: inst60000109: {kind: SymbolicBinding, arg0: entity_name60000001, arg1: inst, type: type(inst60000049)} -// CHECK:STDOUT: inst6000010A: {kind: SymbolicBinding, arg0: entity_name6000001A, arg1: inst, type: type(inst60000049)} -// CHECK:STDOUT: inst6000010B: {kind: SymbolicBinding, arg0: entity_name60000029, arg1: inst, type: type(inst60000049)} -// CHECK:STDOUT: inst6000010C: {kind: TupleValue, arg0: inst_block60000059, type: type(inst60000101)} -// CHECK:STDOUT: inst6000010D: {kind: SymbolicBindingType, arg0: entity_name60000001, arg1: inst60000109, type: type(TypeType)} -// CHECK:STDOUT: inst6000010E: {kind: SymbolicBindingType, arg0: entity_name6000001A, arg1: inst6000010A, type: type(TypeType)} -// CHECK:STDOUT: inst6000010F: {kind: SymbolicBindingType, arg0: entity_name60000029, arg1: inst6000010B, type: type(TypeType)} -// CHECK:STDOUT: inst60000110: {kind: TupleType, arg0: inst_block6000005A, type: type(TypeType)} -// CHECK:STDOUT: inst60000111: {kind: ImplWitness, arg0: inst600000FF, arg1: specific60000011, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst60000112: {kind: ImportRefLoaded, arg0: import_ir_inst73, arg1: entity_name, type: type(TypeType)} -// CHECK:STDOUT: inst60000113: {kind: ImportRefLoaded, arg0: import_ir_inst74, arg1: entity_name, type: type(TypeType)} +// CHECK:STDOUT: inst60000106: {kind: ImportRefLoaded, arg0: import_ir_inst8E, arg1: entity_name, type: type(TypeType)} +// CHECK:STDOUT: inst60000107: {kind: ImportRefLoaded, arg0: import_ir_inst8F, arg1: entity_name, type: type(TypeType)} +// CHECK:STDOUT: inst60000108: {kind: ImportRefLoaded, arg0: import_ir_inst90, arg1: entity_name, type: type(inst60000049)} +// CHECK:STDOUT: inst60000109: {kind: ImportRefLoaded, arg0: import_ir_inst91, arg1: entity_name, type: type(inst60000049)} +// CHECK:STDOUT: inst6000010A: {kind: ImportRefLoaded, arg0: import_ir_inst92, arg1: entity_name, type: type(inst60000049)} +// CHECK:STDOUT: inst6000010B: {kind: SymbolicBinding, arg0: entity_name60000001, arg1: inst, type: type(inst60000049)} +// CHECK:STDOUT: inst6000010C: {kind: SymbolicBinding, arg0: entity_name6000001A, arg1: inst, type: type(inst60000049)} +// CHECK:STDOUT: inst6000010D: {kind: SymbolicBinding, arg0: entity_name60000029, arg1: inst, type: type(inst60000049)} +// CHECK:STDOUT: inst6000010E: {kind: TupleValue, arg0: inst_block60000059, type: type(inst60000101)} +// CHECK:STDOUT: inst6000010F: {kind: SymbolicBindingType, arg0: entity_name60000001, arg1: inst6000010B, type: type(TypeType)} +// CHECK:STDOUT: inst60000110: {kind: SymbolicBindingType, arg0: entity_name6000001A, arg1: inst6000010C, type: type(TypeType)} +// CHECK:STDOUT: inst60000111: {kind: SymbolicBindingType, arg0: entity_name60000029, arg1: inst6000010D, type: type(TypeType)} +// CHECK:STDOUT: inst60000112: {kind: TupleType, arg0: inst_block6000005A, type: type(TypeType)} +// CHECK:STDOUT: inst60000113: {kind: ImplWitness, arg0: inst600000FF, arg1: specific60000011, type: type(inst(WitnessType))} // CHECK:STDOUT: inst60000114: {kind: FunctionDecl, arg0: function60000005, arg1: inst_block_empty, type: type(symbolic_constant600000C6)} // CHECK:STDOUT: inst60000115: {kind: FunctionType, arg0: function60000005, arg1: specific60000010, type: type(TypeType)} // CHECK:STDOUT: inst60000116: {kind: StructValue, arg0: inst_block_empty, type: type(symbolic_constant600000C6)} @@ -608,41 +655,41 @@ fn Foo[T:! type](p: T*) -> (T*, ()) { // CHECK:STDOUT: inst60000119: {kind: OutParamPattern, arg0: inst60000118, arg1: call_param1, type: type(symbolic_constant600000CB)} // CHECK:STDOUT: inst6000011A: {kind: ValueBindingPattern, arg0: entity_name60000037, type: type(symbolic_constant600000CB)} // CHECK:STDOUT: inst6000011B: {kind: ValueParamPattern, arg0: inst6000011A, arg1: call_param0, type: type(symbolic_constant600000CB)} -// CHECK:STDOUT: inst6000011C: {kind: ImportRefLoaded, arg0: import_ir_inst7A, arg1: entity_name, type: type(inst60000049)} -// CHECK:STDOUT: inst6000011D: {kind: ImportRefLoaded, arg0: import_ir_inst7B, arg1: entity_name, type: type(inst60000049)} -// CHECK:STDOUT: inst6000011E: {kind: ImportRefLoaded, arg0: import_ir_inst7C, arg1: entity_name, type: type(inst60000049)} +// CHECK:STDOUT: inst6000011C: {kind: ImportRefLoaded, arg0: import_ir_instA1, arg1: entity_name, type: type(inst60000049)} +// CHECK:STDOUT: inst6000011D: {kind: ImportRefLoaded, arg0: import_ir_instA2, arg1: entity_name, type: type(inst60000049)} +// CHECK:STDOUT: inst6000011E: {kind: ImportRefLoaded, arg0: import_ir_instA3, arg1: entity_name, type: type(inst60000049)} // CHECK:STDOUT: inst6000011F: {kind: SymbolicBinding, arg0: entity_name60000001, arg1: inst, type: type(inst60000049)} // CHECK:STDOUT: inst60000120: {kind: SymbolicBindingType, arg0: entity_name60000001, arg1: inst6000011F, type: type(TypeType)} // CHECK:STDOUT: inst60000121: {kind: SymbolicBinding, arg0: entity_name6000001A, arg1: inst, type: type(inst60000049)} // CHECK:STDOUT: inst60000122: {kind: SymbolicBindingType, arg0: entity_name6000001A, arg1: inst60000121, type: type(TypeType)} // CHECK:STDOUT: inst60000123: {kind: SymbolicBinding, arg0: entity_name60000029, arg1: inst, type: type(inst60000049)} // CHECK:STDOUT: inst60000124: {kind: SymbolicBindingType, arg0: entity_name60000029, arg1: inst60000123, type: type(TypeType)} -// CHECK:STDOUT: inst60000125: {kind: TupleType, arg0: inst_block60000060, type: type(TypeType)} +// CHECK:STDOUT: inst60000125: {kind: TupleType, arg0: inst_block6000005F, type: type(TypeType)} // CHECK:STDOUT: inst60000126: {kind: PatternType, arg0: inst60000125, type: type(TypeType)} -// CHECK:STDOUT: inst60000127: {kind: FunctionType, arg0: function60000005, arg1: specific60000011, type: type(TypeType)} -// CHECK:STDOUT: inst60000128: {kind: StructValue, arg0: inst_block_empty, type: type(symbolic_constant600000DC)} -// CHECK:STDOUT: inst60000129: {kind: RequireCompleteType, arg0: inst600000FD, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst6000012A: {kind: RequireCompleteType, arg0: inst600000FC, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst6000012B: {kind: LookupImplWitness, arg0: inst600000FB, arg1: specific_interface60000000, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst6000012C: {kind: FunctionTypeWithSelfType, arg0: inst60000052, arg1: inst600000FB, type: type(TypeType)} -// CHECK:STDOUT: inst6000012D: {kind: ImplWitnessAccess, arg0: inst6000012B, arg1: element0, type: type(symbolic_constant600000EE)} -// CHECK:STDOUT: inst6000012E: {kind: SpecificImplFunction, arg0: inst6000012D, arg1: specific60000013, type: type(inst(SpecificFunctionType))} -// CHECK:STDOUT: inst6000012F: {kind: RequireCompleteType, arg0: inst60000125, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst60000130: {kind: RequireCompleteType, arg0: inst60000120, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst60000131: {kind: LookupImplWitness, arg0: inst6000011F, arg1: specific_interface60000000, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst60000132: {kind: FunctionTypeWithSelfType, arg0: inst60000052, arg1: inst6000011F, type: type(TypeType)} -// CHECK:STDOUT: inst60000133: {kind: ImplWitnessAccess, arg0: inst60000131, arg1: element0, type: type(symbolic_constant600000F7)} -// CHECK:STDOUT: inst60000134: {kind: SpecificImplFunction, arg0: inst60000133, arg1: specific60000014, type: type(inst(SpecificFunctionType))} -// CHECK:STDOUT: inst60000135: {kind: RequireCompleteType, arg0: inst60000122, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst60000136: {kind: LookupImplWitness, arg0: inst60000121, arg1: specific_interface60000000, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst60000137: {kind: FunctionTypeWithSelfType, arg0: inst60000052, arg1: inst60000121, type: type(TypeType)} -// CHECK:STDOUT: inst60000138: {kind: ImplWitnessAccess, arg0: inst60000136, arg1: element0, type: type(symbolic_constant600000FC)} -// CHECK:STDOUT: inst60000139: {kind: SpecificImplFunction, arg0: inst60000138, arg1: specific60000015, type: type(inst(SpecificFunctionType))} -// CHECK:STDOUT: inst6000013A: {kind: RequireCompleteType, arg0: inst60000124, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst6000013B: {kind: LookupImplWitness, arg0: inst60000123, arg1: specific_interface60000000, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst6000013C: {kind: FunctionTypeWithSelfType, arg0: inst60000052, arg1: inst60000123, type: type(TypeType)} -// CHECK:STDOUT: inst6000013D: {kind: ImplWitnessAccess, arg0: inst6000013B, arg1: element0, type: type(symbolic_constant60000101)} -// CHECK:STDOUT: inst6000013E: {kind: SpecificImplFunction, arg0: inst6000013D, arg1: specific60000016, type: type(inst(SpecificFunctionType))} +// CHECK:STDOUT: inst60000127: {kind: LookupImplWitness, arg0: inst600000FB, arg1: specific_interface60000000, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst60000128: {kind: FunctionTypeWithSelfType, arg0: inst60000052, arg1: inst600000FB, type: type(TypeType)} +// CHECK:STDOUT: inst60000129: {kind: ImplWitnessAccess, arg0: inst60000127, arg1: element0, type: type(symbolic_constant600000DC)} +// CHECK:STDOUT: inst6000012A: {kind: SpecificImplFunction, arg0: inst60000129, arg1: specific60000012, type: type(inst(SpecificFunctionType))} +// CHECK:STDOUT: inst6000012B: {kind: RequireCompleteType, arg0: inst600000FC, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst6000012C: {kind: RequireCompleteType, arg0: inst600000FD, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst6000012D: {kind: RequireCompleteType, arg0: inst60000125, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst6000012E: {kind: RequireCompleteType, arg0: inst60000120, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst6000012F: {kind: LookupImplWitness, arg0: inst6000011F, arg1: specific_interface60000000, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst60000130: {kind: FunctionTypeWithSelfType, arg0: inst60000052, arg1: inst6000011F, type: type(TypeType)} +// CHECK:STDOUT: inst60000131: {kind: ImplWitnessAccess, arg0: inst6000012F, arg1: element0, type: type(symbolic_constant600000F4)} +// CHECK:STDOUT: inst60000132: {kind: SpecificImplFunction, arg0: inst60000131, arg1: specific60000014, type: type(inst(SpecificFunctionType))} +// CHECK:STDOUT: inst60000133: {kind: RequireCompleteType, arg0: inst60000122, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst60000134: {kind: LookupImplWitness, arg0: inst60000121, arg1: specific_interface60000000, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst60000135: {kind: FunctionTypeWithSelfType, arg0: inst60000052, arg1: inst60000121, type: type(TypeType)} +// CHECK:STDOUT: inst60000136: {kind: ImplWitnessAccess, arg0: inst60000134, arg1: element0, type: type(symbolic_constant600000F9)} +// CHECK:STDOUT: inst60000137: {kind: SpecificImplFunction, arg0: inst60000136, arg1: specific60000015, type: type(inst(SpecificFunctionType))} +// CHECK:STDOUT: inst60000138: {kind: RequireCompleteType, arg0: inst60000124, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst60000139: {kind: LookupImplWitness, arg0: inst60000123, arg1: specific_interface60000000, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst6000013A: {kind: FunctionTypeWithSelfType, arg0: inst60000052, arg1: inst60000123, type: type(TypeType)} +// CHECK:STDOUT: inst6000013B: {kind: ImplWitnessAccess, arg0: inst60000139, arg1: element0, type: type(symbolic_constant600000FE)} +// CHECK:STDOUT: inst6000013C: {kind: SpecificImplFunction, arg0: inst6000013B, arg1: specific60000016, type: type(inst(SpecificFunctionType))} +// CHECK:STDOUT: inst6000013D: {kind: FunctionType, arg0: function60000005, arg1: specific60000011, type: type(TypeType)} +// CHECK:STDOUT: inst6000013E: {kind: StructValue, arg0: inst_block_empty, type: type(symbolic_constant60000102)} // CHECK:STDOUT: inst6000013F: {kind: PatternType, arg0: inst600000FC, type: type(TypeType)} // CHECK:STDOUT: inst60000140: {kind: LookupImplWitness, arg0: inst6000001A, arg1: specific_interface60000000, type: type(inst(WitnessType))} // CHECK:STDOUT: inst60000141: {kind: LookupImplWitness, arg0: inst6000001B, arg1: specific_interface60000000, type: type(inst(WitnessType))} @@ -753,13 +800,13 @@ fn Foo[T:! type](p: T*) -> (T*, ()) { // CHECK:STDOUT: inst60000066: symbolic_constant6000001F // CHECK:STDOUT: inst60000067: concrete_constant(inst60000067) // CHECK:STDOUT: inst60000068: concrete_constant(inst60000068) -// CHECK:STDOUT: inst60000069: symbolic_constant60000024 -// CHECK:STDOUT: inst6000006A: symbolic_constant60000025 -// CHECK:STDOUT: inst6000006B: symbolic_constant60000026 -// CHECK:STDOUT: inst6000006C: symbolic_constant60000027 -// CHECK:STDOUT: inst6000006D: symbolic_constant60000028 -// CHECK:STDOUT: inst6000006E: symbolic_constant6000001E -// CHECK:STDOUT: inst6000006F: concrete_constant(inst60000049) +// CHECK:STDOUT: inst60000069: symbolic_constant6000001E +// CHECK:STDOUT: inst6000006A: concrete_constant(inst60000049) +// CHECK:STDOUT: inst6000006B: symbolic_constant60000024 +// CHECK:STDOUT: inst6000006C: symbolic_constant60000025 +// CHECK:STDOUT: inst6000006D: symbolic_constant60000026 +// CHECK:STDOUT: inst6000006E: symbolic_constant60000027 +// CHECK:STDOUT: inst6000006F: symbolic_constant60000028 // CHECK:STDOUT: inst60000070: symbolic_constant6000002B // CHECK:STDOUT: inst60000071: symbolic_constant60000029 // CHECK:STDOUT: inst60000072: symbolic_constant6000002A @@ -773,18 +820,18 @@ fn Foo[T:! type](p: T*) -> (T*, ()) { // CHECK:STDOUT: inst6000007A: symbolic_constant60000033 // CHECK:STDOUT: inst6000007B: symbolic_constant60000034 // CHECK:STDOUT: inst6000007C: symbolic_constant60000035 -// CHECK:STDOUT: inst6000007D: symbolic_constant60000037 -// CHECK:STDOUT: inst6000007E: symbolic_constant60000038 -// CHECK:STDOUT: inst6000007F: symbolic_constant60000039 -// CHECK:STDOUT: inst60000080: symbolic_constant6000003B -// CHECK:STDOUT: inst60000081: symbolic_constant6000003D -// CHECK:STDOUT: inst60000082: symbolic_constant6000003F -// CHECK:STDOUT: inst60000083: symbolic_constant60000041 +// CHECK:STDOUT: inst6000007D: symbolic_constant60000036 +// CHECK:STDOUT: inst6000007E: symbolic_constant60000037 +// CHECK:STDOUT: inst6000007F: symbolic_constant60000038 +// CHECK:STDOUT: inst60000080: symbolic_constant60000039 +// CHECK:STDOUT: inst60000081: symbolic_constant6000003E +// CHECK:STDOUT: inst60000082: symbolic_constant60000040 +// CHECK:STDOUT: inst60000083: symbolic_constant60000042 // CHECK:STDOUT: inst60000084: symbolic_constant60000043 -// CHECK:STDOUT: inst60000085: symbolic_constant60000045 -// CHECK:STDOUT: inst60000086: symbolic_constant60000046 -// CHECK:STDOUT: inst60000087: symbolic_constant60000047 -// CHECK:STDOUT: inst60000088: symbolic_constant60000048 +// CHECK:STDOUT: inst60000085: symbolic_constant60000044 +// CHECK:STDOUT: inst60000086: symbolic_constant60000045 +// CHECK:STDOUT: inst60000087: symbolic_constant60000046 +// CHECK:STDOUT: inst60000088: symbolic_constant60000047 // CHECK:STDOUT: inst60000089: symbolic_constant60000049 // CHECK:STDOUT: inst6000008A: symbolic_constant6000004A // CHECK:STDOUT: inst6000008B: symbolic_constant6000004B @@ -810,23 +857,23 @@ fn Foo[T:! type](p: T*) -> (T*, ()) { // CHECK:STDOUT: inst6000009F: concrete_constant(inst6000009F) // CHECK:STDOUT: inst600000A0: symbolic_constant6000004D // CHECK:STDOUT: inst600000A1: concrete_constant(inst600000A1) -// CHECK:STDOUT: inst600000A2: symbolic_constant60000051 -// CHECK:STDOUT: inst600000A3: symbolic_constant60000052 -// CHECK:STDOUT: inst600000A4: symbolic_constant60000053 -// CHECK:STDOUT: inst600000A5: symbolic_constant60000054 -// CHECK:STDOUT: inst600000A6: symbolic_constant6000004C -// CHECK:STDOUT: inst600000A7: concrete_constant(inst60000049) -// CHECK:STDOUT: inst600000A8: symbolic_constant60000057 -// CHECK:STDOUT: inst600000A9: symbolic_constant60000055 -// CHECK:STDOUT: inst600000AA: symbolic_constant60000056 +// CHECK:STDOUT: inst600000A2: symbolic_constant6000004C +// CHECK:STDOUT: inst600000A3: concrete_constant(inst60000049) +// CHECK:STDOUT: inst600000A4: symbolic_constant60000051 +// CHECK:STDOUT: inst600000A5: symbolic_constant60000052 +// CHECK:STDOUT: inst600000A6: symbolic_constant60000053 +// CHECK:STDOUT: inst600000A7: symbolic_constant60000054 +// CHECK:STDOUT: inst600000A8: symbolic_constant60000058 +// CHECK:STDOUT: inst600000A9: symbolic_constant60000056 +// CHECK:STDOUT: inst600000AA: symbolic_constant60000057 // CHECK:STDOUT: inst600000AB: concrete_constant(inst600000AB) // CHECK:STDOUT: inst600000AC: concrete_constant(inst600000AC) // CHECK:STDOUT: inst600000AD: concrete_constant(inst600000AD) // CHECK:STDOUT: inst600000AE: concrete_constant(inst600000AE) // CHECK:STDOUT: inst600000AF: symbolic_constant60000051 -// CHECK:STDOUT: inst600000B0: symbolic_constant6000005C -// CHECK:STDOUT: inst600000B1: symbolic_constant6000005D -// CHECK:STDOUT: inst600000B2: symbolic_constant6000005E +// CHECK:STDOUT: inst600000B0: symbolic_constant6000005D +// CHECK:STDOUT: inst600000B1: symbolic_constant6000005E +// CHECK:STDOUT: inst600000B2: symbolic_constant6000005F // CHECK:STDOUT: inst600000B3: symbolic_constant60000061 // CHECK:STDOUT: inst600000B4: symbolic_constant60000062 // CHECK:STDOUT: inst600000B5: symbolic_constant60000063 @@ -850,17 +897,17 @@ fn Foo[T:! type](p: T*) -> (T*, ()) { // CHECK:STDOUT: inst600000C7: symbolic_constant6000006D // CHECK:STDOUT: inst600000C8: concrete_constant(inst600000C8) // CHECK:STDOUT: inst600000C9: concrete_constant(inst600000C9) -// CHECK:STDOUT: inst600000CA: symbolic_constant60000072 -// CHECK:STDOUT: inst600000CB: symbolic_constant60000071 -// CHECK:STDOUT: inst600000CC: symbolic_constant60000073 -// CHECK:STDOUT: inst600000CD: symbolic_constant60000074 -// CHECK:STDOUT: inst600000CE: symbolic_constant60000075 -// CHECK:STDOUT: inst600000CF: symbolic_constant60000076 -// CHECK:STDOUT: inst600000D0: symbolic_constant60000077 -// CHECK:STDOUT: inst600000D1: symbolic_constant60000078 -// CHECK:STDOUT: inst600000D2: symbolic_constant60000079 -// CHECK:STDOUT: inst600000D3: symbolic_constant60000067 -// CHECK:STDOUT: inst600000D4: concrete_constant(inst60000049) +// CHECK:STDOUT: inst600000CA: symbolic_constant60000067 +// CHECK:STDOUT: inst600000CB: concrete_constant(inst60000049) +// CHECK:STDOUT: inst600000CC: symbolic_constant60000072 +// CHECK:STDOUT: inst600000CD: symbolic_constant60000071 +// CHECK:STDOUT: inst600000CE: symbolic_constant60000073 +// CHECK:STDOUT: inst600000CF: symbolic_constant60000074 +// CHECK:STDOUT: inst600000D0: symbolic_constant60000075 +// CHECK:STDOUT: inst600000D1: symbolic_constant60000076 +// CHECK:STDOUT: inst600000D2: symbolic_constant60000077 +// CHECK:STDOUT: inst600000D3: symbolic_constant60000078 +// CHECK:STDOUT: inst600000D4: symbolic_constant60000079 // CHECK:STDOUT: inst600000D5: symbolic_constant6000007C // CHECK:STDOUT: inst600000D6: symbolic_constant6000007A // CHECK:STDOUT: inst600000D7: symbolic_constant6000007B @@ -877,23 +924,23 @@ fn Foo[T:! type](p: T*) -> (T*, ()) { // CHECK:STDOUT: inst600000E2: symbolic_constant60000088 // CHECK:STDOUT: inst600000E3: symbolic_constant60000089 // CHECK:STDOUT: inst600000E4: symbolic_constant6000008A -// CHECK:STDOUT: inst600000E5: symbolic_constant6000008C -// CHECK:STDOUT: inst600000E6: symbolic_constant6000008D -// CHECK:STDOUT: inst600000E7: symbolic_constant6000008E -// CHECK:STDOUT: inst600000E8: symbolic_constant60000095 -// CHECK:STDOUT: inst600000E9: symbolic_constant60000097 -// CHECK:STDOUT: inst600000EA: symbolic_constant60000099 -// CHECK:STDOUT: inst600000EB: symbolic_constant6000009B +// CHECK:STDOUT: inst600000E5: symbolic_constant6000008B +// CHECK:STDOUT: inst600000E6: symbolic_constant6000008C +// CHECK:STDOUT: inst600000E7: symbolic_constant6000008D +// CHECK:STDOUT: inst600000E8: symbolic_constant6000008E +// CHECK:STDOUT: inst600000E9: symbolic_constant60000093 +// CHECK:STDOUT: inst600000EA: symbolic_constant6000009A +// CHECK:STDOUT: inst600000EB: symbolic_constant6000009C // CHECK:STDOUT: inst600000EC: symbolic_constant6000009D -// CHECK:STDOUT: inst600000ED: symbolic_constant6000009F -// CHECK:STDOUT: inst600000EE: symbolic_constant600000A0 -// CHECK:STDOUT: inst600000EF: symbolic_constant600000A1 -// CHECK:STDOUT: inst600000F0: symbolic_constant600000A2 -// CHECK:STDOUT: inst600000F1: symbolic_constant600000A3 -// CHECK:STDOUT: inst600000F2: symbolic_constant600000A4 -// CHECK:STDOUT: inst600000F3: symbolic_constant600000A5 -// CHECK:STDOUT: inst600000F4: symbolic_constant600000A6 -// CHECK:STDOUT: inst600000F5: symbolic_constant600000A7 +// CHECK:STDOUT: inst600000ED: symbolic_constant6000009E +// CHECK:STDOUT: inst600000EE: symbolic_constant6000009F +// CHECK:STDOUT: inst600000EF: symbolic_constant600000A0 +// CHECK:STDOUT: inst600000F0: symbolic_constant600000A1 +// CHECK:STDOUT: inst600000F1: symbolic_constant600000A2 +// CHECK:STDOUT: inst600000F2: symbolic_constant600000A3 +// CHECK:STDOUT: inst600000F3: symbolic_constant600000A4 +// CHECK:STDOUT: inst600000F4: symbolic_constant600000A5 +// CHECK:STDOUT: inst600000F5: symbolic_constant600000A6 // CHECK:STDOUT: inst600000F6: symbolic_constant600000A8 // CHECK:STDOUT: inst600000F7: symbolic_constant600000A9 // CHECK:STDOUT: inst600000F8: symbolic_constant600000AA @@ -910,20 +957,20 @@ fn Foo[T:! type](p: T*) -> (T*, ()) { // CHECK:STDOUT: inst60000103: concrete_constant(inst60000103) // CHECK:STDOUT: inst60000104: concrete_constant(inst60000104) // CHECK:STDOUT: inst60000105: concrete_constant(inst60000105) -// CHECK:STDOUT: inst60000106: symbolic_constant600000BC -// CHECK:STDOUT: inst60000107: symbolic_constant600000BB -// CHECK:STDOUT: inst60000108: symbolic_constant600000BA -// CHECK:STDOUT: inst60000109: symbolic_constant600000BD -// CHECK:STDOUT: inst6000010A: symbolic_constant600000BE -// CHECK:STDOUT: inst6000010B: symbolic_constant600000BF -// CHECK:STDOUT: inst6000010C: symbolic_constant600000C0 -// CHECK:STDOUT: inst6000010D: symbolic_constant600000C1 -// CHECK:STDOUT: inst6000010E: symbolic_constant600000C2 -// CHECK:STDOUT: inst6000010F: symbolic_constant600000C3 -// CHECK:STDOUT: inst60000110: symbolic_constant600000C4 -// CHECK:STDOUT: inst60000111: symbolic_constant600000C5 -// CHECK:STDOUT: inst60000112: symbolic_constant600000AE -// CHECK:STDOUT: inst60000113: concrete_constant(inst60000049) +// CHECK:STDOUT: inst60000106: symbolic_constant600000AE +// CHECK:STDOUT: inst60000107: concrete_constant(inst60000049) +// CHECK:STDOUT: inst60000108: symbolic_constant600000BC +// CHECK:STDOUT: inst60000109: symbolic_constant600000BB +// CHECK:STDOUT: inst6000010A: symbolic_constant600000BA +// CHECK:STDOUT: inst6000010B: symbolic_constant600000BD +// CHECK:STDOUT: inst6000010C: symbolic_constant600000BE +// CHECK:STDOUT: inst6000010D: symbolic_constant600000BF +// CHECK:STDOUT: inst6000010E: symbolic_constant600000C0 +// CHECK:STDOUT: inst6000010F: symbolic_constant600000C1 +// CHECK:STDOUT: inst60000110: symbolic_constant600000C2 +// CHECK:STDOUT: inst60000111: symbolic_constant600000C3 +// CHECK:STDOUT: inst60000112: symbolic_constant600000C4 +// CHECK:STDOUT: inst60000113: symbolic_constant600000C5 // CHECK:STDOUT: inst60000114: symbolic_constant600000C8 // CHECK:STDOUT: inst60000115: symbolic_constant600000C6 // CHECK:STDOUT: inst60000116: symbolic_constant600000C7 @@ -943,28 +990,28 @@ fn Foo[T:! type](p: T*) -> (T*, ()) { // CHECK:STDOUT: inst60000124: symbolic_constant600000D8 // CHECK:STDOUT: inst60000125: symbolic_constant600000D9 // CHECK:STDOUT: inst60000126: symbolic_constant600000DA -// CHECK:STDOUT: inst60000127: symbolic_constant600000DC -// CHECK:STDOUT: inst60000128: symbolic_constant600000DD -// CHECK:STDOUT: inst60000129: symbolic_constant600000DE -// CHECK:STDOUT: inst6000012A: symbolic_constant600000EA -// CHECK:STDOUT: inst6000012B: symbolic_constant600000EC -// CHECK:STDOUT: inst6000012C: symbolic_constant600000EE -// CHECK:STDOUT: inst6000012D: symbolic_constant600000F0 +// CHECK:STDOUT: inst60000127: symbolic_constant600000DB +// CHECK:STDOUT: inst60000128: symbolic_constant600000DC +// CHECK:STDOUT: inst60000129: symbolic_constant600000DD +// CHECK:STDOUT: inst6000012A: symbolic_constant600000DE +// CHECK:STDOUT: inst6000012B: symbolic_constant600000E3 +// CHECK:STDOUT: inst6000012C: symbolic_constant600000EF +// CHECK:STDOUT: inst6000012D: symbolic_constant600000F1 // CHECK:STDOUT: inst6000012E: symbolic_constant600000F2 -// CHECK:STDOUT: inst6000012F: symbolic_constant600000F4 -// CHECK:STDOUT: inst60000130: symbolic_constant600000F5 -// CHECK:STDOUT: inst60000131: symbolic_constant600000F6 -// CHECK:STDOUT: inst60000132: symbolic_constant600000F7 -// CHECK:STDOUT: inst60000133: symbolic_constant600000F8 -// CHECK:STDOUT: inst60000134: symbolic_constant600000F9 -// CHECK:STDOUT: inst60000135: symbolic_constant600000FA -// CHECK:STDOUT: inst60000136: symbolic_constant600000FB -// CHECK:STDOUT: inst60000137: symbolic_constant600000FC -// CHECK:STDOUT: inst60000138: symbolic_constant600000FD -// CHECK:STDOUT: inst60000139: symbolic_constant600000FE -// CHECK:STDOUT: inst6000013A: symbolic_constant600000FF -// CHECK:STDOUT: inst6000013B: symbolic_constant60000100 -// CHECK:STDOUT: inst6000013C: symbolic_constant60000101 +// CHECK:STDOUT: inst6000012F: symbolic_constant600000F3 +// CHECK:STDOUT: inst60000130: symbolic_constant600000F4 +// CHECK:STDOUT: inst60000131: symbolic_constant600000F5 +// CHECK:STDOUT: inst60000132: symbolic_constant600000F6 +// CHECK:STDOUT: inst60000133: symbolic_constant600000F7 +// CHECK:STDOUT: inst60000134: symbolic_constant600000F8 +// CHECK:STDOUT: inst60000135: symbolic_constant600000F9 +// CHECK:STDOUT: inst60000136: symbolic_constant600000FA +// CHECK:STDOUT: inst60000137: symbolic_constant600000FB +// CHECK:STDOUT: inst60000138: symbolic_constant600000FC +// CHECK:STDOUT: inst60000139: symbolic_constant600000FD +// CHECK:STDOUT: inst6000013A: symbolic_constant600000FE +// CHECK:STDOUT: inst6000013B: symbolic_constant600000FF +// CHECK:STDOUT: inst6000013C: symbolic_constant60000100 // CHECK:STDOUT: inst6000013D: symbolic_constant60000102 // CHECK:STDOUT: inst6000013E: symbolic_constant60000103 // CHECK:STDOUT: inst6000013F: symbolic_constant60000104 @@ -1038,27 +1085,27 @@ fn Foo[T:! type](p: T*) -> (T*, ()) { // CHECK:STDOUT: symbolic_constant60000033: {inst: inst60000062, generic: generic60000003, index: generic_inst_in_decl1, kind: checked} // CHECK:STDOUT: symbolic_constant60000034: {inst: inst60000063, generic: generic60000003, index: generic_inst_in_decl2, kind: checked} // CHECK:STDOUT: symbolic_constant60000035: {inst: inst60000073, generic: generic60000003, index: generic_inst_in_decl3, kind: checked} -// CHECK:STDOUT: symbolic_constant60000036: {inst: inst60000072, generic: generic60000002, index: generic_inst_in_def1, kind: checked} -// CHECK:STDOUT: symbolic_constant60000037: {inst: inst60000071, generic: generic60000002, index: generic_inst_in_def0, kind: checked} -// CHECK:STDOUT: symbolic_constant60000038: {inst: inst60000072, generic: generic60000002, index: generic_inst_in_def1, kind: checked} -// CHECK:STDOUT: symbolic_constant60000039: {inst: inst6000007F, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant6000003A: {inst: inst6000007F, generic: generic60000003, index: generic_inst_in_def0, kind: checked} -// CHECK:STDOUT: symbolic_constant6000003B: {inst: inst60000080, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant6000003C: {inst: inst60000080, generic: generic60000003, index: generic_inst_in_def1, kind: checked} -// CHECK:STDOUT: symbolic_constant6000003D: {inst: inst60000081, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant6000003E: {inst: inst60000081, generic: generic60000003, index: generic_inst_in_def2, kind: checked} -// CHECK:STDOUT: symbolic_constant6000003F: {inst: inst60000082, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant60000040: {inst: inst60000082, generic: generic60000003, index: generic_inst_in_def3, kind: checked} -// CHECK:STDOUT: symbolic_constant60000041: {inst: inst60000083, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant60000042: {inst: inst60000083, generic: generic60000003, index: generic_inst_in_def4, kind: checked} -// CHECK:STDOUT: symbolic_constant60000043: {inst: inst60000084, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant60000044: {inst: inst60000084, generic: generic60000003, index: generic_inst_in_def5, kind: checked} -// CHECK:STDOUT: symbolic_constant60000045: {inst: inst6000007F, generic: generic60000003, index: generic_inst_in_def0, kind: checked} -// CHECK:STDOUT: symbolic_constant60000046: {inst: inst60000080, generic: generic60000003, index: generic_inst_in_def1, kind: checked} -// CHECK:STDOUT: symbolic_constant60000047: {inst: inst60000081, generic: generic60000003, index: generic_inst_in_def2, kind: checked} -// CHECK:STDOUT: symbolic_constant60000048: {inst: inst60000082, generic: generic60000003, index: generic_inst_in_def3, kind: checked} -// CHECK:STDOUT: symbolic_constant60000049: {inst: inst60000083, generic: generic60000003, index: generic_inst_in_def4, kind: checked} -// CHECK:STDOUT: symbolic_constant6000004A: {inst: inst60000084, generic: generic60000003, index: generic_inst_in_def5, kind: checked} +// CHECK:STDOUT: symbolic_constant60000036: {inst: inst6000007D, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant60000037: {inst: inst6000007E, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant60000038: {inst: inst6000007F, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant60000039: {inst: inst60000080, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant6000003A: {inst: inst60000080, generic: generic60000003, index: generic_inst_in_def5, kind: checked} +// CHECK:STDOUT: symbolic_constant6000003B: {inst: inst6000007F, generic: generic60000003, index: generic_inst_in_def4, kind: checked} +// CHECK:STDOUT: symbolic_constant6000003C: {inst: inst6000007E, generic: generic60000003, index: generic_inst_in_def3, kind: checked} +// CHECK:STDOUT: symbolic_constant6000003D: {inst: inst6000007D, generic: generic60000003, index: generic_inst_in_def2, kind: checked} +// CHECK:STDOUT: symbolic_constant6000003E: {inst: inst60000081, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant6000003F: {inst: inst60000081, generic: generic60000003, index: generic_inst_in_def1, kind: checked} +// CHECK:STDOUT: symbolic_constant60000040: {inst: inst60000082, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant60000041: {inst: inst60000082, generic: generic60000003, index: generic_inst_in_def0, kind: checked} +// CHECK:STDOUT: symbolic_constant60000042: {inst: inst60000082, generic: generic60000003, index: generic_inst_in_def0, kind: checked} +// CHECK:STDOUT: symbolic_constant60000043: {inst: inst60000081, generic: generic60000003, index: generic_inst_in_def1, kind: checked} +// CHECK:STDOUT: symbolic_constant60000044: {inst: inst6000007D, generic: generic60000003, index: generic_inst_in_def2, kind: checked} +// CHECK:STDOUT: symbolic_constant60000045: {inst: inst6000007E, generic: generic60000003, index: generic_inst_in_def3, kind: checked} +// CHECK:STDOUT: symbolic_constant60000046: {inst: inst6000007F, generic: generic60000003, index: generic_inst_in_def4, kind: checked} +// CHECK:STDOUT: symbolic_constant60000047: {inst: inst60000080, generic: generic60000003, index: generic_inst_in_def5, kind: checked} +// CHECK:STDOUT: symbolic_constant60000048: {inst: inst60000072, generic: generic60000002, index: generic_inst_in_def1, kind: checked} +// CHECK:STDOUT: symbolic_constant60000049: {inst: inst60000071, generic: generic60000002, index: generic_inst_in_def0, kind: checked} +// CHECK:STDOUT: symbolic_constant6000004A: {inst: inst60000072, generic: generic60000002, index: generic_inst_in_def1, kind: checked} // CHECK:STDOUT: symbolic_constant6000004B: {inst: inst6000008B, generic: generic, index: generic_inst, kind: checked} // CHECK:STDOUT: symbolic_constant6000004C: {inst: inst6000001A, generic: generic60000004, index: generic_inst_in_decl1, kind: checked} // CHECK:STDOUT: symbolic_constant6000004D: {inst: inst600000A0, generic: generic, index: generic_inst, kind: checked} @@ -1069,18 +1116,18 @@ fn Foo[T:! type](p: T*) -> (T*, ()) { // CHECK:STDOUT: symbolic_constant60000052: {inst: inst60000014, generic: generic60000004, index: generic_inst_in_decl0, kind: checked} // CHECK:STDOUT: symbolic_constant60000053: {inst: inst6000001A, generic: generic60000004, index: generic_inst_in_decl1, kind: checked} // CHECK:STDOUT: symbolic_constant60000054: {inst: inst600000A0, generic: generic60000004, index: generic_inst_in_decl2, kind: checked} -// CHECK:STDOUT: symbolic_constant60000055: {inst: inst600000A9, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant60000056: {inst: inst600000AA, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant60000057: {inst: inst600000AA, generic: generic60000004, index: generic_inst_in_def1, kind: checked} -// CHECK:STDOUT: symbolic_constant60000058: {inst: inst600000A9, generic: generic60000004, index: generic_inst_in_def0, kind: checked} -// CHECK:STDOUT: symbolic_constant60000059: {inst: inst6000001D, generic: generic60000005, index: generic_inst_in_decl2, kind: checked} -// CHECK:STDOUT: symbolic_constant6000005A: {inst: inst6000001A, generic: generic60000005, index: generic_inst_in_decl1, kind: checked} -// CHECK:STDOUT: symbolic_constant6000005B: {inst: inst60000014, generic: generic60000005, index: generic_inst_in_decl0, kind: checked} +// CHECK:STDOUT: symbolic_constant60000055: {inst: inst6000003F, generic: generic60000004, index: generic_inst_in_def2, kind: checked} +// CHECK:STDOUT: symbolic_constant60000056: {inst: inst600000A9, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant60000057: {inst: inst600000AA, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant60000058: {inst: inst600000AA, generic: generic60000004, index: generic_inst_in_def1, kind: checked} +// CHECK:STDOUT: symbolic_constant60000059: {inst: inst600000A9, generic: generic60000004, index: generic_inst_in_def0, kind: checked} +// CHECK:STDOUT: symbolic_constant6000005A: {inst: inst6000001D, generic: generic60000005, index: generic_inst_in_decl2, kind: checked} +// CHECK:STDOUT: symbolic_constant6000005B: {inst: inst6000001A, generic: generic60000005, index: generic_inst_in_decl1, kind: checked} // CHECK:STDOUT: symbolic_constant6000005C: {inst: inst60000014, generic: generic60000005, index: generic_inst_in_decl0, kind: checked} -// CHECK:STDOUT: symbolic_constant6000005D: {inst: inst6000001A, generic: generic60000005, index: generic_inst_in_decl1, kind: checked} -// CHECK:STDOUT: symbolic_constant6000005E: {inst: inst6000001D, generic: generic60000005, index: generic_inst_in_decl2, kind: checked} -// CHECK:STDOUT: symbolic_constant6000005F: {inst: inst600000AA, generic: generic60000004, index: generic_inst_in_def1, kind: checked} -// CHECK:STDOUT: symbolic_constant60000060: {inst: inst6000003F, generic: generic60000004, index: generic_inst_in_def2, kind: checked} +// CHECK:STDOUT: symbolic_constant6000005D: {inst: inst60000014, generic: generic60000005, index: generic_inst_in_decl0, kind: checked} +// CHECK:STDOUT: symbolic_constant6000005E: {inst: inst6000001A, generic: generic60000005, index: generic_inst_in_decl1, kind: checked} +// CHECK:STDOUT: symbolic_constant6000005F: {inst: inst6000001D, generic: generic60000005, index: generic_inst_in_decl2, kind: checked} +// CHECK:STDOUT: symbolic_constant60000060: {inst: inst600000AA, generic: generic60000004, index: generic_inst_in_def1, kind: checked} // CHECK:STDOUT: symbolic_constant60000061: {inst: inst600000A9, generic: generic60000004, index: generic_inst_in_def0, kind: checked} // CHECK:STDOUT: symbolic_constant60000062: {inst: inst600000AA, generic: generic60000004, index: generic_inst_in_def1, kind: checked} // CHECK:STDOUT: symbolic_constant60000063: {inst: inst6000003F, generic: generic60000004, index: generic_inst_in_def2, kind: checked} @@ -1123,37 +1170,37 @@ fn Foo[T:! type](p: T*) -> (T*, ()) { // CHECK:STDOUT: symbolic_constant60000088: {inst: inst600000C1, generic: generic60000007, index: generic_inst_in_decl3, kind: checked} // CHECK:STDOUT: symbolic_constant60000089: {inst: inst600000C2, generic: generic60000007, index: generic_inst_in_decl4, kind: checked} // CHECK:STDOUT: symbolic_constant6000008A: {inst: inst600000D8, generic: generic60000007, index: generic_inst_in_decl5, kind: checked} -// CHECK:STDOUT: symbolic_constant6000008B: {inst: inst600000D7, generic: generic60000006, index: generic_inst_in_def1, kind: checked} -// CHECK:STDOUT: symbolic_constant6000008C: {inst: inst600000D6, generic: generic60000006, index: generic_inst_in_def0, kind: checked} -// CHECK:STDOUT: symbolic_constant6000008D: {inst: inst600000D7, generic: generic60000006, index: generic_inst_in_def1, kind: checked} -// CHECK:STDOUT: symbolic_constant6000008E: {inst: inst600000E7, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant6000008F: {inst: inst600000E7, generic: generic60000007, index: generic_inst_in_def0, kind: checked} -// CHECK:STDOUT: symbolic_constant60000090: {inst: inst60000080, generic: generic60000007, index: generic_inst_in_def1, kind: checked} -// CHECK:STDOUT: symbolic_constant60000091: {inst: inst60000081, generic: generic60000007, index: generic_inst_in_def2, kind: checked} -// CHECK:STDOUT: symbolic_constant60000092: {inst: inst60000082, generic: generic60000007, index: generic_inst_in_def3, kind: checked} -// CHECK:STDOUT: symbolic_constant60000093: {inst: inst60000083, generic: generic60000007, index: generic_inst_in_def4, kind: checked} -// CHECK:STDOUT: symbolic_constant60000094: {inst: inst60000084, generic: generic60000007, index: generic_inst_in_def5, kind: checked} -// CHECK:STDOUT: symbolic_constant60000095: {inst: inst600000E8, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant60000096: {inst: inst600000E8, generic: generic60000007, index: generic_inst_in_def6, kind: checked} -// CHECK:STDOUT: symbolic_constant60000097: {inst: inst600000E9, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant60000098: {inst: inst600000E9, generic: generic60000007, index: generic_inst_in_def7, kind: checked} -// CHECK:STDOUT: symbolic_constant60000099: {inst: inst600000EA, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant6000009A: {inst: inst600000EA, generic: generic60000007, index: generic_inst_in_def8, kind: checked} -// CHECK:STDOUT: symbolic_constant6000009B: {inst: inst600000EB, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant6000009C: {inst: inst600000EB, generic: generic60000007, index: generic_inst_in_def9, kind: checked} -// CHECK:STDOUT: symbolic_constant6000009D: {inst: inst600000EC, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant6000009E: {inst: inst600000EC, generic: generic60000007, index: generic_inst_in_def10, kind: checked} -// CHECK:STDOUT: symbolic_constant6000009F: {inst: inst600000E7, generic: generic60000007, index: generic_inst_in_def0, kind: checked} -// CHECK:STDOUT: symbolic_constant600000A0: {inst: inst60000080, generic: generic60000007, index: generic_inst_in_def1, kind: checked} -// CHECK:STDOUT: symbolic_constant600000A1: {inst: inst60000081, generic: generic60000007, index: generic_inst_in_def2, kind: checked} -// CHECK:STDOUT: symbolic_constant600000A2: {inst: inst60000082, generic: generic60000007, index: generic_inst_in_def3, kind: checked} -// CHECK:STDOUT: symbolic_constant600000A3: {inst: inst60000083, generic: generic60000007, index: generic_inst_in_def4, kind: checked} -// CHECK:STDOUT: symbolic_constant600000A4: {inst: inst60000084, generic: generic60000007, index: generic_inst_in_def5, kind: checked} -// CHECK:STDOUT: symbolic_constant600000A5: {inst: inst600000E8, generic: generic60000007, index: generic_inst_in_def6, kind: checked} -// CHECK:STDOUT: symbolic_constant600000A6: {inst: inst600000E9, generic: generic60000007, index: generic_inst_in_def7, kind: checked} -// CHECK:STDOUT: symbolic_constant600000A7: {inst: inst600000EA, generic: generic60000007, index: generic_inst_in_def8, kind: checked} -// CHECK:STDOUT: symbolic_constant600000A8: {inst: inst600000EB, generic: generic60000007, index: generic_inst_in_def9, kind: checked} -// CHECK:STDOUT: symbolic_constant600000A9: {inst: inst600000EC, generic: generic60000007, index: generic_inst_in_def10, kind: checked} +// CHECK:STDOUT: symbolic_constant6000008B: {inst: inst600000E5, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant6000008C: {inst: inst600000E6, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant6000008D: {inst: inst600000E7, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant6000008E: {inst: inst600000E8, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant6000008F: {inst: inst600000E8, generic: generic60000007, index: generic_inst_in_def10, kind: checked} +// CHECK:STDOUT: symbolic_constant60000090: {inst: inst600000E7, generic: generic60000007, index: generic_inst_in_def9, kind: checked} +// CHECK:STDOUT: symbolic_constant60000091: {inst: inst600000E6, generic: generic60000007, index: generic_inst_in_def8, kind: checked} +// CHECK:STDOUT: symbolic_constant60000092: {inst: inst600000E5, generic: generic60000007, index: generic_inst_in_def7, kind: checked} +// CHECK:STDOUT: symbolic_constant60000093: {inst: inst600000E9, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant60000094: {inst: inst600000E9, generic: generic60000007, index: generic_inst_in_def6, kind: checked} +// CHECK:STDOUT: symbolic_constant60000095: {inst: inst60000080, generic: generic60000007, index: generic_inst_in_def5, kind: checked} +// CHECK:STDOUT: symbolic_constant60000096: {inst: inst6000007F, generic: generic60000007, index: generic_inst_in_def4, kind: checked} +// CHECK:STDOUT: symbolic_constant60000097: {inst: inst6000007E, generic: generic60000007, index: generic_inst_in_def3, kind: checked} +// CHECK:STDOUT: symbolic_constant60000098: {inst: inst6000007D, generic: generic60000007, index: generic_inst_in_def2, kind: checked} +// CHECK:STDOUT: symbolic_constant60000099: {inst: inst60000081, generic: generic60000007, index: generic_inst_in_def1, kind: checked} +// CHECK:STDOUT: symbolic_constant6000009A: {inst: inst600000EA, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant6000009B: {inst: inst600000EA, generic: generic60000007, index: generic_inst_in_def0, kind: checked} +// CHECK:STDOUT: symbolic_constant6000009C: {inst: inst600000EA, generic: generic60000007, index: generic_inst_in_def0, kind: checked} +// CHECK:STDOUT: symbolic_constant6000009D: {inst: inst60000081, generic: generic60000007, index: generic_inst_in_def1, kind: checked} +// CHECK:STDOUT: symbolic_constant6000009E: {inst: inst6000007D, generic: generic60000007, index: generic_inst_in_def2, kind: checked} +// CHECK:STDOUT: symbolic_constant6000009F: {inst: inst6000007E, generic: generic60000007, index: generic_inst_in_def3, kind: checked} +// CHECK:STDOUT: symbolic_constant600000A0: {inst: inst6000007F, generic: generic60000007, index: generic_inst_in_def4, kind: checked} +// CHECK:STDOUT: symbolic_constant600000A1: {inst: inst60000080, generic: generic60000007, index: generic_inst_in_def5, kind: checked} +// CHECK:STDOUT: symbolic_constant600000A2: {inst: inst600000E9, generic: generic60000007, index: generic_inst_in_def6, kind: checked} +// CHECK:STDOUT: symbolic_constant600000A3: {inst: inst600000E5, generic: generic60000007, index: generic_inst_in_def7, kind: checked} +// CHECK:STDOUT: symbolic_constant600000A4: {inst: inst600000E6, generic: generic60000007, index: generic_inst_in_def8, kind: checked} +// CHECK:STDOUT: symbolic_constant600000A5: {inst: inst600000E7, generic: generic60000007, index: generic_inst_in_def9, kind: checked} +// CHECK:STDOUT: symbolic_constant600000A6: {inst: inst600000E8, generic: generic60000007, index: generic_inst_in_def10, kind: checked} +// CHECK:STDOUT: symbolic_constant600000A7: {inst: inst600000D7, generic: generic60000006, index: generic_inst_in_def1, kind: checked} +// CHECK:STDOUT: symbolic_constant600000A8: {inst: inst600000D6, generic: generic60000006, index: generic_inst_in_def0, kind: checked} +// CHECK:STDOUT: symbolic_constant600000A9: {inst: inst600000D7, generic: generic60000006, index: generic_inst_in_def1, kind: checked} // CHECK:STDOUT: symbolic_constant600000AA: {inst: inst600000F8, generic: generic, index: generic_inst, kind: checked} // CHECK:STDOUT: symbolic_constant600000AB: {inst: inst600000FB, generic: generic, index: generic_inst, kind: checked} // CHECK:STDOUT: symbolic_constant600000AC: {inst: inst600000FC, generic: generic, index: generic_inst, kind: checked} @@ -1203,47 +1250,47 @@ fn Foo[T:! type](p: T*) -> (T*, ()) { // CHECK:STDOUT: symbolic_constant600000D8: {inst: inst600000FC, generic: generic60000009, index: generic_inst_in_decl5, kind: checked} // CHECK:STDOUT: symbolic_constant600000D9: {inst: inst600000FD, generic: generic60000009, index: generic_inst_in_decl6, kind: checked} // CHECK:STDOUT: symbolic_constant600000DA: {inst: inst60000117, generic: generic60000009, index: generic_inst_in_decl7, kind: checked} -// CHECK:STDOUT: symbolic_constant600000DB: {inst: inst60000116, generic: generic60000008, index: generic_inst_in_def1, kind: checked} -// CHECK:STDOUT: symbolic_constant600000DC: {inst: inst60000115, generic: generic60000008, index: generic_inst_in_def0, kind: checked} -// CHECK:STDOUT: symbolic_constant600000DD: {inst: inst60000116, generic: generic60000008, index: generic_inst_in_def1, kind: checked} -// CHECK:STDOUT: symbolic_constant600000DE: {inst: inst60000129, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant600000DF: {inst: inst60000129, generic: generic60000009, index: generic_inst_in_def0, kind: checked} -// CHECK:STDOUT: symbolic_constant600000E0: {inst: inst60000080, generic: generic60000009, index: generic_inst_in_def1, kind: checked} -// CHECK:STDOUT: symbolic_constant600000E1: {inst: inst60000081, generic: generic60000009, index: generic_inst_in_def2, kind: checked} -// CHECK:STDOUT: symbolic_constant600000E2: {inst: inst60000082, generic: generic60000009, index: generic_inst_in_def3, kind: checked} -// CHECK:STDOUT: symbolic_constant600000E3: {inst: inst60000083, generic: generic60000009, index: generic_inst_in_def4, kind: checked} -// CHECK:STDOUT: symbolic_constant600000E4: {inst: inst60000084, generic: generic60000009, index: generic_inst_in_def5, kind: checked} -// CHECK:STDOUT: symbolic_constant600000E5: {inst: inst600000E8, generic: generic60000009, index: generic_inst_in_def6, kind: checked} -// CHECK:STDOUT: symbolic_constant600000E6: {inst: inst600000E9, generic: generic60000009, index: generic_inst_in_def7, kind: checked} -// CHECK:STDOUT: symbolic_constant600000E7: {inst: inst600000EA, generic: generic60000009, index: generic_inst_in_def8, kind: checked} -// CHECK:STDOUT: symbolic_constant600000E8: {inst: inst600000EB, generic: generic60000009, index: generic_inst_in_def9, kind: checked} -// CHECK:STDOUT: symbolic_constant600000E9: {inst: inst600000EC, generic: generic60000009, index: generic_inst_in_def10, kind: checked} -// CHECK:STDOUT: symbolic_constant600000EA: {inst: inst6000012A, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant600000EB: {inst: inst6000012A, generic: generic60000009, index: generic_inst_in_def11, kind: checked} -// CHECK:STDOUT: symbolic_constant600000EC: {inst: inst6000012B, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant600000ED: {inst: inst6000012B, generic: generic60000009, index: generic_inst_in_def12, kind: checked} -// CHECK:STDOUT: symbolic_constant600000EE: {inst: inst6000012C, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant600000EF: {inst: inst6000012C, generic: generic60000009, index: generic_inst_in_def13, kind: checked} -// CHECK:STDOUT: symbolic_constant600000F0: {inst: inst6000012D, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant600000F1: {inst: inst6000012D, generic: generic60000009, index: generic_inst_in_def14, kind: checked} -// CHECK:STDOUT: symbolic_constant600000F2: {inst: inst6000012E, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant600000F3: {inst: inst6000012E, generic: generic60000009, index: generic_inst_in_def15, kind: checked} -// CHECK:STDOUT: symbolic_constant600000F4: {inst: inst60000129, generic: generic60000009, index: generic_inst_in_def0, kind: checked} -// CHECK:STDOUT: symbolic_constant600000F5: {inst: inst60000080, generic: generic60000009, index: generic_inst_in_def1, kind: checked} -// CHECK:STDOUT: symbolic_constant600000F6: {inst: inst60000081, generic: generic60000009, index: generic_inst_in_def2, kind: checked} -// CHECK:STDOUT: symbolic_constant600000F7: {inst: inst60000082, generic: generic60000009, index: generic_inst_in_def3, kind: checked} -// CHECK:STDOUT: symbolic_constant600000F8: {inst: inst60000083, generic: generic60000009, index: generic_inst_in_def4, kind: checked} -// CHECK:STDOUT: symbolic_constant600000F9: {inst: inst60000084, generic: generic60000009, index: generic_inst_in_def5, kind: checked} -// CHECK:STDOUT: symbolic_constant600000FA: {inst: inst600000E8, generic: generic60000009, index: generic_inst_in_def6, kind: checked} -// CHECK:STDOUT: symbolic_constant600000FB: {inst: inst600000E9, generic: generic60000009, index: generic_inst_in_def7, kind: checked} -// CHECK:STDOUT: symbolic_constant600000FC: {inst: inst600000EA, generic: generic60000009, index: generic_inst_in_def8, kind: checked} -// CHECK:STDOUT: symbolic_constant600000FD: {inst: inst600000EB, generic: generic60000009, index: generic_inst_in_def9, kind: checked} -// CHECK:STDOUT: symbolic_constant600000FE: {inst: inst600000EC, generic: generic60000009, index: generic_inst_in_def10, kind: checked} -// CHECK:STDOUT: symbolic_constant600000FF: {inst: inst6000012A, generic: generic60000009, index: generic_inst_in_def11, kind: checked} -// CHECK:STDOUT: symbolic_constant60000100: {inst: inst6000012B, generic: generic60000009, index: generic_inst_in_def12, kind: checked} -// CHECK:STDOUT: symbolic_constant60000101: {inst: inst6000012C, generic: generic60000009, index: generic_inst_in_def13, kind: checked} -// CHECK:STDOUT: symbolic_constant60000102: {inst: inst6000012D, generic: generic60000009, index: generic_inst_in_def14, kind: checked} -// CHECK:STDOUT: symbolic_constant60000103: {inst: inst6000012E, generic: generic60000009, index: generic_inst_in_def15, kind: checked} +// CHECK:STDOUT: symbolic_constant600000DB: {inst: inst60000127, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant600000DC: {inst: inst60000128, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant600000DD: {inst: inst60000129, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant600000DE: {inst: inst6000012A, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant600000DF: {inst: inst6000012A, generic: generic60000009, index: generic_inst_in_def15, kind: checked} +// CHECK:STDOUT: symbolic_constant600000E0: {inst: inst60000129, generic: generic60000009, index: generic_inst_in_def14, kind: checked} +// CHECK:STDOUT: symbolic_constant600000E1: {inst: inst60000128, generic: generic60000009, index: generic_inst_in_def13, kind: checked} +// CHECK:STDOUT: symbolic_constant600000E2: {inst: inst60000127, generic: generic60000009, index: generic_inst_in_def12, kind: checked} +// CHECK:STDOUT: symbolic_constant600000E3: {inst: inst6000012B, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant600000E4: {inst: inst6000012B, generic: generic60000009, index: generic_inst_in_def11, kind: checked} +// CHECK:STDOUT: symbolic_constant600000E5: {inst: inst600000E8, generic: generic60000009, index: generic_inst_in_def10, kind: checked} +// CHECK:STDOUT: symbolic_constant600000E6: {inst: inst600000E7, generic: generic60000009, index: generic_inst_in_def9, kind: checked} +// CHECK:STDOUT: symbolic_constant600000E7: {inst: inst600000E6, generic: generic60000009, index: generic_inst_in_def8, kind: checked} +// CHECK:STDOUT: symbolic_constant600000E8: {inst: inst600000E5, generic: generic60000009, index: generic_inst_in_def7, kind: checked} +// CHECK:STDOUT: symbolic_constant600000E9: {inst: inst600000E9, generic: generic60000009, index: generic_inst_in_def6, kind: checked} +// CHECK:STDOUT: symbolic_constant600000EA: {inst: inst60000080, generic: generic60000009, index: generic_inst_in_def5, kind: checked} +// CHECK:STDOUT: symbolic_constant600000EB: {inst: inst6000007F, generic: generic60000009, index: generic_inst_in_def4, kind: checked} +// CHECK:STDOUT: symbolic_constant600000EC: {inst: inst6000007E, generic: generic60000009, index: generic_inst_in_def3, kind: checked} +// CHECK:STDOUT: symbolic_constant600000ED: {inst: inst6000007D, generic: generic60000009, index: generic_inst_in_def2, kind: checked} +// CHECK:STDOUT: symbolic_constant600000EE: {inst: inst60000081, generic: generic60000009, index: generic_inst_in_def1, kind: checked} +// CHECK:STDOUT: symbolic_constant600000EF: {inst: inst6000012C, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant600000F0: {inst: inst6000012C, generic: generic60000009, index: generic_inst_in_def0, kind: checked} +// CHECK:STDOUT: symbolic_constant600000F1: {inst: inst6000012C, generic: generic60000009, index: generic_inst_in_def0, kind: checked} +// CHECK:STDOUT: symbolic_constant600000F2: {inst: inst60000081, generic: generic60000009, index: generic_inst_in_def1, kind: checked} +// CHECK:STDOUT: symbolic_constant600000F3: {inst: inst6000007D, generic: generic60000009, index: generic_inst_in_def2, kind: checked} +// CHECK:STDOUT: symbolic_constant600000F4: {inst: inst6000007E, generic: generic60000009, index: generic_inst_in_def3, kind: checked} +// CHECK:STDOUT: symbolic_constant600000F5: {inst: inst6000007F, generic: generic60000009, index: generic_inst_in_def4, kind: checked} +// CHECK:STDOUT: symbolic_constant600000F6: {inst: inst60000080, generic: generic60000009, index: generic_inst_in_def5, kind: checked} +// CHECK:STDOUT: symbolic_constant600000F7: {inst: inst600000E9, generic: generic60000009, index: generic_inst_in_def6, kind: checked} +// CHECK:STDOUT: symbolic_constant600000F8: {inst: inst600000E5, generic: generic60000009, index: generic_inst_in_def7, kind: checked} +// CHECK:STDOUT: symbolic_constant600000F9: {inst: inst600000E6, generic: generic60000009, index: generic_inst_in_def8, kind: checked} +// CHECK:STDOUT: symbolic_constant600000FA: {inst: inst600000E7, generic: generic60000009, index: generic_inst_in_def9, kind: checked} +// CHECK:STDOUT: symbolic_constant600000FB: {inst: inst600000E8, generic: generic60000009, index: generic_inst_in_def10, kind: checked} +// CHECK:STDOUT: symbolic_constant600000FC: {inst: inst6000012B, generic: generic60000009, index: generic_inst_in_def11, kind: checked} +// CHECK:STDOUT: symbolic_constant600000FD: {inst: inst60000127, generic: generic60000009, index: generic_inst_in_def12, kind: checked} +// CHECK:STDOUT: symbolic_constant600000FE: {inst: inst60000128, generic: generic60000009, index: generic_inst_in_def13, kind: checked} +// CHECK:STDOUT: symbolic_constant600000FF: {inst: inst60000129, generic: generic60000009, index: generic_inst_in_def14, kind: checked} +// CHECK:STDOUT: symbolic_constant60000100: {inst: inst6000012A, generic: generic60000009, index: generic_inst_in_def15, kind: checked} +// CHECK:STDOUT: symbolic_constant60000101: {inst: inst60000116, generic: generic60000008, index: generic_inst_in_def1, kind: checked} +// CHECK:STDOUT: symbolic_constant60000102: {inst: inst60000115, generic: generic60000008, index: generic_inst_in_def0, kind: checked} +// CHECK:STDOUT: symbolic_constant60000103: {inst: inst60000116, generic: generic60000008, index: generic_inst_in_def1, kind: checked} // CHECK:STDOUT: symbolic_constant60000104: {inst: inst6000013F, generic: generic, index: generic_inst, kind: checked} // CHECK:STDOUT: symbolic_constant60000105: {inst: inst600000A0, generic: generic60000004, index: generic_inst_in_decl2, kind: checked} // CHECK:STDOUT: symbolic_constant60000106: {inst: inst60000140, generic: generic, index: generic_inst, kind: checked} @@ -1280,8 +1327,8 @@ fn Foo[T:! type](p: T*) -> (T*, ()) { // CHECK:STDOUT: 16: inst60000065 // CHECK:STDOUT: 17: inst60000068 // CHECK:STDOUT: 18: inst60000069 -// CHECK:STDOUT: 19: inst6000006E -// CHECK:STDOUT: 20: inst6000006F +// CHECK:STDOUT: 19: inst6000006A +// CHECK:STDOUT: 20: inst6000006B // CHECK:STDOUT: 21: inst60000070 // CHECK:STDOUT: 22: inst60000074 // CHECK:STDOUT: 23: inst60000075 @@ -1310,8 +1357,8 @@ fn Foo[T:! type](p: T*) -> (T*, ()) { // CHECK:STDOUT: 46: inst6000009F // CHECK:STDOUT: 47: inst600000A1 // CHECK:STDOUT: 48: inst600000A2 -// CHECK:STDOUT: 49: inst600000A6 -// CHECK:STDOUT: 50: inst600000A7 +// CHECK:STDOUT: 49: inst600000A3 +// CHECK:STDOUT: 50: inst600000A4 // CHECK:STDOUT: 51: inst600000A8 // CHECK:STDOUT: 52: inst600000AB // CHECK:STDOUT: 53: inst600000AC @@ -1334,8 +1381,8 @@ fn Foo[T:! type](p: T*) -> (T*, ()) { // CHECK:STDOUT: 70: inst600000C9 // CHECK:STDOUT: 71: inst600000CA // CHECK:STDOUT: 72: inst600000CB -// CHECK:STDOUT: 73: inst600000D3 -// CHECK:STDOUT: 74: inst600000D4 +// CHECK:STDOUT: 73: inst600000CC +// CHECK:STDOUT: 74: inst600000CD // CHECK:STDOUT: 75: inst600000D5 // CHECK:STDOUT: 76: inst600000D9 // CHECK:STDOUT: 77: inst600000DA @@ -1353,8 +1400,8 @@ fn Foo[T:! type](p: T*) -> (T*, ()) { // CHECK:STDOUT: 89: inst60000106 // CHECK:STDOUT: 90: inst60000107 // CHECK:STDOUT: 91: inst60000108 -// CHECK:STDOUT: 92: inst60000112 -// CHECK:STDOUT: 93: inst60000113 +// CHECK:STDOUT: 92: inst60000109 +// CHECK:STDOUT: 93: inst6000010A // CHECK:STDOUT: 94: inst60000114 // CHECK:STDOUT: 95: inst60000118 // CHECK:STDOUT: 96: inst60000119 @@ -1478,88 +1525,88 @@ fn Foo[T:! type](p: T*) -> (T*, ()) { // CHECK:STDOUT: inst_block60000020: // CHECK:STDOUT: 0: inst60000068 // CHECK:STDOUT: inst_block60000021: -// CHECK:STDOUT: 0: inst60000069 +// CHECK:STDOUT: 0: inst6000006B // CHECK:STDOUT: inst_block60000022: -// CHECK:STDOUT: 0: inst6000006A +// CHECK:STDOUT: 0: inst6000006C // CHECK:STDOUT: inst_block60000023: -// CHECK:STDOUT: 0: inst6000006A -// CHECK:STDOUT: 1: inst6000006B -// CHECK:STDOUT: 2: inst6000006C -// CHECK:STDOUT: 3: inst6000006D +// CHECK:STDOUT: 0: inst6000006C +// CHECK:STDOUT: 1: inst6000006D +// CHECK:STDOUT: 2: inst6000006E +// CHECK:STDOUT: 3: inst6000006F // CHECK:STDOUT: inst_block60000024: -// CHECK:STDOUT: 0: inst60000061 -// CHECK:STDOUT: 1: inst60000062 -// CHECK:STDOUT: 2: inst60000063 -// CHECK:STDOUT: 3: inst60000066 -// CHECK:STDOUT: inst_block60000025: // CHECK:STDOUT: 0: inst60000077 -// CHECK:STDOUT: inst_block60000026: +// CHECK:STDOUT: inst_block60000025: // CHECK:STDOUT: 0: inst60000078 -// CHECK:STDOUT: inst_block60000027: +// CHECK:STDOUT: inst_block60000026: // CHECK:STDOUT: 0: inst60000079 // CHECK:STDOUT: 1: inst6000007A // CHECK:STDOUT: 2: inst6000007B // CHECK:STDOUT: 3: inst6000007C -// CHECK:STDOUT: inst_block60000028: -// CHECK:STDOUT: 0: inst6000006A -// CHECK:STDOUT: inst_block60000029: -// CHECK:STDOUT: 0: inst6000007D -// CHECK:STDOUT: 1: inst6000007E -// CHECK:STDOUT: inst_block6000002A: +// CHECK:STDOUT: inst_block60000027: // CHECK:STDOUT: 0: inst60000061 // CHECK:STDOUT: 1: inst60000062 // CHECK:STDOUT: 2: inst60000063 // CHECK:STDOUT: 3: inst60000073 -// CHECK:STDOUT: inst_block6000002B: +// CHECK:STDOUT: inst_block60000028: // CHECK:STDOUT: 0: inst60000079 +// CHECK:STDOUT: inst_block60000029: +// CHECK:STDOUT: 0: inst60000083 +// CHECK:STDOUT: 1: inst60000084 +// CHECK:STDOUT: 2: inst60000085 +// CHECK:STDOUT: 3: inst60000086 +// CHECK:STDOUT: 4: inst60000087 +// CHECK:STDOUT: 5: inst60000088 +// CHECK:STDOUT: inst_block6000002A: +// CHECK:STDOUT: 0: inst60000061 +// CHECK:STDOUT: 1: inst60000062 +// CHECK:STDOUT: 2: inst60000063 +// CHECK:STDOUT: 3: inst60000066 +// CHECK:STDOUT: inst_block6000002B: +// CHECK:STDOUT: 0: inst6000006C // CHECK:STDOUT: inst_block6000002C: -// CHECK:STDOUT: 0: inst60000085 -// CHECK:STDOUT: 1: inst60000086 -// CHECK:STDOUT: 2: inst60000087 -// CHECK:STDOUT: 3: inst60000088 -// CHECK:STDOUT: 4: inst60000089 -// CHECK:STDOUT: 5: inst6000008A +// CHECK:STDOUT: 0: inst60000089 +// CHECK:STDOUT: 1: inst6000008A // CHECK:STDOUT: inst_block6000002D: +// CHECK:STDOUT: 0: inst60000071 +// CHECK:STDOUT: 1: inst60000072 +// CHECK:STDOUT: inst_block6000002E: // CHECK:STDOUT: 0: inst60000061 // CHECK:STDOUT: 1: inst60000062 // CHECK:STDOUT: 2: inst6000008B -// CHECK:STDOUT: inst_block6000002E: -// CHECK:STDOUT: 0: inst60000071 -// CHECK:STDOUT: 1: inst60000072 // CHECK:STDOUT: inst_block6000002F: // CHECK:STDOUT: 0: inst6000009E // CHECK:STDOUT: inst_block60000030: // CHECK:STDOUT: 0: inst600000A1 // CHECK:STDOUT: inst_block60000031: -// CHECK:STDOUT: 0: inst600000A2 +// CHECK:STDOUT: 0: inst600000A4 // CHECK:STDOUT: inst_block60000032: -// CHECK:STDOUT: 0: inst600000A3 +// CHECK:STDOUT: 0: inst600000A5 // CHECK:STDOUT: inst_block60000033: -// CHECK:STDOUT: 0: inst600000A3 -// CHECK:STDOUT: 1: inst600000A4 -// CHECK:STDOUT: 2: inst600000A5 +// CHECK:STDOUT: 0: inst600000A5 +// CHECK:STDOUT: 1: inst600000A6 +// CHECK:STDOUT: 2: inst600000A7 // CHECK:STDOUT: inst_block60000034: -// CHECK:STDOUT: 0: inst60000014 -// CHECK:STDOUT: 1: inst6000001A -// CHECK:STDOUT: 2: inst600000A0 -// CHECK:STDOUT: inst_block60000035: // CHECK:STDOUT: 0: inst600000AE -// CHECK:STDOUT: inst_block60000036: +// CHECK:STDOUT: inst_block60000035: // CHECK:STDOUT: 0: inst600000AF -// CHECK:STDOUT: inst_block60000037: +// CHECK:STDOUT: inst_block60000036: // CHECK:STDOUT: 0: inst600000B0 // CHECK:STDOUT: 1: inst600000B1 // CHECK:STDOUT: 2: inst600000B2 -// CHECK:STDOUT: inst_block60000038: -// CHECK:STDOUT: 0: inst600000A3 -// CHECK:STDOUT: inst_block60000039: -// CHECK:STDOUT: 0: inst600000B3 -// CHECK:STDOUT: 1: inst600000B4 -// CHECK:STDOUT: 2: inst600000B5 -// CHECK:STDOUT: inst_block6000003A: +// CHECK:STDOUT: inst_block60000037: // CHECK:STDOUT: 0: inst60000014 // CHECK:STDOUT: 1: inst6000001A // CHECK:STDOUT: 2: inst6000001D +// CHECK:STDOUT: inst_block60000038: +// CHECK:STDOUT: 0: inst60000014 +// CHECK:STDOUT: 1: inst6000001A +// CHECK:STDOUT: 2: inst600000A0 +// CHECK:STDOUT: inst_block60000039: +// CHECK:STDOUT: 0: inst600000A5 +// CHECK:STDOUT: inst_block6000003A: +// CHECK:STDOUT: 0: inst600000B3 +// CHECK:STDOUT: 1: inst600000B4 +// CHECK:STDOUT: 2: inst600000B5 // CHECK:STDOUT: inst_block6000003B: // CHECK:STDOUT: 0: inst60000062 // CHECK:STDOUT: 1: inst600000C1 @@ -1575,26 +1622,66 @@ fn Foo[T:! type](p: T*) -> (T*, ()) { // CHECK:STDOUT: 0: inst600000C9 // CHECK:STDOUT: 1: inst600000C8 // CHECK:STDOUT: inst_block60000040: -// CHECK:STDOUT: 0: inst600000CA -// CHECK:STDOUT: 1: inst600000CB +// CHECK:STDOUT: 0: inst600000CC +// CHECK:STDOUT: 1: inst600000CD // CHECK:STDOUT: inst_block60000041: -// CHECK:STDOUT: 0: inst600000CC -// CHECK:STDOUT: 1: inst600000CD +// CHECK:STDOUT: 0: inst600000CE +// CHECK:STDOUT: 1: inst600000CF // CHECK:STDOUT: inst_block60000042: -// CHECK:STDOUT: 0: inst600000CF -// CHECK:STDOUT: 1: inst600000D0 +// CHECK:STDOUT: 0: inst600000D1 +// CHECK:STDOUT: 1: inst600000D2 // CHECK:STDOUT: inst_block60000043: -// CHECK:STDOUT: 0: inst600000CC -// CHECK:STDOUT: 1: inst600000CD +// CHECK:STDOUT: 0: inst600000CE +// CHECK:STDOUT: 1: inst600000CF // CHECK:STDOUT: inst_block60000044: -// CHECK:STDOUT: 0: inst600000CC -// CHECK:STDOUT: 1: inst600000CD -// CHECK:STDOUT: 2: inst600000CE -// CHECK:STDOUT: 3: inst600000CF -// CHECK:STDOUT: 4: inst600000D0 -// CHECK:STDOUT: 5: inst600000D1 -// CHECK:STDOUT: 6: inst600000D2 +// CHECK:STDOUT: 0: inst600000CE +// CHECK:STDOUT: 1: inst600000CF +// CHECK:STDOUT: 2: inst600000D0 +// CHECK:STDOUT: 3: inst600000D1 +// CHECK:STDOUT: 4: inst600000D2 +// CHECK:STDOUT: 5: inst600000D3 +// CHECK:STDOUT: 6: inst600000D4 // CHECK:STDOUT: inst_block60000045: +// CHECK:STDOUT: 0: inst600000DC +// CHECK:STDOUT: inst_block60000046: +// CHECK:STDOUT: 0: inst600000DD +// CHECK:STDOUT: 1: inst600000DE +// CHECK:STDOUT: inst_block60000047: +// CHECK:STDOUT: 0: inst600000E0 +// CHECK:STDOUT: 1: inst600000E2 +// CHECK:STDOUT: inst_block60000048: +// CHECK:STDOUT: 0: inst600000DF +// CHECK:STDOUT: 1: inst600000E0 +// CHECK:STDOUT: 2: inst600000E1 +// CHECK:STDOUT: 3: inst600000E2 +// CHECK:STDOUT: 4: inst600000E3 +// CHECK:STDOUT: 5: inst600000E4 +// CHECK:STDOUT: inst_block60000049: +// CHECK:STDOUT: 0: inst600000C0 +// CHECK:STDOUT: inst_block6000004A: +// CHECK:STDOUT: 0: inst60000061 +// CHECK:STDOUT: 1: inst60000062 +// CHECK:STDOUT: 2: inst600000C0 +// CHECK:STDOUT: 3: inst600000C1 +// CHECK:STDOUT: 4: inst600000C2 +// CHECK:STDOUT: 5: inst600000D8 +// CHECK:STDOUT: inst_block6000004B: +// CHECK:STDOUT: 0: inst600000DF +// CHECK:STDOUT: inst_block6000004C: +// CHECK:STDOUT: 0: inst600000E1 +// CHECK:STDOUT: inst_block6000004D: +// CHECK:STDOUT: 0: inst600000EB +// CHECK:STDOUT: 1: inst600000EC +// CHECK:STDOUT: 2: inst600000ED +// CHECK:STDOUT: 3: inst600000EE +// CHECK:STDOUT: 4: inst600000EF +// CHECK:STDOUT: 5: inst600000F0 +// CHECK:STDOUT: 6: inst600000F1 +// CHECK:STDOUT: 7: inst600000F2 +// CHECK:STDOUT: 8: inst600000F3 +// CHECK:STDOUT: 9: inst600000F4 +// CHECK:STDOUT: 10: inst600000F5 +// CHECK:STDOUT: inst_block6000004E: // CHECK:STDOUT: 0: inst60000061 // CHECK:STDOUT: 1: inst600000C0 // CHECK:STDOUT: 2: inst600000C7 @@ -1602,59 +1689,19 @@ fn Foo[T:! type](p: T*) -> (T*, ()) { // CHECK:STDOUT: 4: inst600000C1 // CHECK:STDOUT: 5: inst600000C2 // CHECK:STDOUT: 6: inst600000C5 -// CHECK:STDOUT: inst_block60000046: -// CHECK:STDOUT: 0: inst600000DC -// CHECK:STDOUT: inst_block60000047: -// CHECK:STDOUT: 0: inst600000DD -// CHECK:STDOUT: 1: inst600000DE -// CHECK:STDOUT: inst_block60000048: -// CHECK:STDOUT: 0: inst600000E0 -// CHECK:STDOUT: 1: inst600000E2 -// CHECK:STDOUT: inst_block60000049: -// CHECK:STDOUT: 0: inst600000DF -// CHECK:STDOUT: 1: inst600000E0 -// CHECK:STDOUT: 2: inst600000E1 -// CHECK:STDOUT: 3: inst600000E2 -// CHECK:STDOUT: 4: inst600000E3 -// CHECK:STDOUT: 5: inst600000E4 -// CHECK:STDOUT: inst_block6000004A: -// CHECK:STDOUT: 0: inst600000CC -// CHECK:STDOUT: 1: inst600000CD -// CHECK:STDOUT: inst_block6000004B: -// CHECK:STDOUT: 0: inst600000E5 -// CHECK:STDOUT: 1: inst600000E6 -// CHECK:STDOUT: inst_block6000004C: -// CHECK:STDOUT: 0: inst60000061 -// CHECK:STDOUT: 1: inst60000062 -// CHECK:STDOUT: 2: inst600000C0 -// CHECK:STDOUT: 3: inst600000C1 -// CHECK:STDOUT: 4: inst600000C2 -// CHECK:STDOUT: 5: inst600000D8 -// CHECK:STDOUT: inst_block6000004D: -// CHECK:STDOUT: 0: inst600000C0 -// CHECK:STDOUT: inst_block6000004E: -// CHECK:STDOUT: 0: inst600000DF // CHECK:STDOUT: inst_block6000004F: -// CHECK:STDOUT: 0: inst600000E1 +// CHECK:STDOUT: 0: inst600000CE +// CHECK:STDOUT: 1: inst600000CF // CHECK:STDOUT: inst_block60000050: -// CHECK:STDOUT: 0: inst600000ED -// CHECK:STDOUT: 1: inst600000EE -// CHECK:STDOUT: 2: inst600000EF -// CHECK:STDOUT: 3: inst600000F0 -// CHECK:STDOUT: 4: inst600000F1 -// CHECK:STDOUT: 5: inst600000F2 -// CHECK:STDOUT: 6: inst600000F3 -// CHECK:STDOUT: 7: inst600000F4 -// CHECK:STDOUT: 8: inst600000F5 -// CHECK:STDOUT: 9: inst600000F6 -// CHECK:STDOUT: 10: inst600000F7 +// CHECK:STDOUT: 0: inst600000F6 +// CHECK:STDOUT: 1: inst600000F7 // CHECK:STDOUT: inst_block60000051: +// CHECK:STDOUT: 0: inst600000D6 +// CHECK:STDOUT: 1: inst600000D7 +// CHECK:STDOUT: inst_block60000052: // CHECK:STDOUT: 0: inst600000C0 // CHECK:STDOUT: 1: inst600000C1 // CHECK:STDOUT: 2: inst600000F8 -// CHECK:STDOUT: inst_block60000052: -// CHECK:STDOUT: 0: inst600000D6 -// CHECK:STDOUT: 1: inst600000D7 // CHECK:STDOUT: inst_block60000053: // CHECK:STDOUT: 0: inst60000062 // CHECK:STDOUT: 1: inst600000C1 @@ -1674,32 +1721,85 @@ fn Foo[T:! type](p: T*) -> (T*, ()) { // CHECK:STDOUT: 1: inst60000104 // CHECK:STDOUT: 2: inst60000103 // CHECK:STDOUT: inst_block60000058: -// CHECK:STDOUT: 0: inst60000106 -// CHECK:STDOUT: 1: inst60000107 -// CHECK:STDOUT: 2: inst60000108 +// CHECK:STDOUT: 0: inst60000108 +// CHECK:STDOUT: 1: inst60000109 +// CHECK:STDOUT: 2: inst6000010A // CHECK:STDOUT: inst_block60000059: -// CHECK:STDOUT: 0: inst60000109 -// CHECK:STDOUT: 1: inst6000010A -// CHECK:STDOUT: 2: inst6000010B +// CHECK:STDOUT: 0: inst6000010B +// CHECK:STDOUT: 1: inst6000010C +// CHECK:STDOUT: 2: inst6000010D // CHECK:STDOUT: inst_block6000005A: -// CHECK:STDOUT: 0: inst6000010D -// CHECK:STDOUT: 1: inst6000010E -// CHECK:STDOUT: 2: inst6000010F +// CHECK:STDOUT: 0: inst6000010F +// CHECK:STDOUT: 1: inst60000110 +// CHECK:STDOUT: 2: inst60000111 // CHECK:STDOUT: inst_block6000005B: -// CHECK:STDOUT: 0: inst60000109 -// CHECK:STDOUT: 1: inst6000010A -// CHECK:STDOUT: 2: inst6000010B +// CHECK:STDOUT: 0: inst6000010B +// CHECK:STDOUT: 1: inst6000010C +// CHECK:STDOUT: 2: inst6000010D // CHECK:STDOUT: inst_block6000005C: -// CHECK:STDOUT: 0: inst60000109 -// CHECK:STDOUT: 1: inst6000010A -// CHECK:STDOUT: 2: inst6000010B -// CHECK:STDOUT: 3: inst6000010C -// CHECK:STDOUT: 4: inst6000010D -// CHECK:STDOUT: 5: inst6000010E -// CHECK:STDOUT: 6: inst6000010F -// CHECK:STDOUT: 7: inst60000110 -// CHECK:STDOUT: 8: inst60000111 +// CHECK:STDOUT: 0: inst6000010B +// CHECK:STDOUT: 1: inst6000010C +// CHECK:STDOUT: 2: inst6000010D +// CHECK:STDOUT: 3: inst6000010E +// CHECK:STDOUT: 4: inst6000010F +// CHECK:STDOUT: 5: inst60000110 +// CHECK:STDOUT: 6: inst60000111 +// CHECK:STDOUT: 7: inst60000112 +// CHECK:STDOUT: 8: inst60000113 // CHECK:STDOUT: inst_block6000005D: +// CHECK:STDOUT: 0: inst6000011B +// CHECK:STDOUT: inst_block6000005E: +// CHECK:STDOUT: 0: inst6000011C +// CHECK:STDOUT: 1: inst6000011D +// CHECK:STDOUT: 2: inst6000011E +// CHECK:STDOUT: inst_block6000005F: +// CHECK:STDOUT: 0: inst60000120 +// CHECK:STDOUT: 1: inst60000122 +// CHECK:STDOUT: 2: inst60000124 +// CHECK:STDOUT: inst_block60000060: +// CHECK:STDOUT: 0: inst6000011F +// CHECK:STDOUT: 1: inst60000120 +// CHECK:STDOUT: 2: inst60000121 +// CHECK:STDOUT: 3: inst60000122 +// CHECK:STDOUT: 4: inst60000123 +// CHECK:STDOUT: 5: inst60000124 +// CHECK:STDOUT: 6: inst60000125 +// CHECK:STDOUT: 7: inst60000126 +// CHECK:STDOUT: inst_block60000061: +// CHECK:STDOUT: 0: inst600000FB +// CHECK:STDOUT: inst_block60000062: +// CHECK:STDOUT: 0: inst60000061 +// CHECK:STDOUT: 1: inst60000062 +// CHECK:STDOUT: 2: inst600000C0 +// CHECK:STDOUT: 3: inst600000C1 +// CHECK:STDOUT: 4: inst600000FB +// CHECK:STDOUT: 5: inst600000FC +// CHECK:STDOUT: 6: inst600000FD +// CHECK:STDOUT: 7: inst60000117 +// CHECK:STDOUT: inst_block60000063: +// CHECK:STDOUT: 0: inst6000011F +// CHECK:STDOUT: inst_block60000064: +// CHECK:STDOUT: 0: inst60000121 +// CHECK:STDOUT: inst_block60000065: +// CHECK:STDOUT: 0: inst60000123 +// CHECK:STDOUT: inst_block60000066: +// CHECK:STDOUT: 0: inst6000012D +// CHECK:STDOUT: 1: inst6000012E +// CHECK:STDOUT: 2: inst6000012F +// CHECK:STDOUT: 3: inst60000130 +// CHECK:STDOUT: 4: inst60000131 +// CHECK:STDOUT: 5: inst60000132 +// CHECK:STDOUT: 6: inst60000133 +// CHECK:STDOUT: 7: inst60000134 +// CHECK:STDOUT: 8: inst60000135 +// CHECK:STDOUT: 9: inst60000136 +// CHECK:STDOUT: 10: inst60000137 +// CHECK:STDOUT: 11: inst60000138 +// CHECK:STDOUT: 12: inst60000139 +// CHECK:STDOUT: 13: inst6000013A +// CHECK:STDOUT: 14: inst6000013B +// CHECK:STDOUT: 15: inst6000013C +// CHECK:STDOUT: inst_block60000067: // CHECK:STDOUT: 0: inst60000061 // CHECK:STDOUT: 1: inst600000C0 // CHECK:STDOUT: 2: inst600000FB @@ -1709,73 +1809,20 @@ fn Foo[T:! type](p: T*) -> (T*, ()) { // CHECK:STDOUT: 6: inst600000FC // CHECK:STDOUT: 7: inst600000FD // CHECK:STDOUT: 8: inst60000100 -// CHECK:STDOUT: inst_block6000005E: -// CHECK:STDOUT: 0: inst6000011B -// CHECK:STDOUT: inst_block6000005F: -// CHECK:STDOUT: 0: inst6000011C -// CHECK:STDOUT: 1: inst6000011D -// CHECK:STDOUT: 2: inst6000011E -// CHECK:STDOUT: inst_block60000060: -// CHECK:STDOUT: 0: inst60000120 -// CHECK:STDOUT: 1: inst60000122 -// CHECK:STDOUT: 2: inst60000124 -// CHECK:STDOUT: inst_block60000061: -// CHECK:STDOUT: 0: inst6000011F -// CHECK:STDOUT: 1: inst60000120 -// CHECK:STDOUT: 2: inst60000121 -// CHECK:STDOUT: 3: inst60000122 -// CHECK:STDOUT: 4: inst60000123 -// CHECK:STDOUT: 5: inst60000124 -// CHECK:STDOUT: 6: inst60000125 -// CHECK:STDOUT: 7: inst60000126 -// CHECK:STDOUT: inst_block60000062: -// CHECK:STDOUT: 0: inst60000109 -// CHECK:STDOUT: 1: inst6000010A -// CHECK:STDOUT: 2: inst6000010B -// CHECK:STDOUT: inst_block60000063: -// CHECK:STDOUT: 0: inst60000127 -// CHECK:STDOUT: 1: inst60000128 -// CHECK:STDOUT: inst_block60000064: -// CHECK:STDOUT: 0: inst60000061 -// CHECK:STDOUT: 1: inst60000062 -// CHECK:STDOUT: 2: inst600000C0 -// CHECK:STDOUT: 3: inst600000C1 -// CHECK:STDOUT: 4: inst600000FB -// CHECK:STDOUT: 5: inst600000FC -// CHECK:STDOUT: 6: inst600000FD -// CHECK:STDOUT: 7: inst60000117 -// CHECK:STDOUT: inst_block60000065: -// CHECK:STDOUT: 0: inst600000FB -// CHECK:STDOUT: inst_block60000066: -// CHECK:STDOUT: 0: inst6000011F -// CHECK:STDOUT: inst_block60000067: -// CHECK:STDOUT: 0: inst60000121 // CHECK:STDOUT: inst_block60000068: -// CHECK:STDOUT: 0: inst60000123 +// CHECK:STDOUT: 0: inst6000010B +// CHECK:STDOUT: 1: inst6000010C +// CHECK:STDOUT: 2: inst6000010D // CHECK:STDOUT: inst_block60000069: -// CHECK:STDOUT: 0: inst6000012F -// CHECK:STDOUT: 1: inst60000130 -// CHECK:STDOUT: 2: inst60000131 -// CHECK:STDOUT: 3: inst60000132 -// CHECK:STDOUT: 4: inst60000133 -// CHECK:STDOUT: 5: inst60000134 -// CHECK:STDOUT: 6: inst60000135 -// CHECK:STDOUT: 7: inst60000136 -// CHECK:STDOUT: 8: inst60000137 -// CHECK:STDOUT: 9: inst60000138 -// CHECK:STDOUT: 10: inst60000139 -// CHECK:STDOUT: 11: inst6000013A -// CHECK:STDOUT: 12: inst6000013B -// CHECK:STDOUT: 13: inst6000013C -// CHECK:STDOUT: 14: inst6000013D -// CHECK:STDOUT: 15: inst6000013E +// CHECK:STDOUT: 0: inst6000013D +// CHECK:STDOUT: 1: inst6000013E // CHECK:STDOUT: inst_block6000006A: +// CHECK:STDOUT: 0: inst60000115 +// CHECK:STDOUT: 1: inst60000116 +// CHECK:STDOUT: inst_block6000006B: // CHECK:STDOUT: 0: inst600000FB // CHECK:STDOUT: 1: inst600000FC // CHECK:STDOUT: 2: inst6000013F -// CHECK:STDOUT: inst_block6000006B: -// CHECK:STDOUT: 0: inst60000115 -// CHECK:STDOUT: 1: inst60000116 // CHECK:STDOUT: inst_block6000006C: // CHECK:STDOUT: 0: inst600000A9 // CHECK:STDOUT: 1: inst600000AA diff --git a/toolchain/check/testdata/class/generic/adapt.carbon b/toolchain/check/testdata/class/generic/adapt.carbon index daa4ce8c8a4a..354d48f4415c 100644 --- a/toolchain/check/testdata/class/generic/adapt.carbon +++ b/toolchain/check/testdata/class/generic/adapt.carbon @@ -298,11 +298,11 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: %struct_type.x.200: type = struct_type {.x: %T.d9f} [symbolic] // CHECK:STDOUT: %complete_type.9d1: = complete_type_witness %struct_type.x.200 [symbolic] // CHECK:STDOUT: %C.3f0: type = class_type @C, @C(%T.d9f) [symbolic] +// CHECK:STDOUT: %C.elem.d1c: type = unbound_element_type %C.3f0, %T.d9f [symbolic] +// CHECK:STDOUT: %require_complete.4b7: = require_complete_type %T.d9f [symbolic] // CHECK:STDOUT: %C.239: type = class_type @C, @C(%i32) [concrete] // CHECK:STDOUT: %struct_type.x.767: type = struct_type {.x: %i32} [concrete] // CHECK:STDOUT: %complete_type.c07: = complete_type_witness %struct_type.x.767 [concrete] -// CHECK:STDOUT: %require_complete.4b7: = require_complete_type %T.d9f [symbolic] -// CHECK:STDOUT: %C.elem.d1c: type = unbound_element_type %C.3f0, %T.d9f [symbolic] // CHECK:STDOUT: %i32.builtin: type = int_type signed, %int_32 [concrete] // CHECK:STDOUT: %complete_type.f8a: = complete_type_witness %i32.builtin [concrete] // CHECK:STDOUT: %C.elem.ed6: type = unbound_element_type %C.239, %i32 [concrete] @@ -332,10 +332,10 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %Main.import_ref.efc: type = import_ref Main//adapt_specific_type, loc4_9, loaded [symbolic = @C.%T (constants.%T.d9f)] // CHECK:STDOUT: %Main.import_ref.2c9: = import_ref Main//adapt_specific_type, loc6_1, loaded [symbolic = @C.%complete_type (constants.%complete_type.9d1)] // CHECK:STDOUT: %Main.import_ref.034 = import_ref Main//adapt_specific_type, inst{{[0-9A-F]+}} [no loc], unloaded // CHECK:STDOUT: %Main.import_ref.e9c: @C.%C.elem (%C.elem.d1c) = import_ref Main//adapt_specific_type, loc5_8, loaded [concrete = %.e74] +// CHECK:STDOUT: %Main.import_ref.efc: type = import_ref Main//adapt_specific_type, loc4_9, loaded [symbolic = @C.%T (constants.%T.d9f)] // CHECK:STDOUT: %Main.import_ref.709: = import_ref Main//adapt_specific_type, loc10_1, loaded [concrete = constants.%complete_type.c07] // CHECK:STDOUT: %Main.import_ref.feb = import_ref Main//adapt_specific_type, inst{{[0-9A-F]+}} [no loc], unloaded // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] @@ -687,11 +687,11 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: %struct_type.x.200: type = struct_type {.x: %T} [symbolic] // CHECK:STDOUT: %complete_type.9d1: = complete_type_witness %struct_type.x.200 [symbolic] // CHECK:STDOUT: %C.3f0: type = class_type @C, @C(%T) [symbolic] +// CHECK:STDOUT: %C.elem.d1c: type = unbound_element_type %C.3f0, %T [symbolic] +// CHECK:STDOUT: %require_complete.4b7: = require_complete_type %T [symbolic] // CHECK:STDOUT: %C.239: type = class_type @C, @C(%i32) [concrete] // CHECK:STDOUT: %struct_type.x.767: type = struct_type {.x: %i32} [concrete] // CHECK:STDOUT: %complete_type.c07: = complete_type_witness %struct_type.x.767 [concrete] -// CHECK:STDOUT: %require_complete.4b7: = require_complete_type %T [symbolic] -// CHECK:STDOUT: %C.elem.d1c: type = unbound_element_type %C.3f0, %T [symbolic] // CHECK:STDOUT: %i32.builtin: type = int_type signed, %int_32 [concrete] // CHECK:STDOUT: %complete_type.f8a: = complete_type_witness %i32.builtin [concrete] // CHECK:STDOUT: %C.elem.ed6: type = unbound_element_type %C.239, %i32 [concrete] @@ -712,10 +712,10 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %Main.import_ref.efc: type = import_ref Main//extend_adapt_specific_type_library, loc7_9, loaded [symbolic = @C.%T (constants.%T)] // CHECK:STDOUT: %Main.import_ref.2c9: = import_ref Main//extend_adapt_specific_type_library, loc9_1, loaded [symbolic = @C.%complete_type (constants.%complete_type.9d1)] // CHECK:STDOUT: %Main.import_ref.034 = import_ref Main//extend_adapt_specific_type_library, inst{{[0-9A-F]+}} [no loc], unloaded // CHECK:STDOUT: %Main.import_ref.e9c: @C.%C.elem (%C.elem.d1c) = import_ref Main//extend_adapt_specific_type_library, loc8_8, loaded [concrete = %.e74] +// CHECK:STDOUT: %Main.import_ref.efc: type = import_ref Main//extend_adapt_specific_type_library, loc7_9, loaded [symbolic = @C.%T (constants.%T)] // CHECK:STDOUT: %Main.import_ref.709: = import_ref Main//extend_adapt_specific_type_library, loc13_1, loaded [concrete = constants.%complete_type.c07] // CHECK:STDOUT: %Main.import_ref.feb = import_ref Main//extend_adapt_specific_type_library, inst{{[0-9A-F]+}} [no loc], unloaded // CHECK:STDOUT: %Main.import_ref.19d12e.2: type = import_ref Main//extend_adapt_specific_type_library, loc12_21, loaded [concrete = constants.%C.239] @@ -982,9 +982,9 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %Main.import_ref.efc: type = import_ref Main//adapt_generic_type, loc4_15, loaded [symbolic = @Adapter.%T (constants.%T.d9f)] // CHECK:STDOUT: %Main.import_ref.aa2: = import_ref Main//adapt_generic_type, loc6_1, loaded [symbolic = @Adapter.%complete_type (constants.%complete_type.2f1)] // CHECK:STDOUT: %Main.import_ref.452 = import_ref Main//adapt_generic_type, inst{{[0-9A-F]+}} [no loc], unloaded +// CHECK:STDOUT: %Main.import_ref.efc: type = import_ref Main//adapt_generic_type, loc4_15, loaded [symbolic = @Adapter.%T (constants.%T.d9f)] // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.Copy: type = import_ref Core//prelude/parts/copy, Copy, loaded [concrete = constants.%Copy.type] // CHECK:STDOUT: %Core.import_ref.d12: @Int.as.Copy.impl.%Int.as.Copy.impl.Op.type (%Int.as.Copy.impl.Op.type.24b) = import_ref Core//prelude/parts/int, loc{{\d+_\d+}}, loaded [symbolic = @Int.as.Copy.impl.%Int.as.Copy.impl.Op (constants.%Int.as.Copy.impl.Op.c95)] diff --git a/toolchain/check/testdata/class/generic/base_is_generic.carbon b/toolchain/check/testdata/class/generic/base_is_generic.carbon index 32c5f989b386..7426c82d9cce 100644 --- a/toolchain/check/testdata/class/generic/base_is_generic.carbon +++ b/toolchain/check/testdata/class/generic/base_is_generic.carbon @@ -283,11 +283,11 @@ fn H() { // CHECK:STDOUT: %struct_type.x.200: type = struct_type {.x: %T.d9f} [symbolic] // CHECK:STDOUT: %complete_type.9d1: = complete_type_witness %struct_type.x.200 [symbolic] // CHECK:STDOUT: %Base.8f3: type = class_type @Base, @Base(%T.d9f) [symbolic] +// CHECK:STDOUT: %Base.elem.e9c: type = unbound_element_type %Base.8f3, %T.d9f [symbolic] +// CHECK:STDOUT: %require_complete.4b7: = require_complete_type %T.d9f [symbolic] // CHECK:STDOUT: %Base.7a8: type = class_type @Base, @Base(%Param) [concrete] // CHECK:STDOUT: %struct_type.base.8bc: type = struct_type {.base: %Base.7a8} [concrete] // CHECK:STDOUT: %complete_type.b07: = complete_type_witness %struct_type.base.8bc [concrete] -// CHECK:STDOUT: %require_complete.4b7: = require_complete_type %T.d9f [symbolic] -// CHECK:STDOUT: %Base.elem.e9c: type = unbound_element_type %Base.8f3, %T.d9f [symbolic] // CHECK:STDOUT: %Base.elem.d1f: type = unbound_element_type %Base.7a8, %Param [concrete] // CHECK:STDOUT: %struct_type.x.975: type = struct_type {.x: %Param} [concrete] // CHECK:STDOUT: %complete_type.db3: = complete_type_witness %struct_type.x.975 [concrete] @@ -322,10 +322,10 @@ fn H() { // CHECK:STDOUT: %Main.import_ref.e8d: = import_ref Main//extend_generic_base, loc10_1, loaded [concrete = constants.%complete_type.09d] // CHECK:STDOUT: %Main.import_ref.446 = import_ref Main//extend_generic_base, inst{{[0-9A-F]+}} [no loc], unloaded // CHECK:STDOUT: %Main.import_ref.a92: %Param.elem = import_ref Main//extend_generic_base, loc9_8, loaded [concrete = %.be7] -// CHECK:STDOUT: %Main.import_ref.efc: type = import_ref Main//extend_generic_base, loc4_17, loaded [symbolic = @Base.%T (constants.%T.d9f)] // CHECK:STDOUT: %Main.import_ref.2c9: = import_ref Main//extend_generic_base, loc6_1, loaded [symbolic = @Base.%complete_type (constants.%complete_type.9d1)] // CHECK:STDOUT: %Main.import_ref.a14 = import_ref Main//extend_generic_base, inst{{[0-9A-F]+}} [no loc], unloaded // CHECK:STDOUT: %Main.import_ref.922: @Base.%Base.elem (%Base.elem.e9c) = import_ref Main//extend_generic_base, loc5_8, loaded [concrete = %.b13] +// CHECK:STDOUT: %Main.import_ref.efc: type = import_ref Main//extend_generic_base, loc4_17, loaded [symbolic = @Base.%T (constants.%T.d9f)] // CHECK:STDOUT: %Main.import_ref.bd0: = import_ref Main//extend_generic_base, loc14_1, loaded [concrete = constants.%complete_type.b07] // CHECK:STDOUT: %Main.import_ref.f6c = import_ref Main//extend_generic_base, inst{{[0-9A-F]+}} [no loc], unloaded // CHECK:STDOUT: %Main.import_ref.d24 = import_ref Main//extend_generic_base, loc13_27, unloaded @@ -795,17 +795,17 @@ fn H() { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %U: type = symbolic_binding U, 0 [symbolic] +// CHECK:STDOUT: %X.G.type.89b800.1: type = fn_type @X.G, @X(%U) [symbolic] +// CHECK:STDOUT: %X.G.045884.1: %X.G.type.89b800.1 = struct_value () [symbolic] +// CHECK:STDOUT: %pattern_type.e68: type = pattern_type %U [symbolic] +// CHECK:STDOUT: %X.G.specific_fn.f7a: = specific_function %X.G.045884.1, @X.G(%U) [symbolic] +// CHECK:STDOUT: %require_complete.4b7: = require_complete_type %U [symbolic] // CHECK:STDOUT: %X.fa229d.2: type = class_type @X, @X(%T) [symbolic] // CHECK:STDOUT: %C.3f0: type = class_type @C, @C(%T) [symbolic] // CHECK:STDOUT: %C.elem.b96: type = unbound_element_type %C.3f0, %X.fa229d.2 [symbolic] // CHECK:STDOUT: %struct_type.base.b13: type = struct_type {.base: %X.fa229d.2} [symbolic] // CHECK:STDOUT: %complete_type.b1f: = complete_type_witness %struct_type.base.b13 [symbolic] -// CHECK:STDOUT: %X.G.type.89b800.1: type = fn_type @X.G, @X(%U) [symbolic] -// CHECK:STDOUT: %X.G.045884.1: %X.G.type.89b800.1 = struct_value () [symbolic] -// CHECK:STDOUT: %pattern_type.e68: type = pattern_type %U [symbolic] // CHECK:STDOUT: %require_complete.6fb: = require_complete_type %X.fa229d.2 [symbolic] -// CHECK:STDOUT: %require_complete.4b7: = require_complete_type %U [symbolic] -// CHECK:STDOUT: %X.G.specific_fn.f7a: = specific_function %X.G.045884.1, @X.G(%U) [symbolic] // CHECK:STDOUT: %X.G.type.89b800.2: type = fn_type @X.G, @X(%T) [symbolic] // CHECK:STDOUT: %X.G.045884.2: %X.G.type.89b800.2 = struct_value () [symbolic] // CHECK:STDOUT: %C.98a: type = class_type @C, @C(%i32) [concrete] @@ -828,16 +828,16 @@ fn H() { // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] -// CHECK:STDOUT: %Main.import_ref.efcd44.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.e14 = import_ref Main//extend_generic_symbolic_base, inst{{[0-9A-F]+}} [no loc], unloaded // CHECK:STDOUT: %Main.import_ref.e33: @X.%X.G.type (%X.G.type.89b800.1) = import_ref Main//extend_generic_symbolic_base, loc5_15, loaded [symbolic = @X.%X.G (constants.%X.G.045884.1)] -// CHECK:STDOUT: %Main.import_ref.efcd44.2: type = import_ref Main//extend_generic_symbolic_base, loc8_9, loaded [symbolic = @C.%T (constants.%T)] +// CHECK:STDOUT: %Main.import_ref.efcd44.1: type = import_ref Main//extend_generic_symbolic_base, loc4_14, loaded [symbolic = @X.%U (constants.%U)] +// CHECK:STDOUT: %Main.import_ref.efcd44.2: type = import_ref Main//extend_generic_symbolic_base, loc4_14, loaded [symbolic = @X.%U (constants.%U)] // CHECK:STDOUT: %Main.import_ref.5d2: = import_ref Main//extend_generic_symbolic_base, loc10_1, loaded [symbolic = @C.%complete_type (constants.%complete_type.b1f)] // CHECK:STDOUT: %Main.import_ref.034 = import_ref Main//extend_generic_symbolic_base, inst{{[0-9A-F]+}} [no loc], unloaded // CHECK:STDOUT: %Main.import_ref.55b = import_ref Main//extend_generic_symbolic_base, loc9_20, unloaded // CHECK:STDOUT: %Main.import_ref.53b70e.2: type = import_ref Main//extend_generic_symbolic_base, loc9_19, loaded [symbolic = @C.%X (constants.%X.fa229d.2)] -// CHECK:STDOUT: %Main.import_ref.efcd44.3: type = import_ref Main//extend_generic_symbolic_base, loc4_14, loaded [symbolic = @X.%U (constants.%U)] +// CHECK:STDOUT: %Main.import_ref.efcd44.3: type = import_ref Main//extend_generic_symbolic_base, loc8_9, loaded [symbolic = @C.%T (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -853,7 +853,7 @@ fn H() { // CHECK:STDOUT: %H.decl: %H.type = fn_decl @H [concrete = constants.%H] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic class @C(imports.%Main.import_ref.efcd44.2: type) [from "extend_generic_symbolic_base.carbon"] { +// CHECK:STDOUT: generic class @C(imports.%Main.import_ref.efcd44.3: type) [from "extend_generic_symbolic_base.carbon"] { // CHECK:STDOUT: %T: type = symbolic_binding T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -914,7 +914,7 @@ fn H() { // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @X.G(imports.%Main.import_ref.efcd44.3: type) [from "extend_generic_symbolic_base.carbon"] { +// CHECK:STDOUT: generic fn @X.G(imports.%Main.import_ref.efcd44.2: type) [from "extend_generic_symbolic_base.carbon"] { // CHECK:STDOUT: %U: type = symbolic_binding U, 0 [symbolic = %U (constants.%U)] // CHECK:STDOUT: %pattern_type: type = pattern_type %U [symbolic = %pattern_type (constants.%pattern_type.e68)] // CHECK:STDOUT: @@ -935,6 +935,17 @@ fn H() { // CHECK:STDOUT: %X.G => constants.%X.G.045884.1 // CHECK:STDOUT: } // CHECK:STDOUT: +// CHECK:STDOUT: specific @X.G(constants.%U) { +// CHECK:STDOUT: %U => constants.%U +// CHECK:STDOUT: %pattern_type => constants.%pattern_type.e68 +// CHECK:STDOUT: +// CHECK:STDOUT: !definition: +// CHECK:STDOUT: %require_complete => constants.%require_complete.4b7 +// CHECK:STDOUT: %X.G.type => constants.%X.G.type.89b800.1 +// CHECK:STDOUT: %X.G => constants.%X.G.045884.1 +// CHECK:STDOUT: %X.G.specific_fn => constants.%X.G.specific_fn.f7a +// CHECK:STDOUT: } +// CHECK:STDOUT: // CHECK:STDOUT: specific @X(constants.%T) { // CHECK:STDOUT: %U => constants.%T // CHECK:STDOUT: @@ -947,17 +958,6 @@ fn H() { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @X.G(constants.%U) { -// CHECK:STDOUT: %U => constants.%U -// CHECK:STDOUT: %pattern_type => constants.%pattern_type.e68 -// CHECK:STDOUT: -// CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete => constants.%require_complete.4b7 -// CHECK:STDOUT: %X.G.type => constants.%X.G.type.89b800.1 -// CHECK:STDOUT: %X.G => constants.%X.G.045884.1 -// CHECK:STDOUT: %X.G.specific_fn => constants.%X.G.specific_fn.f7a -// CHECK:STDOUT: } -// CHECK:STDOUT: // CHECK:STDOUT: specific @C(constants.%i32) { // CHECK:STDOUT: %T => constants.%i32 // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/generic/field.carbon b/toolchain/check/testdata/class/generic/field.carbon index fc4e874fcaef..55ad0bc48335 100644 --- a/toolchain/check/testdata/class/generic/field.carbon +++ b/toolchain/check/testdata/class/generic/field.carbon @@ -66,11 +66,11 @@ fn H(U:! Core.Copy, c: Class(U)) -> U { // CHECK:STDOUT: %T.417: %Copy.type = symbolic_binding T, 0 [symbolic] // CHECK:STDOUT: %T.binding.as_type: type = symbolic_binding_type T, 0, %T.417 [symbolic] // CHECK:STDOUT: %pattern_type.322: type = pattern_type %Copy.type [concrete] -// CHECK:STDOUT: %require_complete.d742dc.1: = require_complete_type %T.binding.as_type [symbolic] // CHECK:STDOUT: %Copy.lookup_impl_witness.c42a3d.1: = lookup_impl_witness %T.417, @Copy [symbolic] // CHECK:STDOUT: %.a79665.1: type = fn_type_with_self_type %Copy.Op.type, %T.417 [symbolic] // CHECK:STDOUT: %impl.elem0.fac0be.1: %.a79665.1 = impl_witness_access %Copy.lookup_impl_witness.c42a3d.1, element0 [symbolic] // CHECK:STDOUT: %specific_impl_fn.103937.1: = specific_impl_function %impl.elem0.fac0be.1, @Copy.Op(%T.417) [symbolic] +// CHECK:STDOUT: %require_complete.d742dc.1: = require_complete_type %T.binding.as_type [symbolic] // CHECK:STDOUT: %pattern_type.f14b96.2: type = pattern_type %T.binding.as_type [symbolic] // CHECK:STDOUT: %Copy.impl_witness.fb7: = impl_witness imports.%Copy.impl_witness_table.b6a, @Int.as.Copy.impl(%int_32) [concrete] // CHECK:STDOUT: %Int.as.Copy.impl.Op.type.469: type = fn_type @Int.as.Copy.impl.Op, @Int.as.Copy.impl(%int_32) [concrete] diff --git a/toolchain/check/testdata/class/generic/import.carbon b/toolchain/check/testdata/class/generic/import.carbon index 46d367a3f975..78e1f629fc25 100644 --- a/toolchain/check/testdata/class/generic/import.carbon +++ b/toolchain/check/testdata/class/generic/import.carbon @@ -284,9 +284,9 @@ class Class(U:! type) { // CHECK:STDOUT: %struct_type.n.4d6: type = struct_type {.n: %i32} [concrete] // CHECK:STDOUT: %complete_type.a68: = complete_type_witness %struct_type.n.4d6 [concrete] // CHECK:STDOUT: %CompleteClass.926: type = class_type @CompleteClass, @CompleteClass(%T) [symbolic] -// CHECK:STDOUT: %CompleteClass.elem.c88: type = unbound_element_type %CompleteClass.926, %i32 [symbolic] // CHECK:STDOUT: %CompleteClass.F.type.0fa: type = fn_type @CompleteClass.F, @CompleteClass(%T) [symbolic] // CHECK:STDOUT: %CompleteClass.F.6e9: %CompleteClass.F.type.0fa = struct_value () [symbolic] +// CHECK:STDOUT: %CompleteClass.elem.c88: type = unbound_element_type %CompleteClass.926, %i32 [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: type = fn_type @F [concrete] @@ -322,11 +322,11 @@ class Class(U:! type) { // CHECK:STDOUT: %Main.import_ref.39e: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.60d) = import_ref Main//foo, inst{{[0-9A-F]+}} [indirect], loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.846)] // CHECK:STDOUT: %ImplicitAs.impl_witness_table.99d = impl_witness_table (%Main.import_ref.39e), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: %Main.import_ref.efcd44.1: type = import_ref Main//foo, loc4_13, loaded [symbolic = @Class.%T.1 (constants.%T)] -// CHECK:STDOUT: %Main.import_ref.efcd44.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] // CHECK:STDOUT: %Main.import_ref.bcf = import_ref Main//foo, inst{{[0-9A-F]+}} [no loc], unloaded // CHECK:STDOUT: %Main.import_ref.1b0 = import_ref Main//foo, loc7_8, unloaded // CHECK:STDOUT: %Main.import_ref.758 = import_ref Main//foo, loc8_17, unloaded +// CHECK:STDOUT: %Main.import_ref.efcd44.2: type = import_ref Main//foo, loc6_21, loaded [symbolic = @CompleteClass.%T (constants.%T)] // CHECK:STDOUT: %Main.import_ref.efcd44.3: type = import_ref Main//foo, loc6_21, loaded [symbolic = @CompleteClass.%T (constants.%T)] // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.595 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] @@ -470,9 +470,9 @@ class Class(U:! type) { // CHECK:STDOUT: %complete_type.54b: = complete_type_witness %struct_type.n [concrete] // CHECK:STDOUT: %T.d9f: type = symbolic_binding T, 0 [symbolic] // CHECK:STDOUT: %CompleteClass.926: type = class_type @CompleteClass, @CompleteClass(%T.d9f) [symbolic] -// CHECK:STDOUT: %CompleteClass.elem.36b: type = unbound_element_type %CompleteClass.926, %i32 [symbolic] // CHECK:STDOUT: %CompleteClass.F.type.0fa: type = fn_type @CompleteClass.F, @CompleteClass(%T.d9f) [symbolic] // CHECK:STDOUT: %CompleteClass.F.6e9: %CompleteClass.F.type.0fa = struct_value () [symbolic] +// CHECK:STDOUT: %CompleteClass.elem.36b: type = unbound_element_type %CompleteClass.926, %i32 [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: %CompleteClass.F.type.1bc: type = fn_type @CompleteClass.F, @CompleteClass(%i32) [concrete] @@ -513,11 +513,11 @@ class Class(U:! type) { // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] -// CHECK:STDOUT: %Main.import_ref.efcd44.1: type = import_ref Main//foo, loc6_21, loaded [symbolic = @CompleteClass.%T (constants.%T.d9f)] // CHECK:STDOUT: %Main.import_ref.eb1: = import_ref Main//foo, loc9_1, loaded [concrete = constants.%complete_type.54b] // CHECK:STDOUT: %Main.import_ref.bcf = import_ref Main//foo, inst{{[0-9A-F]+}} [no loc], unloaded // CHECK:STDOUT: %Main.import_ref.c3a: @CompleteClass.%CompleteClass.elem (%CompleteClass.elem.36b) = import_ref Main//foo, loc7_8, loaded [concrete = %.a07] // CHECK:STDOUT: %Main.import_ref.191: @CompleteClass.%CompleteClass.F.type (%CompleteClass.F.type.0fa) = import_ref Main//foo, loc8_17, loaded [symbolic = @CompleteClass.%CompleteClass.F (constants.%CompleteClass.F.6e9)] +// CHECK:STDOUT: %Main.import_ref.efcd44.1: type = import_ref Main//foo, loc6_21, loaded [symbolic = @CompleteClass.%T (constants.%T.d9f)] // CHECK:STDOUT: %Main.import_ref.efcd44.2: type = import_ref Main//foo, loc6_21, loaded [symbolic = @CompleteClass.%T (constants.%T.d9f)] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] // CHECK:STDOUT: %.a07: @CompleteClass.%CompleteClass.elem (%CompleteClass.elem.36b) = field_decl n, element0 [concrete] @@ -690,9 +690,9 @@ class Class(U:! type) { // CHECK:STDOUT: %complete_type.a68: = complete_type_witness %struct_type.n [concrete] // CHECK:STDOUT: %T: type = symbolic_binding T, 0 [symbolic] // CHECK:STDOUT: %CompleteClass.926: type = class_type @CompleteClass, @CompleteClass(%T) [symbolic] -// CHECK:STDOUT: %CompleteClass.elem.c88: type = unbound_element_type %CompleteClass.926, %i32 [symbolic] // CHECK:STDOUT: %CompleteClass.F.type.0fa: type = fn_type @CompleteClass.F, @CompleteClass(%T) [symbolic] // CHECK:STDOUT: %CompleteClass.F.6e9: %CompleteClass.F.type.0fa = struct_value () [symbolic] +// CHECK:STDOUT: %CompleteClass.elem.c88: type = unbound_element_type %CompleteClass.926, %i32 [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] @@ -726,11 +726,11 @@ class Class(U:! type) { // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %Main.import_ref.efcd44.1: 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] // CHECK:STDOUT: %Main.import_ref.bcf = import_ref Main//foo, inst{{[0-9A-F]+}} [no loc], unloaded // CHECK:STDOUT: %Main.import_ref.1b0 = import_ref Main//foo, loc7_8, unloaded // CHECK:STDOUT: %Main.import_ref.758 = import_ref Main//foo, loc8_17, unloaded +// CHECK:STDOUT: %Main.import_ref.efcd44.1: type = import_ref Main//foo, loc6_21, loaded [symbolic = @CompleteClass.%T (constants.%T)] // CHECK:STDOUT: %Main.import_ref.efcd44.2: type = import_ref Main//foo, loc6_21, loaded [symbolic = @CompleteClass.%T (constants.%T)] // 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] diff --git a/toolchain/check/testdata/class/virtual_modifiers.carbon b/toolchain/check/testdata/class/virtual_modifiers.carbon index b0d1317c0b9f..c5b02ca22127 100644 --- a/toolchain/check/testdata/class/virtual_modifiers.carbon +++ b/toolchain/check/testdata/class/virtual_modifiers.carbon @@ -4825,8 +4825,8 @@ class T2(G2:! type) { // CHECK:STDOUT: %Base.F.type.3ca: type = fn_type @Base.F, @Base(%T) [symbolic] // CHECK:STDOUT: %Base.F.77f: %Base.F.type.3ca = struct_value () [symbolic] // CHECK:STDOUT: %pattern_type.7f5: type = pattern_type %Base.8f3 [symbolic] -// CHECK:STDOUT: %Base.F.specific_fn.2ee: = specific_function %Base.F.77f, @Base.F(%T) [symbolic] // CHECK:STDOUT: %require_complete: = require_complete_type %Base.8f3 [symbolic] +// CHECK:STDOUT: %Base.F.specific_fn.2ee: = specific_function %Base.F.77f, @Base.F(%T) [symbolic] // CHECK:STDOUT: %Base.ea5: type = class_type @Base, @Base(%T1) [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] @@ -4847,10 +4847,10 @@ class T2(G2:! type) { // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // CHECK:STDOUT: %Main.import_ref.4aa: ref %ptr.454 = import_ref Main//generic_lib, loc6_1, loaded [concrete = constants.%Base.vtable_decl] -// CHECK:STDOUT: %Main.import_ref.efcd44.1: type = import_ref Main//generic_lib, loc4_17, loaded [symbolic = @Base.%T (constants.%T)] // CHECK:STDOUT: %Main.import_ref.05e: = import_ref Main//generic_lib, loc6_1, loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %Main.import_ref.a14 = import_ref Main//generic_lib, inst{{[0-9A-F]+}} [no loc], unloaded // CHECK:STDOUT: %Main.import_ref.184 = import_ref Main//generic_lib, loc5_30, unloaded +// CHECK:STDOUT: %Main.import_ref.efcd44.1: type = import_ref Main//generic_lib, loc4_17, loaded [symbolic = @Base.%T (constants.%T)] // CHECK:STDOUT: %Main.import_ref.efcd44.2: type = import_ref Main//generic_lib, loc4_17, loaded [symbolic = @Base.%T (constants.%T)] // CHECK:STDOUT: %Main.import_ref.66b: = import_ref Main//generic_lib, loc6_1, loaded [symbolic = constants.%Base.F.specific_fn.2ee] // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/deduce/binding_pattern.carbon b/toolchain/check/testdata/deduce/binding_pattern.carbon index 81fa18419c19..bb7e8ad2ac3f 100644 --- a/toolchain/check/testdata/deduce/binding_pattern.carbon +++ b/toolchain/check/testdata/deduce/binding_pattern.carbon @@ -89,9 +89,9 @@ 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 = symbolic_binding Dest, 0 [symbolic] +// CHECK:STDOUT: %ImplicitAs.assoc_type.8b5: type = assoc_entity_type @ImplicitAs, @ImplicitAs(%Dest) [symbolic] // CHECK:STDOUT: %ImplicitAs.Convert.type.4c8: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%Dest) [symbolic] // CHECK:STDOUT: %ImplicitAs.Convert.e9f: %ImplicitAs.Convert.type.4c8 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.assoc_type.8b5: type = assoc_entity_type @ImplicitAs, @ImplicitAs(%Dest) [symbolic] // CHECK:STDOUT: %ImplicitAs.type.af3: type = facet_type <@ImplicitAs, @ImplicitAs(%V)> [symbolic] // CHECK:STDOUT: %ImplicitAs.assoc_type.8fb: type = assoc_entity_type @ImplicitAs, @ImplicitAs(%V) [symbolic] // CHECK:STDOUT: %assoc0.123: %ImplicitAs.assoc_type.8fb = assoc_entity element0, imports.%Core.import_ref.b91 [symbolic] @@ -265,9 +265,9 @@ 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 = symbolic_binding Dest, 0 [symbolic] +// CHECK:STDOUT: %ImplicitAs.assoc_type.8b5: type = assoc_entity_type @ImplicitAs, @ImplicitAs(%Dest) [symbolic] // CHECK:STDOUT: %ImplicitAs.Convert.type.4c8: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%Dest) [symbolic] // CHECK:STDOUT: %ImplicitAs.Convert.e9f: %ImplicitAs.Convert.type.4c8 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.assoc_type.8b5: type = assoc_entity_type @ImplicitAs, @ImplicitAs(%Dest) [symbolic] // CHECK:STDOUT: %ImplicitAs.type.ca8: type = facet_type <@ImplicitAs, @ImplicitAs(%.Self.bcc)> [symbolic_self] // CHECK:STDOUT: %type_where: type = facet_type [concrete] // CHECK:STDOUT: %V: %type_where = symbolic_binding V, 1 [symbolic] diff --git a/toolchain/check/testdata/for/actual.carbon b/toolchain/check/testdata/for/actual.carbon index f9e5b188afcd..6a5fff39b8f0 100644 --- a/toolchain/check/testdata/for/actual.carbon +++ b/toolchain/check/testdata/for/actual.carbon @@ -81,9 +81,9 @@ fn Read() { // CHECK:STDOUT: %Copy.type: type = facet_type <@Copy> [concrete] // CHECK:STDOUT: %impl.elem0.0b5: %Copy.type = impl_witness_access %Iterate.lookup_impl_witness.0cc, element0 [symbolic_self] // CHECK:STDOUT: %Copy.Op.type: type = fn_type @Copy.Op [concrete] +// CHECK:STDOUT: %require_complete.e66303.1: = require_complete_type %Int.b50e37.1 [symbolic] // CHECK:STDOUT: %Int.as.Copy.impl.Op.type.24b: type = fn_type @Int.as.Copy.impl.Op, @Int.as.Copy.impl(%N) [symbolic] // CHECK:STDOUT: %Int.as.Copy.impl.Op.c95: %Int.as.Copy.impl.Op.type.24b = struct_value () [symbolic] -// CHECK:STDOUT: %require_complete.e66303.1: = require_complete_type %Int.b50e37.1 [symbolic] // CHECK:STDOUT: %Copy.lookup_impl_witness.035: = lookup_impl_witness %Int.b50e37.1, @Copy [symbolic] // CHECK:STDOUT: %Copy.facet.d3d: %Copy.type = facet_value %Int.b50e37.1, (%Copy.lookup_impl_witness.035) [symbolic] // CHECK:STDOUT: %Iterate_where.type: type = facet_type <@Iterate where %impl.elem1.aba = %Int.b50e37.1 and %impl.elem0.0b5 = %Copy.facet.d3d> [symbolic] @@ -92,16 +92,16 @@ fn Read() { // CHECK:STDOUT: %Optional.type: type = generic_class_type @Optional [concrete] // CHECK:STDOUT: %Optional.generic: %Optional.type = struct_value () [concrete] // CHECK:STDOUT: %T.3fe: %OptionalStorage.type = symbolic_binding T, 0 [symbolic] -// CHECK:STDOUT: %Optional.None.type.193: type = fn_type @Optional.None, @Optional(%T.3fe) [symbolic] -// CHECK:STDOUT: %Optional.None.dc7: %Optional.None.type.193 = struct_value () [symbolic] // CHECK:STDOUT: %Optional.Some.type.32b: type = fn_type @Optional.Some, @Optional(%T.3fe) [symbolic] // CHECK:STDOUT: %Optional.Some.249: %Optional.Some.type.32b = struct_value () [symbolic] +// CHECK:STDOUT: %Optional.None.type.193: type = fn_type @Optional.None, @Optional(%T.3fe) [symbolic] +// CHECK:STDOUT: %Optional.None.dc7: %Optional.None.type.193 = struct_value () [symbolic] // CHECK:STDOUT: %type_where: type = facet_type > [concrete] -// CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] // CHECK:STDOUT: %DestroyT: %type_where = symbolic_binding DestroyT, 0 [symbolic] -// CHECK:STDOUT: %Destroy.Op.type: type = fn_type @Destroy.Op [concrete] +// CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] // CHECK:STDOUT: %DestroyT.binding.as_type.as.Destroy.impl.Op.type.15c: type = fn_type @DestroyT.binding.as_type.as.Destroy.impl.Op, @DestroyT.binding.as_type.as.Destroy.impl(%DestroyT) [symbolic] // CHECK:STDOUT: %DestroyT.binding.as_type.as.Destroy.impl.Op.fd5: %DestroyT.binding.as_type.as.Destroy.impl.Op.type.15c = struct_value () [symbolic] +// CHECK:STDOUT: %Destroy.Op.type: type = fn_type @Destroy.Op [concrete] // 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] @@ -129,9 +129,9 @@ fn Read() { // 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 = symbolic_binding Other, 0 [symbolic] +// CHECK:STDOUT: %OrderedWith.assoc_type.72b: type = assoc_entity_type @OrderedWith, @OrderedWith(%Other) [symbolic] // CHECK:STDOUT: %OrderedWith.Less.type.fc4: type = fn_type @OrderedWith.Less, @OrderedWith(%Other) [symbolic] // CHECK:STDOUT: %OrderedWith.Less.bb3: %OrderedWith.Less.type.fc4 = struct_value () [symbolic] -// CHECK:STDOUT: %OrderedWith.assoc_type.72b: type = assoc_entity_type @OrderedWith, @OrderedWith(%Other) [symbolic] // CHECK:STDOUT: %OrderedWith.type.393: type = facet_type <@OrderedWith, @OrderedWith(%Int.b50e37.1)> [symbolic] // CHECK:STDOUT: %OrderedWith.Less.type.c6f: type = fn_type @OrderedWith.Less, @OrderedWith(%Int.b50e37.1) [symbolic] // CHECK:STDOUT: %OrderedWith.assoc_type.72a: type = assoc_entity_type @OrderedWith, @OrderedWith(%Int.b50e37.1) [symbolic] @@ -832,13 +832,12 @@ fn Read() { // CHECK:STDOUT: %struct_type.start.end.fb5: type = struct_type {.start: %Int.f4f02c.1, .end: %Int.f4f02c.1} [symbolic] // CHECK:STDOUT: %complete_type.655: = complete_type_witness %struct_type.start.end.fb5 [symbolic] // CHECK:STDOUT: %IntRange.48b: type = class_type @IntRange, @IntRange(%N) [symbolic] +// CHECK:STDOUT: %IntRange.elem.4f4: type = unbound_element_type %IntRange.48b, %Int.f4f02c.1 [symbolic] +// CHECK:STDOUT: %require_complete.001e59.1: = require_complete_type %Int.f4f02c.1 [symbolic] // CHECK:STDOUT: %IntRange.Make.type.121: type = fn_type @IntRange.Make, @IntRange(%N) [symbolic] // CHECK:STDOUT: %IntRange.Make.14e: %IntRange.Make.type.121 = struct_value () [symbolic] // CHECK:STDOUT: %pattern_type.6de: type = pattern_type %IntRange.48b [symbolic] // CHECK:STDOUT: %pattern_type.e3e33e.1: type = pattern_type %Int.f4f02c.1 [symbolic] -// CHECK:STDOUT: %require_complete.001e59.1: = require_complete_type %Int.f4f02c.1 [symbolic] -// CHECK:STDOUT: %IntRange.elem.4f4: type = unbound_element_type %IntRange.48b, %Int.f4f02c.1 [symbolic] -// CHECK:STDOUT: %require_complete.b4c: = require_complete_type %IntRange.48b [symbolic] // CHECK:STDOUT: %Copy.type: type = facet_type <@Copy> [concrete] // CHECK:STDOUT: %Copy.lookup_impl_witness.d1a: = lookup_impl_witness %Int.f4f02c.1, @Copy [symbolic] // CHECK:STDOUT: %Copy.facet: %Copy.type = facet_value %Int.f4f02c.1, (%Copy.lookup_impl_witness.d1a) [symbolic] @@ -846,6 +845,7 @@ fn Read() { // CHECK:STDOUT: %.b90: type = fn_type_with_self_type %Copy.Op.type, %Copy.facet [symbolic] // CHECK:STDOUT: %impl.elem0.305: %.b90 = impl_witness_access %Copy.lookup_impl_witness.d1a, element0 [symbolic] // CHECK:STDOUT: %specific_impl_fn.3a3: = specific_impl_function %impl.elem0.305, @Copy.Op(%Copy.facet) [symbolic] +// CHECK:STDOUT: %require_complete.b4c: = require_complete_type %IntRange.48b [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: %IntRange.Make.type.cef: type = fn_type @IntRange.Make, @IntRange(%int_32) [concrete] @@ -894,12 +894,12 @@ fn Read() { // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // CHECK:STDOUT: %Core.IntLiteral: %IntLiteral.type = import_ref Core//prelude/types/int_literal, IntLiteral, loaded [concrete = constants.%IntLiteral] -// CHECK:STDOUT: %Main.import_ref.40af26.1: Core.IntLiteral = import_ref Main//lib, loc4_16, loaded [symbolic = @IntRange.%N (constants.%N)] // CHECK:STDOUT: %Main.import_ref.80d: = import_ref Main//lib, loc24_1, loaded [symbolic = @IntRange.%complete_type (constants.%complete_type.655)] // CHECK:STDOUT: %Main.import_ref.b1b = import_ref Main//lib, inst{{[0-9A-F]+}} [no loc], unloaded // CHECK:STDOUT: %Main.import_ref.765 = import_ref Main//lib, loc5_57, unloaded // CHECK:STDOUT: %Main.import_ref.e5d = import_ref Main//lib, loc22_20, unloaded // CHECK:STDOUT: %Main.import_ref.997 = import_ref Main//lib, loc23_18, unloaded +// CHECK:STDOUT: %Main.import_ref.40af26.1: Core.IntLiteral = import_ref Main//lib, loc4_16, loaded [symbolic = @IntRange.%N (constants.%N)] // CHECK:STDOUT: %Main.import_ref.40af26.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.7d5: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.365) = import_ref Core//prelude/types/int, loc{{\d+_\d+}}, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.8cf)] diff --git a/toolchain/check/testdata/for/basic.carbon b/toolchain/check/testdata/for/basic.carbon index 99e1ac159800..a7c5126a1f4b 100644 --- a/toolchain/check/testdata/for/basic.carbon +++ b/toolchain/check/testdata/for/basic.carbon @@ -66,10 +66,10 @@ fn Run() { // CHECK:STDOUT: %Copy.facet: %Copy.type = facet_value %empty_tuple.type, (%Copy.impl_witness.c9a) [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: %Optional.HasValue.type.fdd: type = fn_type @Optional.HasValue, @Optional(%T.417) [symbolic] -// CHECK:STDOUT: %Optional.HasValue.01a: %Optional.HasValue.type.fdd = struct_value () [symbolic] // CHECK:STDOUT: %Optional.Get.type.e67: type = fn_type @Optional.Get, @Optional(%T.417) [symbolic] // CHECK:STDOUT: %Optional.Get.47b: %Optional.Get.type.e67 = struct_value () [symbolic] +// CHECK:STDOUT: %Optional.HasValue.type.fdd: type = fn_type @Optional.HasValue, @Optional(%T.417) [symbolic] +// CHECK:STDOUT: %Optional.HasValue.01a: %Optional.HasValue.type.fdd = struct_value () [symbolic] // CHECK:STDOUT: %Iterate.impl_witness: = impl_witness @TrivialRange.%Iterate.impl_witness_table [concrete] // CHECK:STDOUT: %TrivialRange.as.Iterate.impl.NewCursor.type.fa48a5.1: type = fn_type @TrivialRange.as.Iterate.impl.NewCursor.loc6_32.1 [concrete] // CHECK:STDOUT: %TrivialRange.as.Iterate.impl.NewCursor.c82dff.1: %TrivialRange.as.Iterate.impl.NewCursor.type.fa48a5.1 = struct_value () [concrete] diff --git a/toolchain/check/testdata/for/pattern.carbon b/toolchain/check/testdata/for/pattern.carbon index 12419391191f..dd2d5705b788 100644 --- a/toolchain/check/testdata/for/pattern.carbon +++ b/toolchain/check/testdata/for/pattern.carbon @@ -141,14 +141,14 @@ fn Run() { // CHECK:STDOUT: %EmptyRange.Make.specific_fn: = specific_function %EmptyRange.Make.203, @EmptyRange.Make(%Copy.facet) [concrete] // CHECK:STDOUT: %Iterate.type: type = facet_type <@Iterate> [concrete] // CHECK:STDOUT: %Iterate.NewCursor.type: type = fn_type @Iterate.NewCursor [concrete] -// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.NewCursor.type.35e: type = fn_type @EmptyRange.as.Iterate.impl.NewCursor, @EmptyRange.as.Iterate.impl(%T.604) [symbolic] -// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.NewCursor.6c9: %EmptyRange.as.Iterate.impl.NewCursor.type.35e = struct_value () [symbolic] // CHECK:STDOUT: %EmptyRange.as.Iterate.impl.Next.type.9a4: type = fn_type @EmptyRange.as.Iterate.impl.Next, @EmptyRange.as.Iterate.impl(%T.604) [symbolic] // CHECK:STDOUT: %EmptyRange.as.Iterate.impl.Next.209: %EmptyRange.as.Iterate.impl.Next.type.9a4 = struct_value () [symbolic] -// CHECK:STDOUT: %Optional.HasValue.type.3ac: type = fn_type @Optional.HasValue, @Optional(%T.604) [symbolic] -// CHECK:STDOUT: %Optional.HasValue.eb1: %Optional.HasValue.type.3ac = struct_value () [symbolic] // CHECK:STDOUT: %Optional.Get.type.b75: type = fn_type @Optional.Get, @Optional(%T.604) [symbolic] // CHECK:STDOUT: %Optional.Get.66b: %Optional.Get.type.b75 = struct_value () [symbolic] +// CHECK:STDOUT: %Optional.HasValue.type.3ac: type = fn_type @Optional.HasValue, @Optional(%T.604) [symbolic] +// CHECK:STDOUT: %Optional.HasValue.eb1: %Optional.HasValue.type.3ac = struct_value () [symbolic] +// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.NewCursor.type.35e: type = fn_type @EmptyRange.as.Iterate.impl.NewCursor, @EmptyRange.as.Iterate.impl(%T.604) [symbolic] +// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.NewCursor.6c9: %EmptyRange.as.Iterate.impl.NewCursor.type.35e = struct_value () [symbolic] // CHECK:STDOUT: %Iterate.impl_witness.994: = impl_witness imports.%Iterate.impl_witness_table, @EmptyRange.as.Iterate.impl(%Copy.facet) [concrete] // CHECK:STDOUT: %EmptyRange.as.Iterate.impl.NewCursor.type.3c5: type = fn_type @EmptyRange.as.Iterate.impl.NewCursor, @EmptyRange.as.Iterate.impl(%Copy.facet) [concrete] // CHECK:STDOUT: %EmptyRange.as.Iterate.impl.NewCursor.a8e: %EmptyRange.as.Iterate.impl.NewCursor.type.3c5 = struct_value () [concrete] @@ -309,14 +309,14 @@ fn Run() { // CHECK:STDOUT: %EmptyRange.Make.specific_fn: = specific_function %EmptyRange.Make.203, @EmptyRange.Make(%Copy.facet) [concrete] // CHECK:STDOUT: %Iterate.type: type = facet_type <@Iterate> [concrete] // CHECK:STDOUT: %Iterate.NewCursor.type: type = fn_type @Iterate.NewCursor [concrete] -// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.NewCursor.type.35e: type = fn_type @EmptyRange.as.Iterate.impl.NewCursor, @EmptyRange.as.Iterate.impl(%T.604) [symbolic] -// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.NewCursor.6c9: %EmptyRange.as.Iterate.impl.NewCursor.type.35e = struct_value () [symbolic] // CHECK:STDOUT: %EmptyRange.as.Iterate.impl.Next.type.9a4: type = fn_type @EmptyRange.as.Iterate.impl.Next, @EmptyRange.as.Iterate.impl(%T.604) [symbolic] // CHECK:STDOUT: %EmptyRange.as.Iterate.impl.Next.209: %EmptyRange.as.Iterate.impl.Next.type.9a4 = struct_value () [symbolic] -// CHECK:STDOUT: %Optional.HasValue.type.3ac: type = fn_type @Optional.HasValue, @Optional(%T.604) [symbolic] -// CHECK:STDOUT: %Optional.HasValue.eb1: %Optional.HasValue.type.3ac = struct_value () [symbolic] // CHECK:STDOUT: %Optional.Get.type.b75: type = fn_type @Optional.Get, @Optional(%T.604) [symbolic] // CHECK:STDOUT: %Optional.Get.66b: %Optional.Get.type.b75 = struct_value () [symbolic] +// CHECK:STDOUT: %Optional.HasValue.type.3ac: type = fn_type @Optional.HasValue, @Optional(%T.604) [symbolic] +// CHECK:STDOUT: %Optional.HasValue.eb1: %Optional.HasValue.type.3ac = struct_value () [symbolic] +// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.NewCursor.type.35e: type = fn_type @EmptyRange.as.Iterate.impl.NewCursor, @EmptyRange.as.Iterate.impl(%T.604) [symbolic] +// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.NewCursor.6c9: %EmptyRange.as.Iterate.impl.NewCursor.type.35e = struct_value () [symbolic] // CHECK:STDOUT: %Iterate.impl_witness.994: = impl_witness imports.%Iterate.impl_witness_table, @EmptyRange.as.Iterate.impl(%Copy.facet) [concrete] // CHECK:STDOUT: %EmptyRange.as.Iterate.impl.NewCursor.type.3c5: type = fn_type @EmptyRange.as.Iterate.impl.NewCursor, @EmptyRange.as.Iterate.impl(%Copy.facet) [concrete] // CHECK:STDOUT: %EmptyRange.as.Iterate.impl.NewCursor.a8e: %EmptyRange.as.Iterate.impl.NewCursor.type.3c5 = struct_value () [concrete] @@ -488,14 +488,14 @@ fn Run() { // CHECK:STDOUT: %EmptyRange.Make.specific_fn: = specific_function %EmptyRange.Make.9ef, @EmptyRange.Make(%Copy.facet.ba9) [concrete] // CHECK:STDOUT: %Iterate.type: type = facet_type <@Iterate> [concrete] // CHECK:STDOUT: %Iterate.NewCursor.type: type = fn_type @Iterate.NewCursor [concrete] -// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.NewCursor.type.35e: type = fn_type @EmptyRange.as.Iterate.impl.NewCursor, @EmptyRange.as.Iterate.impl(%T.604) [symbolic] -// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.NewCursor.6c9: %EmptyRange.as.Iterate.impl.NewCursor.type.35e = struct_value () [symbolic] // CHECK:STDOUT: %EmptyRange.as.Iterate.impl.Next.type.9a4: type = fn_type @EmptyRange.as.Iterate.impl.Next, @EmptyRange.as.Iterate.impl(%T.604) [symbolic] // CHECK:STDOUT: %EmptyRange.as.Iterate.impl.Next.209: %EmptyRange.as.Iterate.impl.Next.type.9a4 = struct_value () [symbolic] -// CHECK:STDOUT: %Optional.HasValue.type.3ac: type = fn_type @Optional.HasValue, @Optional(%T.604) [symbolic] -// CHECK:STDOUT: %Optional.HasValue.eb1: %Optional.HasValue.type.3ac = struct_value () [symbolic] // CHECK:STDOUT: %Optional.Get.type.b75: type = fn_type @Optional.Get, @Optional(%T.604) [symbolic] // CHECK:STDOUT: %Optional.Get.66b: %Optional.Get.type.b75 = struct_value () [symbolic] +// CHECK:STDOUT: %Optional.HasValue.type.3ac: type = fn_type @Optional.HasValue, @Optional(%T.604) [symbolic] +// CHECK:STDOUT: %Optional.HasValue.eb1: %Optional.HasValue.type.3ac = struct_value () [symbolic] +// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.NewCursor.type.35e: type = fn_type @EmptyRange.as.Iterate.impl.NewCursor, @EmptyRange.as.Iterate.impl(%T.604) [symbolic] +// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.NewCursor.6c9: %EmptyRange.as.Iterate.impl.NewCursor.type.35e = struct_value () [symbolic] // CHECK:STDOUT: %Iterate.impl_witness.4ae: = impl_witness imports.%Iterate.impl_witness_table, @EmptyRange.as.Iterate.impl(%Copy.facet.ba9) [concrete] // CHECK:STDOUT: %EmptyRange.as.Iterate.impl.NewCursor.type.717: type = fn_type @EmptyRange.as.Iterate.impl.NewCursor, @EmptyRange.as.Iterate.impl(%Copy.facet.ba9) [concrete] // CHECK:STDOUT: %EmptyRange.as.Iterate.impl.NewCursor.74b: %EmptyRange.as.Iterate.impl.NewCursor.type.717 = struct_value () [concrete] @@ -683,14 +683,14 @@ fn Run() { // CHECK:STDOUT: %EmptyRange.Make.specific_fn: = specific_function %EmptyRange.Make.51d, @EmptyRange.Make(%Copy.facet.928) [concrete] // CHECK:STDOUT: %Iterate.type: type = facet_type <@Iterate> [concrete] // CHECK:STDOUT: %Iterate.NewCursor.type: type = fn_type @Iterate.NewCursor [concrete] -// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.NewCursor.type.35e: type = fn_type @EmptyRange.as.Iterate.impl.NewCursor, @EmptyRange.as.Iterate.impl(%T.604) [symbolic] -// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.NewCursor.6c9: %EmptyRange.as.Iterate.impl.NewCursor.type.35e = struct_value () [symbolic] // CHECK:STDOUT: %EmptyRange.as.Iterate.impl.Next.type.9a4: type = fn_type @EmptyRange.as.Iterate.impl.Next, @EmptyRange.as.Iterate.impl(%T.604) [symbolic] // CHECK:STDOUT: %EmptyRange.as.Iterate.impl.Next.209: %EmptyRange.as.Iterate.impl.Next.type.9a4 = struct_value () [symbolic] -// CHECK:STDOUT: %Optional.HasValue.type.3ac: type = fn_type @Optional.HasValue, @Optional(%T.604) [symbolic] -// CHECK:STDOUT: %Optional.HasValue.eb1: %Optional.HasValue.type.3ac = struct_value () [symbolic] // CHECK:STDOUT: %Optional.Get.type.b75: type = fn_type @Optional.Get, @Optional(%T.604) [symbolic] // CHECK:STDOUT: %Optional.Get.66b: %Optional.Get.type.b75 = struct_value () [symbolic] +// CHECK:STDOUT: %Optional.HasValue.type.3ac: type = fn_type @Optional.HasValue, @Optional(%T.604) [symbolic] +// CHECK:STDOUT: %Optional.HasValue.eb1: %Optional.HasValue.type.3ac = struct_value () [symbolic] +// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.NewCursor.type.35e: type = fn_type @EmptyRange.as.Iterate.impl.NewCursor, @EmptyRange.as.Iterate.impl(%T.604) [symbolic] +// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.NewCursor.6c9: %EmptyRange.as.Iterate.impl.NewCursor.type.35e = struct_value () [symbolic] // CHECK:STDOUT: %Iterate.impl_witness.a78: = impl_witness imports.%Iterate.impl_witness_table, @EmptyRange.as.Iterate.impl(%Copy.facet.928) [concrete] // CHECK:STDOUT: %EmptyRange.as.Iterate.impl.NewCursor.type.62e: type = fn_type @EmptyRange.as.Iterate.impl.NewCursor, @EmptyRange.as.Iterate.impl(%Copy.facet.928) [concrete] // CHECK:STDOUT: %EmptyRange.as.Iterate.impl.NewCursor.338: %EmptyRange.as.Iterate.impl.NewCursor.type.62e = struct_value () [concrete] diff --git a/toolchain/check/testdata/function/builtin/call_from_operator.carbon b/toolchain/check/testdata/function/builtin/call_from_operator.carbon index d606039049b1..453233cb6fa9 100644 --- a/toolchain/check/testdata/function/builtin/call_from_operator.carbon +++ b/toolchain/check/testdata/function/builtin/call_from_operator.carbon @@ -663,13 +663,13 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: %T: type = symbolic_binding T, 0 [symbolic] // CHECK:STDOUT: %As.type.2c2: type = facet_type <@As, @As(%T)> [symbolic] // CHECK:STDOUT: %Self.aa9: %As.type.2c2 = symbolic_binding Self, 1 [symbolic] +// CHECK:STDOUT: %As.assoc_type.10e: type = assoc_entity_type @As, @As(%T) [symbolic] +// CHECK:STDOUT: %assoc0.40b: %As.assoc_type.10e = assoc_entity element0, imports.%Core.import_ref.7a4 [symbolic] // CHECK:STDOUT: %As.Convert.type.169: type = fn_type @As.Convert, @As(%T) [symbolic] // CHECK:STDOUT: %As.Convert.70f: %As.Convert.type.169 = struct_value () [symbolic] // CHECK:STDOUT: %pattern_type.e68: type = pattern_type %T [symbolic] // CHECK:STDOUT: %Self.binding.as_type.d87: type = symbolic_binding_type Self, 1, %Self.aa9 [symbolic] // CHECK:STDOUT: %pattern_type.8ac: type = pattern_type %Self.binding.as_type.d87 [symbolic] -// CHECK:STDOUT: %As.assoc_type.10e: type = assoc_entity_type @As, @As(%T) [symbolic] -// CHECK:STDOUT: %assoc0.40b: %As.assoc_type.10e = assoc_entity element0, imports.%Core.import_ref.7a4 [symbolic] // CHECK:STDOUT: %As.type.a29: type = facet_type <@As, @As(%i32.builtin)> [concrete] // CHECK:STDOUT: %Self.a6c: %As.type.a29 = symbolic_binding Self, 1 [symbolic] // CHECK:STDOUT: %As.Convert.type.378: type = fn_type @As.Convert, @As(%i32.builtin) [concrete] @@ -691,12 +691,12 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: %AddWith.generic: %AddWith.type.e05 = struct_value () [concrete] // CHECK:STDOUT: %AddWith.type.51e: type = facet_type <@AddWith, @AddWith(%T)> [symbolic] // CHECK:STDOUT: %Self.895: %AddWith.type.51e = symbolic_binding Self, 1 [symbolic] +// CHECK:STDOUT: %AddWith.assoc_type.dc1: type = assoc_entity_type @AddWith, @AddWith(%T) [symbolic] +// CHECK:STDOUT: %assoc0.03b: %AddWith.assoc_type.dc1 = assoc_entity element0, imports.%Core.import_ref.4ac [symbolic] // CHECK:STDOUT: %AddWith.Op.type.e78: type = fn_type @AddWith.Op, @AddWith(%T) [symbolic] // CHECK:STDOUT: %AddWith.Op.e03: %AddWith.Op.type.e78 = struct_value () [symbolic] // CHECK:STDOUT: %Self.binding.as_type.b1f: type = symbolic_binding_type Self, 1, %Self.895 [symbolic] // CHECK:STDOUT: %pattern_type.086: type = pattern_type %Self.binding.as_type.b1f [symbolic] -// CHECK:STDOUT: %AddWith.assoc_type.dc1: type = assoc_entity_type @AddWith, @AddWith(%T) [symbolic] -// CHECK:STDOUT: %assoc0.03b: %AddWith.assoc_type.dc1 = assoc_entity element0, imports.%Core.import_ref.4ac [symbolic] // CHECK:STDOUT: %AddWith.type.2a3: type = facet_type <@AddWith, @AddWith(%i32.builtin)> [concrete] // CHECK:STDOUT: %Self.558: %AddWith.type.2a3 = symbolic_binding Self, 1 [symbolic] // CHECK:STDOUT: %AddWith.Op.type.0b7: type = fn_type @AddWith.Op, @AddWith(%i32.builtin) [concrete] @@ -715,12 +715,12 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.2d9: type = facet_type <@ImplicitAs, @ImplicitAs(%T)> [symbolic] // CHECK:STDOUT: %Self.4f1: %ImplicitAs.type.2d9 = symbolic_binding Self, 1 [symbolic] +// CHECK:STDOUT: %ImplicitAs.assoc_type.8b5: type = assoc_entity_type @ImplicitAs, @ImplicitAs(%T) [symbolic] +// CHECK:STDOUT: %assoc0.f64: %ImplicitAs.assoc_type.8b5 = assoc_entity element0, imports.%Core.import_ref.b91295.1 [symbolic] // CHECK:STDOUT: %ImplicitAs.Convert.type.4c8: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%T) [symbolic] // CHECK:STDOUT: %ImplicitAs.Convert.e9f: %ImplicitAs.Convert.type.4c8 = struct_value () [symbolic] // CHECK:STDOUT: %Self.binding.as_type.ab0: type = symbolic_binding_type Self, 1, %Self.4f1 [symbolic] // CHECK:STDOUT: %pattern_type.c40: type = pattern_type %Self.binding.as_type.ab0 [symbolic] -// CHECK:STDOUT: %ImplicitAs.assoc_type.8b5: type = assoc_entity_type @ImplicitAs, @ImplicitAs(%T) [symbolic] -// CHECK:STDOUT: %assoc0.f64: %ImplicitAs.assoc_type.8b5 = assoc_entity element0, imports.%Core.import_ref.b91295.1 [symbolic] // CHECK:STDOUT: %ImplicitAs.type.7a9: type = facet_type <@ImplicitAs, @ImplicitAs(Core.IntLiteral)> [concrete] // CHECK:STDOUT: %Self.886: %ImplicitAs.type.7a9 = symbolic_binding Self, 1 [symbolic] // CHECK:STDOUT: %ImplicitAs.Convert.type.71e: type = fn_type @ImplicitAs.Convert, @ImplicitAs(Core.IntLiteral) [concrete] @@ -772,13 +772,13 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//default, Int, loaded [concrete = constants.%Int] // CHECK:STDOUT: %Core.As: %As.type.90f = import_ref Core//default, As, loaded [concrete = constants.%As.generic] -// CHECK:STDOUT: %Core.import_ref.efcd44.1: type = import_ref Core//default, loc{{\d+_\d+}}, loaded [symbolic = @As.%T (constants.%T)] // CHECK:STDOUT: %Core.import_ref.375 = import_ref Core//default, loc{{\d+_\d+}}, unloaded // CHECK:STDOUT: %Core.import_ref.471: @As.%As.assoc_type (%As.assoc_type.10e) = import_ref Core//default, loc{{\d+_\d+}}, loaded [symbolic = @As.%assoc0 (constants.%assoc0.964)] // CHECK:STDOUT: %Core.Convert.924 = import_ref Core//default, Convert, unloaded +// CHECK:STDOUT: %Core.import_ref.efcd44.1: type = import_ref Core//default, loc{{\d+_\d+}}, loaded [symbolic = @As.%T (constants.%T)] +// CHECK:STDOUT: %Core.import_ref.7a4: @As.%As.Convert.type (%As.Convert.type.169) = import_ref Core//default, loc{{\d+_\d+}}, loaded [symbolic = @As.%As.Convert (constants.%As.Convert.70f)] // CHECK:STDOUT: %Core.import_ref.efcd44.2: type = import_ref Core//default, loc{{\d+_\d+}}, loaded [symbolic = @As.%T (constants.%T)] // CHECK:STDOUT: %Core.import_ref.1a4: @As.%As.type (%As.type.2c2) = import_ref Core//default, loc{{\d+_\d+}}, loaded [symbolic = @As.%Self (constants.%Self.aa9)] -// CHECK:STDOUT: %Core.import_ref.7a4: @As.%As.Convert.type (%As.Convert.type.169) = import_ref Core//default, loc{{\d+_\d+}}, loaded [symbolic = @As.%As.Convert (constants.%As.Convert.70f)] // CHECK:STDOUT: %Core.import_ref.048 = import_ref Core//default, loc{{\d+_\d+}}, unloaded // CHECK:STDOUT: %Core.import_ref.931: = import_ref Core//default, loc{{\d+_\d+}}, loaded [concrete = constants.%As.impl_witness] // CHECK:STDOUT: %Core.import_ref.8721d7.1: type = import_ref Core//default, loc{{\d+_\d+}}, loaded [concrete = Core.IntLiteral] @@ -786,13 +786,13 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: %Core.import_ref.a36: %Core.IntLiteral.as.As.impl.Convert.type = import_ref Core//default, loc{{\d+_\d+}}, loaded [concrete = constants.%Core.IntLiteral.as.As.impl.Convert] // CHECK:STDOUT: %As.impl_witness_table = impl_witness_table (%Core.import_ref.a36), @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.efcd44.3: type = import_ref Core//default, loc{{\d+_\d+}}, loaded [symbolic = @AddWith.%T (constants.%T)] // CHECK:STDOUT: %Core.import_ref.833 = import_ref Core//default, loc{{\d+_\d+}}, unloaded // CHECK:STDOUT: %Core.import_ref.d7c: @AddWith.%AddWith.assoc_type (%AddWith.assoc_type.dc1) = import_ref Core//default, loc{{\d+_\d+}}, loaded [symbolic = @AddWith.%assoc0 (constants.%assoc0.941)] // CHECK:STDOUT: %Core.Op = import_ref Core//default, Op, unloaded +// CHECK:STDOUT: %Core.import_ref.efcd44.3: type = import_ref Core//default, loc{{\d+_\d+}}, loaded [symbolic = @AddWith.%T (constants.%T)] +// CHECK:STDOUT: %Core.import_ref.4ac: @AddWith.%AddWith.Op.type (%AddWith.Op.type.e78) = import_ref Core//default, loc{{\d+_\d+}}, loaded [symbolic = @AddWith.%AddWith.Op (constants.%AddWith.Op.e03)] // CHECK:STDOUT: %Core.import_ref.efcd44.4: type = import_ref Core//default, loc{{\d+_\d+}}, loaded [symbolic = @AddWith.%T (constants.%T)] // CHECK:STDOUT: %Core.import_ref.54a: @AddWith.%AddWith.type (%AddWith.type.51e) = import_ref Core//default, loc{{\d+_\d+}}, loaded [symbolic = @AddWith.%Self (constants.%Self.895)] -// CHECK:STDOUT: %Core.import_ref.4ac: @AddWith.%AddWith.Op.type (%AddWith.Op.type.e78) = import_ref Core//default, loc{{\d+_\d+}}, loaded [symbolic = @AddWith.%AddWith.Op (constants.%AddWith.Op.e03)] // CHECK:STDOUT: %Core.import_ref.91e = import_ref Core//default, loc{{\d+_\d+}}, unloaded // CHECK:STDOUT: %Core.import_ref.8af: = import_ref Core//default, loc{{\d+_\d+}}, loaded [concrete = constants.%AddWith.impl_witness] // CHECK:STDOUT: %Core.import_ref.c8c7cd.1: type = import_ref Core//default, loc{{\d+_\d+}}, loaded [concrete = constants.%i32.builtin] @@ -800,13 +800,13 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: %Core.import_ref.980: %i32.builtin.as.AddWith.impl.Op.type = import_ref Core//default, loc{{\d+_\d+}}, loaded [concrete = constants.%i32.builtin.as.AddWith.impl.Op] // CHECK:STDOUT: %AddWith.impl_witness_table = impl_witness_table (%Core.import_ref.980), @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.efcd44.5: type = import_ref Core//default, loc{{\d+_\d+}}, loaded [symbolic = @ImplicitAs.%T (constants.%T)] // CHECK:STDOUT: %Core.import_ref.d6f = import_ref Core//default, loc{{\d+_\d+}}, unloaded // CHECK:STDOUT: %Core.import_ref.b9c: @ImplicitAs.%ImplicitAs.assoc_type (%ImplicitAs.assoc_type.8b5) = import_ref Core//default, loc{{\d+_\d+}}, loaded [symbolic = @ImplicitAs.%assoc0 (constants.%assoc0.7b6)] // CHECK:STDOUT: %Core.Convert.acf = import_ref Core//default, Convert, unloaded +// CHECK:STDOUT: %Core.import_ref.efcd44.5: type = import_ref Core//default, loc{{\d+_\d+}}, loaded [symbolic = @ImplicitAs.%T (constants.%T)] +// CHECK:STDOUT: %Core.import_ref.b91295.1: @ImplicitAs.%ImplicitAs.Convert.type (%ImplicitAs.Convert.type.4c8) = import_ref Core//default, loc{{\d+_\d+}}, loaded [symbolic = @ImplicitAs.%ImplicitAs.Convert (constants.%ImplicitAs.Convert.e9f)] // CHECK:STDOUT: %Core.import_ref.efcd44.6: type = import_ref Core//default, loc{{\d+_\d+}}, loaded [symbolic = @ImplicitAs.%T (constants.%T)] // CHECK:STDOUT: %Core.import_ref.4ff: @ImplicitAs.%ImplicitAs.type (%ImplicitAs.type.2d9) = import_ref Core//default, loc{{\d+_\d+}}, loaded [symbolic = @ImplicitAs.%Self (constants.%Self.4f1)] -// CHECK:STDOUT: %Core.import_ref.b91295.1: @ImplicitAs.%ImplicitAs.Convert.type (%ImplicitAs.Convert.type.4c8) = import_ref Core//default, loc{{\d+_\d+}}, loaded [symbolic = @ImplicitAs.%ImplicitAs.Convert (constants.%ImplicitAs.Convert.e9f)] // CHECK:STDOUT: %Core.import_ref.d11 = import_ref Core//default, loc{{\d+_\d+}}, unloaded // CHECK:STDOUT: %Core.import_ref.8a9: = import_ref Core//default, loc{{\d+_\d+}}, loaded [concrete = constants.%ImplicitAs.impl_witness.c15] // CHECK:STDOUT: %Core.import_ref.8721d7.2: type = import_ref Core//default, loc{{\d+_\d+}}, loaded [concrete = Core.IntLiteral] diff --git a/toolchain/check/testdata/function/generic/call.carbon b/toolchain/check/testdata/function/generic/call.carbon index 25e3a85cb78f..f860172ca318 100644 --- a/toolchain/check/testdata/function/generic/call.carbon +++ b/toolchain/check/testdata/function/generic/call.carbon @@ -88,10 +88,10 @@ fn CallSpecific(x: C*) -> C* { // CHECK:STDOUT: %specific_impl_fn.103: = specific_impl_function %impl.elem0.fac, @Copy.Op(%T.417) [symbolic] // CHECK:STDOUT: %T.d9f: type = symbolic_binding T, 0 [symbolic] // CHECK:STDOUT: %ptr.4f0: type = ptr_type %T.d9f [symbolic] +// CHECK:STDOUT: %require_complete.482: = require_complete_type %ptr.4f0 [symbolic] // CHECK:STDOUT: %ptr.as.Copy.impl.Op.type.75b: type = fn_type @ptr.as.Copy.impl.Op, @ptr.as.Copy.impl(%T.d9f) [symbolic] // CHECK:STDOUT: %ptr.as.Copy.impl.Op.692: %ptr.as.Copy.impl.Op.type.75b = struct_value () [symbolic] // CHECK:STDOUT: %pattern_type.a60: type = pattern_type %ptr.4f0 [symbolic] -// CHECK:STDOUT: %require_complete.482: = require_complete_type %ptr.4f0 [symbolic] // CHECK:STDOUT: %Function.specific_fn.c1b: = specific_function %Function, @Function(%T.417) [symbolic] // CHECK:STDOUT: %Copy.lookup_impl_witness.c66: = lookup_impl_witness %ptr.4f0, @Copy [symbolic] // CHECK:STDOUT: %Copy.facet.747: %Copy.type = facet_value %ptr.4f0, (%Copy.lookup_impl_witness.c66) [symbolic] @@ -311,10 +311,10 @@ fn CallSpecific(x: C*) -> C* { // CHECK:STDOUT: %specific_impl_fn.103: = specific_impl_function %impl.elem0.fac, @Copy.Op(%T.417) [symbolic] // CHECK:STDOUT: %T.d9f: type = symbolic_binding T, 0 [symbolic] // CHECK:STDOUT: %ptr.4f0: type = ptr_type %T.d9f [symbolic] +// CHECK:STDOUT: %require_complete.482: = require_complete_type %ptr.4f0 [symbolic] // CHECK:STDOUT: %ptr.as.Copy.impl.Op.type.75b: type = fn_type @ptr.as.Copy.impl.Op, @ptr.as.Copy.impl(%T.d9f) [symbolic] // CHECK:STDOUT: %ptr.as.Copy.impl.Op.692: %ptr.as.Copy.impl.Op.type.75b = struct_value () [symbolic] // CHECK:STDOUT: %pattern_type.a60: type = pattern_type %ptr.4f0 [symbolic] -// CHECK:STDOUT: %require_complete.482: = require_complete_type %ptr.4f0 [symbolic] // CHECK:STDOUT: %Function.specific_fn.c1b: = specific_function %Function, @Function(%T.417) [symbolic] // CHECK:STDOUT: %Copy.lookup_impl_witness.c66: = lookup_impl_witness %ptr.4f0, @Copy [symbolic] // CHECK:STDOUT: %Copy.facet.747: %Copy.type = facet_value %ptr.4f0, (%Copy.lookup_impl_witness.c66) [symbolic] diff --git a/toolchain/check/testdata/impl/compound.carbon b/toolchain/check/testdata/impl/compound.carbon index 0c3a7309336f..e22fffdd8a16 100644 --- a/toolchain/check/testdata/impl/compound.carbon +++ b/toolchain/check/testdata/impl/compound.carbon @@ -329,13 +329,13 @@ fn InstanceCallFail() { // CHECK:STDOUT: %Dest: type = symbolic_binding Dest, 0 [symbolic] // CHECK:STDOUT: %ImplicitAs.type.2d9: type = facet_type <@ImplicitAs, @ImplicitAs(%Dest)> [symbolic] // CHECK:STDOUT: %Self.4f1: %ImplicitAs.type.2d9 = symbolic_binding Self, 1 [symbolic] +// CHECK:STDOUT: %ImplicitAs.assoc_type.8b5: type = assoc_entity_type @ImplicitAs, @ImplicitAs(%Dest) [symbolic] +// CHECK:STDOUT: %assoc0.f64: %ImplicitAs.assoc_type.8b5 = assoc_entity element0, imports.%Core.import_ref.b91 [symbolic] // CHECK:STDOUT: %ImplicitAs.Convert.type.4c8: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%Dest) [symbolic] // CHECK:STDOUT: %ImplicitAs.Convert.e9f: %ImplicitAs.Convert.type.4c8 = struct_value () [symbolic] // CHECK:STDOUT: %pattern_type.e68: type = pattern_type %Dest [symbolic] // CHECK:STDOUT: %Self.binding.as_type: type = symbolic_binding_type Self, 1, %Self.4f1 [symbolic] // CHECK:STDOUT: %pattern_type.c40: type = pattern_type %Self.binding.as_type [symbolic] -// CHECK:STDOUT: %ImplicitAs.assoc_type.8b5: type = assoc_entity_type @ImplicitAs, @ImplicitAs(%Dest) [symbolic] -// CHECK:STDOUT: %assoc0.f64: %ImplicitAs.assoc_type.8b5 = assoc_entity element0, imports.%Core.import_ref.b91 [symbolic] // CHECK:STDOUT: %ImplicitAs.type.d3c: type = facet_type <@ImplicitAs, @ImplicitAs(%NonInstance2.type)> [concrete] // CHECK:STDOUT: %Self.29a: %ImplicitAs.type.d3c = symbolic_binding Self, 1 [symbolic] // CHECK:STDOUT: %ImplicitAs.Convert.type.de0: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%NonInstance2.type) [concrete] @@ -351,13 +351,13 @@ fn InstanceCallFail() { // CHECK:STDOUT: import Core//default // CHECK:STDOUT: } // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//default, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.efcd44.1: type = import_ref Core//default, loc{{\d+_\d+}}, loaded [symbolic = @ImplicitAs.%Dest (constants.%Dest)] // CHECK:STDOUT: %Core.import_ref.d6f = import_ref Core//default, loc{{\d+_\d+}}, unloaded // CHECK:STDOUT: %Core.import_ref.b9c: @ImplicitAs.%ImplicitAs.assoc_type (%ImplicitAs.assoc_type.8b5) = import_ref Core//default, loc{{\d+_\d+}}, loaded [symbolic = @ImplicitAs.%assoc0 (constants.%assoc0.7b6)] // CHECK:STDOUT: %Core.Convert = import_ref Core//default, Convert, unloaded +// CHECK:STDOUT: %Core.import_ref.efcd44.1: type = import_ref Core//default, loc{{\d+_\d+}}, loaded [symbolic = @ImplicitAs.%Dest (constants.%Dest)] +// CHECK:STDOUT: %Core.import_ref.b91: @ImplicitAs.%ImplicitAs.Convert.type (%ImplicitAs.Convert.type.4c8) = import_ref Core//default, loc{{\d+_\d+}}, loaded [symbolic = @ImplicitAs.%ImplicitAs.Convert (constants.%ImplicitAs.Convert.e9f)] // CHECK:STDOUT: %Core.import_ref.efcd44.2: type = import_ref Core//default, loc{{\d+_\d+}}, loaded [symbolic = @ImplicitAs.%Dest (constants.%Dest)] // CHECK:STDOUT: %Core.import_ref.4ff: @ImplicitAs.%ImplicitAs.type (%ImplicitAs.type.2d9) = import_ref Core//default, loc{{\d+_\d+}}, loaded [symbolic = @ImplicitAs.%Self (constants.%Self.4f1)] -// CHECK:STDOUT: %Core.import_ref.b91: @ImplicitAs.%ImplicitAs.Convert.type (%ImplicitAs.Convert.type.4c8) = import_ref Core//default, loc{{\d+_\d+}}, loaded [symbolic = @ImplicitAs.%ImplicitAs.Convert (constants.%ImplicitAs.Convert.e9f)] // CHECK:STDOUT: %Core.import_ref.d11 = import_ref Core//default, loc{{\d+_\d+}}, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: @@ -516,13 +516,13 @@ fn InstanceCallFail() { // CHECK:STDOUT: %Dest: type = symbolic_binding Dest, 0 [symbolic] // CHECK:STDOUT: %ImplicitAs.type.2d9: type = facet_type <@ImplicitAs, @ImplicitAs(%Dest)> [symbolic] // CHECK:STDOUT: %Self.4f1: %ImplicitAs.type.2d9 = symbolic_binding Self, 1 [symbolic] +// CHECK:STDOUT: %ImplicitAs.assoc_type.8b5: type = assoc_entity_type @ImplicitAs, @ImplicitAs(%Dest) [symbolic] +// CHECK:STDOUT: %assoc0.f64: %ImplicitAs.assoc_type.8b5 = assoc_entity element0, imports.%Core.import_ref.b91 [symbolic] // CHECK:STDOUT: %ImplicitAs.Convert.type.4c8: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%Dest) [symbolic] // CHECK:STDOUT: %ImplicitAs.Convert.e9f: %ImplicitAs.Convert.type.4c8 = struct_value () [symbolic] // CHECK:STDOUT: %pattern_type.e68: type = pattern_type %Dest [symbolic] // CHECK:STDOUT: %Self.binding.as_type: type = symbolic_binding_type Self, 1, %Self.4f1 [symbolic] // CHECK:STDOUT: %pattern_type.c40: type = pattern_type %Self.binding.as_type [symbolic] -// CHECK:STDOUT: %ImplicitAs.assoc_type.8b5: type = assoc_entity_type @ImplicitAs, @ImplicitAs(%Dest) [symbolic] -// CHECK:STDOUT: %assoc0.f64: %ImplicitAs.assoc_type.8b5 = assoc_entity element0, imports.%Core.import_ref.b91 [symbolic] // CHECK:STDOUT: %ImplicitAs.type.2b7: type = facet_type <@ImplicitAs, @ImplicitAs(%NonInstance3.type)> [concrete] // CHECK:STDOUT: %Self.919: %ImplicitAs.type.2b7 = symbolic_binding Self, 1 [symbolic] // CHECK:STDOUT: %ImplicitAs.Convert.type.162: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%NonInstance3.type) [concrete] @@ -538,13 +538,13 @@ fn InstanceCallFail() { // CHECK:STDOUT: import Core//default // CHECK:STDOUT: } // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//default, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.efcd44.1: type = import_ref Core//default, loc{{\d+_\d+}}, loaded [symbolic = @ImplicitAs.%Dest (constants.%Dest)] // CHECK:STDOUT: %Core.import_ref.d6f = import_ref Core//default, loc{{\d+_\d+}}, unloaded // CHECK:STDOUT: %Core.import_ref.b9c: @ImplicitAs.%ImplicitAs.assoc_type (%ImplicitAs.assoc_type.8b5) = import_ref Core//default, loc{{\d+_\d+}}, loaded [symbolic = @ImplicitAs.%assoc0 (constants.%assoc0.7b6)] // CHECK:STDOUT: %Core.Convert = import_ref Core//default, Convert, unloaded +// CHECK:STDOUT: %Core.import_ref.efcd44.1: type = import_ref Core//default, loc{{\d+_\d+}}, loaded [symbolic = @ImplicitAs.%Dest (constants.%Dest)] +// CHECK:STDOUT: %Core.import_ref.b91: @ImplicitAs.%ImplicitAs.Convert.type (%ImplicitAs.Convert.type.4c8) = import_ref Core//default, loc{{\d+_\d+}}, loaded [symbolic = @ImplicitAs.%ImplicitAs.Convert (constants.%ImplicitAs.Convert.e9f)] // CHECK:STDOUT: %Core.import_ref.efcd44.2: type = import_ref Core//default, loc{{\d+_\d+}}, loaded [symbolic = @ImplicitAs.%Dest (constants.%Dest)] // CHECK:STDOUT: %Core.import_ref.4ff: @ImplicitAs.%ImplicitAs.type (%ImplicitAs.type.2d9) = import_ref Core//default, loc{{\d+_\d+}}, loaded [symbolic = @ImplicitAs.%Self (constants.%Self.4f1)] -// CHECK:STDOUT: %Core.import_ref.b91: @ImplicitAs.%ImplicitAs.Convert.type (%ImplicitAs.Convert.type.4c8) = import_ref Core//default, loc{{\d+_\d+}}, loaded [symbolic = @ImplicitAs.%ImplicitAs.Convert (constants.%ImplicitAs.Convert.e9f)] // CHECK:STDOUT: %Core.import_ref.d11 = import_ref Core//default, loc{{\d+_\d+}}, unloaded // 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 438a802f2744..2753c423d8a0 100644 --- a/toolchain/check/testdata/impl/import_builtin_call.carbon +++ b/toolchain/check/testdata/impl/import_builtin_call.carbon @@ -445,10 +445,10 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: %Self.binding.as_type: type = symbolic_binding_type Self, 0, %Self [symbolic] // CHECK:STDOUT: %pattern_type.091: type = pattern_type %Self.binding.as_type [symbolic] // CHECK:STDOUT: %Add.impl_witness.ec1: = impl_witness imports.%Add.impl_witness_table, @MyInt.as.Add.impl(%N) [symbolic] +// CHECK:STDOUT: %require_complete.a87: = require_complete_type %MyInt.19f [symbolic] // CHECK:STDOUT: %MyInt.as.Add.impl.Op.type.1ab: type = fn_type @MyInt.as.Add.impl.Op, @MyInt.as.Add.impl(%N) [symbolic] // CHECK:STDOUT: %MyInt.as.Add.impl.Op.959: %MyInt.as.Add.impl.Op.type.1ab = struct_value () [symbolic] // CHECK:STDOUT: %pattern_type.37a: type = pattern_type %MyInt.19f [symbolic] -// CHECK:STDOUT: %require_complete.a87: = require_complete_type %MyInt.19f [symbolic] // CHECK:STDOUT: %Add.impl_witness.8fe: = impl_witness imports.%Add.impl_witness_table, @MyInt.as.Add.impl(%int_64) [concrete] // CHECK:STDOUT: %MyInt.as.Add.impl.Op.type.193: type = fn_type @MyInt.as.Add.impl.Op, @MyInt.as.Add.impl(%int_64) [concrete] // CHECK:STDOUT: %MyInt.as.Add.impl.Op.803: %MyInt.as.Add.impl.Op.type.193 = struct_value () [concrete] @@ -473,9 +473,9 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: %Main.Int = import_ref Main//generic_impl, Int, unloaded // CHECK:STDOUT: %Main.MyInt: %MyInt.type = import_ref Main//generic_impl, MyInt, loaded [concrete = constants.%MyInt.generic] // CHECK:STDOUT: %Main.Double: %Double.type = import_ref Main//generic_impl, Double, loaded [concrete = constants.%Double] -// CHECK:STDOUT: %Main.import_ref.40af26.1: Core.IntLiteral = import_ref Main//generic_impl, loc11_13, loaded [symbolic = @MyInt.%N (constants.%N)] // CHECK:STDOUT: %Main.import_ref.ac2: = import_ref Main//generic_impl, loc13_1, loaded [symbolic = @MyInt.%complete_type (constants.%complete_type.a2d)] // CHECK:STDOUT: %Main.import_ref.0ad = import_ref Main//generic_impl, inst{{[0-9A-F]+}} [no loc], unloaded +// CHECK:STDOUT: %Main.import_ref.40af26.1: Core.IntLiteral = import_ref Main//generic_impl, loc11_13, loaded [symbolic = @MyInt.%N (constants.%N)] // CHECK:STDOUT: %Main.import_ref.c52 = import_ref Main//generic_impl, loc4_15, 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 @@ -484,9 +484,9 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: %Main.import_ref.06e: = import_ref Main//generic_impl, loc15_48, loaded [symbolic = @MyInt.as.Add.impl.%Add.impl_witness (constants.%Add.impl_witness.ec1)] // CHECK:STDOUT: %Main.import_ref.59c: @MyInt.as.Add.impl.%MyInt.as.Add.impl.Op.type (%MyInt.as.Add.impl.Op.type.1ab) = import_ref Main//generic_impl, loc16_42, loaded [symbolic = @MyInt.as.Add.impl.%MyInt.as.Add.impl.Op (constants.%MyInt.as.Add.impl.Op.959)] // CHECK:STDOUT: %Add.impl_witness_table = impl_witness_table (%Main.import_ref.59c), @MyInt.as.Add.impl [concrete] -// CHECK:STDOUT: %Main.import_ref.40af26.2: Core.IntLiteral = import_ref Main//generic_impl, loc15_14, loaded [symbolic = @MyInt.as.Add.impl.%N (constants.%N)] // CHECK:STDOUT: %Main.import_ref.fbc: type = import_ref Main//generic_impl, loc15_39, loaded [symbolic = @MyInt.as.Add.impl.%MyInt (constants.%MyInt.19f)] // CHECK:STDOUT: %Main.import_ref.bf0: type = import_ref Main//generic_impl, loc15_44, loaded [concrete = constants.%Add.type] +// CHECK:STDOUT: %Main.import_ref.40af26.2: Core.IntLiteral = import_ref Main//generic_impl, loc15_14, loaded [symbolic = @MyInt.as.Add.impl.%N (constants.%N)] // CHECK:STDOUT: %Main.import_ref.40af26.3: Core.IntLiteral = import_ref Main//generic_impl, loc15_14, loaded [symbolic = @MyInt.as.Add.impl.%N (constants.%N)] // CHECK:STDOUT: %Main.import_ref.40af26.4: Core.IntLiteral = import_ref Main//generic_impl, loc19_11, loaded [symbolic = @Double.%N (constants.%N)] // CHECK:STDOUT: } @@ -700,18 +700,18 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Double(constants.%N) { -// CHECK:STDOUT: %N => constants.%N -// CHECK:STDOUT: %MyInt => constants.%MyInt.19f -// CHECK:STDOUT: %pattern_type => constants.%pattern_type.37a -// CHECK:STDOUT: } -// CHECK:STDOUT: // CHECK:STDOUT: specific @Add.Op(constants.%Add.facet.98c) { // CHECK:STDOUT: %Self => constants.%Add.facet.98c // CHECK:STDOUT: %Self.binding.as_type => constants.%MyInt.19f // CHECK:STDOUT: %pattern_type => constants.%pattern_type.37a // CHECK:STDOUT: } // CHECK:STDOUT: +// CHECK:STDOUT: specific @Double(constants.%N) { +// CHECK:STDOUT: %N => constants.%N +// CHECK:STDOUT: %MyInt => constants.%MyInt.19f +// CHECK:STDOUT: %pattern_type => constants.%pattern_type.37a +// CHECK:STDOUT: } +// CHECK:STDOUT: // CHECK:STDOUT: specific @Double(constants.%int_64) { // CHECK:STDOUT: %N => constants.%int_64 // CHECK:STDOUT: %MyInt => constants.%MyInt.f30 @@ -1045,8 +1045,8 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: %ToLiteral.call: init Core.IntLiteral = call %ToLiteral(%N.c9f) [symbolic] // CHECK:STDOUT: %iN.builtin.c40: type = int_type signed, %ToLiteral.call [symbolic] // CHECK:STDOUT: %pattern_type.534: type = pattern_type %iN.builtin.c40 [symbolic] -// CHECK:STDOUT: %require_complete.492: = require_complete_type %iN.builtin.c40 [symbolic] // CHECK:STDOUT: %Make.specific_fn.5e7: = specific_function %Make, @Make(%N.c9f) [symbolic] +// CHECK:STDOUT: %require_complete.492: = require_complete_type %iN.builtin.c40 [symbolic] // CHECK:STDOUT: %FromLiteral.type: type = fn_type @FromLiteral [concrete] // CHECK:STDOUT: %FromLiteral: %FromLiteral.type = struct_value () [concrete] // CHECK:STDOUT: %int_64.f82: %i32.builtin = int_value 64 [concrete] @@ -1062,8 +1062,8 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: %OtherInt.ToLiteral.call: init Core.IntLiteral = call %OtherInt.ToLiteral.bound.9e0(%N.b75) [symbolic] // CHECK:STDOUT: %iN.builtin.672: type = int_type signed, %OtherInt.ToLiteral.call [symbolic] // CHECK:STDOUT: %pattern_type.a63: type = pattern_type %iN.builtin.672 [symbolic] -// CHECK:STDOUT: %require_complete.736: = require_complete_type %iN.builtin.672 [symbolic] // CHECK:STDOUT: %MakeFromClass.specific_fn.a93: = specific_function %MakeFromClass, @MakeFromClass(%N.b75) [symbolic] +// CHECK:STDOUT: %require_complete.736: = require_complete_type %iN.builtin.672 [symbolic] // CHECK:STDOUT: %int_64.06b: %OtherInt = int_value 64 [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] diff --git a/toolchain/check/testdata/impl/import_generic.carbon b/toolchain/check/testdata/impl/import_generic.carbon index 15a2886fd443..41faf2bc9654 100644 --- a/toolchain/check/testdata/impl/import_generic.carbon +++ b/toolchain/check/testdata/impl/import_generic.carbon @@ -411,25 +411,25 @@ impl forall [T:! type] D as N(T*) {} // CHECK:STDOUT: %Main.C: type = import_ref Main//import_generic, C, loaded [concrete = constants.%C] // CHECK:STDOUT: %Main.I: %I.type.dac = import_ref Main//import_generic, I, loaded [concrete = constants.%I.generic] // CHECK:STDOUT: %Main.N: %N.type.673 = import_ref Main//import_generic, N, loaded [concrete = constants.%empty_struct] -// CHECK:STDOUT: %Main.import_ref.efcd44.1: type = import_ref Main//import_generic, loc5_13, loaded [symbolic = @I.%T (constants.%T)] // CHECK:STDOUT: %Main.import_ref.769 = import_ref Main//import_generic, loc5_23, unloaded +// CHECK:STDOUT: %Main.import_ref.efcd44.1: type = import_ref Main//import_generic, loc5_13, loaded [symbolic = @I.%T (constants.%T)] // CHECK:STDOUT: %Main.import_ref.e46 = 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, inst{{[0-9A-F]+}} [no loc], unloaded // CHECK:STDOUT: %I.impl_witness_table.478 = impl_witness_table (), @C.as.I.impl.f3ed6b.1 [concrete] -// CHECK:STDOUT: %Main.import_ref.efcd44.2: type = import_ref Main//import_generic, loc8_14, loaded [symbolic = @C.as.I.impl.f3ed6b.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.46444d.1: type = import_ref Main//import_generic, loc8_32, loaded [symbolic = @C.as.I.impl.f3ed6b.1.%I.type (constants.%I.type.070)] +// CHECK:STDOUT: %Main.import_ref.efcd44.2: type = import_ref Main//import_generic, loc8_14, loaded [symbolic = @C.as.I.impl.f3ed6b.1.%T (constants.%T)] // CHECK:STDOUT: %Main.import_ref.4f8 = import_ref Main//import_generic, loc12_35, unloaded // CHECK:STDOUT: %I.impl_witness_table.af9 = impl_witness_table (), @C.as.I.impl.1fddff.1 [concrete] -// CHECK:STDOUT: %Main.import_ref.efcd44.3: type = import_ref Main//import_generic, loc12_14, loaded [symbolic = @C.as.I.impl.1fddff.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.7b6: type = import_ref Main//import_generic, loc12_33, loaded [symbolic = @C.as.I.impl.1fddff.1.%I.type (constants.%I.type.229)] +// CHECK:STDOUT: %Main.import_ref.efcd44.3: type = import_ref Main//import_generic, loc12_14, loaded [symbolic = @C.as.I.impl.1fddff.1.%T (constants.%T)] // CHECK:STDOUT: %Main.import_ref.f92: type = import_ref Main//import_generic, loc15_18, loaded [symbolic = constants.%Self.binding.as_type] // CHECK:STDOUT: %Main.import_ref.efcd44.4: type = import_ref Main//import_generic, loc14_14, loaded [symbolic = @N.%T (constants.%T)] // CHECK:STDOUT: %Main.import_ref.d4d: @N.%N.type (%N.type.b8d23b.1) = import_ref Main//import_generic, loc14_24, loaded [symbolic = @N.%Self (constants.%Self.aa1)] -// CHECK:STDOUT: %Main.import_ref.efcd44.5: type = import_ref Main//import_generic, loc14_14, loaded [symbolic = @N.%T (constants.%T)] // CHECK:STDOUT: %Main.import_ref.388 = import_ref Main//import_generic, loc14_24, unloaded +// CHECK:STDOUT: %Main.import_ref.efcd44.5: type = import_ref Main//import_generic, loc14_14, loaded [symbolic = @N.%T (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -922,20 +922,20 @@ impl forall [T:! type] D as N(T*) {} // CHECK:STDOUT: %Main.C: type = import_ref Main//import_generic_with_different_specific, C, loaded [concrete = constants.%C] // CHECK:STDOUT: %Main.I: %I.type.dac = import_ref Main//import_generic_with_different_specific, I, loaded [concrete = constants.%I.generic] // CHECK:STDOUT: %Main.N: %N.type.673 = import_ref Main//import_generic_with_different_specific, N, loaded [concrete = constants.%empty_struct] -// CHECK:STDOUT: %Main.import_ref.efcd44.1: type = import_ref Main//import_generic_with_different_specific, loc5_13, loaded [symbolic = @I.%T (constants.%T)] // CHECK:STDOUT: %Main.import_ref.769 = import_ref Main//import_generic_with_different_specific, loc5_23, unloaded +// CHECK:STDOUT: %Main.import_ref.efcd44.1: type = import_ref Main//import_generic_with_different_specific, loc5_13, loaded [symbolic = @I.%T (constants.%T)] // CHECK:STDOUT: %Main.import_ref.e46 = import_ref Main//import_generic_with_different_specific, loc7_34, unloaded // CHECK:STDOUT: %Main.import_ref.8f2: = import_ref Main//import_generic_with_different_specific, loc4_10, loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %Main.import_ref.2c4 = import_ref Main//import_generic_with_different_specific, inst{{[0-9A-F]+}} [no loc], unloaded // CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (), @C.as.I.impl.f3e [concrete] -// CHECK:STDOUT: %Main.import_ref.efcd44.2: type = import_ref Main//import_generic_with_different_specific, loc7_14, loaded [symbolic = @C.as.I.impl.f3e.%T (constants.%T)] // CHECK:STDOUT: %Main.import_ref.29a: type = import_ref Main//import_generic_with_different_specific, loc7_24, loaded [concrete = constants.%C] // CHECK:STDOUT: %Main.import_ref.46444d.1: type = import_ref Main//import_generic_with_different_specific, loc7_32, loaded [symbolic = @C.as.I.impl.f3e.%I.type (constants.%I.type.070)] +// CHECK:STDOUT: %Main.import_ref.efcd44.2: type = import_ref Main//import_generic_with_different_specific, loc7_14, loaded [symbolic = @C.as.I.impl.f3e.%T (constants.%T)] // CHECK:STDOUT: %Main.import_ref.f92: type = import_ref Main//import_generic_with_different_specific, loc10_18, loaded [symbolic = constants.%Self.binding.as_type] // CHECK:STDOUT: %Main.import_ref.efcd44.3: type = import_ref Main//import_generic_with_different_specific, loc9_14, loaded [symbolic = @N.%T (constants.%T)] // CHECK:STDOUT: %Main.import_ref.d4d: @N.%N.type (%N.type.b8d23b.1) = import_ref Main//import_generic_with_different_specific, loc9_24, loaded [symbolic = @N.%Self (constants.%Self.aa1)] -// CHECK:STDOUT: %Main.import_ref.efcd44.4: type = import_ref Main//import_generic_with_different_specific, loc9_14, loaded [symbolic = @N.%T (constants.%T)] // CHECK:STDOUT: %Main.import_ref.388 = import_ref Main//import_generic_with_different_specific, loc9_24, unloaded +// CHECK:STDOUT: %Main.import_ref.efcd44.4: type = import_ref Main//import_generic_with_different_specific, loc9_14, loaded [symbolic = @N.%T (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -1344,23 +1344,23 @@ impl forall [T:! type] D as N(T*) {} // CHECK:STDOUT: %Main.D: type = import_ref Main//import_generic_decl, D, loaded [concrete = constants.%D] // CHECK:STDOUT: %Main.J: %J.type.2b8 = import_ref Main//import_generic_decl, J, loaded [concrete = constants.%J.generic] // CHECK:STDOUT: %Main.N: %N.type.673 = import_ref Main//import_generic_decl, N, loaded [concrete = constants.%empty_struct] -// CHECK:STDOUT: %Main.import_ref.efcd44.1: type = import_ref Main//import_generic_decl, loc5_13, loaded [symbolic = @J.%T (constants.%T)] // CHECK:STDOUT: %Main.import_ref.b3b = import_ref Main//import_generic_decl, loc5_23, unloaded +// CHECK:STDOUT: %Main.import_ref.efcd44.1: type = import_ref Main//import_generic_decl, loc5_13, loaded [symbolic = @J.%T (constants.%T)] // 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, inst{{[0-9A-F]+}} [no loc], unloaded // CHECK:STDOUT: %J.impl_witness_table.bc9 = impl_witness_table (), @D.as.J.impl.b470bf.1 [concrete] -// CHECK:STDOUT: %Main.import_ref.efcd44.2: type = import_ref Main//import_generic_decl, loc15_14, loaded [symbolic = @D.as.J.impl.b470bf.1.%T (constants.%T)] // CHECK:STDOUT: %Main.import_ref.aa9f8a.1: type = import_ref Main//import_generic_decl, loc15_24, loaded [concrete = constants.%D] // CHECK:STDOUT: %Main.import_ref.03fb8f.1: type = import_ref Main//import_generic_decl, loc15_32, loaded [symbolic = @D.as.J.impl.b470bf.1.%J.type (constants.%J.type.8ec)] +// CHECK:STDOUT: %Main.import_ref.efcd44.2: type = import_ref Main//import_generic_decl, loc15_14, loaded [symbolic = @D.as.J.impl.b470bf.1.%T (constants.%T)] // CHECK:STDOUT: %J.impl_witness_table.bd9 = impl_witness_table (), @D.as.J.impl.265db6.1 [concrete] -// CHECK:STDOUT: %Main.import_ref.efcd44.3: type = import_ref Main//import_generic_decl, loc21_14, loaded [symbolic = @D.as.J.impl.265db6.1.%T (constants.%T)] // CHECK:STDOUT: %Main.import_ref.aa9f8a.2: type = import_ref Main//import_generic_decl, loc21_24, loaded [concrete = constants.%D] // CHECK:STDOUT: %Main.import_ref.a00: type = import_ref Main//import_generic_decl, loc21_33, loaded [symbolic = @D.as.J.impl.265db6.1.%J.type (constants.%J.type.4fa)] +// CHECK:STDOUT: %Main.import_ref.efcd44.3: type = import_ref Main//import_generic_decl, loc21_14, loaded [symbolic = @D.as.J.impl.265db6.1.%T (constants.%T)] // CHECK:STDOUT: %Main.import_ref.f92: type = import_ref Main//import_generic_decl, loc8_18, loaded [symbolic = constants.%Self.binding.as_type] // CHECK:STDOUT: %Main.import_ref.efcd44.4: type = import_ref Main//import_generic_decl, loc7_14, loaded [symbolic = @N.%T (constants.%T)] // CHECK:STDOUT: %Main.import_ref.d4d: @N.%N.type (%N.type.b8d23b.1) = import_ref Main//import_generic_decl, loc7_24, loaded [symbolic = @N.%Self (constants.%Self.aa1)] -// CHECK:STDOUT: %Main.import_ref.efcd44.5: type = import_ref Main//import_generic_decl, loc7_14, loaded [symbolic = @N.%T (constants.%T)] // CHECK:STDOUT: %Main.import_ref.388 = import_ref Main//import_generic_decl, loc7_24, unloaded +// CHECK:STDOUT: %Main.import_ref.efcd44.5: type = import_ref Main//import_generic_decl, loc7_14, loaded [symbolic = @N.%T (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/impl/import_self_specific.carbon b/toolchain/check/testdata/impl/import_self_specific.carbon index 50084d6bc915..8009ab9a6e03 100644 --- a/toolchain/check/testdata/impl/import_self_specific.carbon +++ b/toolchain/check/testdata/impl/import_self_specific.carbon @@ -364,19 +364,19 @@ impl forall [N:! E] D(N) as I where .Assoc = () { // CHECK:STDOUT: %Main.import_ref.e339be.1: %I.type = import_ref Main//impl_def, loc15_13, loaded [symbolic = constants.%Self.9f2] // CHECK:STDOUT: %Main.import_ref.338: = import_ref Main//impl_def, loc5_31, loaded [symbolic = @T.as.Y.impl.%Y.impl_witness (constants.%Y.impl_witness.278)] // CHECK:STDOUT: %Y.impl_witness_table = impl_witness_table (), @T.as.Y.impl [concrete] -// CHECK:STDOUT: %Main.import_ref.efcd44.1: type = import_ref Main//impl_def, loc5_14, loaded [symbolic = @T.as.Y.impl.%T (constants.%T)] // CHECK:STDOUT: %Main.import_ref.cb5: type = import_ref Main//impl_def, loc5_24, loaded [symbolic = @T.as.Y.impl.%T (constants.%T)] // CHECK:STDOUT: %Main.import_ref.0a1: type = import_ref Main//impl_def, loc5_29, loaded [concrete = constants.%Y.type] +// CHECK:STDOUT: %Main.import_ref.efcd44.1: type = import_ref Main//impl_def, loc5_14, loaded [symbolic = @T.as.Y.impl.%T (constants.%T)] // CHECK:STDOUT: %Main.import_ref.462 = import_ref Main//impl_def, loc8_13, unloaded -// CHECK:STDOUT: %Main.import_ref.62f: %Z.type = import_ref Main//impl_def, loc11_9, loaded [symbolic = @C.%V (constants.%V)] // CHECK:STDOUT: %Main.import_ref.3fc: = import_ref Main//impl_def, loc13_1, loaded [concrete = constants.%complete_type.782] // CHECK:STDOUT: %Main.import_ref.f7e = import_ref Main//impl_def, inst{{[0-9A-F]+}} [no loc], unloaded +// CHECK:STDOUT: %Main.import_ref.62f: %Z.type = import_ref Main//impl_def, loc11_9, loaded [symbolic = @C.%V (constants.%V)] // CHECK:STDOUT: %Main.import_ref.e339be.2: %I.type = import_ref Main//impl_def, loc15_13, loaded [symbolic = constants.%Self.9f2] // CHECK:STDOUT: %Main.import_ref.cfb: = import_ref Main//impl_def, loc9_31, loaded [symbolic = @U.as.Z.impl.%Z.impl_witness (constants.%Z.impl_witness.5e4)] // CHECK:STDOUT: %Z.impl_witness_table = impl_witness_table (), @U.as.Z.impl [concrete] -// CHECK:STDOUT: %Main.import_ref.efcd44.2: type = import_ref Main//impl_def, loc9_14, loaded [symbolic = @U.as.Z.impl.%U (constants.%U)] // CHECK:STDOUT: %Main.import_ref.ff3: type = import_ref Main//impl_def, loc9_24, loaded [symbolic = @U.as.Z.impl.%U (constants.%U)] // CHECK:STDOUT: %Main.import_ref.df1: type = import_ref Main//impl_def, loc9_29, loaded [concrete = constants.%Z.type] +// CHECK:STDOUT: %Main.import_ref.efcd44.2: type = import_ref Main//impl_def, loc9_14, loaded [symbolic = @U.as.Z.impl.%U (constants.%U)] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/impl/import_thunk.carbon b/toolchain/check/testdata/impl/import_thunk.carbon index 6f27d40b4e67..62a4aca4b58b 100644 --- a/toolchain/check/testdata/impl/import_thunk.carbon +++ b/toolchain/check/testdata/impl/import_thunk.carbon @@ -384,36 +384,36 @@ fn G() { // CHECK:STDOUT: %I.impl_witness.9b0: = impl_witness imports.%I.impl_witness_table, @C.as.I.impl(%Y) [symbolic] // CHECK:STDOUT: %C.as.I.impl.F.type.bc035d.1: type = fn_type @C.as.I.impl.F.1, @C.as.I.impl(%Y) [symbolic] // CHECK:STDOUT: %C.as.I.impl.F.e11987.1: %C.as.I.impl.F.type.bc035d.1 = struct_value () [symbolic] -// CHECK:STDOUT: %pattern_type.ba6: type = pattern_type %C.32c8ec.2 [symbolic] -// CHECK:STDOUT: %C.as.I.impl.F.type.bc035d.2: type = fn_type @C.as.I.impl.F.2, @C.as.I.impl(%Y) [symbolic] -// CHECK:STDOUT: %C.as.I.impl.F.e11987.2: %C.as.I.impl.F.type.bc035d.2 = struct_value () [symbolic] -// CHECK:STDOUT: %require_complete.10b: = require_complete_type %C.32c8ec.2 [symbolic] -// CHECK:STDOUT: %C.as.I.impl.F.specific_fn.5ba: = specific_function %C.as.I.impl.F.e11987.1, @C.as.I.impl.F.1(%Y) [symbolic] -// CHECK:STDOUT: %C.val.31e: %C.32c8ec.2 = struct_value () [symbolic] // CHECK:STDOUT: %type_where: type = facet_type > [concrete] // CHECK:STDOUT: %facet_value.4a7: %type_where = facet_value %C.32c8ec.2, () [symbolic] -// CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] // CHECK:STDOUT: %DestroyT: %type_where = symbolic_binding DestroyT, 0 [symbolic] -// CHECK:STDOUT: %Destroy.impl_witness.3e8: = impl_witness imports.%Destroy.impl_witness_table, @DestroyT.binding.as_type.as.Destroy.impl(%facet_value.4a7) [symbolic] -// CHECK:STDOUT: %Destroy.facet.f71: %Destroy.type = facet_value %C.32c8ec.2, (%Destroy.impl_witness.3e8) [symbolic] -// CHECK:STDOUT: %Destroy.Op.type: type = fn_type @Destroy.Op [concrete] -// CHECK:STDOUT: %.7e5: type = fn_type_with_self_type %Destroy.Op.type, %Destroy.facet.f71 [symbolic] +// CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] // CHECK:STDOUT: %DestroyT.binding.as_type.as.Destroy.impl.Op.type.158: type = fn_type @DestroyT.binding.as_type.as.Destroy.impl.Op, @DestroyT.binding.as_type.as.Destroy.impl(%DestroyT) [symbolic] // CHECK:STDOUT: %DestroyT.binding.as_type.as.Destroy.impl.Op.732: %DestroyT.binding.as_type.as.Destroy.impl.Op.type.158 = struct_value () [symbolic] // CHECK:STDOUT: %DestroyT.binding.as_type.as.Destroy.impl.Op.type.9d8: type = fn_type @DestroyT.binding.as_type.as.Destroy.impl.Op, @DestroyT.binding.as_type.as.Destroy.impl(%facet_value.4a7) [symbolic] // CHECK:STDOUT: %DestroyT.binding.as_type.as.Destroy.impl.Op.32b: %DestroyT.binding.as_type.as.Destroy.impl.Op.type.9d8 = struct_value () [symbolic] // CHECK:STDOUT: %DestroyT.binding.as_type.as.Destroy.impl.Op.specific_fn.a82: = specific_function %DestroyT.binding.as_type.as.Destroy.impl.Op.32b, @DestroyT.binding.as_type.as.Destroy.impl.Op(%facet_value.4a7) [symbolic] +// CHECK:STDOUT: %Destroy.impl_witness.3e8: = impl_witness imports.%Destroy.impl_witness_table, @DestroyT.binding.as_type.as.Destroy.impl(%facet_value.4a7) [symbolic] +// CHECK:STDOUT: %Destroy.facet.f71: %Destroy.type = facet_value %C.32c8ec.2, (%Destroy.impl_witness.3e8) [symbolic] +// CHECK:STDOUT: %Destroy.Op.type: type = fn_type @Destroy.Op [concrete] +// CHECK:STDOUT: %.7e5: type = fn_type_with_self_type %Destroy.Op.type, %Destroy.facet.f71 [symbolic] +// CHECK:STDOUT: %C.val.31e: %C.32c8ec.2 = struct_value () [symbolic] +// CHECK:STDOUT: %require_complete.10b: = require_complete_type %C.32c8ec.2 [symbolic] +// CHECK:STDOUT: %C.as.I.impl.F.type.bc035d.2: type = fn_type @C.as.I.impl.F.2, @C.as.I.impl(%Y) [symbolic] +// CHECK:STDOUT: %C.as.I.impl.F.e11987.2: %C.as.I.impl.F.type.bc035d.2 = struct_value () [symbolic] +// CHECK:STDOUT: %pattern_type.ba6: type = pattern_type %C.32c8ec.2 [symbolic] +// CHECK:STDOUT: %C.as.I.impl.F.specific_fn.5ba: = specific_function %C.as.I.impl.F.e11987.2, @C.as.I.impl.F.2(%Y) [symbolic] // CHECK:STDOUT: %I.impl_witness.2f0: = impl_witness imports.%I.impl_witness_table, @C.as.I.impl(%empty_tuple) [concrete] -// CHECK:STDOUT: %C.as.I.impl.F.type.b60f7c.1: type = fn_type @C.as.I.impl.F.1, @C.as.I.impl(%empty_tuple) [concrete] +// CHECK:STDOUT: %C.as.I.impl.F.type.b60f7c.1: type = fn_type @C.as.I.impl.F.2, @C.as.I.impl(%empty_tuple) [concrete] // CHECK:STDOUT: %C.as.I.impl.F.bb5d01.1: %C.as.I.impl.F.type.b60f7c.1 = struct_value () [concrete] -// CHECK:STDOUT: %C.as.I.impl.F.type.b60f7c.2: type = fn_type @C.as.I.impl.F.2, @C.as.I.impl(%empty_tuple) [concrete] +// CHECK:STDOUT: %C.as.I.impl.F.type.b60f7c.2: type = fn_type @C.as.I.impl.F.1, @C.as.I.impl(%empty_tuple) [concrete] // CHECK:STDOUT: %C.as.I.impl.F.bb5d01.2: %C.as.I.impl.F.type.b60f7c.2 = struct_value () [concrete] // CHECK:STDOUT: %I.facet: %I.type = facet_value %C.607, (%I.impl_witness.2f0) [concrete] // CHECK:STDOUT: %.5c3: type = fn_type_with_self_type %I.F.type, %I.facet [concrete] // CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] -// CHECK:STDOUT: %C.as.I.impl.F.specific_fn.d33299.1: = specific_function %C.as.I.impl.F.bb5d01.2, @C.as.I.impl.F.2(%empty_tuple) [concrete] +// CHECK:STDOUT: %C.as.I.impl.F.specific_fn.d33299.1: = specific_function %C.as.I.impl.F.bb5d01.2, @C.as.I.impl.F.1(%empty_tuple) [concrete] // CHECK:STDOUT: %pattern_type.186: type = pattern_type %C.607 [concrete] -// CHECK:STDOUT: %C.as.I.impl.F.specific_fn.d33299.2: = specific_function %C.as.I.impl.F.bb5d01.1, @C.as.I.impl.F.1(%empty_tuple) [concrete] +// CHECK:STDOUT: %C.as.I.impl.F.specific_fn.d33299.2: = specific_function %C.as.I.impl.F.bb5d01.1, @C.as.I.impl.F.2(%empty_tuple) [concrete] // CHECK:STDOUT: %C.val.12f: %C.607 = struct_value () [concrete] // CHECK:STDOUT: %facet_value.637: %type_where = facet_value %C.607, () [concrete] // CHECK:STDOUT: %Destroy.impl_witness.e84: = impl_witness imports.%Destroy.impl_witness_table, @DestroyT.binding.as_type.as.Destroy.impl(%facet_value.637) [concrete] @@ -432,25 +432,25 @@ fn G() { // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %Main.import_ref.7a8327.1: %empty_tuple.type = import_ref Main//b, loc5_9, loaded [symbolic = @C.%X (constants.%X)] // CHECK:STDOUT: %Main.import_ref.8f2: = import_ref Main//b, loc5_18, loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %Main.import_ref.176 = import_ref Main//b, inst{{[0-9A-F]+}} [no loc], unloaded +// CHECK:STDOUT: %Main.import_ref.7a8327.1: %empty_tuple.type = import_ref Main//b, loc5_9, loaded [symbolic = @C.%X (constants.%X)] // CHECK:STDOUT: %Main.import_ref.8df = import_ref Main//a, loc4_13, 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: %I.F.type = import_ref Main//a, loc5_14, loaded [concrete = constants.%I.F] // CHECK:STDOUT: %Main.import_ref.e33: %I.type = import_ref Main//a, loc4_13, loaded [symbolic = constants.%Self.9f2] // CHECK:STDOUT: %Main.import_ref.c03: = import_ref Main//b, loc7_32, loaded [symbolic = @C.as.I.impl.%I.impl_witness (constants.%I.impl_witness.9b0)] -// CHECK:STDOUT: %Main.import_ref.fad: @C.as.I.impl.%C.as.I.impl.F.type.2 (%C.as.I.impl.F.type.bc035d.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.e11987.2)] +// CHECK:STDOUT: %Main.import_ref.fad: @C.as.I.impl.%C.as.I.impl.F.type.2 (%C.as.I.impl.F.type.bc035d.1) = import_ref Main//b, loc8_17, loaded [symbolic = @C.as.I.impl.%C.as.I.impl.F.2 (constants.%C.as.I.impl.F.e11987.1)] // CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (%Main.import_ref.fad), @C.as.I.impl [concrete] -// CHECK:STDOUT: %Main.import_ref.7a8327.2: %empty_tuple.type = import_ref Main//b, loc7_14, loaded [symbolic = @C.as.I.impl.%Y (constants.%Y)] // CHECK:STDOUT: %Main.import_ref.801: type = import_ref Main//b, loc7_25, loaded [symbolic = @C.as.I.impl.%C (constants.%C.32c8ec.2)] // CHECK:STDOUT: %Main.import_ref.f50: type = import_ref Main//b, loc7_30, loaded [concrete = constants.%I.type] +// CHECK:STDOUT: %Main.import_ref.7a8327.2: %empty_tuple.type = import_ref Main//b, loc7_14, loaded [symbolic = @C.as.I.impl.%Y (constants.%Y)] +// CHECK:STDOUT: %Main.F.564: @C.as.I.impl.%C.as.I.impl.F.type.1 (%C.as.I.impl.F.type.bc035d.2) = import_ref Main//b, F, loaded [symbolic = @C.as.I.impl.%C.as.I.impl.F.1 (constants.%C.as.I.impl.F.e11987.2)] // CHECK:STDOUT: %Main.import_ref.7a8327.3: %empty_tuple.type = import_ref Main//b, loc7_14, loaded [symbolic = @C.as.I.impl.%Y (constants.%Y)] -// CHECK:STDOUT: %Main.import_ref.7a8327.4: %empty_tuple.type = import_ref Main//b, loc7_14, loaded [symbolic = @C.as.I.impl.%Y (constants.%Y)] -// CHECK:STDOUT: %Main.F.564: @C.as.I.impl.%C.as.I.impl.F.type.1 (%C.as.I.impl.F.type.bc035d.1) = import_ref Main//b, F, loaded [symbolic = @C.as.I.impl.%C.as.I.impl.F.1 (constants.%C.as.I.impl.F.e11987.1)] // CHECK:STDOUT: %Main.import_ref.eac: @DestroyT.binding.as_type.as.Destroy.impl.%DestroyT.binding.as_type.as.Destroy.impl.Op.type (%DestroyT.binding.as_type.as.Destroy.impl.Op.type.158) = import_ref Main//b, inst{{[0-9A-F]+}} [indirect], loaded [symbolic = @DestroyT.binding.as_type.as.Destroy.impl.%DestroyT.binding.as_type.as.Destroy.impl.Op (constants.%DestroyT.binding.as_type.as.Destroy.impl.Op.732)] // CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (%Main.import_ref.eac), @DestroyT.binding.as_type.as.Destroy.impl [concrete] +// CHECK:STDOUT: %Main.import_ref.7a8327.4: %empty_tuple.type = import_ref Main//b, loc7_14, loaded [symbolic = @C.as.I.impl.%Y (constants.%Y)] // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -481,10 +481,10 @@ fn G() { // 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.9b0)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// 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.bc035d.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.bc035d.1) = struct_value () [symbolic = %C.as.I.impl.F.1 (constants.%C.as.I.impl.F.e11987.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.bc035d.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.bc035d.2) = struct_value () [symbolic = %C.as.I.impl.F.2 (constants.%C.as.I.impl.F.e11987.2)] +// CHECK:STDOUT: %C.as.I.impl.F.type.1: type = fn_type @C.as.I.impl.F.2, @C.as.I.impl(%Y) [symbolic = %C.as.I.impl.F.type.1 (constants.%C.as.I.impl.F.type.bc035d.2)] +// 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.bc035d.2) = struct_value () [symbolic = %C.as.I.impl.F.1 (constants.%C.as.I.impl.F.e11987.2)] +// CHECK:STDOUT: %C.as.I.impl.F.type.2: type = fn_type @C.as.I.impl.F.1, @C.as.I.impl(%Y) [symbolic = %C.as.I.impl.F.type.2 (constants.%C.as.I.impl.F.type.bc035d.1)] +// 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.bc035d.1) = struct_value () [symbolic = %C.as.I.impl.F.2 (constants.%C.as.I.impl.F.e11987.1)] // CHECK:STDOUT: // CHECK:STDOUT: impl: imports.%Main.import_ref.801 as imports.%Main.import_ref.f50 { // CHECK:STDOUT: !members: @@ -520,12 +520,12 @@ fn G() { // CHECK:STDOUT: %.loc7_16.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // 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, @C.as.I.impl.F.2(constants.%empty_tuple) [concrete = constants.%C.as.I.impl.F.specific_fn.d33299.1] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @C.as.I.impl.F.1(constants.%empty_tuple) [concrete = constants.%C.as.I.impl.F.specific_fn.d33299.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: %C.as.I.impl.F.type.b60f7c.1 = specific_constant imports.%Main.F.564, @C.as.I.impl(constants.%empty_tuple) [concrete = constants.%C.as.I.impl.F.bb5d01.1] // CHECK:STDOUT: %F.ref.loc7_17: %C.as.I.impl.F.type.b60f7c.1 = name_ref F, %.loc7_17.2 [concrete = constants.%C.as.I.impl.F.bb5d01.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.d33299.2] +// CHECK:STDOUT: %C.as.I.impl.F.specific_fn: = specific_function %F.ref.loc7_17, @C.as.I.impl.F.2(constants.%empty_tuple) [concrete = constants.%C.as.I.impl.F.specific_fn.d33299.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 @@ -544,6 +544,26 @@ fn G() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @C.as.I.impl.F.1(imports.%Main.import_ref.7a8327.3: %empty_tuple.type) [from "b.carbon"] { +// CHECK:STDOUT: !definition: +// CHECK:STDOUT: %Y: %empty_tuple.type = symbolic_binding Y, 0 [symbolic = %Y (constants.%Y)] +// CHECK:STDOUT: %C.as.I.impl.F.type: type = fn_type @C.as.I.impl.F.2, @C.as.I.impl(%Y) [symbolic = %C.as.I.impl.F.type (constants.%C.as.I.impl.F.type.bc035d.2)] +// CHECK:STDOUT: %C.as.I.impl.F: @C.as.I.impl.F.1.%C.as.I.impl.F.type (%C.as.I.impl.F.type.bc035d.2) = struct_value () [symbolic = %C.as.I.impl.F (constants.%C.as.I.impl.F.e11987.2)] +// CHECK:STDOUT: %C.as.I.impl.F.specific_fn: = specific_function %C.as.I.impl.F, @C.as.I.impl.F.2(%Y) [symbolic = %C.as.I.impl.F.specific_fn (constants.%C.as.I.impl.F.specific_fn.5ba)] +// CHECK:STDOUT: %C: type = class_type @C, @C(%Y) [symbolic = %C (constants.%C.32c8ec.2)] +// CHECK:STDOUT: %require_complete: = require_complete_type %C [symbolic = %require_complete (constants.%require_complete.10b)] +// CHECK:STDOUT: %C.val: @C.as.I.impl.F.1.%C (%C.32c8ec.2) = struct_value () [symbolic = %C.val (constants.%C.val.31e)] +// CHECK:STDOUT: %facet_value: %type_where = facet_value %C, () [symbolic = %facet_value (constants.%facet_value.4a7)] +// CHECK:STDOUT: %Destroy.impl_witness: = impl_witness imports.%Destroy.impl_witness_table, @DestroyT.binding.as_type.as.Destroy.impl(%facet_value) [symbolic = %Destroy.impl_witness (constants.%Destroy.impl_witness.3e8)] +// CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %C, (%Destroy.impl_witness) [symbolic = %Destroy.facet (constants.%Destroy.facet.f71)] +// CHECK:STDOUT: %.1: type = fn_type_with_self_type constants.%Destroy.Op.type, %Destroy.facet [symbolic = %.1 (constants.%.7e5)] +// CHECK:STDOUT: %DestroyT.binding.as_type.as.Destroy.impl.Op.type: type = fn_type @DestroyT.binding.as_type.as.Destroy.impl.Op, @DestroyT.binding.as_type.as.Destroy.impl(%facet_value) [symbolic = %DestroyT.binding.as_type.as.Destroy.impl.Op.type (constants.%DestroyT.binding.as_type.as.Destroy.impl.Op.type.9d8)] +// CHECK:STDOUT: %DestroyT.binding.as_type.as.Destroy.impl.Op: @C.as.I.impl.F.1.%DestroyT.binding.as_type.as.Destroy.impl.Op.type (%DestroyT.binding.as_type.as.Destroy.impl.Op.type.9d8) = struct_value () [symbolic = %DestroyT.binding.as_type.as.Destroy.impl.Op (constants.%DestroyT.binding.as_type.as.Destroy.impl.Op.32b)] +// CHECK:STDOUT: %DestroyT.binding.as_type.as.Destroy.impl.Op.specific_fn: = specific_function %DestroyT.binding.as_type.as.Destroy.impl.Op, @DestroyT.binding.as_type.as.Destroy.impl.Op(%facet_value) [symbolic = %DestroyT.binding.as_type.as.Destroy.impl.Op.specific_fn (constants.%DestroyT.binding.as_type.as.Destroy.impl.Op.specific_fn.a82)] +// CHECK:STDOUT: +// CHECK:STDOUT: fn [thunk imports.%Main.F.564]; +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: generic fn @C.as.I.impl.F.2(imports.%Main.import_ref.7a8327.4: %empty_tuple.type) [from "b.carbon"] { // CHECK:STDOUT: %Y: %empty_tuple.type = symbolic_binding Y, 0 [symbolic = %Y (constants.%Y)] // CHECK:STDOUT: %C: type = class_type @C, @C(%Y) [symbolic = %C (constants.%C.32c8ec.2)] // CHECK:STDOUT: %pattern_type: type = pattern_type %C [symbolic = %pattern_type (constants.%pattern_type.ba6)] @@ -554,26 +574,6 @@ fn G() { // CHECK:STDOUT: fn; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @C.as.I.impl.F.2(imports.%Main.import_ref.7a8327.4: %empty_tuple.type) [from "b.carbon"] { -// CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Y: %empty_tuple.type = symbolic_binding Y, 0 [symbolic = %Y (constants.%Y)] -// 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.bc035d.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.bc035d.1) = struct_value () [symbolic = %C.as.I.impl.F (constants.%C.as.I.impl.F.e11987.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.5ba)] -// CHECK:STDOUT: %C: type = class_type @C, @C(%Y) [symbolic = %C (constants.%C.32c8ec.2)] -// CHECK:STDOUT: %require_complete: = require_complete_type %C [symbolic = %require_complete (constants.%require_complete.10b)] -// CHECK:STDOUT: %C.val: @C.as.I.impl.F.2.%C (%C.32c8ec.2) = struct_value () [symbolic = %C.val (constants.%C.val.31e)] -// CHECK:STDOUT: %facet_value: %type_where = facet_value %C, () [symbolic = %facet_value (constants.%facet_value.4a7)] -// CHECK:STDOUT: %Destroy.impl_witness: = impl_witness imports.%Destroy.impl_witness_table, @DestroyT.binding.as_type.as.Destroy.impl(%facet_value) [symbolic = %Destroy.impl_witness (constants.%Destroy.impl_witness.3e8)] -// CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %C, (%Destroy.impl_witness) [symbolic = %Destroy.facet (constants.%Destroy.facet.f71)] -// CHECK:STDOUT: %.1: type = fn_type_with_self_type constants.%Destroy.Op.type, %Destroy.facet [symbolic = %.1 (constants.%.7e5)] -// CHECK:STDOUT: %DestroyT.binding.as_type.as.Destroy.impl.Op.type: type = fn_type @DestroyT.binding.as_type.as.Destroy.impl.Op, @DestroyT.binding.as_type.as.Destroy.impl(%facet_value) [symbolic = %DestroyT.binding.as_type.as.Destroy.impl.Op.type (constants.%DestroyT.binding.as_type.as.Destroy.impl.Op.type.9d8)] -// CHECK:STDOUT: %DestroyT.binding.as_type.as.Destroy.impl.Op: @C.as.I.impl.F.2.%DestroyT.binding.as_type.as.Destroy.impl.Op.type (%DestroyT.binding.as_type.as.Destroy.impl.Op.type.9d8) = struct_value () [symbolic = %DestroyT.binding.as_type.as.Destroy.impl.Op (constants.%DestroyT.binding.as_type.as.Destroy.impl.Op.32b)] -// CHECK:STDOUT: %DestroyT.binding.as_type.as.Destroy.impl.Op.specific_fn: = specific_function %DestroyT.binding.as_type.as.Destroy.impl.Op, @DestroyT.binding.as_type.as.Destroy.impl.Op(%facet_value) [symbolic = %DestroyT.binding.as_type.as.Destroy.impl.Op.specific_fn (constants.%DestroyT.binding.as_type.as.Destroy.impl.Op.specific_fn.a82)] -// CHECK:STDOUT: -// CHECK:STDOUT: fn [thunk imports.%Main.F.564]; -// CHECK:STDOUT: } -// CHECK:STDOUT: // CHECK:STDOUT: specific @C(constants.%X) { // CHECK:STDOUT: %X => constants.%X // CHECK:STDOUT: } @@ -598,13 +598,13 @@ fn G() { // CHECK:STDOUT: %I.impl_witness => constants.%I.impl_witness.9b0 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %C.as.I.impl.F.type.1 => constants.%C.as.I.impl.F.type.bc035d.1 -// CHECK:STDOUT: %C.as.I.impl.F.1 => constants.%C.as.I.impl.F.e11987.1 -// CHECK:STDOUT: %C.as.I.impl.F.type.2 => constants.%C.as.I.impl.F.type.bc035d.2 -// CHECK:STDOUT: %C.as.I.impl.F.2 => constants.%C.as.I.impl.F.e11987.2 +// CHECK:STDOUT: %C.as.I.impl.F.type.1 => constants.%C.as.I.impl.F.type.bc035d.2 +// CHECK:STDOUT: %C.as.I.impl.F.1 => constants.%C.as.I.impl.F.e11987.2 +// CHECK:STDOUT: %C.as.I.impl.F.type.2 => constants.%C.as.I.impl.F.type.bc035d.1 +// CHECK:STDOUT: %C.as.I.impl.F.2 => constants.%C.as.I.impl.F.e11987.1 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @C.as.I.impl.F.1(constants.%Y) { +// CHECK:STDOUT: specific @C.as.I.impl.F.2(constants.%Y) { // CHECK:STDOUT: %Y => constants.%Y // CHECK:STDOUT: %C => constants.%C.32c8ec.2 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.ba6 @@ -613,7 +613,7 @@ fn G() { // CHECK:STDOUT: %require_complete => constants.%require_complete.10b // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @C.as.I.impl.F.2(constants.%Y) {} +// CHECK:STDOUT: specific @C.as.I.impl.F.1(constants.%Y) {} // CHECK:STDOUT: // CHECK:STDOUT: specific @C.as.I.impl(constants.%empty_tuple) { // CHECK:STDOUT: %Y => constants.%empty_tuple @@ -627,7 +627,7 @@ fn G() { // CHECK:STDOUT: %C.as.I.impl.F.2 => constants.%C.as.I.impl.F.bb5d01.2 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @C.as.I.impl.F.2(constants.%empty_tuple) { +// CHECK:STDOUT: specific @C.as.I.impl.F.1(constants.%empty_tuple) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %Y => constants.%empty_tuple // CHECK:STDOUT: %C.as.I.impl.F.type => constants.%C.as.I.impl.F.type.b60f7c.1 @@ -645,7 +645,7 @@ fn G() { // CHECK:STDOUT: %DestroyT.binding.as_type.as.Destroy.impl.Op.specific_fn => constants.%DestroyT.binding.as_type.as.Destroy.impl.Op.specific_fn.942 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @C.as.I.impl.F.1(constants.%empty_tuple) { +// CHECK:STDOUT: specific @C.as.I.impl.F.2(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 a364dc0be4a6..f6b6bab52fec 100644 --- a/toolchain/check/testdata/impl/import_use_generic.carbon +++ b/toolchain/check/testdata/impl/import_use_generic.carbon @@ -219,9 +219,9 @@ fn H() -> C({}).(I.F)() {} // CHECK:STDOUT: imports { // CHECK:STDOUT: %Main.C: %C.type = import_ref Main//import_generic, C, loaded [concrete = constants.%C.generic] // CHECK:STDOUT: %Main.I: type = import_ref Main//import_generic, I, loaded [concrete = constants.%I.type] -// CHECK:STDOUT: %Main.import_ref.efcd44.1: type = import_ref Main//import_generic, loc4_9, loaded [symbolic = @C.%T (constants.%T)] // CHECK:STDOUT: %Main.import_ref.8f2: = import_ref Main//import_generic, loc4_20, loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %Main.import_ref.034 = import_ref Main//import_generic, inst{{[0-9A-F]+}} [no loc], unloaded +// CHECK:STDOUT: %Main.import_ref.efcd44.1: type = import_ref Main//import_generic, loc4_9, loaded [symbolic = @C.%T (constants.%T)] // CHECK:STDOUT: %Main.import_ref.8df = import_ref Main//import_generic, loc6_13, 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 @@ -230,9 +230,9 @@ fn H() -> C({}).(I.F)() {} // CHECK:STDOUT: %Main.import_ref.bc1: = import_ref Main//import_generic, loc10_34, loaded [symbolic = @C.as.I.impl.%I.impl_witness (constants.%I.impl_witness.2ba)] // CHECK:STDOUT: %Main.import_ref.2bf: @C.as.I.impl.%C.as.I.impl.F.type (%C.as.I.impl.F.type.dd2) = import_ref Main//import_generic, loc11_10, loaded [symbolic = @C.as.I.impl.%C.as.I.impl.F (constants.%C.as.I.impl.F.470)] // CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (%Main.import_ref.2bf), @C.as.I.impl [concrete] -// CHECK:STDOUT: %Main.import_ref.efcd44.2: type = import_ref Main//import_generic, loc10_14, loaded [symbolic = @C.as.I.impl.%T (constants.%T)] // CHECK:STDOUT: %Main.import_ref.4d2: type = import_ref Main//import_generic, loc10_27, loaded [symbolic = @C.as.I.impl.%C (constants.%C.3f0)] // CHECK:STDOUT: %Main.import_ref.301: type = import_ref Main//import_generic, loc10_32, loaded [concrete = constants.%I.type] +// CHECK:STDOUT: %Main.import_ref.efcd44.2: type = import_ref Main//import_generic, loc10_14, loaded [symbolic = @C.as.I.impl.%T (constants.%T)] // CHECK:STDOUT: %Main.import_ref.efcd44.3: type = import_ref Main//import_generic, loc10_14, loaded [symbolic = @C.as.I.impl.%T (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/interface_args.carbon b/toolchain/check/testdata/impl/interface_args.carbon index 6b5d776a1fff..ca431b88f0ef 100644 --- a/toolchain/check/testdata/impl/interface_args.carbon +++ b/toolchain/check/testdata/impl/interface_args.carbon @@ -438,14 +438,14 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: %T: type = symbolic_binding T, 0 [symbolic] // CHECK:STDOUT: %Action.type.f0c: type = facet_type <@Action, @Action(%T)> [symbolic] // CHECK:STDOUT: %Self.e34: %Action.type.f0c = symbolic_binding Self, 1 [symbolic] -// CHECK:STDOUT: %Action.type.74f: type = facet_type <@Action, @Action(%B)> [concrete] -// CHECK:STDOUT: %A: type = class_type @A [concrete] +// CHECK:STDOUT: %Action.assoc_type.63f: type = assoc_entity_type @Action, @Action(%T) [symbolic] +// CHECK:STDOUT: %assoc0.185053.1: %Action.assoc_type.63f = assoc_entity element0, imports.%Main.import_ref.35cfc8.1 [symbolic] // CHECK:STDOUT: %Action.Op.type.0af: type = fn_type @Action.Op, @Action(%T) [symbolic] // CHECK:STDOUT: %Action.Op.afb: %Action.Op.type.0af = struct_value () [symbolic] // CHECK:STDOUT: %Self.binding.as_type: type = symbolic_binding_type Self, 1, %Self.e34 [symbolic] // CHECK:STDOUT: %pattern_type.29e: type = pattern_type %Self.binding.as_type [symbolic] -// CHECK:STDOUT: %Action.assoc_type.63f: type = assoc_entity_type @Action, @Action(%T) [symbolic] -// CHECK:STDOUT: %assoc0.185053.1: %Action.assoc_type.63f = assoc_entity element0, imports.%Main.import_ref.35cfc8.1 [symbolic] +// CHECK:STDOUT: %Action.type.74f: type = facet_type <@Action, @Action(%B)> [concrete] +// CHECK:STDOUT: %A: type = class_type @A [concrete] // CHECK:STDOUT: %Self.1b9: %Action.type.74f = symbolic_binding Self, 1 [symbolic] // 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] @@ -474,19 +474,19 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: } // CHECK:STDOUT: %Main.import_ref.8f24d3.1: = import_ref Main//action, loc9_10, loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %Main.import_ref.54a = import_ref Main//action, inst{{[0-9A-F]+}} [no loc], unloaded -// CHECK:STDOUT: %Main.import_ref.efcd44.1: type = import_ref Main//action, loc4_18, loaded [symbolic = @Action.%T (constants.%T)] // CHECK:STDOUT: %Main.import_ref.0fd = import_ref Main//action, loc4_28, unloaded // CHECK:STDOUT: %Main.import_ref.2c8: @Action.%Action.assoc_type (%Action.assoc_type.63f) = import_ref Main//action, loc5_22, loaded [symbolic = @Action.%assoc0 (constants.%assoc0.185053.2)] // CHECK:STDOUT: %Main.Op = import_ref Main//action, Op, unloaded +// CHECK:STDOUT: %Main.import_ref.efcd44.1: type = import_ref Main//action, loc4_18, loaded [symbolic = @Action.%T (constants.%T)] +// CHECK:STDOUT: %Main.import_ref.35cfc8.1 = import_ref Main//action, loc5_22, unloaded +// CHECK:STDOUT: %Main.import_ref.efcd44.2: type = import_ref Main//action, loc4_18, loaded [symbolic = @Action.%T (constants.%T)] +// CHECK:STDOUT: %Main.import_ref.e3c: @Action.%Action.type (%Action.type.f0c) = import_ref Main//action, loc4_28, loaded [symbolic = @Action.%Self (constants.%Self.e34)] // CHECK:STDOUT: %Main.import_ref.c2f: = import_ref Main//action, loc12_21, loaded [concrete = constants.%Action.impl_witness] // CHECK:STDOUT: %Main.import_ref.8f24d3.2: = import_ref Main//action, loc8_10, loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %Main.import_ref.da3 = import_ref Main//action, inst{{[0-9A-F]+}} [no loc], unloaded // CHECK:STDOUT: %Main.import_ref.984: type = import_ref Main//action, loc12_6, loaded [concrete = constants.%A] // CHECK:STDOUT: %Main.import_ref.99f: type = import_ref Main//action, loc12_19, loaded [concrete = constants.%Action.type.74f] // CHECK:STDOUT: %Main.import_ref.8c4 = import_ref Main//action, loc13_23, unloaded -// CHECK:STDOUT: %Main.import_ref.efcd44.2: type = import_ref Main//action, loc4_18, loaded [symbolic = @Action.%T (constants.%T)] -// CHECK:STDOUT: %Main.import_ref.e3c: @Action.%Action.type (%Action.type.f0c) = import_ref Main//action, loc4_28, loaded [symbolic = @Action.%Self (constants.%Self.e34)] -// CHECK:STDOUT: %Main.import_ref.35cfc8.1 = import_ref Main//action, loc5_22, unloaded // CHECK:STDOUT: %Main.import_ref.38d: @Action.%Action.Op.type (%Action.Op.type.0af) = import_ref Main//action, loc5_22, loaded [symbolic = @Action.%Action.Op (constants.%Action.Op.afb)] // CHECK:STDOUT: %Main.import_ref.35cfc8.2 = import_ref Main//action, loc5_22, unloaded // CHECK:STDOUT: %Main.import_ref.469: %A.as.Action.impl.Op.type = import_ref Main//action, loc13_23, loaded [concrete = constants.%A.as.Action.impl.Op] @@ -587,6 +587,14 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: } // CHECK:STDOUT: +// CHECK:STDOUT: specific @Action.Op(constants.%T, constants.%Self.e34) { +// CHECK:STDOUT: %T => constants.%T +// CHECK:STDOUT: %Action.type => constants.%Action.type.f0c +// CHECK:STDOUT: %Self => constants.%Self.e34 +// CHECK:STDOUT: %Self.binding.as_type => constants.%Self.binding.as_type +// CHECK:STDOUT: %pattern_type => constants.%pattern_type.29e +// CHECK:STDOUT: } +// CHECK:STDOUT: // CHECK:STDOUT: specific @Action(constants.%B) { // CHECK:STDOUT: %T => constants.%B // CHECK:STDOUT: @@ -599,14 +607,6 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: %assoc0 => constants.%assoc0.785 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Action.Op(constants.%T, constants.%Self.e34) { -// CHECK:STDOUT: %T => constants.%T -// CHECK:STDOUT: %Action.type => constants.%Action.type.f0c -// CHECK:STDOUT: %Self => constants.%Self.e34 -// CHECK:STDOUT: %Self.binding.as_type => constants.%Self.binding.as_type -// CHECK:STDOUT: %pattern_type => constants.%pattern_type.29e -// CHECK:STDOUT: } -// CHECK:STDOUT: // CHECK:STDOUT: --- fail_action.impl.carbon // CHECK:STDOUT: // CHECK:STDOUT: constants { @@ -618,14 +618,14 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: %T: type = symbolic_binding T, 0 [symbolic] // CHECK:STDOUT: %Action.type.f0c: type = facet_type <@Action, @Action(%T)> [symbolic] // CHECK:STDOUT: %Self.e34: %Action.type.f0c = symbolic_binding Self, 1 [symbolic] -// CHECK:STDOUT: %Action.type.74f: type = facet_type <@Action, @Action(%B)> [concrete] -// CHECK:STDOUT: %A: type = class_type @A [concrete] +// CHECK:STDOUT: %Action.assoc_type.63f: type = assoc_entity_type @Action, @Action(%T) [symbolic] +// CHECK:STDOUT: %assoc0.32b: %Action.assoc_type.63f = assoc_entity element0, imports.%Main.import_ref.38d [symbolic] // CHECK:STDOUT: %Action.Op.type.0af: type = fn_type @Action.Op, @Action(%T) [symbolic] // CHECK:STDOUT: %Action.Op.afb: %Action.Op.type.0af = struct_value () [symbolic] // CHECK:STDOUT: %Self.binding.as_type: type = symbolic_binding_type Self, 1, %Self.e34 [symbolic] // CHECK:STDOUT: %pattern_type.29e: type = pattern_type %Self.binding.as_type [symbolic] -// CHECK:STDOUT: %Action.assoc_type.63f: type = assoc_entity_type @Action, @Action(%T) [symbolic] -// CHECK:STDOUT: %assoc0.32b: %Action.assoc_type.63f = assoc_entity element0, imports.%Main.import_ref.38d [symbolic] +// CHECK:STDOUT: %Action.type.74f: type = facet_type <@Action, @Action(%B)> [concrete] +// CHECK:STDOUT: %A: type = class_type @A [concrete] // CHECK:STDOUT: %Self.1b9: %Action.type.74f = symbolic_binding Self, 1 [symbolic] // 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] @@ -656,19 +656,19 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: } // CHECK:STDOUT: %Main.import_ref.8f24d3.1: = import_ref Main//action, loc9_10, loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %Main.import_ref.54a = import_ref Main//action, inst{{[0-9A-F]+}} [no loc], unloaded -// CHECK:STDOUT: %Main.import_ref.efcd44.1: type = import_ref Main//action, loc4_18, loaded [symbolic = @Action.%T (constants.%T)] // CHECK:STDOUT: %Main.import_ref.0fd = import_ref Main//action, loc4_28, unloaded // CHECK:STDOUT: %Main.import_ref.2c8: @Action.%Action.assoc_type (%Action.assoc_type.63f) = import_ref Main//action, loc5_22, loaded [symbolic = @Action.%assoc0 (constants.%assoc0.185)] // CHECK:STDOUT: %Main.Op = import_ref Main//action, Op, unloaded +// CHECK:STDOUT: %Main.import_ref.efcd44.1: type = import_ref Main//action, loc4_18, loaded [symbolic = @Action.%T (constants.%T)] +// CHECK:STDOUT: %Main.import_ref.38d: @Action.%Action.Op.type (%Action.Op.type.0af) = import_ref Main//action, loc5_22, loaded [symbolic = @Action.%Action.Op (constants.%Action.Op.afb)] +// CHECK:STDOUT: %Main.import_ref.efcd44.2: type = import_ref Main//action, loc4_18, loaded [symbolic = @Action.%T (constants.%T)] +// CHECK:STDOUT: %Main.import_ref.e3c: @Action.%Action.type (%Action.type.f0c) = import_ref Main//action, loc4_28, loaded [symbolic = @Action.%Self (constants.%Self.e34)] // CHECK:STDOUT: %Main.import_ref.7bf = import_ref Main//action, loc12_21, unloaded // CHECK:STDOUT: %Main.import_ref.8f24d3.2: = import_ref Main//action, loc8_10, loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %Main.import_ref.da3 = import_ref Main//action, inst{{[0-9A-F]+}} [no loc], unloaded // CHECK:STDOUT: %Main.import_ref.984: type = import_ref Main//action, loc12_6, loaded [concrete = constants.%A] // CHECK:STDOUT: %Main.import_ref.99f: type = import_ref Main//action, loc12_19, loaded [concrete = constants.%Action.type.74f] // CHECK:STDOUT: %Main.import_ref.8c4 = import_ref Main//action, loc13_23, unloaded -// CHECK:STDOUT: %Main.import_ref.efcd44.2: type = import_ref Main//action, loc4_18, loaded [symbolic = @Action.%T (constants.%T)] -// CHECK:STDOUT: %Main.import_ref.e3c: @Action.%Action.type (%Action.type.f0c) = import_ref Main//action, loc4_28, loaded [symbolic = @Action.%Self (constants.%Self.e34)] -// CHECK:STDOUT: %Main.import_ref.38d: @Action.%Action.Op.type (%Action.Op.type.0af) = import_ref Main//action, loc5_22, loaded [symbolic = @Action.%Action.Op (constants.%Action.Op.afb)] // CHECK:STDOUT: %Main.import_ref.35cfc8.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, inst{{[0-9A-F]+}} [no loc], unloaded @@ -771,6 +771,14 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: } // CHECK:STDOUT: +// CHECK:STDOUT: specific @Action.Op(constants.%T, constants.%Self.e34) { +// CHECK:STDOUT: %T => constants.%T +// CHECK:STDOUT: %Action.type => constants.%Action.type.f0c +// CHECK:STDOUT: %Self => constants.%Self.e34 +// CHECK:STDOUT: %Self.binding.as_type => constants.%Self.binding.as_type +// CHECK:STDOUT: %pattern_type => constants.%pattern_type.29e +// CHECK:STDOUT: } +// CHECK:STDOUT: // CHECK:STDOUT: specific @Action(constants.%B) { // CHECK:STDOUT: %T => constants.%B // CHECK:STDOUT: @@ -783,14 +791,6 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: %assoc0 => constants.%assoc0.cdf // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Action.Op(constants.%T, constants.%Self.e34) { -// CHECK:STDOUT: %T => constants.%T -// CHECK:STDOUT: %Action.type => constants.%Action.type.f0c -// CHECK:STDOUT: %Self => constants.%Self.e34 -// CHECK:STDOUT: %Self.binding.as_type => constants.%Self.binding.as_type -// CHECK:STDOUT: %pattern_type => constants.%pattern_type.29e -// CHECK:STDOUT: } -// CHECK:STDOUT: // CHECK:STDOUT: specific @Action(constants.%C) { // CHECK:STDOUT: %T => constants.%C // CHECK:STDOUT: @@ -1062,18 +1062,18 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: %T: type = symbolic_binding T, 0 [symbolic] // CHECK:STDOUT: %Factory.type.fc2: type = facet_type <@Factory, @Factory(%T)> [symbolic] // CHECK:STDOUT: %Self.96a: %Factory.type.fc2 = symbolic_binding Self, 1 [symbolic] -// CHECK:STDOUT: %Factory.type.3cb: type = facet_type <@Factory, @Factory(%B)> [concrete] -// CHECK:STDOUT: %A: type = class_type @A [concrete] -// CHECK:STDOUT: %Factory.Make.type.b89: type = fn_type @Factory.Make, @Factory(%T) [symbolic] -// CHECK:STDOUT: %Factory.Make.af4: %Factory.Make.type.b89 = struct_value () [symbolic] -// CHECK:STDOUT: %pattern_type.e68: type = pattern_type %T [symbolic] // CHECK:STDOUT: %Factory.assoc_type.f84: type = assoc_entity_type @Factory, @Factory(%T) [symbolic] -// CHECK:STDOUT: %assoc0.a6dba1.1: %Factory.assoc_type.f84 = assoc_entity element0, imports.%Main.import_ref.b0ae2d.1 [symbolic] +// CHECK:STDOUT: %assoc1.ed9a05.1: %Factory.assoc_type.f84 = assoc_entity element1, imports.%Main.import_ref.b6f0d8.1 [symbolic] // CHECK:STDOUT: %Factory.Method.type.159: type = fn_type @Factory.Method, @Factory(%T) [symbolic] // CHECK:STDOUT: %Factory.Method.8f7: %Factory.Method.type.159 = struct_value () [symbolic] +// CHECK:STDOUT: %pattern_type.e68: type = pattern_type %T [symbolic] // CHECK:STDOUT: %Self.binding.as_type: type = symbolic_binding_type Self, 1, %Self.96a [symbolic] // CHECK:STDOUT: %pattern_type.c07: type = pattern_type %Self.binding.as_type [symbolic] -// CHECK:STDOUT: %assoc1.ed9a05.1: %Factory.assoc_type.f84 = assoc_entity element1, imports.%Main.import_ref.b6f0d8.1 [symbolic] +// CHECK:STDOUT: %assoc0.a6dba1.1: %Factory.assoc_type.f84 = assoc_entity element0, imports.%Main.import_ref.b0ae2d.1 [symbolic] +// CHECK:STDOUT: %Factory.Make.type.b89: type = fn_type @Factory.Make, @Factory(%T) [symbolic] +// CHECK:STDOUT: %Factory.Make.af4: %Factory.Make.type.b89 = struct_value () [symbolic] +// CHECK:STDOUT: %Factory.type.3cb: type = facet_type <@Factory, @Factory(%B)> [concrete] +// CHECK:STDOUT: %A: type = class_type @A [concrete] // CHECK:STDOUT: %Self.197: %Factory.type.3cb = symbolic_binding Self, 1 [symbolic] // 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] @@ -1110,12 +1110,18 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: } // CHECK:STDOUT: %Main.import_ref.8f24d3.1: = import_ref Main//factory, loc12_10, loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %Main.import_ref.54a = import_ref Main//factory, inst{{[0-9A-F]+}} [no loc], unloaded -// CHECK:STDOUT: %Main.import_ref.efcd44.1: type = import_ref Main//factory, loc4_19, loaded [symbolic = @Factory.%T (constants.%T)] // CHECK:STDOUT: %Main.import_ref.1b4 = import_ref Main//factory, loc4_29, unloaded // CHECK:STDOUT: %Main.import_ref.2a0: @Factory.%Factory.assoc_type (%Factory.assoc_type.f84) = import_ref Main//factory, loc6_17, loaded [symbolic = @Factory.%assoc0 (constants.%assoc0.a6dba1.2)] // CHECK:STDOUT: %Main.import_ref.da9: @Factory.%Factory.assoc_type (%Factory.assoc_type.f84) = import_ref Main//factory, loc8_31, loaded [symbolic = @Factory.%assoc1 (constants.%assoc1.ed9a05.2)] // CHECK:STDOUT: %Main.Make = import_ref Main//factory, Make, unloaded // CHECK:STDOUT: %Main.Method = import_ref Main//factory, Method, unloaded +// CHECK:STDOUT: %Main.import_ref.efcd44.1: type = import_ref Main//factory, loc4_19, loaded [symbolic = @Factory.%T (constants.%T)] +// CHECK:STDOUT: %Main.import_ref.b6f0d8.1 = import_ref Main//factory, loc8_31, unloaded +// CHECK:STDOUT: %Main.import_ref.efcd44.2: type = import_ref Main//factory, loc4_19, loaded [symbolic = @Factory.%T (constants.%T)] +// CHECK:STDOUT: %Main.import_ref.85fa76.1: @Factory.%Factory.type (%Factory.type.fc2) = import_ref Main//factory, loc4_29, loaded [symbolic = @Factory.%Self (constants.%Self.96a)] +// CHECK:STDOUT: %Main.import_ref.b0ae2d.1 = import_ref Main//factory, loc6_17, unloaded +// CHECK:STDOUT: %Main.import_ref.efcd44.3: type = import_ref Main//factory, loc4_19, loaded [symbolic = @Factory.%T (constants.%T)] +// CHECK:STDOUT: %Main.import_ref.85fa76.2: @Factory.%Factory.type (%Factory.type.fc2) = import_ref Main//factory, loc4_29, loaded [symbolic = @Factory.%Self (constants.%Self.96a)] // CHECK:STDOUT: %Main.import_ref.a6e: = import_ref Main//factory, loc14_22, loaded [concrete = constants.%Factory.impl_witness] // CHECK:STDOUT: %Main.import_ref.8f24d3.2: = import_ref Main//factory, loc11_10, loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %Main.import_ref.da3 = import_ref Main//factory, inst{{[0-9A-F]+}} [no loc], unloaded @@ -1123,12 +1129,6 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: %Main.import_ref.e91: type = import_ref Main//factory, loc14_20, loaded [concrete = constants.%Factory.type.3cb] // CHECK:STDOUT: %Main.import_ref.22f = import_ref Main//factory, loc15_17, unloaded // CHECK:STDOUT: %Main.import_ref.5a9 = import_ref Main//factory, loc16_31, unloaded -// CHECK:STDOUT: %Main.import_ref.efcd44.2: type = import_ref Main//factory, loc4_19, loaded [symbolic = @Factory.%T (constants.%T)] -// CHECK:STDOUT: %Main.import_ref.85fa76.1: @Factory.%Factory.type (%Factory.type.fc2) = import_ref Main//factory, loc4_29, loaded [symbolic = @Factory.%Self (constants.%Self.96a)] -// CHECK:STDOUT: %Main.import_ref.b0ae2d.1 = import_ref Main//factory, loc6_17, unloaded -// CHECK:STDOUT: %Main.import_ref.efcd44.3: type = import_ref Main//factory, loc4_19, loaded [symbolic = @Factory.%T (constants.%T)] -// CHECK:STDOUT: %Main.import_ref.85fa76.2: @Factory.%Factory.type (%Factory.type.fc2) = import_ref Main//factory, loc4_29, loaded [symbolic = @Factory.%Self (constants.%Self.96a)] -// CHECK:STDOUT: %Main.import_ref.b6f0d8.1 = import_ref Main//factory, loc8_31, unloaded // CHECK:STDOUT: %Main.import_ref.b49: @Factory.%Factory.Make.type (%Factory.Make.type.b89) = import_ref Main//factory, loc6_17, loaded [symbolic = @Factory.%Factory.Make (constants.%Factory.Make.af4)] // CHECK:STDOUT: %Main.import_ref.a6b: @Factory.%Factory.Method.type (%Factory.Method.type.159) = import_ref Main//factory, loc8_31, loaded [symbolic = @Factory.%Factory.Method (constants.%Factory.Method.8f7)] // CHECK:STDOUT: %Main.import_ref.b0ae2d.2 = import_ref Main//factory, loc6_17, unloaded @@ -1219,14 +1219,7 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: .Self = imports.%Main.import_ref.da3 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @Factory.Make(imports.%Main.import_ref.efcd44.2: type, imports.%Main.import_ref.85fa76.1: @Factory.%Factory.type (%Factory.type.fc2)) [from "factory.carbon"] { -// CHECK:STDOUT: %T: type = symbolic_binding T, 0 [symbolic = %T (constants.%T)] -// CHECK:STDOUT: %pattern_type: type = pattern_type %T [symbolic = %pattern_type (constants.%pattern_type.e68)] -// CHECK:STDOUT: -// CHECK:STDOUT: fn; -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: generic fn @Factory.Method(imports.%Main.import_ref.efcd44.3: type, imports.%Main.import_ref.85fa76.2: @Factory.%Factory.type (%Factory.type.fc2)) [from "factory.carbon"] { +// CHECK:STDOUT: generic fn @Factory.Method(imports.%Main.import_ref.efcd44.2: type, imports.%Main.import_ref.85fa76.1: @Factory.%Factory.type (%Factory.type.fc2)) [from "factory.carbon"] { // CHECK:STDOUT: %T: type = symbolic_binding T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %Factory.type: type = facet_type <@Factory, @Factory(%T)> [symbolic = %Factory.type (constants.%Factory.type.fc2)] // CHECK:STDOUT: %Self: @Factory.Method.%Factory.type (%Factory.type.fc2) = symbolic_binding Self, 1 [symbolic = %Self (constants.%Self.96a)] @@ -1237,6 +1230,13 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: fn; // CHECK:STDOUT: } // CHECK:STDOUT: +// CHECK:STDOUT: generic fn @Factory.Make(imports.%Main.import_ref.efcd44.3: type, imports.%Main.import_ref.85fa76.2: @Factory.%Factory.type (%Factory.type.fc2)) [from "factory.carbon"] { +// CHECK:STDOUT: %T: type = symbolic_binding T, 0 [symbolic = %T (constants.%T)] +// CHECK:STDOUT: %pattern_type: type = pattern_type %T [symbolic = %pattern_type (constants.%pattern_type.e68)] +// CHECK:STDOUT: +// CHECK:STDOUT: fn; +// CHECK:STDOUT: } +// CHECK:STDOUT: // CHECK:STDOUT: fn @MakeB() -> %return.param: %B { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %A.ref: type = name_ref A, imports.%Main.A [concrete = constants.%A] @@ -1276,6 +1276,20 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: } // CHECK:STDOUT: +// CHECK:STDOUT: specific @Factory.Method(constants.%T, constants.%Self.96a) { +// CHECK:STDOUT: %T => constants.%T +// CHECK:STDOUT: %Factory.type => constants.%Factory.type.fc2 +// CHECK:STDOUT: %Self => constants.%Self.96a +// CHECK:STDOUT: %Self.binding.as_type => constants.%Self.binding.as_type +// CHECK:STDOUT: %pattern_type.1 => constants.%pattern_type.c07 +// CHECK:STDOUT: %pattern_type.2 => constants.%pattern_type.e68 +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: specific @Factory.Make(constants.%T, constants.%Self.96a) { +// CHECK:STDOUT: %T => constants.%T +// CHECK:STDOUT: %pattern_type => constants.%pattern_type.e68 +// CHECK:STDOUT: } +// CHECK:STDOUT: // CHECK:STDOUT: specific @Factory(constants.%B) { // CHECK:STDOUT: %T => constants.%B // CHECK:STDOUT: @@ -1291,20 +1305,6 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: %assoc1 => constants.%assoc1.952 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Factory.Make(constants.%T, constants.%Self.96a) { -// CHECK:STDOUT: %T => constants.%T -// CHECK:STDOUT: %pattern_type => constants.%pattern_type.e68 -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: specific @Factory.Method(constants.%T, constants.%Self.96a) { -// CHECK:STDOUT: %T => constants.%T -// CHECK:STDOUT: %Factory.type => constants.%Factory.type.fc2 -// CHECK:STDOUT: %Self => constants.%Self.96a -// CHECK:STDOUT: %Self.binding.as_type => constants.%Self.binding.as_type -// CHECK:STDOUT: %pattern_type.1 => constants.%pattern_type.c07 -// CHECK:STDOUT: %pattern_type.2 => constants.%pattern_type.e68 -// CHECK:STDOUT: } -// CHECK:STDOUT: // CHECK:STDOUT: --- fail_factory.impl.carbon // CHECK:STDOUT: // CHECK:STDOUT: constants { @@ -1316,18 +1316,18 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: %T: type = symbolic_binding T, 0 [symbolic] // CHECK:STDOUT: %Factory.type.fc2: type = facet_type <@Factory, @Factory(%T)> [symbolic] // CHECK:STDOUT: %Self.96a: %Factory.type.fc2 = symbolic_binding Self, 1 [symbolic] -// CHECK:STDOUT: %Factory.type.3cb: type = facet_type <@Factory, @Factory(%B)> [concrete] -// CHECK:STDOUT: %A: type = class_type @A [concrete] -// CHECK:STDOUT: %Factory.Make.type.b89: type = fn_type @Factory.Make, @Factory(%T) [symbolic] -// CHECK:STDOUT: %Factory.Make.af4: %Factory.Make.type.b89 = struct_value () [symbolic] -// CHECK:STDOUT: %pattern_type.e68: type = pattern_type %T [symbolic] // CHECK:STDOUT: %Factory.assoc_type.f84: type = assoc_entity_type @Factory, @Factory(%T) [symbolic] -// CHECK:STDOUT: %assoc0.165: %Factory.assoc_type.f84 = assoc_entity element0, imports.%Main.import_ref.b49 [symbolic] +// CHECK:STDOUT: %assoc1.bca: %Factory.assoc_type.f84 = assoc_entity element1, imports.%Main.import_ref.a6b [symbolic] // CHECK:STDOUT: %Factory.Method.type.159: type = fn_type @Factory.Method, @Factory(%T) [symbolic] // CHECK:STDOUT: %Factory.Method.8f7: %Factory.Method.type.159 = struct_value () [symbolic] +// CHECK:STDOUT: %pattern_type.e68: type = pattern_type %T [symbolic] // CHECK:STDOUT: %Self.binding.as_type: type = symbolic_binding_type Self, 1, %Self.96a [symbolic] // CHECK:STDOUT: %pattern_type.c07: type = pattern_type %Self.binding.as_type [symbolic] -// CHECK:STDOUT: %assoc1.bca: %Factory.assoc_type.f84 = assoc_entity element1, imports.%Main.import_ref.a6b [symbolic] +// CHECK:STDOUT: %assoc0.165: %Factory.assoc_type.f84 = assoc_entity element0, imports.%Main.import_ref.b49 [symbolic] +// CHECK:STDOUT: %Factory.Make.type.b89: type = fn_type @Factory.Make, @Factory(%T) [symbolic] +// CHECK:STDOUT: %Factory.Make.af4: %Factory.Make.type.b89 = struct_value () [symbolic] +// CHECK:STDOUT: %Factory.type.3cb: type = facet_type <@Factory, @Factory(%B)> [concrete] +// CHECK:STDOUT: %A: type = class_type @A [concrete] // CHECK:STDOUT: %Self.197: %Factory.type.3cb = symbolic_binding Self, 1 [symbolic] // 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] @@ -1367,12 +1367,18 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: } // CHECK:STDOUT: %Main.import_ref.8f24d3.1: = import_ref Main//factory, loc12_10, loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %Main.import_ref.54a = import_ref Main//factory, inst{{[0-9A-F]+}} [no loc], unloaded -// CHECK:STDOUT: %Main.import_ref.efcd44.1: type = import_ref Main//factory, loc4_19, loaded [symbolic = @Factory.%T (constants.%T)] // CHECK:STDOUT: %Main.import_ref.1b4 = import_ref Main//factory, loc4_29, unloaded // CHECK:STDOUT: %Main.import_ref.2a0: @Factory.%Factory.assoc_type (%Factory.assoc_type.f84) = import_ref Main//factory, loc6_17, loaded [symbolic = @Factory.%assoc0 (constants.%assoc0.a6d)] // CHECK:STDOUT: %Main.import_ref.da9: @Factory.%Factory.assoc_type (%Factory.assoc_type.f84) = import_ref Main//factory, loc8_31, loaded [symbolic = @Factory.%assoc1 (constants.%assoc1.ed9)] // CHECK:STDOUT: %Main.Make = import_ref Main//factory, Make, unloaded // CHECK:STDOUT: %Main.Method = import_ref Main//factory, Method, unloaded +// CHECK:STDOUT: %Main.import_ref.efcd44.1: type = import_ref Main//factory, loc4_19, loaded [symbolic = @Factory.%T (constants.%T)] +// CHECK:STDOUT: %Main.import_ref.a6b: @Factory.%Factory.Method.type (%Factory.Method.type.159) = import_ref Main//factory, loc8_31, loaded [symbolic = @Factory.%Factory.Method (constants.%Factory.Method.8f7)] +// CHECK:STDOUT: %Main.import_ref.efcd44.2: type = import_ref Main//factory, loc4_19, loaded [symbolic = @Factory.%T (constants.%T)] +// CHECK:STDOUT: %Main.import_ref.85fa76.1: @Factory.%Factory.type (%Factory.type.fc2) = import_ref Main//factory, loc4_29, loaded [symbolic = @Factory.%Self (constants.%Self.96a)] +// CHECK:STDOUT: %Main.import_ref.b49: @Factory.%Factory.Make.type (%Factory.Make.type.b89) = import_ref Main//factory, loc6_17, loaded [symbolic = @Factory.%Factory.Make (constants.%Factory.Make.af4)] +// CHECK:STDOUT: %Main.import_ref.efcd44.3: type = import_ref Main//factory, loc4_19, loaded [symbolic = @Factory.%T (constants.%T)] +// CHECK:STDOUT: %Main.import_ref.85fa76.2: @Factory.%Factory.type (%Factory.type.fc2) = import_ref Main//factory, loc4_29, loaded [symbolic = @Factory.%Self (constants.%Self.96a)] // CHECK:STDOUT: %Main.import_ref.42c = import_ref Main//factory, loc14_22, unloaded // CHECK:STDOUT: %Main.import_ref.8f24d3.2: = import_ref Main//factory, loc11_10, loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %Main.import_ref.da3 = import_ref Main//factory, inst{{[0-9A-F]+}} [no loc], unloaded @@ -1380,12 +1386,6 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: %Main.import_ref.e91: type = import_ref Main//factory, loc14_20, loaded [concrete = constants.%Factory.type.3cb] // CHECK:STDOUT: %Main.import_ref.22f = import_ref Main//factory, loc15_17, unloaded // CHECK:STDOUT: %Main.import_ref.5a9 = import_ref Main//factory, loc16_31, unloaded -// CHECK:STDOUT: %Main.import_ref.efcd44.2: type = import_ref Main//factory, loc4_19, loaded [symbolic = @Factory.%T (constants.%T)] -// CHECK:STDOUT: %Main.import_ref.85fa76.1: @Factory.%Factory.type (%Factory.type.fc2) = import_ref Main//factory, loc4_29, loaded [symbolic = @Factory.%Self (constants.%Self.96a)] -// CHECK:STDOUT: %Main.import_ref.b49: @Factory.%Factory.Make.type (%Factory.Make.type.b89) = import_ref Main//factory, loc6_17, loaded [symbolic = @Factory.%Factory.Make (constants.%Factory.Make.af4)] -// CHECK:STDOUT: %Main.import_ref.efcd44.3: type = import_ref Main//factory, loc4_19, loaded [symbolic = @Factory.%T (constants.%T)] -// CHECK:STDOUT: %Main.import_ref.85fa76.2: @Factory.%Factory.type (%Factory.type.fc2) = import_ref Main//factory, loc4_29, loaded [symbolic = @Factory.%Self (constants.%Self.96a)] -// CHECK:STDOUT: %Main.import_ref.a6b: @Factory.%Factory.Method.type (%Factory.Method.type.159) = import_ref Main//factory, loc8_31, loaded [symbolic = @Factory.%Factory.Method (constants.%Factory.Method.8f7)] // CHECK:STDOUT: %Main.import_ref.b0ae2d.1 = import_ref Main//factory, loc6_17, unloaded // CHECK:STDOUT: %Main.import_ref.b6f0d8.1 = import_ref Main//factory, loc8_31, unloaded // CHECK:STDOUT: %Main.import_ref.b0ae2d.2 = import_ref Main//factory, loc6_17, unloaded @@ -1483,14 +1483,7 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @Factory.Make(imports.%Main.import_ref.efcd44.2: type, imports.%Main.import_ref.85fa76.1: @Factory.%Factory.type (%Factory.type.fc2)) [from "factory.carbon"] { -// CHECK:STDOUT: %T: type = symbolic_binding T, 0 [symbolic = %T (constants.%T)] -// CHECK:STDOUT: %pattern_type: type = pattern_type %T [symbolic = %pattern_type (constants.%pattern_type.e68)] -// CHECK:STDOUT: -// CHECK:STDOUT: fn; -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: generic fn @Factory.Method(imports.%Main.import_ref.efcd44.3: type, imports.%Main.import_ref.85fa76.2: @Factory.%Factory.type (%Factory.type.fc2)) [from "factory.carbon"] { +// CHECK:STDOUT: generic fn @Factory.Method(imports.%Main.import_ref.efcd44.2: type, imports.%Main.import_ref.85fa76.1: @Factory.%Factory.type (%Factory.type.fc2)) [from "factory.carbon"] { // CHECK:STDOUT: %T: type = symbolic_binding T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %Factory.type: type = facet_type <@Factory, @Factory(%T)> [symbolic = %Factory.type (constants.%Factory.type.fc2)] // CHECK:STDOUT: %Self: @Factory.Method.%Factory.type (%Factory.type.fc2) = symbolic_binding Self, 1 [symbolic = %Self (constants.%Self.96a)] @@ -1501,6 +1494,13 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: fn; // CHECK:STDOUT: } // CHECK:STDOUT: +// CHECK:STDOUT: generic fn @Factory.Make(imports.%Main.import_ref.efcd44.3: type, imports.%Main.import_ref.85fa76.2: @Factory.%Factory.type (%Factory.type.fc2)) [from "factory.carbon"] { +// CHECK:STDOUT: %T: type = symbolic_binding T, 0 [symbolic = %T (constants.%T)] +// CHECK:STDOUT: %pattern_type: type = pattern_type %T [symbolic = %pattern_type (constants.%pattern_type.e68)] +// CHECK:STDOUT: +// CHECK:STDOUT: fn; +// CHECK:STDOUT: } +// CHECK:STDOUT: // CHECK:STDOUT: fn @MakeC() -> %return.param: %C { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %A.ref: type = name_ref A, imports.%Main.A [concrete = constants.%A] @@ -1527,6 +1527,20 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: } // CHECK:STDOUT: +// CHECK:STDOUT: specific @Factory.Method(constants.%T, constants.%Self.96a) { +// CHECK:STDOUT: %T => constants.%T +// CHECK:STDOUT: %Factory.type => constants.%Factory.type.fc2 +// CHECK:STDOUT: %Self => constants.%Self.96a +// CHECK:STDOUT: %Self.binding.as_type => constants.%Self.binding.as_type +// CHECK:STDOUT: %pattern_type.1 => constants.%pattern_type.c07 +// CHECK:STDOUT: %pattern_type.2 => constants.%pattern_type.e68 +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: specific @Factory.Make(constants.%T, constants.%Self.96a) { +// CHECK:STDOUT: %T => constants.%T +// CHECK:STDOUT: %pattern_type => constants.%pattern_type.e68 +// CHECK:STDOUT: } +// CHECK:STDOUT: // CHECK:STDOUT: specific @Factory(constants.%B) { // CHECK:STDOUT: %T => constants.%B // CHECK:STDOUT: @@ -1542,20 +1556,6 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: %assoc1 => constants.%assoc1.387 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Factory.Make(constants.%T, constants.%Self.96a) { -// CHECK:STDOUT: %T => constants.%T -// CHECK:STDOUT: %pattern_type => constants.%pattern_type.e68 -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: specific @Factory.Method(constants.%T, constants.%Self.96a) { -// CHECK:STDOUT: %T => constants.%T -// CHECK:STDOUT: %Factory.type => constants.%Factory.type.fc2 -// CHECK:STDOUT: %Self => constants.%Self.96a -// CHECK:STDOUT: %Self.binding.as_type => constants.%Self.binding.as_type -// CHECK:STDOUT: %pattern_type.1 => constants.%pattern_type.c07 -// CHECK:STDOUT: %pattern_type.2 => constants.%pattern_type.e68 -// CHECK:STDOUT: } -// CHECK:STDOUT: // CHECK:STDOUT: specific @Factory(constants.%C) { // CHECK:STDOUT: %T => constants.%C // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/lookup/import.carbon b/toolchain/check/testdata/impl/lookup/import.carbon index 9485705c2729..211f8b34d65b 100644 --- a/toolchain/check/testdata/impl/lookup/import.carbon +++ b/toolchain/check/testdata/impl/lookup/import.carbon @@ -1519,10 +1519,10 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: import PackageHasParam//default // CHECK:STDOUT: } // CHECK:STDOUT: %PackageHasParam.AnyParam: %AnyParam.type = import_ref PackageHasParam//default, AnyParam, loaded [concrete = constants.%AnyParam.generic] -// CHECK:STDOUT: %PackageHasParam.import_ref.efc: type = import_ref PackageHasParam//default, loc4_16, loaded [symbolic = @AnyParam.%T (constants.%T)] -// CHECK:STDOUT: %PackageHasParam.import_ref.a0a: @AnyParam.%T (%T) = import_ref PackageHasParam//default, loc4_26, loaded [symbolic = @AnyParam.%X (constants.%X)] // CHECK:STDOUT: %PackageHasParam.import_ref.8f2: = import_ref PackageHasParam//default, loc4_34, loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %PackageHasParam.import_ref.f6b = import_ref PackageHasParam//default, inst{{[0-9A-F]+}} [no loc], unloaded +// CHECK:STDOUT: %PackageHasParam.import_ref.efc: type = import_ref PackageHasParam//default, loc4_16, loaded [symbolic = @AnyParam.%T (constants.%T)] +// CHECK:STDOUT: %PackageHasParam.import_ref.a0a: @AnyParam.%T (%T) = import_ref PackageHasParam//default, loc4_26, loaded [symbolic = @AnyParam.%X (constants.%X)] // CHECK:STDOUT: %PackageHasParam.Y: type = import_ref PackageHasParam//default, Y, loaded [concrete = constants.%Y.type] // CHECK:STDOUT: %PackageHasParam.import_ref.581 = import_ref PackageHasParam//default, loc6_13, unloaded // CHECK:STDOUT: %PackageHasParam.import_ref.f69: %Y.assoc_type = import_ref PackageHasParam//default, loc7_22, loaded [concrete = constants.%assoc0.494] @@ -1757,13 +1757,13 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: import PackageGenericInterface//default // CHECK:STDOUT: } // CHECK:STDOUT: %PackageHasParam.AnyParam: %AnyParam.type = import_ref PackageHasParam//default, AnyParam, loaded [concrete = constants.%AnyParam.generic] -// CHECK:STDOUT: %PackageHasParam.import_ref.efc: type = import_ref PackageHasParam//default, loc4_16, loaded [symbolic = @AnyParam.%T (constants.%T)] -// CHECK:STDOUT: %PackageHasParam.import_ref.a0a: @AnyParam.%T (%T) = import_ref PackageHasParam//default, loc4_26, loaded [symbolic = @AnyParam.%X (constants.%X)] // CHECK:STDOUT: %PackageHasParam.import_ref.8f2: = import_ref PackageHasParam//default, loc4_34, loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %PackageHasParam.import_ref.f6b = import_ref PackageHasParam//default, inst{{[0-9A-F]+}} [no loc], unloaded +// CHECK:STDOUT: %PackageHasParam.import_ref.efc: type = import_ref PackageHasParam//default, loc4_16, loaded [symbolic = @AnyParam.%T (constants.%T)] +// CHECK:STDOUT: %PackageHasParam.import_ref.a0a: @AnyParam.%T (%T) = import_ref PackageHasParam//default, loc4_26, loaded [symbolic = @AnyParam.%X (constants.%X)] // CHECK:STDOUT: %PackageGenericInterface.GenericInterface: %GenericInterface.type.0da = import_ref PackageGenericInterface//default, GenericInterface, loaded [concrete = constants.%GenericInterface.generic] -// CHECK:STDOUT: %PackageGenericInterface.import_ref.efc: type = import_ref PackageGenericInterface//default, loc6_28, loaded [symbolic = @GenericInterface.%U (constants.%U)] // CHECK:STDOUT: %PackageGenericInterface.import_ref.4d7 = import_ref PackageGenericInterface//default, loc6_38, unloaded +// CHECK:STDOUT: %PackageGenericInterface.import_ref.efc: type = import_ref PackageGenericInterface//default, loc6_28, loaded [symbolic = @GenericInterface.%U (constants.%U)] // CHECK:STDOUT: %PackageHasParam.Y: type = import_ref PackageHasParam//default, Y, loaded [concrete = constants.%Y.type] // CHECK:STDOUT: %PackageHasParam.import_ref.581 = import_ref PackageHasParam//default, loc6_13, unloaded // CHECK:STDOUT: %PackageHasParam.import_ref.f69: %Y.assoc_type = import_ref PackageHasParam//default, loc7_22, loaded [concrete = constants.%assoc0.494] @@ -1966,10 +1966,10 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: import PackageHasParam//default // CHECK:STDOUT: } // CHECK:STDOUT: %PackageHasParam.AnyParam: %AnyParam.type = import_ref PackageHasParam//default, AnyParam, loaded [concrete = constants.%AnyParam.generic] -// CHECK:STDOUT: %PackageHasParam.import_ref.efc: type = import_ref PackageHasParam//default, loc4_16, loaded [symbolic = @AnyParam.%T (constants.%T)] -// CHECK:STDOUT: %PackageHasParam.import_ref.a0a: @AnyParam.%T (%T) = import_ref PackageHasParam//default, loc4_26, loaded [symbolic = @AnyParam.%X (constants.%X)] // CHECK:STDOUT: %PackageHasParam.import_ref.8f2: = import_ref PackageHasParam//default, loc4_34, loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %PackageHasParam.import_ref.f6b = import_ref PackageHasParam//default, inst{{[0-9A-F]+}} [no loc], unloaded +// CHECK:STDOUT: %PackageHasParam.import_ref.efc: type = import_ref PackageHasParam//default, loc4_16, loaded [symbolic = @AnyParam.%T (constants.%T)] +// CHECK:STDOUT: %PackageHasParam.import_ref.a0a: @AnyParam.%T (%T) = import_ref PackageHasParam//default, loc4_26, loaded [symbolic = @AnyParam.%X (constants.%X)] // CHECK:STDOUT: %PackageHasParam.Y: type = import_ref PackageHasParam//default, Y, loaded [concrete = constants.%Y.type] // CHECK:STDOUT: %PackageHasParam.import_ref.581 = import_ref PackageHasParam//default, loc6_13, unloaded // CHECK:STDOUT: %PackageHasParam.import_ref.f69: %Y.assoc_type = import_ref PackageHasParam//default, loc7_22, loaded [concrete = constants.%assoc0.494] @@ -2198,14 +2198,14 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: import PackageGenericClass//default // CHECK:STDOUT: } // CHECK:STDOUT: %PackageHasParam.AnyParam: %AnyParam.type = import_ref PackageHasParam//default, AnyParam, loaded [concrete = constants.%AnyParam.generic] -// CHECK:STDOUT: %PackageHasParam.import_ref.efc: type = import_ref PackageHasParam//default, loc4_16, loaded [symbolic = @AnyParam.%T (constants.%T)] -// CHECK:STDOUT: %PackageHasParam.import_ref.a0a: @AnyParam.%T (%T) = import_ref PackageHasParam//default, loc4_26, loaded [symbolic = @AnyParam.%X (constants.%X)] // CHECK:STDOUT: %PackageHasParam.import_ref.8f2: = import_ref PackageHasParam//default, loc4_34, loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %PackageHasParam.import_ref.f6b = import_ref PackageHasParam//default, inst{{[0-9A-F]+}} [no loc], unloaded +// CHECK:STDOUT: %PackageHasParam.import_ref.efc: type = import_ref PackageHasParam//default, loc4_16, loaded [symbolic = @AnyParam.%T (constants.%T)] +// CHECK:STDOUT: %PackageHasParam.import_ref.a0a: @AnyParam.%T (%T) = import_ref PackageHasParam//default, loc4_26, loaded [symbolic = @AnyParam.%X (constants.%X)] // CHECK:STDOUT: %PackageGenericClass.GenericClass: %GenericClass.type = import_ref PackageGenericClass//default, GenericClass, loaded [concrete = constants.%GenericClass.generic] -// CHECK:STDOUT: %PackageGenericClass.import_ref.efc: type = import_ref PackageGenericClass//default, loc6_20, loaded [symbolic = @GenericClass.%U (constants.%U)] // CHECK:STDOUT: %PackageGenericClass.import_ref.8f2: = import_ref PackageGenericClass//default, loc6_31, loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %PackageGenericClass.import_ref.ec6 = import_ref PackageGenericClass//default, inst{{[0-9A-F]+}} [no loc], unloaded +// CHECK:STDOUT: %PackageGenericClass.import_ref.efc: type = import_ref PackageGenericClass//default, loc6_20, loaded [symbolic = @GenericClass.%U (constants.%U)] // CHECK:STDOUT: %PackageHasParam.Y: type = import_ref PackageHasParam//default, Y, loaded [concrete = constants.%Y.type] // CHECK:STDOUT: %PackageHasParam.import_ref.581 = import_ref PackageHasParam//default, loc6_13, unloaded // CHECK:STDOUT: %PackageHasParam.import_ref.f69: %Y.assoc_type = import_ref PackageHasParam//default, loc7_22, loaded [concrete = constants.%assoc0.494] @@ -2660,9 +2660,9 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: import HasExtraInterfaces//default // CHECK:STDOUT: } // CHECK:STDOUT: %HasExtraInterfaces.C: %C.type = import_ref HasExtraInterfaces//default, C, loaded [concrete = constants.%C.generic] -// CHECK:STDOUT: %HasExtraInterfaces.import_ref.efc: type = import_ref HasExtraInterfaces//default, loc13_9, loaded [symbolic = @C.%T (constants.%T)] // CHECK:STDOUT: %HasExtraInterfaces.import_ref.8f2: = import_ref HasExtraInterfaces//default, loc13_20, loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %HasExtraInterfaces.import_ref.034 = import_ref HasExtraInterfaces//default, inst{{[0-9A-F]+}} [no loc], unloaded +// CHECK:STDOUT: %HasExtraInterfaces.import_ref.efc: type = import_ref HasExtraInterfaces//default, loc13_9, loaded [symbolic = @C.%T (constants.%T)] // CHECK:STDOUT: %HasExtraInterfaces.I: type = import_ref HasExtraInterfaces//default, I, loaded [concrete = constants.%I.type] // CHECK:STDOUT: %HasExtraInterfaces.import_ref.8df = import_ref HasExtraInterfaces//default, loc14_13, unloaded // CHECK:STDOUT: %HasExtraInterfaces.import_ref.be9: %I.assoc_type = import_ref HasExtraInterfaces//default, loc14_33, loaded [concrete = constants.%assoc0] 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 a713c910eae9..7c3b97be0e63 100644 --- a/toolchain/check/testdata/impl/lookup/specialization_with_symbolic_rewrite.carbon +++ b/toolchain/check/testdata/impl/lookup/specialization_with_symbolic_rewrite.carbon @@ -475,9 +475,9 @@ 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 = symbolic_binding Dest, 0 [symbolic] +// CHECK:STDOUT: %ImplicitAs.assoc_type.8b5: type = assoc_entity_type @ImplicitAs, @ImplicitAs(%Dest) [symbolic] // CHECK:STDOUT: %ImplicitAs.Convert.type.4c8: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%Dest) [symbolic] // CHECK:STDOUT: %ImplicitAs.Convert.e9f: %ImplicitAs.Convert.type.4c8 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.assoc_type.8b5: type = assoc_entity_type @ImplicitAs, @ImplicitAs(%Dest) [symbolic] // CHECK:STDOUT: %ImplicitAs.type.4d8: type = facet_type <@ImplicitAs, @ImplicitAs(%impl.elem0.99d)> [symbolic] // CHECK:STDOUT: %ImplicitAs.assoc_type.0e5: type = assoc_entity_type @ImplicitAs, @ImplicitAs(%impl.elem0.99d) [symbolic] // CHECK:STDOUT: %assoc0.f67: %ImplicitAs.assoc_type.0e5 = assoc_entity element0, imports.%Core.import_ref.b91 [symbolic] diff --git a/toolchain/check/testdata/impl/lookup/specific_args.carbon b/toolchain/check/testdata/impl/lookup/specific_args.carbon index e1ceae8ef5f3..0dd1e660ddd5 100644 --- a/toolchain/check/testdata/impl/lookup/specific_args.carbon +++ b/toolchain/check/testdata/impl/lookup/specific_args.carbon @@ -198,12 +198,12 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); } // CHECK:STDOUT: %T: type = symbolic_binding T, 0 [symbolic] // CHECK:STDOUT: %I.type.070: type = facet_type <@I, @I(%T)> [symbolic] // CHECK:STDOUT: %Self.269: %I.type.070 = symbolic_binding Self, 1 [symbolic] +// CHECK:STDOUT: %I.assoc_type.b65: type = assoc_entity_type @I, @I(%T) [symbolic] +// CHECK:STDOUT: %assoc0.254: %I.assoc_type.b65 = assoc_entity element0, imports.%Main.import_ref.e2f [symbolic] // CHECK:STDOUT: %I.F.type.76d: type = fn_type @I.F, @I(%T) [symbolic] // CHECK:STDOUT: %I.F.dde: %I.F.type.76d = struct_value () [symbolic] // CHECK:STDOUT: %Self.binding.as_type: type = symbolic_binding_type Self, 1, %Self.269 [symbolic] // CHECK:STDOUT: %pattern_type.dbc: type = pattern_type %Self.binding.as_type [symbolic] -// CHECK:STDOUT: %I.assoc_type.b65: type = assoc_entity_type @I, @I(%T) [symbolic] -// CHECK:STDOUT: %assoc0.254: %I.assoc_type.b65 = assoc_entity element0, imports.%Main.import_ref.e2f [symbolic] // CHECK:STDOUT: %I.type.c61: type = facet_type <@I, @I(%InInterfaceArgs)> [concrete] // CHECK:STDOUT: %Self.bca: %I.type.c61 = symbolic_binding Self, 1 [symbolic] // CHECK:STDOUT: %I.F.type.14f: type = fn_type @I.F, @I(%InInterfaceArgs) [concrete] @@ -223,13 +223,13 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); } // CHECK:STDOUT: %Main.X: type = import_ref Main//types, X, loaded [concrete = constants.%X] // CHECK:STDOUT: %Main.import_ref.8f2: = import_ref Main//types, loc7_10, loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %Main.import_ref.acf = import_ref Main//types, inst{{[0-9A-F]+}} [no loc], unloaded -// CHECK:STDOUT: %Main.import_ref.efcd44.1: type = import_ref Main//types, loc4_13, loaded [symbolic = @I.%T (constants.%T)] // CHECK:STDOUT: %Main.import_ref.769 = import_ref Main//types, loc4_23, unloaded // CHECK:STDOUT: %Main.import_ref.2de = import_ref Main//types, loc4_43, unloaded // CHECK:STDOUT: %Main.F: @I.%I.F.type (%I.F.type.76d) = import_ref Main//types, F, loaded [symbolic = @I.%I.F (constants.%I.F.dde)] +// CHECK:STDOUT: %Main.import_ref.efcd44.1: type = import_ref Main//types, loc4_13, loaded [symbolic = @I.%T (constants.%T)] +// CHECK:STDOUT: %Main.import_ref.e2f = import_ref Main//types, loc4_43, unloaded // CHECK:STDOUT: %Main.import_ref.efcd44.2: type = import_ref Main//types, loc4_13, loaded [symbolic = @I.%T (constants.%T)] // CHECK:STDOUT: %Main.import_ref.781: @I.%I.type (%I.type.070) = import_ref Main//types, loc4_23, loaded [symbolic = @I.%Self (constants.%Self.269)] -// CHECK:STDOUT: %Main.import_ref.e2f = import_ref Main//types, loc4_43, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -364,12 +364,12 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); } // CHECK:STDOUT: %T: type = symbolic_binding T, 0 [symbolic] // CHECK:STDOUT: %I.type.070: type = facet_type <@I, @I(%T)> [symbolic] // CHECK:STDOUT: %Self.269: %I.type.070 = symbolic_binding Self, 1 [symbolic] +// CHECK:STDOUT: %I.assoc_type.b65: type = assoc_entity_type @I, @I(%T) [symbolic] +// CHECK:STDOUT: %assoc0.436: %I.assoc_type.b65 = assoc_entity element0, imports.%Main.import_ref.21c [symbolic] // CHECK:STDOUT: %I.F.type.76d: type = fn_type @I.F, @I(%T) [symbolic] // CHECK:STDOUT: %I.F.dde: %I.F.type.76d = struct_value () [symbolic] // CHECK:STDOUT: %Self.binding.as_type: type = symbolic_binding_type Self, 1, %Self.269 [symbolic] // CHECK:STDOUT: %pattern_type.dbc: type = pattern_type %Self.binding.as_type [symbolic] -// CHECK:STDOUT: %I.assoc_type.b65: type = assoc_entity_type @I, @I(%T) [symbolic] -// CHECK:STDOUT: %assoc0.436: %I.assoc_type.b65 = assoc_entity element0, imports.%Main.import_ref.21c [symbolic] // CHECK:STDOUT: %InInterfaceArgs: type = class_type @InInterfaceArgs [concrete] // CHECK:STDOUT: %I.type.c61: type = facet_type <@I, @I(%InInterfaceArgs)> [concrete] // CHECK:STDOUT: %Self.bca: %I.type.c61 = symbolic_binding Self, 1 [symbolic] @@ -392,13 +392,13 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); } // CHECK:STDOUT: %Main.InInterfaceArgs: type = import_ref Main//impl_in_interface_args, InInterfaceArgs, loaded [concrete = constants.%InInterfaceArgs] // CHECK:STDOUT: %Main.import_ref.8f24d3.1: = import_ref Main//types, loc7_10, loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %Main.import_ref.acf = import_ref Main//types, inst{{[0-9A-F]+}} [no loc], unloaded -// CHECK:STDOUT: %Main.import_ref.efcd44.1: type = import_ref Main//types, loc4_13, loaded [symbolic = @I.%T (constants.%T)] // CHECK:STDOUT: %Main.import_ref.769 = import_ref Main//types, loc4_23, unloaded // CHECK:STDOUT: %Main.import_ref.715: @I.%I.assoc_type (%I.assoc_type.b65) = import_ref Main//types, loc4_43, loaded [symbolic = @I.%assoc0 (constants.%assoc0.254)] // CHECK:STDOUT: %Main.F = import_ref Main//types, F, unloaded +// CHECK:STDOUT: %Main.import_ref.efcd44.1: type = import_ref Main//types, loc4_13, loaded [symbolic = @I.%T (constants.%T)] +// CHECK:STDOUT: %Main.import_ref.21c: @I.%I.F.type (%I.F.type.76d) = import_ref Main//types, loc4_43, loaded [symbolic = @I.%I.F (constants.%I.F.dde)] // CHECK:STDOUT: %Main.import_ref.efcd44.2: type = import_ref Main//types, loc4_13, loaded [symbolic = @I.%T (constants.%T)] // CHECK:STDOUT: %Main.import_ref.781: @I.%I.type (%I.type.070) = import_ref Main//types, loc4_23, loaded [symbolic = @I.%Self (constants.%Self.269)] -// CHECK:STDOUT: %Main.import_ref.21c: @I.%I.F.type (%I.F.type.76d) = import_ref Main//types, loc4_43, loaded [symbolic = @I.%I.F (constants.%I.F.dde)] // 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, inst{{[0-9A-F]+}} [no loc], unloaded // CHECK:STDOUT: %Main.import_ref.e2f = import_ref Main//types, loc4_43, unloaded @@ -532,12 +532,12 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); } // CHECK:STDOUT: %I.generic: %I.type.dac = struct_value () [concrete] // CHECK:STDOUT: %I.type.070: type = facet_type <@I, @I(%T)> [symbolic] // CHECK:STDOUT: %Self.269: %I.type.070 = symbolic_binding Self, 1 [symbolic] +// CHECK:STDOUT: %I.assoc_type.b65: type = assoc_entity_type @I, @I(%T) [symbolic] +// CHECK:STDOUT: %assoc0.254: %I.assoc_type.b65 = assoc_entity element0, imports.%Main.import_ref.e2f [symbolic] // CHECK:STDOUT: %I.F.type.76d: type = fn_type @I.F, @I(%T) [symbolic] // CHECK:STDOUT: %I.F.dde: %I.F.type.76d = struct_value () [symbolic] // CHECK:STDOUT: %Self.binding.as_type: type = symbolic_binding_type Self, 1, %Self.269 [symbolic] // CHECK:STDOUT: %pattern_type.dbc: type = pattern_type %Self.binding.as_type [symbolic] -// CHECK:STDOUT: %I.assoc_type.b65: type = assoc_entity_type @I, @I(%T) [symbolic] -// CHECK:STDOUT: %assoc0.254: %I.assoc_type.b65 = assoc_entity element0, imports.%Main.import_ref.e2f [symbolic] // CHECK:STDOUT: %X: type = class_type @X [concrete] // CHECK:STDOUT: %I.type.95a: type = facet_type <@I, @I(%X)> [concrete] // CHECK:STDOUT: %Self.c72: %I.type.95a = symbolic_binding Self, 1 [symbolic] @@ -556,16 +556,16 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); } // CHECK:STDOUT: %Main.I: %I.type.dac = import_ref Main//types, I, loaded [concrete = constants.%I.generic] // CHECK:STDOUT: %Main.C: %C.type = import_ref Main//types, C, loaded [concrete = constants.%C.generic] // CHECK:STDOUT: %Main.X: type = import_ref Main//types, X, loaded [concrete = constants.%X] -// CHECK:STDOUT: %Main.import_ref.efcd44.1: type = import_ref Main//types, loc5_9, loaded [symbolic = @C.%T (constants.%T)] // CHECK:STDOUT: %Main.import_ref.8f24d3.1: = import_ref Main//types, loc5_20, loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %Main.import_ref.034 = import_ref Main//types, inst{{[0-9A-F]+}} [no loc], unloaded -// CHECK:STDOUT: %Main.import_ref.efcd44.2: type = import_ref Main//types, loc4_13, loaded [symbolic = @I.%T (constants.%T)] +// CHECK:STDOUT: %Main.import_ref.efcd44.1: type = import_ref Main//types, loc5_9, loaded [symbolic = @C.%T (constants.%T)] // CHECK:STDOUT: %Main.import_ref.769 = import_ref Main//types, loc4_23, unloaded // CHECK:STDOUT: %Main.import_ref.2de = import_ref Main//types, loc4_43, unloaded // CHECK:STDOUT: %Main.F: @I.%I.F.type (%I.F.type.76d) = import_ref Main//types, F, loaded [symbolic = @I.%I.F (constants.%I.F.dde)] +// CHECK:STDOUT: %Main.import_ref.efcd44.2: type = import_ref Main//types, loc4_13, loaded [symbolic = @I.%T (constants.%T)] +// CHECK:STDOUT: %Main.import_ref.e2f = import_ref Main//types, loc4_43, unloaded // CHECK:STDOUT: %Main.import_ref.efcd44.3: type = import_ref Main//types, loc4_13, loaded [symbolic = @I.%T (constants.%T)] // CHECK:STDOUT: %Main.import_ref.781: @I.%I.type (%I.type.070) = import_ref Main//types, loc4_23, loaded [symbolic = @I.%Self (constants.%Self.269)] -// CHECK:STDOUT: %Main.import_ref.e2f = import_ref Main//types, loc4_43, unloaded // CHECK:STDOUT: %Main.import_ref.8f24d3.2: = import_ref Main//types, loc7_10, loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %Main.import_ref.acf = import_ref Main//types, inst{{[0-9A-F]+}} [no loc], unloaded // CHECK:STDOUT: } @@ -730,12 +730,12 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); } // CHECK:STDOUT: %I.generic: %I.type.dac = struct_value () [concrete] // CHECK:STDOUT: %I.type.070: type = facet_type <@I, @I(%T)> [symbolic] // CHECK:STDOUT: %Self.269: %I.type.070 = symbolic_binding Self, 1 [symbolic] +// CHECK:STDOUT: %I.assoc_type.b65: type = assoc_entity_type @I, @I(%T) [symbolic] +// CHECK:STDOUT: %assoc0.436: %I.assoc_type.b65 = assoc_entity element0, imports.%Main.import_ref.21c [symbolic] // CHECK:STDOUT: %I.F.type.76d: type = fn_type @I.F, @I(%T) [symbolic] // CHECK:STDOUT: %I.F.dde: %I.F.type.76d = struct_value () [symbolic] // CHECK:STDOUT: %Self.binding.as_type: type = symbolic_binding_type Self, 1, %Self.269 [symbolic] // CHECK:STDOUT: %pattern_type.dbc: type = pattern_type %Self.binding.as_type [symbolic] -// CHECK:STDOUT: %I.assoc_type.b65: type = assoc_entity_type @I, @I(%T) [symbolic] -// CHECK:STDOUT: %assoc0.436: %I.assoc_type.b65 = assoc_entity element0, imports.%Main.import_ref.21c [symbolic] // CHECK:STDOUT: %X: type = class_type @X [concrete] // CHECK:STDOUT: %I.type.95a: type = facet_type <@I, @I(%X)> [concrete] // CHECK:STDOUT: %Self.c72: %I.type.95a = symbolic_binding Self, 1 [symbolic] @@ -756,18 +756,18 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); } // CHECK:STDOUT: %Main.C: %C.type = import_ref Main//types, C, loaded [concrete = constants.%C.generic] // CHECK:STDOUT: %Main.X: type = import_ref Main//types, X, loaded [concrete = constants.%X] // CHECK:STDOUT: %Main.InClassArgs: type = import_ref Main//impl_in_class_args, InClassArgs, loaded [concrete = constants.%InClassArgs] -// CHECK:STDOUT: %Main.import_ref.efcd44.1: type = import_ref Main//types, loc5_9, loaded [symbolic = @C.%T (constants.%T)] // CHECK:STDOUT: %Main.import_ref.8f24d3.1: = import_ref Main//types, loc5_20, loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %Main.import_ref.034 = import_ref Main//types, inst{{[0-9A-F]+}} [no loc], unloaded +// CHECK:STDOUT: %Main.import_ref.efcd44.1: type = import_ref Main//types, loc5_9, loaded [symbolic = @C.%T (constants.%T)] // CHECK:STDOUT: %Main.import_ref.8f24d3.2: = import_ref Main//impl_in_class_args, loc5_20, loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %Main.import_ref.683 = import_ref Main//impl_in_class_args, inst{{[0-9A-F]+}} [no loc], unloaded -// CHECK:STDOUT: %Main.import_ref.efcd44.2: type = import_ref Main//types, loc4_13, loaded [symbolic = @I.%T (constants.%T)] // CHECK:STDOUT: %Main.import_ref.769 = import_ref Main//types, loc4_23, unloaded // CHECK:STDOUT: %Main.import_ref.715: @I.%I.assoc_type (%I.assoc_type.b65) = import_ref Main//types, loc4_43, loaded [symbolic = @I.%assoc0 (constants.%assoc0.254)] // CHECK:STDOUT: %Main.F = import_ref Main//types, F, unloaded +// CHECK:STDOUT: %Main.import_ref.efcd44.2: type = import_ref Main//types, loc4_13, loaded [symbolic = @I.%T (constants.%T)] +// CHECK:STDOUT: %Main.import_ref.21c: @I.%I.F.type (%I.F.type.76d) = import_ref Main//types, loc4_43, loaded [symbolic = @I.%I.F (constants.%I.F.dde)] // CHECK:STDOUT: %Main.import_ref.efcd44.3: type = import_ref Main//types, loc4_13, loaded [symbolic = @I.%T (constants.%T)] // CHECK:STDOUT: %Main.import_ref.781: @I.%I.type (%I.type.070) = import_ref Main//types, loc4_23, loaded [symbolic = @I.%Self (constants.%Self.269)] -// CHECK:STDOUT: %Main.import_ref.21c: @I.%I.F.type (%I.F.type.76d) = import_ref Main//types, loc4_43, loaded [symbolic = @I.%I.F (constants.%I.F.dde)] // 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, inst{{[0-9A-F]+}} [no loc], unloaded // CHECK:STDOUT: %Main.import_ref.e2f = import_ref Main//types, loc4_43, unloaded diff --git a/toolchain/check/testdata/interface/generic_import.carbon b/toolchain/check/testdata/interface/generic_import.carbon index 07bf3f8c8b61..5212569923de 100644 --- a/toolchain/check/testdata/interface/generic_import.carbon +++ b/toolchain/check/testdata/interface/generic_import.carbon @@ -106,10 +106,10 @@ impl C as AddWith(C) { // CHECK:STDOUT: %T: type = symbolic_binding T, 0 [symbolic] // CHECK:STDOUT: %AddWith.type.302: type = facet_type <@AddWith, @AddWith(%T)> [symbolic] // CHECK:STDOUT: %Self.236: %AddWith.type.302 = symbolic_binding Self, 1 [symbolic] -// CHECK:STDOUT: %AddWith.F.type.d64: type = fn_type @AddWith.F, @AddWith(%T) [symbolic] -// CHECK:STDOUT: %AddWith.F.fa8: %AddWith.F.type.d64 = struct_value () [symbolic] // CHECK:STDOUT: %AddWith.assoc_type.fb4: type = assoc_entity_type @AddWith, @AddWith(%T) [symbolic] // CHECK:STDOUT: %assoc0.9a4: %AddWith.assoc_type.fb4 = assoc_entity element0, imports.%Main.import_ref.543 [symbolic] +// CHECK:STDOUT: %AddWith.F.type.d64: type = fn_type @AddWith.F, @AddWith(%T) [symbolic] +// CHECK:STDOUT: %AddWith.F.fa8: %AddWith.F.type.d64 = struct_value () [symbolic] // CHECK:STDOUT: %AddWith.type.bf6: type = facet_type <@AddWith, @AddWith(%C)> [concrete] // CHECK:STDOUT: %Self.991: %AddWith.type.bf6 = symbolic_binding Self, 1 [symbolic] // CHECK:STDOUT: %AddWith.F.type.cd2: type = fn_type @AddWith.F, @AddWith(%C) [concrete] @@ -124,13 +124,13 @@ impl C as AddWith(C) { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Main.AddWith: %AddWith.type.b35 = import_ref Main//a, AddWith, loaded [concrete = constants.%AddWith.generic] -// CHECK:STDOUT: %Main.import_ref.efcd44.1: type = import_ref Main//a, loc4_19, loaded [symbolic = @AddWith.%T (constants.%T)] // CHECK:STDOUT: %Main.import_ref.833 = import_ref Main//a, loc4_29, unloaded // CHECK:STDOUT: %Main.import_ref.073 = import_ref Main//a, loc5_9, unloaded // CHECK:STDOUT: %Main.F: @AddWith.%AddWith.F.type (%AddWith.F.type.d64) = import_ref Main//a, F, loaded [symbolic = @AddWith.%AddWith.F (constants.%AddWith.F.fa8)] +// CHECK:STDOUT: %Main.import_ref.efcd44.1: type = import_ref Main//a, loc4_19, loaded [symbolic = @AddWith.%T (constants.%T)] +// CHECK:STDOUT: %Main.import_ref.543 = import_ref Main//a, loc5_9, unloaded // CHECK:STDOUT: %Main.import_ref.efcd44.2: type = import_ref Main//a, loc4_19, loaded [symbolic = @AddWith.%T (constants.%T)] // CHECK:STDOUT: %Main.import_ref.2bd: @AddWith.%AddWith.type (%AddWith.type.302) = import_ref Main//a, loc4_29, loaded [symbolic = @AddWith.%Self (constants.%Self.236)] -// CHECK:STDOUT: %Main.import_ref.543 = import_ref Main//a, loc5_9, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/interop/cpp/function/decayed_param.carbon b/toolchain/check/testdata/interop/cpp/function/decayed_param.carbon index 26672d36c4cc..ca5aa5bcab98 100644 --- a/toolchain/check/testdata/interop/cpp/function/decayed_param.carbon +++ b/toolchain/check/testdata/interop/cpp/function/decayed_param.carbon @@ -107,11 +107,11 @@ fn F() { // CHECK:STDOUT: %T.3fe: %OptionalStorage.type = symbolic_binding T, 0 [symbolic] // CHECK:STDOUT: %ptr.4f0: type = ptr_type %T.d9f [symbolic] // CHECK:STDOUT: %MaybeUnformed.cff: type = class_type @MaybeUnformed, @MaybeUnformed(%ptr.4f0) [symbolic] -// CHECK:STDOUT: %ptr.as.OptionalStorage.impl.None.type.8ed: type = fn_type @ptr.as.OptionalStorage.impl.None, @ptr.as.OptionalStorage.impl(%T.d9f) [symbolic] -// CHECK:STDOUT: %ptr.as.OptionalStorage.impl.None.41a: %ptr.as.OptionalStorage.impl.None.type.8ed = struct_value () [symbolic] // CHECK:STDOUT: %ptr.as.OptionalStorage.impl.Some.type.911: type = fn_type @ptr.as.OptionalStorage.impl.Some, @ptr.as.OptionalStorage.impl(%T.d9f) [symbolic] // CHECK:STDOUT: %ptr.as.OptionalStorage.impl.Some.2a0: %ptr.as.OptionalStorage.impl.Some.type.911 = struct_value () [symbolic] // CHECK:STDOUT: %type_where: type = facet_type > [concrete] +// CHECK:STDOUT: %ptr.as.OptionalStorage.impl.None.type.8ed: type = fn_type @ptr.as.OptionalStorage.impl.None, @ptr.as.OptionalStorage.impl(%T.d9f) [symbolic] +// CHECK:STDOUT: %ptr.as.OptionalStorage.impl.None.41a: %ptr.as.OptionalStorage.impl.None.type.8ed = struct_value () [symbolic] // CHECK:STDOUT: %OptionalStorage.impl_witness.d16: = impl_witness imports.%OptionalStorage.impl_witness_table.f03, @ptr.as.OptionalStorage.impl(%i32) [concrete] // CHECK:STDOUT: %OptionalStorage.facet.083: %OptionalStorage.type = facet_value %ptr.235, (%OptionalStorage.impl_witness.d16) [concrete] // CHECK:STDOUT: %Optional.97d: type = class_type @Optional, @Optional(%OptionalStorage.facet.083) [concrete] diff --git a/toolchain/check/testdata/let/fail_generic.carbon b/toolchain/check/testdata/let/fail_generic.carbon index e294caf22e96..94f09926ce42 100644 --- a/toolchain/check/testdata/let/fail_generic.carbon +++ b/toolchain/check/testdata/let/fail_generic.carbon @@ -52,9 +52,9 @@ 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 = symbolic_binding Dest, 0 [symbolic] +// CHECK:STDOUT: %ImplicitAs.assoc_type.8b5194.1: type = assoc_entity_type @ImplicitAs, @ImplicitAs(%Dest) [symbolic] // CHECK:STDOUT: %ImplicitAs.Convert.type.4c8ddd.1: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%Dest) [symbolic] // CHECK:STDOUT: %ImplicitAs.Convert.e9f4dc.1: %ImplicitAs.Convert.type.4c8ddd.1 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.assoc_type.8b5194.1: type = assoc_entity_type @ImplicitAs, @ImplicitAs(%Dest) [symbolic] // CHECK:STDOUT: %ImplicitAs.type.2d9d4e.2: type = facet_type <@ImplicitAs, @ImplicitAs(%T)> [symbolic] // CHECK:STDOUT: %ImplicitAs.assoc_type.8b5194.2: type = assoc_entity_type @ImplicitAs, @ImplicitAs(%T) [symbolic] // CHECK:STDOUT: %assoc0.f64c6b.2: %ImplicitAs.assoc_type.8b5194.2 = assoc_entity element0, imports.%Core.import_ref.b91 [symbolic] diff --git a/toolchain/check/testdata/operators/overloaded/index.carbon b/toolchain/check/testdata/operators/overloaded/index.carbon index f7b0cb0b6ad1..c52cc57f30af 100644 --- a/toolchain/check/testdata/operators/overloaded/index.carbon +++ b/toolchain/check/testdata/operators/overloaded/index.carbon @@ -289,14 +289,14 @@ fn F() { ()[()]; } // CHECK:STDOUT: %SubscriptType: type = symbolic_binding SubscriptType, 0 [symbolic] // CHECK:STDOUT: %IndexWith.type.b02: type = facet_type <@IndexWith, @IndexWith(%SubscriptType, %ElementType)> [symbolic] // CHECK:STDOUT: %Self.a98: %IndexWith.type.b02 = symbolic_binding Self, 2 [symbolic] +// CHECK:STDOUT: %IndexWith.assoc_type.4e0: type = assoc_entity_type @IndexWith, @IndexWith(%SubscriptType, %ElementType) [symbolic] +// CHECK:STDOUT: %assoc0.845: %IndexWith.assoc_type.4e0 = assoc_entity element0, imports.%Core.import_ref.118 [symbolic] // CHECK:STDOUT: %IndexWith.At.type.755: type = fn_type @IndexWith.At, @IndexWith(%SubscriptType, %ElementType) [symbolic] // CHECK:STDOUT: %IndexWith.At.f92: %IndexWith.At.type.755 = struct_value () [symbolic] // CHECK:STDOUT: %pattern_type.984: type = pattern_type %ElementType [symbolic] // CHECK:STDOUT: %Self.binding.as_type: type = symbolic_binding_type Self, 2, %Self.a98 [symbolic] // CHECK:STDOUT: %pattern_type.e2c: type = pattern_type %Self.binding.as_type [symbolic] // CHECK:STDOUT: %pattern_type.e68: type = pattern_type %SubscriptType [symbolic] -// CHECK:STDOUT: %IndexWith.assoc_type.4e0: type = assoc_entity_type @IndexWith, @IndexWith(%SubscriptType, %ElementType) [symbolic] -// CHECK:STDOUT: %assoc0.845: %IndexWith.assoc_type.4e0 = assoc_entity element0, imports.%Core.import_ref.118 [symbolic] // CHECK:STDOUT: %IndexWith.type.5ee: type = facet_type <@IndexWith, @IndexWith(%empty_tuple.type, %empty_tuple.type)> [concrete] // CHECK:STDOUT: %Self.d39: %IndexWith.type.5ee = symbolic_binding Self, 2 [symbolic] // CHECK:STDOUT: %IndexWith.At.type.1a9: type = fn_type @IndexWith.At, @IndexWith(%empty_tuple.type, %empty_tuple.type) [concrete] @@ -318,15 +318,15 @@ fn F() { ()[()]; } // CHECK:STDOUT: import Core//core_wrong_arg_count // CHECK:STDOUT: } // CHECK:STDOUT: %Core.IndexWith: %IndexWith.type.504 = import_ref Core//core_wrong_arg_count, IndexWith, loaded [concrete = constants.%IndexWith.generic] -// CHECK:STDOUT: %Core.import_ref.efcd44.1: type = import_ref Core//core_wrong_arg_count, loc{{\d+_\d+}}, loaded [symbolic = @IndexWith.%SubscriptType (constants.%SubscriptType)] -// CHECK:STDOUT: %Core.import_ref.c5c78a.1: type = import_ref Core//core_wrong_arg_count, loc{{\d+_\d+}}, loaded [symbolic = @IndexWith.%ElementType (constants.%ElementType)] // CHECK:STDOUT: %Core.import_ref.05e = import_ref Core//core_wrong_arg_count, loc{{\d+_\d+}}, unloaded // CHECK:STDOUT: %Core.import_ref.1bb = import_ref Core//core_wrong_arg_count, loc{{\d+_\d+}}, unloaded // CHECK:STDOUT: %Core.At: @IndexWith.%IndexWith.At.type (%IndexWith.At.type.755) = import_ref Core//core_wrong_arg_count, At, loaded [symbolic = @IndexWith.%IndexWith.At (constants.%IndexWith.At.f92)] +// CHECK:STDOUT: %Core.import_ref.efcd44.1: type = import_ref Core//core_wrong_arg_count, loc{{\d+_\d+}}, loaded [symbolic = @IndexWith.%SubscriptType (constants.%SubscriptType)] +// CHECK:STDOUT: %Core.import_ref.c5c78a.1: type = import_ref Core//core_wrong_arg_count, loc{{\d+_\d+}}, loaded [symbolic = @IndexWith.%ElementType (constants.%ElementType)] +// CHECK:STDOUT: %Core.import_ref.118 = import_ref Core//core_wrong_arg_count, loc{{\d+_\d+}}, unloaded // CHECK:STDOUT: %Core.import_ref.efcd44.2: type = import_ref Core//core_wrong_arg_count, loc{{\d+_\d+}}, loaded [symbolic = @IndexWith.%SubscriptType (constants.%SubscriptType)] // CHECK:STDOUT: %Core.import_ref.c5c78a.2: type = import_ref Core//core_wrong_arg_count, loc{{\d+_\d+}}, loaded [symbolic = @IndexWith.%ElementType (constants.%ElementType)] // CHECK:STDOUT: %Core.import_ref.c11: @IndexWith.%IndexWith.type (%IndexWith.type.b02) = import_ref Core//core_wrong_arg_count, loc{{\d+_\d+}}, loaded [symbolic = @IndexWith.%Self (constants.%Self.a98)] -// CHECK:STDOUT: %Core.import_ref.118 = import_ref Core//core_wrong_arg_count, loc{{\d+_\d+}}, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/return/import_convert_function.carbon b/toolchain/check/testdata/return/import_convert_function.carbon index 70edf703d3e6..df9dc3834336 100644 --- a/toolchain/check/testdata/return/import_convert_function.carbon +++ b/toolchain/check/testdata/return/import_convert_function.carbon @@ -879,9 +879,9 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: %P.import_ref.a525 = import_ref P//library, loc5_16, unloaded // CHECK:STDOUT: %P.import_ref.b4a = import_ref P//library, loc5_28, unloaded // CHECK:STDOUT: %P.C: %C.type = import_ref P//library, C, loaded [concrete = constants.%C.generic] -// CHECK:STDOUT: %P.import_ref.797: %i32 = import_ref P//library, loc4_9, loaded [symbolic = @C.%N (constants.%N.fe8)] // CHECK:STDOUT: %P.import_ref.8f2: = import_ref P//library, loc4_19, loaded [concrete = constants.%complete_type.357] // CHECK:STDOUT: %P.import_ref.9b2 = import_ref P//library, inst{{[0-9A-F]+}} [no loc], unloaded +// CHECK:STDOUT: %P.import_ref.797: %i32 = import_ref P//library, loc4_9, loaded [symbolic = @C.%N (constants.%N.fe8)] // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] // CHECK:STDOUT: %Core.import_ref.e24: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.f51) = import_ref Core//prelude/parts/int, loc{{\d+_\d+}}, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.2a1)] // CHECK:STDOUT: %ImplicitAs.impl_witness_table.132 = impl_witness_table (%Core.import_ref.e24), @Core.IntLiteral.as.ImplicitAs.impl [concrete]