Add insts for witness table entries that are unset or associated constants (#5255)

Instead of using None, use an explicit ImplWitnessTablePlaceholder in
the witness table for entries that have not yet been populated, to aid
debugging. This would ensure they would show up very clearly in the
SemIR. This uncovered some `<invalid>` in the SemIR under erroneous
conditions that have now been turned into `<error>`.

Add the ImplWitnessAssociatedConstant instruction which wraps the
canonical instruction found from the constant value of the rewrite
constraint. This ensures that we have an instruction inside the eval
block for a generic impl declaration for each rewrite constraint's
value, which allows Subst to be performed to rewrite the symbolic
constant of the ImplWitnessAssociatedConstant instruction to associate
it with the generic. This will prevent the otherwise orphaned symbolic
constant of the rewrite's value from being used which can not have a
specific applied to them.

While applying the new insts in InitialFacetTypeImplWitness(), rearrange
the function to use less nesting. And avoid using entity names from
imported instructions (as we found is not effective in deduce.cpp) and
use a local instruction by going through the constant value.

This PR is part of the effort to allow a rewrite to name a generic
parameter, such as `impl forall [T:! type] T as Z where .X = T`, however
tests for this involve a final impl so that we can typecheck that the .X
value is a specific T, so the tests will come with that work. This piece
is split off because introducing new instructions causes a lot of SemIR
churn, and I wanted to get that done separately.
This commit is contained in:
Dana Jansens
2025-04-08 19:10:49 +00:00
committed by GitHub
parent cda97cb292
commit d07f70cfb3
99 changed files with 1131 additions and 980 deletions
+7
View File
@@ -257,6 +257,13 @@ auto EvalConstantInst(Context& context, SemIR::InstId inst_id,
return ConstantEvalResult::NewSamePhase(inst);
}
auto EvalConstantInst(Context& context,
SemIR::ImplWitnessAssociatedConstant inst)
-> ConstantEvalResult {
return ConstantEvalResult::Existing(
context.constant_values().Get(inst.inst_id));
}
auto EvalConstantInst(Context& /*context*/, SemIR::ImportRefUnloaded inst)
-> ConstantEvalResult {
CARBON_FATAL("ImportRefUnloaded should be loaded before TryEvalInst: {0}",
+82 -75
View File
@@ -10,6 +10,7 @@
#include "toolchain/check/interface.h"
#include "toolchain/check/type.h"
#include "toolchain/check/type_completion.h"
#include "toolchain/sem_ir/typed_insts.h"
namespace Carbon::Check {
@@ -106,8 +107,9 @@ auto InitialFacetTypeImplWitness(
SemIR::InstId witness_inst_id = SemIR::InstId::None;
llvm::MutableArrayRef<SemIR::InstId> table;
{
llvm::SmallVector<SemIR::InstId> empty_table(assoc_entities.size(),
SemIR::InstId::None);
llvm::SmallVector<SemIR::InstId> empty_table(
assoc_entities.size(),
SemIR::ImplWitnessTablePlaceholder::SingletonInstId);
auto table_id = context.inst_blocks().Add(empty_table);
table = context.inst_blocks().GetMutable(table_id);
witness_inst_id = AddInst<SemIR::ImplWitness>(
@@ -133,90 +135,94 @@ auto InitialFacetTypeImplWitness(
continue;
}
auto rewrite_value = rewrite.rhs_const_id;
if (rewrite_value == SemIR::ErrorInst::SingletonConstantId) {
table_entry = SemIR::ErrorInst::SingletonInstId;
continue;
}
if (table_entry.has_value()) {
auto const_id = context.constant_values().Get(table_entry);
if (const_id != rewrite_value &&
rewrite_value != SemIR::ErrorInst::SingletonConstantId) {
table_entry = SemIR::ErrorInst::SingletonInstId;
auto decl_id = context.constant_values().GetConstantInstId(
assoc_entities[access.index.index]);
CARBON_CHECK(decl_id.has_value(), "Non-constant associated entity");
if (decl_id == SemIR::ErrorInst::SingletonInstId) {
table_entry = SemIR::ErrorInst::SingletonInstId;
continue;
}
auto assoc_constant_decl =
context.insts().TryGetAs<SemIR::AssociatedConstantDecl>(decl_id);
if (!assoc_constant_decl) {
auto type_id = context.insts().Get(decl_id).type_id();
auto type_inst = context.types().GetAsInst(type_id);
auto fn_type = type_inst.As<SemIR::FunctionType>();
const auto& fn = context.functions().Get(fn_type.function_id);
CARBON_DIAGNOSTIC(RewriteForAssociatedFunction, Error,
"rewrite specified for associated function {0}",
SemIR::NameId);
context.emitter().Emit(facet_type_inst_id, RewriteForAssociatedFunction,
fn.name_id);
table_entry = SemIR::ErrorInst::SingletonInstId;
continue;
}
if (table_entry != SemIR::ImplWitnessTablePlaceholder::SingletonInstId) {
if (context.constant_values().Get(table_entry) != rewrite_value) {
// TODO: Figure out how to print the two different values
// `const_id` & `rewrite_value` in the diagnostic
// message.
CARBON_DIAGNOSTIC(AssociatedConstantWithDifferentValues, Error,
"associated constant {0} given two different values",
SemIR::NameId);
auto decl_id = assoc_entities[access.index.index];
SemIR::NameId name_id = SemIR::NameId::None;
if (auto decl = context.insts().TryGetAs<SemIR::AssociatedConstantDecl>(
decl_id)) {
auto& assoc_const =
context.associated_constants().Get(decl->assoc_const_id);
name_id = assoc_const.name_id;
} else {
auto import_ref = context.insts().GetAs<SemIR::AnyImportRef>(decl_id);
const auto& entity_name =
context.entity_names().Get(import_ref.entity_name_id);
name_id = entity_name.name_id;
}
auto& assoc_const = context.associated_constants().Get(
assoc_constant_decl->assoc_const_id);
context.emitter().Emit(facet_type_inst_id,
AssociatedConstantWithDifferentValues, name_id);
AssociatedConstantWithDifferentValues,
assoc_const.name_id);
}
table_entry = SemIR::ErrorInst::SingletonInstId;
continue;
}
auto decl_id = context.constant_values().GetConstantInstId(
assoc_entities[access.index.index]);
CARBON_CHECK(decl_id.has_value(), "Non-constant associated entity");
if (auto decl =
context.insts().TryGetAs<SemIR::AssociatedConstantDecl>(decl_id)) {
// If the associated constant has a symbolic type, convert the rewrite
// value to that type now we know the value of `Self`.
SemIR::TypeId assoc_const_type_id = decl->type_id;
if (assoc_const_type_id.is_symbolic()) {
// Get the type of the associated constant in this interface with this
// value for `Self`.
assoc_const_type_id = GetTypeForSpecificAssociatedEntity(
context, facet_type_inst_id, interface_to_witness.specific_id,
decl_id, context.types().GetTypeIdForTypeInstId(self_type_inst_id),
witness_inst_id);
// Perform the conversion of the value to the type. We skipped this when
// forming the facet type because the type of the associated constant
// was symbolic.
auto converted_inst_id = ConvertToValueOfType(
context, context.insts().GetLocId(facet_type_inst_id),
context.constant_values().GetInstId(rewrite_value),
assoc_const_type_id);
rewrite_value = context.constant_values().Get(converted_inst_id);
// The result of conversion can be non-constant even if the original
// value was constant.
if (!rewrite_value.is_constant() &&
rewrite_value != SemIR::ErrorInst::SingletonConstantId) {
const auto& assoc_const =
context.associated_constants().Get(decl->assoc_const_id);
CARBON_DIAGNOSTIC(
AssociatedConstantNotConstantAfterConversion, Error,
"associated constant {0} given value that is not constant "
"after conversion to {1}",
SemIR::NameId, SemIR::TypeId);
context.emitter().Emit(facet_type_inst_id,
AssociatedConstantNotConstantAfterConversion,
assoc_const.name_id, assoc_const_type_id);
rewrite_value = SemIR::ErrorInst::SingletonConstantId;
}
// If the associated constant has a symbolic type, convert the rewrite
// value to that type now we know the value of `Self`.
SemIR::TypeId assoc_const_type_id = assoc_constant_decl->type_id;
if (assoc_const_type_id.is_symbolic()) {
// Get the type of the associated constant in this interface with this
// value for `Self`.
assoc_const_type_id = GetTypeForSpecificAssociatedEntity(
context, facet_type_inst_id, interface_to_witness.specific_id,
decl_id, context.types().GetTypeIdForTypeInstId(self_type_inst_id),
witness_inst_id);
// Perform the conversion of the value to the type. We skipped this when
// forming the facet type because the type of the associated constant
// was symbolic.
auto converted_inst_id = ConvertToValueOfType(
context, context.insts().GetLocId(facet_type_inst_id),
context.constant_values().GetInstId(rewrite_value),
assoc_const_type_id);
rewrite_value = context.constant_values().Get(converted_inst_id);
// The result of conversion can be non-constant even if the original
// value was constant.
if (!rewrite_value.is_constant() &&
rewrite_value != SemIR::ErrorInst::SingletonConstantId) {
const auto& assoc_const = context.associated_constants().Get(
assoc_constant_decl->assoc_const_id);
CARBON_DIAGNOSTIC(
AssociatedConstantNotConstantAfterConversion, Error,
"associated constant {0} given value that is not constant "
"after conversion to {1}",
SemIR::NameId, SemIR::TypeId);
context.emitter().Emit(facet_type_inst_id,
AssociatedConstantNotConstantAfterConversion,
assoc_const.name_id, assoc_const_type_id);
rewrite_value = SemIR::ErrorInst::SingletonConstantId;
}
} else {
if (decl_id != SemIR::ErrorInst::SingletonInstId) {
auto type_id = context.insts().Get(decl_id).type_id();
auto type_inst = context.types().GetAsInst(type_id);
auto fn_type = type_inst.As<SemIR::FunctionType>();
const auto& fn = context.functions().Get(fn_type.function_id);
CARBON_DIAGNOSTIC(RewriteForAssociatedFunction, Error,
"rewrite specified for associated function {0}",
SemIR::NameId);
context.emitter().Emit(facet_type_inst_id, RewriteForAssociatedFunction,
fn.name_id);
}
continue;
}
auto rewrite_inst_id = context.constant_values().GetInstId(rewrite_value);
table_entry = AddInst<SemIR::ImplWitnessAssociatedConstant>(
context, witness_loc_id,
{.type_id = context.insts().Get(rewrite_inst_id).type_id(),
.inst_id = rewrite_inst_id});
table_entry = context.constant_values().GetInstId(rewrite_value);
}
return witness_inst_id;
@@ -246,8 +252,9 @@ auto AllocateFacetTypeImplWitness(Context& context,
LoadImportRef(context, decl_id);
}
llvm::SmallVector<SemIR::InstId> empty_table(assoc_entities.size(),
SemIR::InstId::None);
llvm::SmallVector<SemIR::InstId> empty_table(
assoc_entities.size(),
SemIR::ImplWitnessTablePlaceholder::SingletonInstId);
context.inst_blocks().ReplacePlaceholder(witness_id, empty_table);
}
+2
View File
@@ -465,6 +465,7 @@ static auto BuildImplDecl(Context& context, Parse::AnyImplDeclId node_id,
context.emitter().Emit(loc, ImplUnusedBinding);
// Don't try to match the impl at all, save us work and possible future
// diagnostics.
FillImplWitnessWithErrors(context, impl_info);
context.impls().Get(impl_decl.impl_id).witness_id =
SemIR::ErrorInst::SingletonInstId;
}
@@ -495,6 +496,7 @@ static auto BuildImplDecl(Context& context, Parse::AnyImplDeclId node_id,
self_type_node, self_type_id, name.implicit_params_loc_id,
constraint_inst_id, constraint_type_id)) {
// Don't allow the invalid impl to be used.
FillImplWitnessWithErrors(context, impl_info);
context.impls().Get(impl_decl.impl_id).witness_id =
SemIR::ErrorInst::SingletonInstId;
}
+6 -5
View File
@@ -86,7 +86,7 @@ static auto CheckAssociatedFunctionImplementation(
// Builds an initial witness from the rewrites in the facet type, if any.
auto ImplWitnessForDeclaration(Context& context, const SemIR::Impl& impl,
bool is_definition) -> SemIR::InstId {
bool has_definition) -> SemIR::InstId {
CARBON_CHECK(!impl.has_definition_started());
auto self_type_id = context.types().GetTypeIdForTypeInstId(impl.self_id);
@@ -98,7 +98,7 @@ auto ImplWitnessForDeclaration(Context& context, const SemIR::Impl& impl,
return InitialFacetTypeImplWitness(
context, context.insts().GetLocId(impl.latest_decl_id()),
impl.constraint_id, impl.self_id, impl.interface,
context.generics().GetSelfSpecific(impl.generic_id), is_definition);
context.generics().GetSelfSpecific(impl.generic_id), has_definition);
}
auto ImplWitnessStartDefinition(Context& context, SemIR::Impl& impl) -> void {
@@ -139,7 +139,8 @@ auto ImplWitnessStartDefinition(Context& context, SemIR::Impl& impl) -> void {
CARBON_CHECK(decl_id.has_value(), "Non-constant associated entity");
if (auto decl =
context.insts().TryGetAs<SemIR::AssociatedConstantDecl>(decl_id)) {
if (!witness_value.has_value()) {
if (witness_value ==
SemIR::ImplWitnessTablePlaceholder::SingletonInstId) {
CARBON_DIAGNOSTIC(ImplAssociatedConstantNeedsValue, Error,
"associated constant {0} not given a value in impl "
"of interface {1}",
@@ -147,7 +148,7 @@ auto ImplWitnessStartDefinition(Context& context, SemIR::Impl& impl) -> void {
CARBON_DIAGNOSTIC(AssociatedConstantHere, Note,
"associated constant declared here");
context.emitter()
.Build(impl.constraint_id, ImplAssociatedConstantNeedsValue,
.Build(impl.definition_id, ImplAssociatedConstantNeedsValue,
context.associated_constants()
.Get(decl->assoc_const_id)
.name_id,
@@ -241,7 +242,7 @@ auto FillImplWitnessWithErrors(Context& context, SemIR::Impl& impl) -> void {
auto witness = context.insts().GetAs<SemIR::ImplWitness>(impl.witness_id);
auto witness_block = context.inst_blocks().GetMutable(witness.elements_id);
for (auto& elem : witness_block) {
if (!elem.has_value()) {
if (elem == SemIR::ImplWitnessTablePlaceholder::SingletonInstId) {
elem = SemIR::ErrorInst::SingletonInstId;
}
}
+5 -2
View File
@@ -10,9 +10,12 @@
namespace Carbon::Check {
// Returns the initial witness value for a new impl declaration.
// Returns the initial witness value for a new `impl` declaration.
//
// `has_definition` is whether this declaration is immediately followed by the
// opening of the definition.
auto ImplWitnessForDeclaration(Context& context, const SemIR::Impl& impl,
bool is_definition) -> SemIR::InstId;
bool has_definition) -> SemIR::InstId;
// Update `impl`'s witness at the start of a definition.
auto ImplWitnessStartDefinition(Context& context, SemIR::Impl& impl) -> void;
@@ -107,7 +107,7 @@ var d: D* = &c;
// CHECK:STDOUT: %Main.C = import_ref Main//base, C, unloaded
// CHECK:STDOUT: %Main.D: type = import_ref Main//base, D, loaded [concrete = constants.%C]
// CHECK:STDOUT: %Main.import_ref.8f2: <witness> = import_ref Main//base, loc4_10, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.2c4 = import_ref Main//base, inst15 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.2c4 = import_ref Main//base, inst16 [no loc], unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -138,7 +138,7 @@ var d: D* = &c;
// CHECK:STDOUT: %Main.C: type = import_ref Main//base, C, loaded [concrete = constants.%C]
// CHECK:STDOUT: %Main.D = import_ref Main//base, D, unloaded
// CHECK:STDOUT: %Main.import_ref.8f2: <witness> = import_ref Main//base, loc4_10, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.2c4 = import_ref Main//base, inst15 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.2c4 = import_ref Main//base, inst16 [no loc], unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -168,8 +168,8 @@ var d: D* = &c;
// CHECK:STDOUT:
// CHECK:STDOUT: imports {
// CHECK:STDOUT: %Main.D: type = import_ref Main//export, D, loaded [concrete = constants.%C]
// CHECK:STDOUT: %Main.import_ref.8db: <witness> = import_ref Main//export, inst21 [indirect], loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.6a9 = import_ref Main//export, inst22 [indirect], unloaded
// CHECK:STDOUT: %Main.import_ref.8db: <witness> = import_ref Main//export, inst22 [indirect], loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.6a9 = import_ref Main//export, inst23 [indirect], unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -249,8 +249,8 @@ var d: D* = &c;
// CHECK:STDOUT: imports {
// CHECK:STDOUT: %Main.D: type = import_ref Main//export, D, loaded [concrete = constants.%C]
// CHECK:STDOUT: %Main.C: type = import_ref Main//export_orig, C, loaded [concrete = constants.%C]
// CHECK:STDOUT: %Main.import_ref.8db: <witness> = import_ref Main//export_orig, inst21 [indirect], loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.6a9 = import_ref Main//export_orig, inst22 [indirect], unloaded
// CHECK:STDOUT: %Main.import_ref.8db: <witness> = import_ref Main//export_orig, inst22 [indirect], loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.6a9 = import_ref Main//export_orig, inst23 [indirect], unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
+3 -3
View File
@@ -119,7 +119,7 @@ var c: () = a_alias_alias;
// CHECK:STDOUT: %Main.c_alias: type = import_ref Main//class1, c_alias, loaded [concrete = constants.%C]
// CHECK:STDOUT: %Main.a = import_ref Main//class1, a, unloaded
// CHECK:STDOUT: %Main.import_ref.8f2: <witness> = import_ref Main//class1, loc4_10, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.2c4 = import_ref Main//class1, inst15 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.2c4 = import_ref Main//class1, inst16 [no loc], unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -164,8 +164,8 @@ var c: () = a_alias_alias;
// CHECK:STDOUT: imports {
// CHECK:STDOUT: %Main.c_alias_alias: type = import_ref Main//class2, c_alias_alias, loaded [concrete = constants.%C]
// CHECK:STDOUT: %Main.b = import_ref Main//class2, b, unloaded
// CHECK:STDOUT: %Main.import_ref.8db: <witness> = import_ref Main//class2, inst22 [indirect], loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.6a9 = import_ref Main//class2, inst23 [indirect], unloaded
// CHECK:STDOUT: %Main.import_ref.8db: <witness> = import_ref Main//class2, inst23 [indirect], loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.6a9 = import_ref Main//class2, inst24 [indirect], unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -92,7 +92,7 @@ var inst: Test.A = {};
// CHECK:STDOUT: %Test.C = import_ref Test//def, C, unloaded
// CHECK:STDOUT: %Test.A: type = import_ref Test//def, A, loaded [concrete = constants.%C]
// CHECK:STDOUT: %Test.import_ref.8f2: <witness> = import_ref Test//def, loc4_10, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Test.import_ref.2c4 = import_ref Test//def, inst15 [no loc], unloaded
// CHECK:STDOUT: %Test.import_ref.2c4 = import_ref Test//def, inst16 [no loc], unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -92,7 +92,7 @@ var a_val: a = {.v = b_val.v};
// CHECK:STDOUT: %Main.c: type = import_ref Main//a, c, loaded [concrete = constants.%C]
// CHECK:STDOUT: %Main.d: type = import_ref Main//a, d, loaded [concrete = constants.%C]
// CHECK:STDOUT: %Main.import_ref.146: <witness> = import_ref Main//a, loc4_22, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.2c4 = import_ref Main//a, inst15 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.2c4 = import_ref Main//a, inst16 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.f99: %C.elem = import_ref Main//a, loc4_16, loaded [concrete = %.2fc]
// CHECK:STDOUT: }
// CHECK:STDOUT:
+6 -4
View File
@@ -17,7 +17,7 @@
// CHECK:STDOUT: ir0: {decl_id: inst<none>, is_export: false}
// CHECK:STDOUT: import_ir_insts: {}
// CHECK:STDOUT: name_scopes:
// CHECK:STDOUT: name_scope0: {inst: inst13, parent_scope: name_scope<none>, has_error: false, extended_scopes: [], names: {}}
// CHECK:STDOUT: name_scope0: {inst: inst14, parent_scope: name_scope<none>, has_error: false, extended_scopes: [], names: {}}
// CHECK:STDOUT: entity_names: {}
// CHECK:STDOUT: functions: {}
// CHECK:STDOUT: classes: {}
@@ -40,6 +40,7 @@
// CHECK:STDOUT: 'inst(BoolType)': {kind: BoolType, type: type(TypeType)}
// CHECK:STDOUT: 'inst(BoundMethodType)': {kind: BoundMethodType, type: type(TypeType)}
// CHECK:STDOUT: 'inst(ErrorInst)': {kind: ErrorInst, type: type(Error)}
// CHECK:STDOUT: 'inst(ImplWitnessTablePlaceholder)': {kind: ImplWitnessTablePlaceholder, type: type(TypeType)}
// CHECK:STDOUT: 'inst(InstType)': {kind: InstType, type: type(TypeType)}
// CHECK:STDOUT: 'inst(IntLiteralType)': {kind: IntLiteralType, type: type(TypeType)}
// CHECK:STDOUT: 'inst(LegacyFloatType)': {kind: LegacyFloatType, type: type(TypeType)}
@@ -48,13 +49,14 @@
// CHECK:STDOUT: 'inst(StringType)': {kind: StringType, type: type(TypeType)}
// CHECK:STDOUT: 'inst(VtableType)': {kind: VtableType, type: type(TypeType)}
// CHECK:STDOUT: 'inst(WitnessType)': {kind: WitnessType, type: type(TypeType)}
// CHECK:STDOUT: inst13: {kind: Namespace, arg0: name_scope0, arg1: inst<none>, type: type(inst(NamespaceType))}
// CHECK:STDOUT: inst14: {kind: Namespace, arg0: name_scope0, arg1: inst<none>, type: type(inst(NamespaceType))}
// CHECK:STDOUT: constant_values:
// CHECK:STDOUT: 'inst(TypeType)': concrete_constant(inst(TypeType))
// CHECK:STDOUT: 'inst(AutoType)': concrete_constant(inst(AutoType))
// CHECK:STDOUT: 'inst(BoolType)': concrete_constant(inst(BoolType))
// CHECK:STDOUT: 'inst(BoundMethodType)': concrete_constant(inst(BoundMethodType))
// CHECK:STDOUT: 'inst(ErrorInst)': concrete_constant(inst(ErrorInst))
// CHECK:STDOUT: 'inst(ImplWitnessTablePlaceholder)': concrete_constant(inst(ImplWitnessTablePlaceholder))
// CHECK:STDOUT: 'inst(InstType)': concrete_constant(inst(InstType))
// CHECK:STDOUT: 'inst(IntLiteralType)': concrete_constant(inst(IntLiteralType))
// CHECK:STDOUT: 'inst(LegacyFloatType)': concrete_constant(inst(LegacyFloatType))
@@ -63,7 +65,7 @@
// CHECK:STDOUT: 'inst(StringType)': concrete_constant(inst(StringType))
// CHECK:STDOUT: 'inst(VtableType)': concrete_constant(inst(VtableType))
// CHECK:STDOUT: 'inst(WitnessType)': concrete_constant(inst(WitnessType))
// CHECK:STDOUT: inst13: concrete_constant(inst13)
// CHECK:STDOUT: inst14: concrete_constant(inst14)
// CHECK:STDOUT: symbolic_constants: {}
// CHECK:STDOUT: inst_blocks:
// CHECK:STDOUT: inst_block_empty: {}
@@ -71,5 +73,5 @@
// CHECK:STDOUT: import_refs: {}
// CHECK:STDOUT: global_init: {}
// CHECK:STDOUT: inst_block4:
// CHECK:STDOUT: 0: inst13
// CHECK:STDOUT: 0: inst14
// CHECK:STDOUT: ...
+3 -3
View File
@@ -204,7 +204,7 @@ var c: Other.C = {};
// CHECK:STDOUT: }
// CHECK:STDOUT: %Other.C: type = import_ref Other//other_define, C, loaded [concrete = constants.%C]
// CHECK:STDOUT: %Other.import_ref.8f2: <witness> = import_ref Other//other_define, loc4_10, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Other.import_ref.2c4 = import_ref Other//other_define, inst17 [no loc], unloaded
// CHECK:STDOUT: %Other.import_ref.2c4 = import_ref Other//other_define, inst18 [no loc], unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -312,7 +312,7 @@ var c: Other.C = {};
// CHECK:STDOUT: }
// CHECK:STDOUT: %Other.C: type = import_ref Other//other_define, C, loaded [concrete = constants.%C]
// CHECK:STDOUT: %Other.import_ref.8f2: <witness> = import_ref Other//other_define, loc4_10, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Other.import_ref.2c4 = import_ref Other//other_define, inst17 [no loc], unloaded
// CHECK:STDOUT: %Other.import_ref.2c4 = import_ref Other//other_define, inst18 [no loc], unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -372,7 +372,7 @@ var c: Other.C = {};
// CHECK:STDOUT: }
// CHECK:STDOUT: %Other.C: type = import_ref Other//other_define, C, loaded [concrete = constants.%C]
// CHECK:STDOUT: %Other.import_ref.8f2: <witness> = import_ref Other//other_define, loc4_10, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Other.import_ref.2c4 = import_ref Other//other_define, inst17 [no loc], unloaded
// CHECK:STDOUT: %Other.import_ref.2c4 = import_ref Other//other_define, inst18 [no loc], unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
+1 -1
View File
@@ -99,7 +99,7 @@ var a: Incomplete;
// CHECK:STDOUT: import Core//prelude/...
// CHECK:STDOUT: }
// CHECK:STDOUT: %Main.import_ref.8f2: <witness> = import_ref Main//a, loc5_1, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.fd7 = import_ref Main//a, inst17 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.fd7 = import_ref Main//a, inst18 [no loc], unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
+5 -5
View File
@@ -295,10 +295,10 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 {
// CHECK:STDOUT: }
// CHECK:STDOUT: %Main.import_ref.5ab: type = import_ref Main//adapt_specific_type, loc4_9, loaded [symbolic = @C.%T (constants.%T)]
// CHECK:STDOUT: %Main.import_ref.b5f: <witness> = import_ref Main//adapt_specific_type, loc6_1, loaded [symbolic = @C.%complete_type (constants.%complete_type.433)]
// CHECK:STDOUT: %Main.import_ref.4c0 = import_ref Main//adapt_specific_type, inst26 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.4c0 = import_ref Main//adapt_specific_type, inst27 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.262: @C.%C.elem (%C.elem.66c) = import_ref Main//adapt_specific_type, loc5_8, loaded [concrete = %.22b]
// CHECK:STDOUT: %Main.import_ref.709: <witness> = 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, inst44 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.feb = import_ref Main//adapt_specific_type, inst45 [no loc], unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -664,10 +664,10 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 {
// CHECK:STDOUT: }
// CHECK:STDOUT: %Main.import_ref.5ab: type = import_ref Main//extend_adapt_specific_type_library, loc7_9, loaded [symbolic = @C.%T (constants.%T)]
// CHECK:STDOUT: %Main.import_ref.b5f: <witness> = import_ref Main//extend_adapt_specific_type_library, loc9_1, loaded [symbolic = @C.%complete_type (constants.%complete_type.433)]
// CHECK:STDOUT: %Main.import_ref.4c0 = import_ref Main//extend_adapt_specific_type_library, inst26 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.4c0 = import_ref Main//extend_adapt_specific_type_library, inst27 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.262: @C.%C.elem (%C.elem.66c) = import_ref Main//extend_adapt_specific_type_library, loc8_8, loaded [concrete = %.22b]
// CHECK:STDOUT: %Main.import_ref.709: <witness> = 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, inst44 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.feb = import_ref Main//extend_adapt_specific_type_library, inst45 [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]
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -895,7 +895,7 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 {
// CHECK:STDOUT: }
// CHECK:STDOUT: %Main.import_ref.5ab: type = import_ref Main//adapt_generic_type, loc4_15, loaded [symbolic = @Adapter.%T (constants.%T)]
// CHECK:STDOUT: %Main.import_ref.fb3: <witness> = import_ref Main//adapt_generic_type, loc6_1, loaded [symbolic = @Adapter.%complete_type (constants.%complete_type.f87)]
// CHECK:STDOUT: %Main.import_ref.9a3 = import_ref Main//adapt_generic_type, inst26 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.9a3 = import_ref Main//adapt_generic_type, inst27 [no loc], unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -283,14 +283,14 @@ fn H() {
// CHECK:STDOUT: import Core//prelude/...
// CHECK:STDOUT: }
// CHECK:STDOUT: %Main.import_ref.e8d: <witness> = 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, inst44 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.446 = import_ref Main//extend_generic_base, inst45 [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.5ab: type = import_ref Main//extend_generic_base, loc4_17, loaded [symbolic = @Base.%T (constants.%T)]
// CHECK:STDOUT: %Main.import_ref.b5f: <witness> = import_ref Main//extend_generic_base, loc6_1, loaded [symbolic = @Base.%complete_type (constants.%complete_type.433)]
// CHECK:STDOUT: %Main.import_ref.8e0 = import_ref Main//extend_generic_base, inst26 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.8e0 = import_ref Main//extend_generic_base, inst27 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.7f7: @Base.%Base.elem (%Base.elem.9af) = import_ref Main//extend_generic_base, loc5_8, loaded [concrete = %.e66]
// CHECK:STDOUT: %Main.import_ref.bd0: <witness> = 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, inst81 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.f6c = import_ref Main//extend_generic_base, inst82 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.d24 = import_ref Main//extend_generic_base, loc13_27, unloaded
// CHECK:STDOUT: %Main.import_ref.77a301.2: type = import_ref Main//extend_generic_base, loc13_26, loaded [concrete = constants.%Base.7a8]
// CHECK:STDOUT: }
@@ -791,11 +791,11 @@ fn H() {
// CHECK:STDOUT: }
// CHECK:STDOUT: %Main.import_ref.5ab3ec.1: type = import_ref Main//extend_generic_symbolic_base, loc4_14, loaded [symbolic = @X.%U (constants.%U)]
// CHECK:STDOUT: %Main.import_ref.8f2: <witness> = import_ref Main//extend_generic_symbolic_base, loc6_1, loaded [concrete = constants.%complete_type.357]
// CHECK:STDOUT: %Main.import_ref.e8e = import_ref Main//extend_generic_symbolic_base, inst26 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.e8e = import_ref Main//extend_generic_symbolic_base, inst27 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.b8a: @X.%G.type (%G.type.56f312.1) = import_ref Main//extend_generic_symbolic_base, loc5_15, loaded [symbolic = @X.%G (constants.%G.b504c4.1)]
// CHECK:STDOUT: %Main.import_ref.5ab3ec.2: type = import_ref Main//extend_generic_symbolic_base, loc8_9, loaded [symbolic = @C.%T (constants.%T)]
// CHECK:STDOUT: %Main.import_ref.93f: <witness> = import_ref Main//extend_generic_symbolic_base, loc10_1, loaded [symbolic = @C.%complete_type (constants.%complete_type.768)]
// CHECK:STDOUT: %Main.import_ref.4c0 = import_ref Main//extend_generic_symbolic_base, inst65 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.4c0 = import_ref Main//extend_generic_symbolic_base, inst66 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.65d = import_ref Main//extend_generic_symbolic_base, loc9_20, unloaded
// CHECK:STDOUT: %Main.import_ref.561eb2.2: type = import_ref Main//extend_generic_symbolic_base, loc9_19, loaded [symbolic = @C.%X (constants.%X.75b6d8.2)]
// CHECK:STDOUT: %Main.import_ref.5ab3ec.3: type = import_ref Main//extend_generic_symbolic_base, loc4_14, loaded [symbolic = @X.%U (constants.%U)]
+3 -3
View File
@@ -300,7 +300,7 @@ class Class(U:! type) {
// CHECK:STDOUT: %Main.import_ref.5ab3ec.1: type = import_ref Main//foo, loc4_13, loaded [symbolic = @Class.%T.1 (constants.%T)]
// CHECK:STDOUT: %Main.import_ref.5ab3ec.2: type = import_ref Main//foo, loc6_21, loaded [symbolic = @CompleteClass.%T (constants.%T)]
// CHECK:STDOUT: %Main.import_ref.eb1: <witness> = import_ref Main//foo, loc9_1, loaded [concrete = constants.%complete_type.a68]
// CHECK:STDOUT: %Main.import_ref.3c0 = import_ref Main//foo, inst34 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.3c0 = import_ref Main//foo, inst35 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.051 = import_ref Main//foo, loc7_8, unloaded
// CHECK:STDOUT: %Main.import_ref.570 = import_ref Main//foo, loc8_17, unloaded
// CHECK:STDOUT: %Main.import_ref.5ab3ec.3: type = import_ref Main//foo, loc6_21, loaded [symbolic = @CompleteClass.%T (constants.%T)]
@@ -476,7 +476,7 @@ class Class(U:! type) {
// CHECK:STDOUT: }
// CHECK:STDOUT: %Main.import_ref.5ab3ec.1: type = import_ref Main//foo, loc6_21, loaded [symbolic = @CompleteClass.%T (constants.%T)]
// CHECK:STDOUT: %Main.import_ref.eb1: <witness> = import_ref Main//foo, loc9_1, loaded [concrete = constants.%complete_type.54b]
// CHECK:STDOUT: %Main.import_ref.3c0 = import_ref Main//foo, inst34 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.3c0 = import_ref Main//foo, inst35 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.e76: @CompleteClass.%CompleteClass.elem (%CompleteClass.elem.28a) = import_ref Main//foo, loc7_8, loaded [concrete = %.364]
// CHECK:STDOUT: %Main.import_ref.a52: @CompleteClass.%F.type (%F.type.14f) = import_ref Main//foo, loc8_17, loaded [symbolic = @CompleteClass.%F (constants.%F.874)]
// CHECK:STDOUT: %Main.import_ref.5ab3ec.2: type = import_ref Main//foo, loc6_21, loaded [symbolic = @CompleteClass.%T (constants.%T)]
@@ -666,7 +666,7 @@ class Class(U:! type) {
// CHECK:STDOUT: }
// CHECK:STDOUT: %Main.import_ref.5ab3ec.1: type = import_ref Main//foo, loc6_21, loaded [symbolic = @CompleteClass.%T (constants.%T)]
// CHECK:STDOUT: %Main.import_ref.eb1: <witness> = import_ref Main//foo, loc9_1, loaded [concrete = constants.%complete_type.a68]
// CHECK:STDOUT: %Main.import_ref.3c0 = import_ref Main//foo, inst34 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.3c0 = import_ref Main//foo, inst35 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.051 = import_ref Main//foo, loc7_8, unloaded
// CHECK:STDOUT: %Main.import_ref.570 = import_ref Main//foo, loc8_17, unloaded
// CHECK:STDOUT: %Main.import_ref.5ab3ec.2: type = import_ref Main//foo, loc6_21, loaded [symbolic = @CompleteClass.%T (constants.%T)]
+5 -5
View File
@@ -208,16 +208,16 @@ fn Run() {
// CHECK:STDOUT: import Core//prelude/...
// CHECK:STDOUT: }
// CHECK:STDOUT: %Main.import_ref.8f24d3.1: <witness> = import_ref Main//a, loc5_1, loaded [concrete = constants.%complete_type.357]
// CHECK:STDOUT: %Main.import_ref.fd7 = import_ref Main//a, inst17 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.fd7 = import_ref Main//a, inst18 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.709: <witness> = import_ref Main//a, loc9_1, loaded [concrete = constants.%complete_type.c07]
// CHECK:STDOUT: %Main.import_ref.845 = import_ref Main//a, inst22 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.845 = import_ref Main//a, inst23 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.4d2: %Field.elem = import_ref Main//a, loc8_8, loaded [concrete = %.d33]
// CHECK:STDOUT: %Main.import_ref.8f24d3.2: <witness> = import_ref Main//a, loc16_1, loaded [concrete = constants.%complete_type.357]
// CHECK:STDOUT: %Main.import_ref.39e731.1 = import_ref Main//a, inst60 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.39e731.1 = import_ref Main//a, inst61 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.760: %F.type = import_ref Main//a, loc14_21, loaded [concrete = constants.%F]
// CHECK:STDOUT: %Main.import_ref.26e: %G.type = import_ref Main//a, loc15_27, loaded [concrete = constants.%G]
// CHECK:STDOUT: %Main.import_ref.8f24d3.3: <witness> = import_ref Main//a, loc16_1, loaded [concrete = constants.%complete_type.357]
// CHECK:STDOUT: %Main.import_ref.39e731.2 = import_ref Main//a, inst60 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.39e731.2 = import_ref Main//a, inst61 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.42a = import_ref Main//a, loc14_21, unloaded
// CHECK:STDOUT: %Main.import_ref.67a = import_ref Main//a, loc15_27, unloaded
// CHECK:STDOUT: }
@@ -364,5 +364,5 @@ fn Run() {
// CHECK:STDOUT:
// CHECK:STDOUT: fn @F[%self.param_patt: %ForwardDeclared.7b34f2.1]() [from "a.carbon"];
// CHECK:STDOUT:
// CHECK:STDOUT: fn @G[addr <unexpected>.inst1143: %ptr.6cf]() [from "a.carbon"];
// CHECK:STDOUT: fn @G[addr <unexpected>.inst1144: %ptr.6cf]() [from "a.carbon"];
// CHECK:STDOUT:
+2 -2
View File
@@ -181,13 +181,13 @@ fn Run() {
// CHECK:STDOUT: import Core//prelude/...
// CHECK:STDOUT: }
// CHECK:STDOUT: %Main.import_ref.239: <witness> = import_ref Main//a, loc10_1, loaded [concrete = constants.%complete_type.90f]
// CHECK:STDOUT: %Main.import_ref.1f3 = import_ref Main//a, inst17 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.1f3 = import_ref Main//a, inst18 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.e8f: %F.type = import_ref Main//a, loc5_21, loaded [concrete = constants.%F]
// CHECK:STDOUT: %Main.import_ref.8bf = import_ref Main//a, loc6_26, unloaded
// CHECK:STDOUT: %Main.import_ref.e67: %Base.elem = import_ref Main//a, loc8_8, loaded [concrete = %.720]
// CHECK:STDOUT: %Main.import_ref.2e4 = import_ref Main//a, loc9_13, unloaded
// CHECK:STDOUT: %Main.import_ref.c5f: <witness> = import_ref Main//a, loc14_1, loaded [concrete = constants.%complete_type.15c]
// CHECK:STDOUT: %Main.import_ref.9a9 = import_ref Main//a, inst77 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.9a9 = import_ref Main//a, inst78 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.7e5 = import_ref Main//a, loc13_20, unloaded
// CHECK:STDOUT: %Main.import_ref.a21640.2: type = import_ref Main//a, loc13_16, loaded [concrete = constants.%Base]
// CHECK:STDOUT: }
+8 -8
View File
@@ -149,7 +149,7 @@ var ptr: E* = &val;
// CHECK:STDOUT: import Core//prelude/...
// CHECK:STDOUT: }
// CHECK:STDOUT: %Main.import_ref.8f2: <witness> = import_ref Main//a, loc4_10, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.2c4 = import_ref Main//a, inst17 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.2c4 = import_ref Main//a, inst18 [no loc], unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -219,7 +219,7 @@ var ptr: E* = &val;
// CHECK:STDOUT: import Core//prelude/...
// CHECK:STDOUT: }
// CHECK:STDOUT: %Main.import_ref.8f2: <witness> = import_ref Main//a, loc4_10, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.2c4 = import_ref Main//a, inst17 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.2c4 = import_ref Main//a, inst18 [no loc], unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -292,7 +292,7 @@ var ptr: E* = &val;
// CHECK:STDOUT: import Core//prelude/...
// CHECK:STDOUT: }
// CHECK:STDOUT: %Main.import_ref.8f2: <witness> = import_ref Main//a, loc4_10, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.2c4 = import_ref Main//a, inst17 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.2c4 = import_ref Main//a, inst18 [no loc], unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -365,7 +365,7 @@ var ptr: E* = &val;
// CHECK:STDOUT: import Core//prelude/...
// CHECK:STDOUT: }
// CHECK:STDOUT: %Main.import_ref.8f2: <witness> = import_ref Main//a, loc4_10, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.2c4 = import_ref Main//a, inst17 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.2c4 = import_ref Main//a, inst18 [no loc], unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -439,8 +439,8 @@ var ptr: E* = &val;
// CHECK:STDOUT: import Core//prelude
// CHECK:STDOUT: import Core//prelude/...
// CHECK:STDOUT: }
// CHECK:STDOUT: %Main.import_ref.8db: <witness> = import_ref Main//b, inst22 [indirect], loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.6a9 = import_ref Main//b, inst23 [indirect], unloaded
// CHECK:STDOUT: %Main.import_ref.8db: <witness> = import_ref Main//b, inst23 [indirect], loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.6a9 = import_ref Main//b, inst24 [indirect], unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -516,8 +516,8 @@ var ptr: E* = &val;
// CHECK:STDOUT: import Core//prelude
// CHECK:STDOUT: import Core//prelude/...
// CHECK:STDOUT: }
// CHECK:STDOUT: %Main.import_ref.8db: <witness> = import_ref Main//b, inst22 [indirect], loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.6a9 = import_ref Main//b, inst23 [indirect], unloaded
// CHECK:STDOUT: %Main.import_ref.8db: <witness> = import_ref Main//b, inst23 [indirect], loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.6a9 = import_ref Main//b, inst24 [indirect], unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
+1 -1
View File
@@ -85,7 +85,7 @@ fn Run() {
// CHECK:STDOUT: import Core//prelude/...
// CHECK:STDOUT: }
// CHECK:STDOUT: %Main.import_ref.72d: <witness> = import_ref Main//a, loc6_1, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.3a6 = import_ref Main//a, inst17 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.3a6 = import_ref Main//a, inst18 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.4e0 = import_ref Main//a, loc5_8, unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
+1 -1
View File
@@ -107,7 +107,7 @@ fn Run() {
// CHECK:STDOUT: import Core//prelude/...
// CHECK:STDOUT: }
// CHECK:STDOUT: %Main.import_ref.b93: <witness> = import_ref Main//a, loc11_1, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.3a6 = import_ref Main//a, inst17 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.3a6 = import_ref Main//a, inst18 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.455: %Cycle.elem = import_ref Main//a, loc10_8, loaded [concrete = %.354]
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -266,15 +266,15 @@ fn G() { F({}); }
// CHECK:STDOUT: %Main.ExplicitReturn: type = import_ref Main//types, ExplicitReturn, loaded [concrete = constants.%ExplicitReturn]
// CHECK:STDOUT: %Main.WithAddr: type = import_ref Main//types, WithAddr, loaded [concrete = constants.%WithAddr]
// CHECK:STDOUT: %Main.import_ref.8f24d3.1: <witness> = import_ref Main//types, loc7_1, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.f42 = import_ref Main//types, inst15 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.f42 = import_ref Main//types, inst16 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.b5b = import_ref Main//types, loc5_22, unloaded
// CHECK:STDOUT: %Main.import_ref.7fe: %destroy.type.bc5 = import_ref Main//types, loc6_27, loaded [concrete = constants.%destroy.60f]
// CHECK:STDOUT: %Main.import_ref.8f24d3.2: <witness> = import_ref Main//types, loc12_1, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.ee7 = import_ref Main//types, inst37 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.ee7 = import_ref Main//types, inst38 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.b14 = import_ref Main//types, loc10_30, unloaded
// CHECK:STDOUT: %Main.import_ref.83a: %destroy.type.dfa = import_ref Main//types, loc11_33, loaded [concrete = constants.%destroy.539]
// CHECK:STDOUT: %Main.import_ref.8f24d3.3: <witness> = import_ref Main//types, loc17_1, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.95d = import_ref Main//types, inst62 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.95d = import_ref Main//types, inst63 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.1cb = import_ref Main//types, loc15_24, unloaded
// CHECK:STDOUT: %Main.import_ref.54e: %destroy.type.02f = import_ref Main//types, loc16_33, loaded [concrete = constants.%destroy.8d0]
// CHECK:STDOUT: }
@@ -359,7 +359,7 @@ fn G() { F({}); }
// CHECK:STDOUT:
// CHECK:STDOUT: fn @destroy.2[%self.param_patt: %ExplicitReturn]() -> %empty_tuple.type [from "types.carbon"];
// CHECK:STDOUT:
// CHECK:STDOUT: fn @destroy.3[addr <unexpected>.inst82: %ptr.b4e]() [from "types.carbon"];
// CHECK:STDOUT: fn @destroy.3[addr <unexpected>.inst83: %ptr.b4e]() [from "types.carbon"];
// CHECK:STDOUT:
// CHECK:STDOUT: --- nested_scope.carbon
// CHECK:STDOUT:
@@ -387,15 +387,15 @@ fn G() { F({}); }
// CHECK:STDOUT: %Main.ExplicitReturn: type = import_ref Main//types, ExplicitReturn, loaded [concrete = constants.%ExplicitReturn]
// CHECK:STDOUT: %Main.WithAddr: type = import_ref Main//types, WithAddr, loaded [concrete = constants.%WithAddr]
// CHECK:STDOUT: %Main.import_ref.8f24d3.1: <witness> = import_ref Main//types, loc7_1, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.f42 = import_ref Main//types, inst15 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.f42 = import_ref Main//types, inst16 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.b5b = import_ref Main//types, loc5_22, unloaded
// CHECK:STDOUT: %Main.import_ref.7fe: %destroy.type.bc5 = import_ref Main//types, loc6_27, loaded [concrete = constants.%destroy.60f]
// CHECK:STDOUT: %Main.import_ref.8f24d3.2: <witness> = import_ref Main//types, loc12_1, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.ee7 = import_ref Main//types, inst37 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.ee7 = import_ref Main//types, inst38 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.b14 = import_ref Main//types, loc10_30, unloaded
// CHECK:STDOUT: %Main.import_ref.83a: %destroy.type.dfa = import_ref Main//types, loc11_33, loaded [concrete = constants.%destroy.539]
// CHECK:STDOUT: %Main.import_ref.8f24d3.3: <witness> = import_ref Main//types, loc17_1, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.95d = import_ref Main//types, inst62 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.95d = import_ref Main//types, inst63 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.1cb = import_ref Main//types, loc15_24, unloaded
// CHECK:STDOUT: %Main.import_ref.54e: %destroy.type.02f = import_ref Main//types, loc16_33, loaded [concrete = constants.%destroy.8d0]
// CHECK:STDOUT: }
@@ -496,7 +496,7 @@ fn G() { F({}); }
// CHECK:STDOUT:
// CHECK:STDOUT: fn @destroy.2[%self.param_patt: %ExplicitReturn]() -> %empty_tuple.type [from "types.carbon"];
// CHECK:STDOUT:
// CHECK:STDOUT: fn @destroy.3[addr <unexpected>.inst82: %ptr.b4e]() [from "types.carbon"];
// CHECK:STDOUT: fn @destroy.3[addr <unexpected>.inst83: %ptr.b4e]() [from "types.carbon"];
// CHECK:STDOUT:
// CHECK:STDOUT: --- temp.carbon
// CHECK:STDOUT:
@@ -529,15 +529,15 @@ fn G() { F({}); }
// CHECK:STDOUT: %Main.ExplicitReturn: type = import_ref Main//types, ExplicitReturn, loaded [concrete = constants.%ExplicitReturn]
// CHECK:STDOUT: %Main.WithAddr: type = import_ref Main//types, WithAddr, loaded [concrete = constants.%WithAddr]
// CHECK:STDOUT: %Main.import_ref.8f24d3.1: <witness> = import_ref Main//types, loc7_1, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.f42 = import_ref Main//types, inst15 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.f42 = import_ref Main//types, inst16 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.784: %Make.type.bc9 = import_ref Main//types, loc5_22, loaded [concrete = constants.%Make.1be]
// CHECK:STDOUT: %Main.import_ref.7fe: %destroy.type.bc5 = import_ref Main//types, loc6_27, loaded [concrete = constants.%destroy.60f]
// CHECK:STDOUT: %Main.import_ref.8f24d3.2: <witness> = import_ref Main//types, loc12_1, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.ee7 = import_ref Main//types, inst37 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.ee7 = import_ref Main//types, inst38 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.8e0: %Make.type.378 = import_ref Main//types, loc10_30, loaded [concrete = constants.%Make.960]
// CHECK:STDOUT: %Main.import_ref.83a: %destroy.type.dfa = import_ref Main//types, loc11_33, loaded [concrete = constants.%destroy.539]
// CHECK:STDOUT: %Main.import_ref.8f24d3.3: <witness> = import_ref Main//types, loc17_1, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.95d = import_ref Main//types, inst62 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.95d = import_ref Main//types, inst63 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.974: %Make.type.e14 = import_ref Main//types, loc15_24, loaded [concrete = constants.%Make.b0a]
// CHECK:STDOUT: %Main.import_ref.54e: %destroy.type.02f = import_ref Main//types, loc16_33, loaded [concrete = constants.%destroy.8d0]
// CHECK:STDOUT: }
@@ -622,7 +622,7 @@ fn G() { F({}); }
// CHECK:STDOUT:
// CHECK:STDOUT: fn @Make.3() -> %WithAddr [from "types.carbon"];
// CHECK:STDOUT:
// CHECK:STDOUT: fn @destroy.3[addr <unexpected>.inst92: %ptr.b4e]() [from "types.carbon"];
// CHECK:STDOUT: fn @destroy.3[addr <unexpected>.inst93: %ptr.b4e]() [from "types.carbon"];
// CHECK:STDOUT:
// CHECK:STDOUT: --- fail_recovery.carbon
// CHECK:STDOUT:
@@ -72,7 +72,7 @@ var c: C = {};
// CHECK:STDOUT: imports {
// CHECK:STDOUT: %Main.C: type = import_ref Main//base, C, loaded [concrete = constants.%C]
// CHECK:STDOUT: %Main.import_ref.8f2: <witness> = import_ref Main//base, loc4_10, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.2c4 = import_ref Main//base, inst15 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.2c4 = import_ref Main//base, inst16 [no loc], unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -101,8 +101,8 @@ var c: C = {};
// CHECK:STDOUT:
// CHECK:STDOUT: imports {
// CHECK:STDOUT: %Main.C: type = import_ref Main//export, C, loaded [concrete = constants.%C]
// CHECK:STDOUT: %Main.import_ref.8db: <witness> = import_ref Main//export, inst20 [indirect], loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.6a9 = import_ref Main//export, inst21 [indirect], unloaded
// CHECK:STDOUT: %Main.import_ref.8db: <witness> = import_ref Main//export, inst21 [indirect], loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.6a9 = import_ref Main//export, inst22 [indirect], unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
+2 -2
View File
@@ -606,7 +606,7 @@ extern class C;
// CHECK:STDOUT:
// CHECK:STDOUT: imports {
// CHECK:STDOUT: %Main.import_ref.8f2: <witness> = import_ref Main//def, loc4_10, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.2c4 = import_ref Main//def, inst15 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.2c4 = import_ref Main//def, inst16 [no loc], unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -634,7 +634,7 @@ extern class C;
// CHECK:STDOUT:
// CHECK:STDOUT: imports {
// CHECK:STDOUT: %Main.import_ref.8f2: <witness> = import_ref Main//def, loc4_10, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.2c4 = import_ref Main//def, inst15 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.2c4 = import_ref Main//def, inst16 [no loc], unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -439,7 +439,7 @@ fn Var5() {
// CHECK:STDOUT: imports {
// CHECK:STDOUT: %Main.Abstract: type = import_ref Main//lib, Abstract, loaded [concrete = constants.%Abstract]
// CHECK:STDOUT: %Main.import_ref.8f2: <witness> = import_ref Main//lib, loc3_26, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.ee1 = import_ref Main//lib, inst15 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.ee1 = import_ref Main//lib, inst16 [no loc], unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -448,7 +448,7 @@ fn Var5() {
// CHECK:STDOUT: imports {
// CHECK:STDOUT: %Main.Abstract: type = import_ref Main//lib, Abstract, loaded [concrete = constants.%Abstract]
// CHECK:STDOUT: %Main.import_ref.8f2: <witness> = import_ref Main//lib, loc3_26, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.ee1 = import_ref Main//lib, inst15 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.ee1 = import_ref Main//lib, inst16 [no loc], unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -157,7 +157,7 @@ class B {}
// CHECK:STDOUT:
// CHECK:STDOUT: imports {
// CHECK:STDOUT: %Main.import_ref.8f2: <witness> = import_ref Main//redecl_after_def, loc4_10, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.2c4 = import_ref Main//redecl_after_def, inst15 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.2c4 = import_ref Main//redecl_after_def, inst16 [no loc], unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -211,7 +211,7 @@ class B {}
// CHECK:STDOUT: imports {
// CHECK:STDOUT: %Main.C: type = import_ref Main//redef_after_def, C, loaded [concrete = constants.%C.f794a0.1]
// CHECK:STDOUT: %Main.import_ref.8f2: <witness> = import_ref Main//redef_after_def, loc4_10, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.2c4 = import_ref Main//redef_after_def, inst15 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.2c4 = import_ref Main//redef_after_def, inst16 [no loc], unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -210,7 +210,7 @@ private class Redecl {}
// CHECK:STDOUT: imports {
// CHECK:STDOUT: %Test.Def: type = import_ref Test//def, Def, loaded [concrete = constants.%Def]
// CHECK:STDOUT: %Test.import_ref.8f2: <witness> = import_ref Test//def, loc4_20, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Test.import_ref.4ce = import_ref Test//def, inst15 [no loc], unloaded
// CHECK:STDOUT: %Test.import_ref.4ce = import_ref Test//def, inst16 [no loc], unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -323,7 +323,7 @@ private class Redecl {}
// CHECK:STDOUT: imports {
// CHECK:STDOUT: %Test.ForwardWithDef: type = import_ref Test//forward_with_def, ForwardWithDef, loaded [concrete = constants.%ForwardWithDef]
// CHECK:STDOUT: %Test.import_ref.8f2: <witness> = import_ref Test//forward_with_def, loc6_23, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Test.import_ref.414 = import_ref Test//forward_with_def, inst15 [no loc], unloaded
// CHECK:STDOUT: %Test.import_ref.414 = import_ref Test//forward_with_def, inst16 [no loc], unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -156,7 +156,7 @@ var x: () = D.C.F();
// CHECK:STDOUT: imports {
// CHECK:STDOUT: %Main.C: type = import_ref Main//a, C, loaded [concrete = constants.%C]
// CHECK:STDOUT: %Main.import_ref.8f2: <witness> = import_ref Main//a, loc6_1, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.2c4 = import_ref Main//a, inst15 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.2c4 = import_ref Main//a, inst16 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.2cf = import_ref Main//a, loc5_10, unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -200,9 +200,9 @@ var x: () = D.C.F();
// CHECK:STDOUT:
// CHECK:STDOUT: imports {
// CHECK:STDOUT: %Main.C: type = import_ref Main//c, C, loaded [concrete = constants.%C]
// CHECK:STDOUT: %Main.import_ref.8db: <witness> = import_ref Main//c, inst20 [indirect], loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.6a9 = import_ref Main//c, inst21 [indirect], unloaded
// CHECK:STDOUT: %Main.import_ref.230 = import_ref Main//c, inst22 [indirect], unloaded
// CHECK:STDOUT: %Main.import_ref.8db: <witness> = import_ref Main//c, inst21 [indirect], loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.6a9 = import_ref Main//c, inst22 [indirect], unloaded
// CHECK:STDOUT: %Main.import_ref.230 = import_ref Main//c, inst23 [indirect], unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -261,7 +261,7 @@ var x: () = D.C.F();
// CHECK:STDOUT: imports {
// CHECK:STDOUT: %Main.C: type = import_ref Main//a, C, loaded [concrete = constants.%C]
// CHECK:STDOUT: %Main.import_ref.8f2: <witness> = import_ref Main//a, loc6_1, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.2c4 = import_ref Main//a, inst15 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.2c4 = import_ref Main//a, inst16 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.943: %F.type = import_ref Main//a, loc5_10, loaded [concrete = constants.%F]
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -315,9 +315,9 @@ var x: () = D.C.F();
// CHECK:STDOUT:
// CHECK:STDOUT: imports {
// CHECK:STDOUT: %Main.C: type = import_ref Main//c, C, loaded [concrete = constants.%C]
// CHECK:STDOUT: %Main.import_ref.8db: <witness> = import_ref Main//c, inst20 [indirect], loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.6a9 = import_ref Main//c, inst21 [indirect], unloaded
// CHECK:STDOUT: %Main.import_ref.5d3: %F.type = import_ref Main//c, inst22 [indirect], loaded [concrete = constants.%F]
// CHECK:STDOUT: %Main.import_ref.8db: <witness> = import_ref Main//c, inst21 [indirect], loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.6a9 = import_ref Main//c, inst22 [indirect], unloaded
// CHECK:STDOUT: %Main.import_ref.5d3: %F.type = import_ref Main//c, inst23 [indirect], loaded [concrete = constants.%F]
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -370,9 +370,9 @@ var x: () = D.C.F();
// CHECK:STDOUT:
// CHECK:STDOUT: imports {
// CHECK:STDOUT: %Main.C: type = import_ref Main//c, C, loaded [concrete = constants.%C]
// CHECK:STDOUT: %Main.import_ref.8db: <witness> = import_ref Main//c, inst20 [indirect], loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.6a9 = import_ref Main//c, inst21 [indirect], unloaded
// CHECK:STDOUT: %Main.import_ref.5d3: %F.type = import_ref Main//c, inst22 [indirect], loaded [concrete = constants.%F]
// CHECK:STDOUT: %Main.import_ref.8db: <witness> = import_ref Main//c, inst21 [indirect], loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.6a9 = import_ref Main//c, inst22 [indirect], unloaded
// CHECK:STDOUT: %Main.import_ref.5d3: %F.type = import_ref Main//c, inst23 [indirect], loaded [concrete = constants.%F]
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -427,11 +427,11 @@ var x: () = D.C.F();
// CHECK:STDOUT: imports {
// CHECK:STDOUT: %Main.D: type = import_ref Main//e, D, loaded [concrete = constants.%D]
// CHECK:STDOUT: %Main.import_ref.8f2: <witness> = import_ref Main//e, loc8_1, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.cab = import_ref Main//e, inst17 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.cab = import_ref Main//e, inst18 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.bf1: type = import_ref Main//e, loc7_9, loaded [concrete = constants.%C]
// CHECK:STDOUT: %Main.import_ref.8f3: <witness> = import_ref Main//e, inst23 [indirect], loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.db8 = import_ref Main//e, inst24 [indirect], unloaded
// CHECK:STDOUT: %Main.import_ref.c85: %F.type = import_ref Main//e, inst25 [indirect], loaded [concrete = constants.%F]
// CHECK:STDOUT: %Main.import_ref.8f3: <witness> = import_ref Main//e, inst24 [indirect], loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.db8 = import_ref Main//e, inst25 [indirect], unloaded
// CHECK:STDOUT: %Main.import_ref.c85: %F.type = import_ref Main//e, inst26 [indirect], loaded [concrete = constants.%F]
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -495,11 +495,11 @@ var x: () = D.C.F();
// CHECK:STDOUT: imports {
// CHECK:STDOUT: %Main.D: type = import_ref Main//e, D, loaded [concrete = constants.%D]
// CHECK:STDOUT: %Main.import_ref.8f2: <witness> = import_ref Main//e, loc8_1, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.cab = import_ref Main//e, inst17 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.cab = import_ref Main//e, inst18 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.bf1: type = import_ref Main//e, loc7_9, loaded [concrete = constants.%C]
// CHECK:STDOUT: %Main.import_ref.8f3: <witness> = import_ref Main//e, inst23 [indirect], loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.db8 = import_ref Main//e, inst24 [indirect], unloaded
// CHECK:STDOUT: %Main.import_ref.c85: %F.type = import_ref Main//e, inst25 [indirect], loaded [concrete = constants.%F]
// CHECK:STDOUT: %Main.import_ref.8f3: <witness> = import_ref Main//e, inst24 [indirect], loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.db8 = import_ref Main//e, inst25 [indirect], unloaded
// CHECK:STDOUT: %Main.import_ref.c85: %F.type = import_ref Main//e, inst26 [indirect], loaded [concrete = constants.%F]
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -567,7 +567,7 @@ fn Base.F[addr self: Base*]() {
// CHECK:STDOUT: %Main.C: type = import_ref Main//two_file, C, loaded [concrete = constants.%C]
// CHECK:STDOUT: %Main.D: type = import_ref Main//two_file, D, loaded [concrete = constants.%C]
// CHECK:STDOUT: %Main.import_ref.8f2: <witness> = import_ref Main//two_file, loc4_10, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.2c4 = import_ref Main//two_file, inst15 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.2c4 = import_ref Main//two_file, inst16 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.f97b44.1: %C = import_ref Main//two_file, loc7_11, loaded [symbolic = @Foo.%a.1 (constants.%a)]
// CHECK:STDOUT: %Main.import_ref.f97b44.2: %C = import_ref Main//two_file, loc8_11, loaded [symbolic = @Bar.%a.1 (constants.%a)]
// CHECK:STDOUT: }
@@ -940,7 +940,7 @@ fn Base.F[addr self: Base*]() {
// CHECK:STDOUT: imports {
// CHECK:STDOUT: %Main.C: type = import_ref Main//alias_two_file, C, loaded [concrete = constants.%C]
// CHECK:STDOUT: %Main.import_ref.8f2: <witness> = import_ref Main//alias_two_file, loc4_10, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.2c4 = import_ref Main//alias_two_file, inst15 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.2c4 = import_ref Main//alias_two_file, inst16 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.f97: %C = import_ref Main//alias_two_file, loc6_11, loaded [symbolic = @Foo.%a.1 (constants.%a)]
// CHECK:STDOUT: }
// CHECK:STDOUT:
+3 -3
View File
@@ -413,7 +413,7 @@ class T2 {
// CHECK:STDOUT: }
// CHECK:STDOUT: %Modifiers.Base: type = import_ref Modifiers//default, Base, loaded [concrete = constants.%Base]
// CHECK:STDOUT: %Modifiers.import_ref.05e: <witness> = import_ref Modifiers//default, loc6_1, loaded [concrete = constants.%complete_type.513]
// CHECK:STDOUT: %Modifiers.import_ref.1f3 = import_ref Modifiers//default, inst17 [no loc], unloaded
// CHECK:STDOUT: %Modifiers.import_ref.1f3 = import_ref Modifiers//default, inst18 [no loc], unloaded
// CHECK:STDOUT: %Modifiers.import_ref.2cc = import_ref Modifiers//default, loc5_29, unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -518,7 +518,7 @@ class T2 {
// CHECK:STDOUT: }
// CHECK:STDOUT: %Modifiers.Base: type = import_ref Modifiers//default, Base, loaded [concrete = constants.%Base]
// CHECK:STDOUT: %Modifiers.import_ref.05e: <witness> = import_ref Modifiers//default, loc6_1, loaded [concrete = constants.%complete_type.513]
// CHECK:STDOUT: %Modifiers.import_ref.1f3 = import_ref Modifiers//default, inst17 [no loc], unloaded
// CHECK:STDOUT: %Modifiers.import_ref.1f3 = import_ref Modifiers//default, inst18 [no loc], unloaded
// CHECK:STDOUT: %Modifiers.import_ref.2cc = import_ref Modifiers//default, loc5_29, unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -593,7 +593,7 @@ class T2 {
// CHECK:STDOUT: %Modifiers.Base: type = import_ref Modifiers//default, Base, loaded [concrete = constants.%Base]
// CHECK:STDOUT: %Modifiers.import_ref.ace = import_ref Modifiers//default, loc6_1, unloaded
// CHECK:STDOUT: %Modifiers.import_ref.05e: <witness> = import_ref Modifiers//default, loc6_1, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Modifiers.import_ref.1f3 = import_ref Modifiers//default, inst17 [no loc], unloaded
// CHECK:STDOUT: %Modifiers.import_ref.1f3 = import_ref Modifiers//default, inst18 [no loc], unloaded
// CHECK:STDOUT: %Modifiers.import_ref.2cc = import_ref Modifiers//default, loc5_29, unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -130,10 +130,10 @@ fn F() {
// CHECK:STDOUT: .BitAnd = %Core.BitAnd
// CHECK:STDOUT: import Core//prelude
// CHECK:STDOUT: }
// CHECK:STDOUT: %Core.import_ref.ad0 = import_ref Core//prelude, inst101 [no loc], unloaded
// CHECK:STDOUT: %Core.import_ref.ad0 = import_ref Core//prelude, inst102 [no loc], unloaded
// CHECK:STDOUT: %Core.import_ref.a46: %BitAnd.assoc_type = import_ref Core//prelude, loc18_41, loaded [concrete = constants.%assoc0.d45]
// CHECK:STDOUT: %Core.Op = import_ref Core//prelude, Op, unloaded
// CHECK:STDOUT: %Core.import_ref.040: %BitAnd.type = import_ref Core//prelude, inst101 [no loc], loaded [symbolic = constants.%Self.25f]
// CHECK:STDOUT: %Core.import_ref.040: %BitAnd.type = import_ref Core//prelude, inst102 [no loc], loaded [symbolic = constants.%Self.25f]
// CHECK:STDOUT: %Core.import_ref.51c: <witness> = import_ref Core//prelude, loc21_36, loaded [symbolic = @impl.f92.%impl_witness (constants.%impl_witness.b81)]
// CHECK:STDOUT: %Core.import_ref.5ab3ec.1: type = import_ref Core//prelude, loc21_14, loaded [symbolic = @impl.f92.%T (constants.%T.8b3)]
// CHECK:STDOUT: %Core.import_ref.583: type = import_ref Core//prelude, loc21_24, loaded [symbolic = @impl.f92.%T (constants.%T.8b3)]
@@ -141,10 +141,10 @@ fn CallsWithTypeExplicit(U:! type) {
// CHECK:STDOUT: .BitAnd = %Core.BitAnd
// CHECK:STDOUT: import Core//prelude
// CHECK:STDOUT: }
// CHECK:STDOUT: %Core.import_ref.ad0 = import_ref Core//prelude, inst101 [no loc], unloaded
// CHECK:STDOUT: %Core.import_ref.ad0 = import_ref Core//prelude, inst102 [no loc], unloaded
// CHECK:STDOUT: %Core.import_ref.a46: %BitAnd.assoc_type = import_ref Core//prelude, loc18_41, loaded [concrete = constants.%assoc0]
// CHECK:STDOUT: %Core.Op = import_ref Core//prelude, Op, unloaded
// CHECK:STDOUT: %Core.import_ref.040: %BitAnd.type = import_ref Core//prelude, inst101 [no loc], loaded [symbolic = constants.%Self.25f]
// CHECK:STDOUT: %Core.import_ref.040: %BitAnd.type = import_ref Core//prelude, inst102 [no loc], loaded [symbolic = constants.%Self.25f]
// CHECK:STDOUT: %Core.import_ref.51c: <witness> = import_ref Core//prelude, loc21_36, loaded [symbolic = @impl.%impl_witness (constants.%impl_witness.b81)]
// CHECK:STDOUT: %Core.import_ref.5ab3ec.1: type = import_ref Core//prelude, loc21_14, loaded [symbolic = @impl.%T (constants.%T.8b3)]
// CHECK:STDOUT: %Core.import_ref.583: type = import_ref Core//prelude, loc21_24, loaded [symbolic = @impl.%T (constants.%T.8b3)]
@@ -420,10 +420,10 @@ fn CallsWithTypeExplicit(U:! type) {
// CHECK:STDOUT: .BitAnd = %Core.BitAnd
// CHECK:STDOUT: import Core//prelude
// CHECK:STDOUT: }
// CHECK:STDOUT: %Core.import_ref.ad0 = import_ref Core//prelude, inst101 [no loc], unloaded
// CHECK:STDOUT: %Core.import_ref.ad0 = import_ref Core//prelude, inst102 [no loc], unloaded
// CHECK:STDOUT: %Core.import_ref.a46: %BitAnd.assoc_type = import_ref Core//prelude, loc18_41, loaded [concrete = constants.%assoc0]
// CHECK:STDOUT: %Core.Op = import_ref Core//prelude, Op, unloaded
// CHECK:STDOUT: %Core.import_ref.040: %BitAnd.type = import_ref Core//prelude, inst101 [no loc], loaded [symbolic = constants.%Self.25f]
// CHECK:STDOUT: %Core.import_ref.040: %BitAnd.type = import_ref Core//prelude, inst102 [no loc], loaded [symbolic = constants.%Self.25f]
// CHECK:STDOUT: %Core.import_ref.51c: <witness> = import_ref Core//prelude, loc21_36, loaded [symbolic = @impl.%impl_witness (constants.%impl_witness.b81)]
// CHECK:STDOUT: %Core.import_ref.5ab3ec.1: type = import_ref Core//prelude, loc21_14, loaded [symbolic = @impl.%T (constants.%T)]
// CHECK:STDOUT: %Core.import_ref.583: type = import_ref Core//prelude, loc21_24, loaded [symbolic = @impl.%T (constants.%T)]
@@ -734,10 +734,10 @@ fn CallsWithTypeExplicit(U:! type) {
// CHECK:STDOUT: .BitAnd = %Core.BitAnd
// CHECK:STDOUT: import Core//prelude
// CHECK:STDOUT: }
// CHECK:STDOUT: %Core.import_ref.ad0 = import_ref Core//prelude, inst101 [no loc], unloaded
// CHECK:STDOUT: %Core.import_ref.ad0 = import_ref Core//prelude, inst102 [no loc], unloaded
// CHECK:STDOUT: %Core.import_ref.a46: %BitAnd.assoc_type = import_ref Core//prelude, loc18_41, loaded [concrete = constants.%assoc0]
// CHECK:STDOUT: %Core.Op = import_ref Core//prelude, Op, unloaded
// CHECK:STDOUT: %Core.import_ref.040: %BitAnd.type = import_ref Core//prelude, inst101 [no loc], loaded [symbolic = constants.%Self.25f]
// CHECK:STDOUT: %Core.import_ref.040: %BitAnd.type = import_ref Core//prelude, inst102 [no loc], loaded [symbolic = constants.%Self.25f]
// CHECK:STDOUT: %Core.import_ref.51c: <witness> = import_ref Core//prelude, loc21_36, loaded [symbolic = @impl.f92.%impl_witness (constants.%impl_witness.b81)]
// CHECK:STDOUT: %Core.import_ref.5ab3ec.1: type = import_ref Core//prelude, loc21_14, loaded [symbolic = @impl.f92.%T (constants.%T)]
// CHECK:STDOUT: %Core.import_ref.583: type = import_ref Core//prelude, loc21_24, loaded [symbolic = @impl.f92.%T (constants.%T)]
@@ -103,11 +103,11 @@ fn G(holds_to: HoldsType((RuntimeConvertTo, ))) {
// CHECK:STDOUT: }
// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic]
// CHECK:STDOUT: %Core.import_ref.5ab3ec.1: type = import_ref Core//prelude, loc12_22, loaded [symbolic = @ImplicitAs.%Dest (constants.%Dest)]
// CHECK:STDOUT: %Core.import_ref.ff5 = import_ref Core//prelude, inst66 [no loc], unloaded
// CHECK:STDOUT: %Core.import_ref.ff5 = import_ref Core//prelude, inst67 [no loc], unloaded
// CHECK:STDOUT: %Core.import_ref.492: @ImplicitAs.%ImplicitAs.assoc_type (%ImplicitAs.assoc_type.ca0) = import_ref Core//prelude, loc14_35, loaded [symbolic = @ImplicitAs.%assoc0 (constants.%assoc0.dc0)]
// CHECK:STDOUT: %Core.Convert: @ImplicitAs.%Convert.type (%Convert.type.275) = import_ref Core//prelude, Convert, loaded [symbolic = @ImplicitAs.%Convert (constants.%Convert.42e)]
// CHECK:STDOUT: %Core.import_ref.5ab3ec.2: type = import_ref Core//prelude, loc12_22, loaded [symbolic = @ImplicitAs.%Dest (constants.%Dest)]
// CHECK:STDOUT: %Core.import_ref.ce1: @ImplicitAs.%ImplicitAs.type (%ImplicitAs.type.d62) = import_ref Core//prelude, inst66 [no loc], loaded [symbolic = @ImplicitAs.%Self (constants.%Self.519)]
// CHECK:STDOUT: %Core.import_ref.ce1: @ImplicitAs.%ImplicitAs.type (%ImplicitAs.type.d62) = import_ref Core//prelude, inst67 [no loc], loaded [symbolic = @ImplicitAs.%Self (constants.%Self.519)]
// CHECK:STDOUT: %Core.import_ref.1c7: @ImplicitAs.%Convert.type (%Convert.type.275) = import_ref Core//prelude, loc14_35, loaded [symbolic = @ImplicitAs.%Convert (constants.%Convert.42e)]
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -177,10 +177,10 @@ fn F(T: Z(C)) -> T.(Z(C).X) {
// CHECK:STDOUT: .BitAnd = %Core.BitAnd
// CHECK:STDOUT: import Core//prelude
// CHECK:STDOUT: }
// CHECK:STDOUT: %Core.import_ref.ad0 = import_ref Core//prelude, inst101 [no loc], unloaded
// CHECK:STDOUT: %Core.import_ref.ad0 = import_ref Core//prelude, inst102 [no loc], unloaded
// CHECK:STDOUT: %Core.import_ref.a46: %BitAnd.assoc_type = import_ref Core//prelude, loc18_41, loaded [concrete = constants.%assoc0]
// CHECK:STDOUT: %Core.Op = import_ref Core//prelude, Op, unloaded
// CHECK:STDOUT: %Core.import_ref.040: %BitAnd.type = import_ref Core//prelude, inst101 [no loc], loaded [symbolic = constants.%Self.25f]
// CHECK:STDOUT: %Core.import_ref.040: %BitAnd.type = import_ref Core//prelude, inst102 [no loc], loaded [symbolic = constants.%Self.25f]
// CHECK:STDOUT: %Core.import_ref.51c: <witness> = import_ref Core//prelude, loc21_36, loaded [symbolic = @impl.%impl_witness (constants.%impl_witness.b81)]
// CHECK:STDOUT: %Core.import_ref.5ab3ec.1: type = import_ref Core//prelude, loc21_14, loaded [symbolic = @impl.%T (constants.%T)]
// CHECK:STDOUT: %Core.import_ref.583: type = import_ref Core//prelude, loc21_24, loaded [symbolic = @impl.%T (constants.%T)]
@@ -402,6 +402,7 @@ fn F(T: Z(C)) -> T.(Z(C).X) {
// CHECK:STDOUT: %T.loc8_20.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc8_20.2 (constants.%T)]
// CHECK:STDOUT: }
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (constants.%empty_tuple.type), @impl(constants.%T) [symbolic = @impl.%impl_witness (constants.%impl_witness)]
// CHECK:STDOUT: %impl_witness_assoc_constant: type = impl_witness_assoc_constant constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {
// CHECK:STDOUT: %T.patt: %Z.type.049 = binding_pattern T
// CHECK:STDOUT: %T.param_patt: %Z.type.049 = value_param_pattern %T.patt, call_param0
+3 -2
View File
@@ -892,6 +892,7 @@ interface J {
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (constants.%empty_tuple.type) [concrete = constants.%impl_witness]
// CHECK:STDOUT: %impl_witness_assoc_constant: type = impl_witness_assoc_constant constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
// CHECK:STDOUT: name_binding_decl {
// CHECK:STDOUT: %v.patt: <error> = binding_pattern v
// CHECK:STDOUT: %.loc12_1: <error> = var_pattern %v.patt
@@ -1173,10 +1174,10 @@ interface J {
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [concrete] {
// CHECK:STDOUT: import Core//default
// CHECK:STDOUT: }
// CHECK:STDOUT: %Main.import_ref.e5d = import_ref Main//to_import, inst16 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.e5d = import_ref Main//to_import, inst17 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.33a = import_ref Main//to_import, loc4_8, unloaded
// CHECK:STDOUT: %Main.T = import_ref Main//to_import, T, unloaded
// CHECK:STDOUT: %Main.import_ref.5dd: %I.type = import_ref Main//to_import, inst16 [no loc], loaded [symbolic = constants.%Self.826]
// CHECK:STDOUT: %Main.import_ref.5dd: %I.type = import_ref Main//to_import, inst17 [no loc], loaded [symbolic = constants.%Self.826]
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -671,13 +671,13 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32));
// CHECK:STDOUT: import Core//default
// CHECK:STDOUT: }
// CHECK:STDOUT: %Core.import_ref.5ab3ec.1: type = import_ref Core//default, loc11_14, loaded [symbolic = @As.%T (constants.%T)]
// CHECK:STDOUT: %Core.import_ref.a7c = import_ref Core//default, inst84 [no loc], unloaded
// CHECK:STDOUT: %Core.import_ref.a7c = import_ref Core//default, inst85 [no loc], unloaded
// CHECK:STDOUT: %Core.import_ref.5e1: @As.%As.assoc_type (%As.assoc_type.760) = import_ref Core//default, loc12_32, loaded [symbolic = @As.%assoc0 (constants.%assoc0.97d)]
// CHECK:STDOUT: %Core.Convert.313 = import_ref Core//default, Convert, unloaded
// CHECK:STDOUT: %Core.import_ref.5ab3ec.2: type = import_ref Core//default, loc11_14, loaded [symbolic = @As.%T (constants.%T)]
// CHECK:STDOUT: %Core.import_ref.996: @As.%As.type (%As.type.eed) = import_ref Core//default, inst84 [no loc], loaded [symbolic = @As.%Self (constants.%Self.65a)]
// CHECK:STDOUT: %Core.import_ref.996: @As.%As.type (%As.type.eed) = import_ref Core//default, inst85 [no loc], loaded [symbolic = @As.%Self (constants.%Self.65a)]
// CHECK:STDOUT: %Core.import_ref.708: @As.%Convert.type (%Convert.type.843) = import_ref Core//default, loc12_32, loaded [symbolic = @As.%Convert (constants.%Convert.95f)]
// CHECK:STDOUT: %Core.import_ref.07c = import_ref Core//default, inst40 [no loc], unloaded
// CHECK:STDOUT: %Core.import_ref.07c = import_ref Core//default, inst41 [no loc], unloaded
// CHECK:STDOUT: %Core.import_ref.f6c: %Add.assoc_type = import_ref Core//default, loc8_41, loaded [concrete = constants.%assoc0.c7d]
// CHECK:STDOUT: %Core.Op = import_ref Core//default, Op, unloaded
// CHECK:STDOUT: %Core.import_ref.595: <witness> = import_ref Core//default, loc19_17, loaded [concrete = constants.%impl_witness.bd0]
@@ -687,19 +687,19 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32));
// CHECK:STDOUT: %Core.import_ref.8721d7.1: type = import_ref Core//default, loc23_17, loaded [concrete = Core.IntLiteral]
// CHECK:STDOUT: %Core.import_ref.1e5: type = import_ref Core//default, loc23_28, loaded [concrete = constants.%As.type.a6d]
// CHECK:STDOUT: %Core.import_ref.5ab3ec.3: type = import_ref Core//default, loc15_22, loaded [symbolic = @ImplicitAs.%T (constants.%T)]
// CHECK:STDOUT: %Core.import_ref.ff5 = import_ref Core//default, inst125 [no loc], unloaded
// CHECK:STDOUT: %Core.import_ref.ff5 = import_ref Core//default, inst126 [no loc], unloaded
// CHECK:STDOUT: %Core.import_ref.492: @ImplicitAs.%ImplicitAs.assoc_type (%ImplicitAs.assoc_type.ca0) = import_ref Core//default, loc16_32, loaded [symbolic = @ImplicitAs.%assoc0 (constants.%assoc0.dc001e.2)]
// CHECK:STDOUT: %Core.Convert.e69 = import_ref Core//default, Convert, unloaded
// CHECK:STDOUT: %Core.import_ref.de9: <witness> = import_ref Core//default, loc27_38, loaded [concrete = constants.%impl_witness.39c]
// CHECK:STDOUT: %Core.import_ref.8721d7.2: type = import_ref Core//default, loc27_17, loaded [concrete = Core.IntLiteral]
// CHECK:STDOUT: %Core.import_ref.4d9: type = import_ref Core//default, loc27_36, loaded [concrete = constants.%ImplicitAs.type.61e]
// CHECK:STDOUT: %Core.import_ref.5ab3ec.4: type = import_ref Core//default, loc15_22, loaded [symbolic = @ImplicitAs.%T (constants.%T)]
// CHECK:STDOUT: %Core.import_ref.ce1: @ImplicitAs.%ImplicitAs.type (%ImplicitAs.type.d62) = import_ref Core//default, inst125 [no loc], loaded [symbolic = @ImplicitAs.%Self (constants.%Self.519)]
// CHECK:STDOUT: %Core.import_ref.ce1: @ImplicitAs.%ImplicitAs.type (%ImplicitAs.type.d62) = import_ref Core//default, inst126 [no loc], loaded [symbolic = @ImplicitAs.%Self (constants.%Self.519)]
// CHECK:STDOUT: %Core.import_ref.207961.1 = import_ref Core//default, loc16_32, unloaded
// CHECK:STDOUT: %Core.import_ref.3b6: <witness> = import_ref Core//default, loc31_38, loaded [concrete = constants.%impl_witness.8f3]
// CHECK:STDOUT: %Core.import_ref.c8c7cd.2: type = import_ref Core//default, loc31_6, loaded [concrete = constants.%i32.builtin]
// CHECK:STDOUT: %Core.import_ref.efb: type = import_ref Core//default, loc31_36, loaded [concrete = constants.%ImplicitAs.type.2fd]
// CHECK:STDOUT: %Core.import_ref.442: %Add.type = import_ref Core//default, inst40 [no loc], loaded [symbolic = constants.%Self.a99]
// CHECK:STDOUT: %Core.import_ref.442: %Add.type = import_ref Core//default, inst41 [no loc], loaded [symbolic = constants.%Self.a99]
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -206,7 +206,7 @@ fn CallFAndGIncomplete() {
// CHECK:STDOUT: %Main.ReturnDUsed: %ReturnDUsed.type = import_ref Main//incomplete_return, ReturnDUsed, loaded [concrete = constants.%ReturnDUsed]
// CHECK:STDOUT: %Main.Call = import_ref Main//incomplete_return, Call, unloaded
// CHECK:STDOUT: %Main.import_ref.8f2: <witness> = import_ref Main//incomplete_return, loc37_10, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.cab = import_ref Main//incomplete_return, inst17 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.cab = import_ref Main//incomplete_return, inst18 [no loc], unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -518,7 +518,7 @@ fn Foo(a: const (const C)) {}
// CHECK:STDOUT: %Main.C: type = import_ref Main//two_file, C, loaded [concrete = constants.%C]
// CHECK:STDOUT: %Main.D: type = import_ref Main//two_file, D, loaded [concrete = constants.%C]
// CHECK:STDOUT: %Main.import_ref.8f2: <witness> = import_ref Main//two_file, loc4_10, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.2c4 = import_ref Main//two_file, inst15 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.2c4 = import_ref Main//two_file, inst16 [no loc], unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -850,7 +850,7 @@ fn Foo(a: const (const C)) {}
// CHECK:STDOUT: imports {
// CHECK:STDOUT: %Main.C: type = import_ref Main//alias_two_file, C, loaded [concrete = constants.%C]
// CHECK:STDOUT: %Main.import_ref.8f2: <witness> = import_ref Main//alias_two_file, loc4_10, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.2c4 = import_ref Main//alias_two_file, inst15 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.2c4 = import_ref Main//alias_two_file, inst16 [no loc], unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -135,7 +135,7 @@ fn B() {
// CHECK:STDOUT: import Lib//default
// CHECK:STDOUT: }
// CHECK:STDOUT: %Lib.Z: type = import_ref Lib//default, Z, loaded [concrete = constants.%Z.type]
// CHECK:STDOUT: %Lib.import_ref.f88 = import_ref Lib//default, inst16 [no loc], unloaded
// CHECK:STDOUT: %Lib.import_ref.f88 = import_ref Lib//default, inst17 [no loc], unloaded
// CHECK:STDOUT: %Lib.A: %A.type.fad = import_ref Lib//default, A, loaded [concrete = constants.%A.7a0]
// CHECK:STDOUT: %Lib.import_ref.be7: %Z.type = import_ref Lib//default, loc4_6, loaded [symbolic = @A.2.%T (constants.%T)]
// CHECK:STDOUT: }
@@ -94,7 +94,7 @@ class C {
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32]
// CHECK:STDOUT: }
// CHECK:STDOUT: %x: %i32 = bind_name x, <unexpected>.inst1065.loc27_14
// CHECK:STDOUT: %x: %i32 = bind_name x, <unexpected>.inst1066.loc27_14
// CHECK:STDOUT: name_binding_decl {
// CHECK:STDOUT: %y.patt: %i32 = binding_pattern y
// CHECK:STDOUT: %.loc37: %i32 = var_pattern %y.patt
+4
View File
@@ -176,6 +176,7 @@ fn CallF() {
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT: %impl_witness.loc8: <witness> = impl_witness (constants.%empty_struct) [concrete = constants.%impl_witness.a4f]
// CHECK:STDOUT: %impl_witness_assoc_constant.loc8: %empty_struct_type = impl_witness_assoc_constant constants.%empty_struct [concrete = constants.%empty_struct]
// CHECK:STDOUT: impl_decl @impl.a12 [concrete] {} {
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32]
@@ -200,6 +201,7 @@ fn CallF() {
// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc10_15.2(constants.%int_0.5c6) [concrete = constants.%int_0.6a9]
// CHECK:STDOUT: %.loc10_15.1: %i32 = value_of_initializer %int.convert_checked [concrete = constants.%int_0.6a9]
// CHECK:STDOUT: %.loc10_15.2: %i32 = converted constants.%int_0.5c6, %.loc10_15.1 [concrete = constants.%int_0.6a9]
// CHECK:STDOUT: %impl_witness_assoc_constant.loc10: %i32 = impl_witness_assoc_constant constants.%int_0.6a9 [concrete = constants.%int_0.6a9]
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @I {
@@ -312,6 +314,7 @@ fn CallF() {
// CHECK:STDOUT: }
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (<error>) [concrete = constants.%impl_witness]
// CHECK:STDOUT: %.loc15: %empty_struct_type = converted constants.%int_0, <error> [concrete = <error>]
// CHECK:STDOUT: %impl_witness_assoc_constant: <error> = impl_witness_assoc_constant <error> [concrete = <error>]
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @I {
@@ -445,6 +448,7 @@ fn CallF() {
// CHECK:STDOUT: %.loc18_13.2: init %C = converted constants.%empty_tuple, %Convert.call
// CHECK:STDOUT: %.loc18_13.3: ref %C = temporary %.loc18_13.1, %.loc18_13.2
// CHECK:STDOUT: %.loc18_13.4: %C = bind_value %.loc18_13.3
// CHECK:STDOUT: %impl_witness_assoc_constant: <error> = impl_witness_assoc_constant <error> [concrete = <error>]
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @I {
@@ -37,7 +37,7 @@ class C {
// CHECK:STDOUT: %assoc0: %GenericInterface.assoc_type = assoc_entity element0, @GenericInterface.%F.decl [symbolic]
// CHECK:STDOUT: %C: type = class_type @C [concrete]
// CHECK:STDOUT: %require_complete.70f: <witness> = require_complete_type %GenericInterface.type.3fe [symbolic]
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (invalid), @impl(%T) [symbolic]
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (<error>), @impl(%T) [symbolic]
// CHECK:STDOUT: %F.type.2cb: type = fn_type @F.2, @impl(%T) [symbolic]
// CHECK:STDOUT: %F.4b1: %F.type.2cb = struct_value () [symbolic]
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
@@ -104,7 +104,7 @@ class C {
// CHECK:STDOUT: %T.patt.loc20_23.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc20_23.2 (constants.%T.patt)]
// CHECK:STDOUT: %GenericInterface.type.loc20_54.2: type = facet_type <@GenericInterface, @GenericInterface(%T.loc20_23.2)> [symbolic = %GenericInterface.type.loc20_54.2 (constants.%GenericInterface.type.3fe)]
// CHECK:STDOUT: %require_complete: <witness> = require_complete_type @impl.%GenericInterface.type.loc20_54.2 (%GenericInterface.type.3fe) [symbolic = %require_complete (constants.%require_complete.70f)]
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (invalid), @impl(%T.loc20_23.2) [symbolic = %impl_witness (constants.%impl_witness)]
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (<error>), @impl(%T.loc20_23.2) [symbolic = %impl_witness (constants.%impl_witness)]
// CHECK:STDOUT:
// CHECK:STDOUT: !definition:
// CHECK:STDOUT: %F.type: type = fn_type @F.2, @impl(%T.loc20_23.2) [symbolic = %F.type (constants.%F.type.2cb)]
@@ -137,7 +137,7 @@ class C {
// CHECK:STDOUT: %GenericInterface.type.loc20_54.1: type = facet_type <@GenericInterface, @GenericInterface(constants.%T)> [symbolic = %GenericInterface.type.loc20_54.2 (constants.%GenericInterface.type.3fe)]
// CHECK:STDOUT: %T.loc20_23.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc20_23.2 (constants.%T)]
// CHECK:STDOUT: }
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (invalid), @impl(constants.%T) [symbolic = @impl.%impl_witness (constants.%impl_witness)]
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (<error>), @impl(constants.%T) [symbolic = @impl.%impl_witness (constants.%impl_witness)]
// CHECK:STDOUT: %.loc20: type = specific_constant @impl.%GenericInterface.type.loc20_54.1, @impl(constants.%T) [symbolic = constants.%GenericInterface.type.3fe]
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete = constants.%complete_type]
// CHECK:STDOUT: complete_type_witness = %complete_type
+3 -3
View File
@@ -1035,7 +1035,7 @@ fn G(x: A) {
// CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic]
// CHECK:STDOUT: %U: type = bind_symbolic_name U, 1 [symbolic]
// CHECK:STDOUT: %U.patt: type = symbolic_binding_pattern U, 1 [symbolic]
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (invalid), @impl(%T, %U) [symbolic]
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (<error>), @impl(%T, %U) [symbolic]
// CHECK:STDOUT: %F.type.56e: type = fn_type @F.2, @impl(%T, %U) [symbolic]
// CHECK:STDOUT: %F.9b8: %F.type.56e = struct_value () [symbolic]
// CHECK:STDOUT: %require_complete: <witness> = require_complete_type %T [symbolic]
@@ -1068,7 +1068,7 @@ fn G(x: A) {
// CHECK:STDOUT: %T.loc12_14.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc12_14.2 (constants.%T)]
// CHECK:STDOUT: %U.loc12_24.1: type = bind_symbolic_name U, 1 [symbolic = %U.loc12_24.2 (constants.%U)]
// CHECK:STDOUT: }
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (invalid), @impl(constants.%T, constants.%U) [symbolic = @impl.%impl_witness (constants.%impl_witness)]
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (<error>), @impl(constants.%T, constants.%U) [symbolic = @impl.%impl_witness (constants.%impl_witness)]
// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] {
// CHECK:STDOUT: %x.patt: %empty_struct_type = binding_pattern x
// CHECK:STDOUT: %x.param_patt: %empty_struct_type = value_param_pattern %x.patt, call_param0
@@ -1109,7 +1109,7 @@ fn G(x: A) {
// CHECK:STDOUT: %T.patt.loc12_14.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc12_14.2 (constants.%T.patt)]
// CHECK:STDOUT: %U.loc12_24.2: type = bind_symbolic_name U, 1 [symbolic = %U.loc12_24.2 (constants.%U)]
// CHECK:STDOUT: %U.patt.loc12_24.2: type = symbolic_binding_pattern U, 1 [symbolic = %U.patt.loc12_24.2 (constants.%U.patt)]
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (invalid), @impl(%T.loc12_14.2, %U.loc12_24.2) [symbolic = %impl_witness (constants.%impl_witness)]
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (<error>), @impl(%T.loc12_14.2, %U.loc12_24.2) [symbolic = %impl_witness (constants.%impl_witness)]
// CHECK:STDOUT:
// CHECK:STDOUT: !definition:
// CHECK:STDOUT: %F.type: type = fn_type @F.2, @impl(%T.loc12_14.2, %U.loc12_24.2) [symbolic = %F.type (constants.%F.type.56e)]
+50 -50
View File
@@ -360,12 +360,12 @@ fn Test(c: HasExtraInterfaces.C(type)) {
// CHECK:STDOUT: }
// CHECK:STDOUT: %PackageA.C: type = import_ref PackageA//default, C, loaded [concrete = constants.%C]
// CHECK:STDOUT: %PackageA.import_ref.8f2: <witness> = import_ref PackageA//default, loc8_10, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %PackageA.import_ref.2c4 = import_ref PackageA//default, inst37 [no loc], unloaded
// CHECK:STDOUT: %PackageA.import_ref.2c4 = import_ref PackageA//default, inst38 [no loc], unloaded
// CHECK:STDOUT: %PackageA.HasF: type = import_ref PackageA//default, HasF, loaded [concrete = constants.%HasF.type]
// CHECK:STDOUT: %PackageA.import_ref.28c = import_ref PackageA//default, inst16 [no loc], unloaded
// CHECK:STDOUT: %PackageA.import_ref.28c = import_ref PackageA//default, inst17 [no loc], unloaded
// CHECK:STDOUT: %PackageA.import_ref.c63 = import_ref PackageA//default, loc5_21, unloaded
// CHECK:STDOUT: %PackageA.F: %F.type.dbc = import_ref PackageA//default, F, loaded [concrete = constants.%F.a2b]
// CHECK:STDOUT: %PackageA.import_ref.e73: %HasF.type = import_ref PackageA//default, inst16 [no loc], loaded [symbolic = constants.%Self.cf3]
// CHECK:STDOUT: %PackageA.import_ref.e73: %HasF.type = import_ref PackageA//default, inst17 [no loc], loaded [symbolic = constants.%Self.cf3]
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -569,12 +569,12 @@ fn Test(c: HasExtraInterfaces.C(type)) {
// CHECK:STDOUT: }
// CHECK:STDOUT: %PackageA.C: type = import_ref PackageA//default, C, loaded [concrete = constants.%C]
// CHECK:STDOUT: %PackageA.import_ref.8f2: <witness> = import_ref PackageA//default, loc8_10, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %PackageA.import_ref.2c4 = import_ref PackageA//default, inst37 [no loc], unloaded
// CHECK:STDOUT: %PackageA.import_ref.2c4 = import_ref PackageA//default, inst38 [no loc], unloaded
// CHECK:STDOUT: %PackageA.HasF: type = import_ref PackageA//default, HasF, loaded [concrete = constants.%HasF.type]
// CHECK:STDOUT: %PackageA.import_ref.28c = import_ref PackageA//default, inst16 [no loc], unloaded
// CHECK:STDOUT: %PackageA.import_ref.28c = import_ref PackageA//default, inst17 [no loc], unloaded
// CHECK:STDOUT: %PackageA.import_ref.b36: %HasF.assoc_type = import_ref PackageA//default, loc5_21, loaded [concrete = constants.%assoc0]
// CHECK:STDOUT: %PackageA.F = import_ref PackageA//default, F, unloaded
// CHECK:STDOUT: %PackageA.import_ref.e73: %HasF.type = import_ref PackageA//default, inst16 [no loc], loaded [symbolic = constants.%Self]
// CHECK:STDOUT: %PackageA.import_ref.e73: %HasF.type = import_ref PackageA//default, inst17 [no loc], loaded [symbolic = constants.%Self]
// CHECK:STDOUT: %PackageA.import_ref.a71: <witness> = import_ref PackageA//default, loc11_16, loaded [concrete = constants.%impl_witness]
// CHECK:STDOUT: %PackageA.import_ref.29a: type = import_ref PackageA//default, loc11_6, loaded [concrete = constants.%C]
// CHECK:STDOUT: %PackageA.import_ref.e8c: type = import_ref PackageA//default, loc11_11, loaded [concrete = constants.%HasF.type]
@@ -679,18 +679,18 @@ fn Test(c: HasExtraInterfaces.C(type)) {
// CHECK:STDOUT: }
// CHECK:STDOUT: %PackageB.D: type = import_ref PackageB//default, D, loaded [concrete = constants.%D]
// CHECK:STDOUT: %PackageB.import_ref.8f2: <witness> = import_ref PackageB//default, loc10_10, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %PackageB.import_ref.cab = import_ref PackageB//default, inst39 [no loc], unloaded
// CHECK:STDOUT: %PackageB.import_ref.cab = import_ref PackageB//default, inst40 [no loc], unloaded
// CHECK:STDOUT: %PackageA.HasF: type = import_ref PackageA//default, HasF, loaded [concrete = constants.%HasF.type]
// CHECK:STDOUT: %PackageA.import_ref.28c = import_ref PackageA//default, inst16 [no loc], unloaded
// CHECK:STDOUT: %PackageA.import_ref.28c = import_ref PackageA//default, inst17 [no loc], unloaded
// CHECK:STDOUT: %PackageA.import_ref.b36: %HasF.assoc_type = import_ref PackageA//default, loc5_21, loaded [concrete = constants.%assoc0]
// CHECK:STDOUT: %PackageA.F = import_ref PackageA//default, F, unloaded
// CHECK:STDOUT: %PackageA.import_ref.e73: %HasF.type = import_ref PackageA//default, inst16 [no loc], loaded [symbolic = constants.%Self.cf3]
// CHECK:STDOUT: %PackageA.import_ref.e73: %HasF.type = import_ref PackageA//default, inst17 [no loc], loaded [symbolic = constants.%Self.cf3]
// CHECK:STDOUT: %PackageA.import_ref.0e8 = import_ref PackageA//default, loc11_16, unloaded
// CHECK:STDOUT: %PackageA.import_ref.8f2: <witness> = import_ref PackageA//default, loc8_10, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %PackageA.import_ref.2c4 = import_ref PackageA//default, inst37 [no loc], unloaded
// CHECK:STDOUT: %PackageA.import_ref.2c4 = import_ref PackageA//default, inst38 [no loc], unloaded
// CHECK:STDOUT: %PackageA.import_ref.29a: type = import_ref PackageA//default, loc11_6, loaded [concrete = constants.%C]
// CHECK:STDOUT: %PackageA.import_ref.e8c: type = import_ref PackageA//default, loc11_11, loaded [concrete = constants.%HasF.type]
// CHECK:STDOUT: %PackageB.import_ref.5d8 = import_ref PackageB//default, inst18 [no loc], unloaded
// CHECK:STDOUT: %PackageB.import_ref.5d8 = import_ref PackageB//default, inst19 [no loc], unloaded
// CHECK:STDOUT: %PackageB.import_ref.910 = import_ref PackageB//default, loc7_21, unloaded
// CHECK:STDOUT: %PackageB.G = import_ref PackageB//default, G, unloaded
// CHECK:STDOUT: %PackageB.import_ref.fa0 = import_ref PackageB//default, loc13_25, unloaded
@@ -834,13 +834,13 @@ fn Test(c: HasExtraInterfaces.C(type)) {
// CHECK:STDOUT: }
// CHECK:STDOUT: %PackageA.C: type = import_ref PackageA//default, C, loaded [concrete = constants.%C]
// CHECK:STDOUT: %PackageA.import_ref.8f2: <witness> = import_ref PackageA//default, loc8_10, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %PackageA.import_ref.2c4 = import_ref PackageA//default, inst37 [no loc], unloaded
// CHECK:STDOUT: %PackageA.import_ref.2c4 = import_ref PackageA//default, inst38 [no loc], unloaded
// CHECK:STDOUT: %PackageB.HasG: type = import_ref PackageB//default, HasG, loaded [concrete = constants.%HasG.type]
// CHECK:STDOUT: %PackageB.import_ref.5d8 = import_ref PackageB//default, inst18 [no loc], unloaded
// CHECK:STDOUT: %PackageB.import_ref.5d8 = import_ref PackageB//default, inst19 [no loc], unloaded
// CHECK:STDOUT: %PackageB.import_ref.6c2: %HasG.assoc_type = import_ref PackageB//default, loc7_21, loaded [concrete = constants.%assoc0]
// CHECK:STDOUT: %PackageB.G = import_ref PackageB//default, G, unloaded
// CHECK:STDOUT: %PackageB.import_ref.ef5: %HasG.type = import_ref PackageB//default, inst18 [no loc], loaded [symbolic = constants.%Self.fcb]
// CHECK:STDOUT: %PackageA.import_ref.28c = import_ref PackageA//default, inst16 [no loc], unloaded
// CHECK:STDOUT: %PackageB.import_ref.ef5: %HasG.type = import_ref PackageB//default, inst19 [no loc], loaded [symbolic = constants.%Self.fcb]
// CHECK:STDOUT: %PackageA.import_ref.28c = import_ref PackageA//default, inst17 [no loc], unloaded
// CHECK:STDOUT: %PackageA.import_ref.c63 = import_ref PackageA//default, loc5_21, unloaded
// CHECK:STDOUT: %PackageA.F = import_ref PackageA//default, F, unloaded
// CHECK:STDOUT: %PackageA.import_ref.0e8 = import_ref PackageA//default, loc11_16, unloaded
@@ -851,7 +851,7 @@ fn Test(c: HasExtraInterfaces.C(type)) {
// CHECK:STDOUT: %PackageB.import_ref.cee586.1: type = import_ref PackageB//default, loc13_20, loaded [concrete = constants.%HasG.type]
// CHECK:STDOUT: %PackageB.import_ref.7db = import_ref PackageB//default, loc18_25, unloaded
// CHECK:STDOUT: %PackageB.import_ref.8f2: <witness> = import_ref PackageB//default, loc10_10, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %PackageB.import_ref.cab = import_ref PackageB//default, inst39 [no loc], unloaded
// CHECK:STDOUT: %PackageB.import_ref.cab = import_ref PackageB//default, inst40 [no loc], unloaded
// CHECK:STDOUT: %PackageB.import_ref.aa9f8a.1: type = import_ref PackageB//default, loc18_6, loaded [concrete = constants.%D]
// CHECK:STDOUT: %PackageB.import_ref.831: type = import_ref PackageB//default, loc18_19, loaded [concrete = constants.%HasF.type]
// CHECK:STDOUT: %PackageB.import_ref.231 = import_ref PackageB//default, loc23_16, unloaded
@@ -986,19 +986,19 @@ fn Test(c: HasExtraInterfaces.C(type)) {
// CHECK:STDOUT: }
// CHECK:STDOUT: %PackageB.D: type = import_ref PackageB//default, D, loaded [concrete = constants.%D]
// CHECK:STDOUT: %PackageB.import_ref.8f2: <witness> = import_ref PackageB//default, loc10_10, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %PackageB.import_ref.cab = import_ref PackageB//default, inst39 [no loc], unloaded
// CHECK:STDOUT: %PackageB.import_ref.cab = import_ref PackageB//default, inst40 [no loc], unloaded
// CHECK:STDOUT: %PackageB.HasG: type = import_ref PackageB//default, HasG, loaded [concrete = constants.%HasG.type]
// CHECK:STDOUT: %PackageB.import_ref.5d8 = import_ref PackageB//default, inst18 [no loc], unloaded
// CHECK:STDOUT: %PackageB.import_ref.5d8 = import_ref PackageB//default, inst19 [no loc], unloaded
// CHECK:STDOUT: %PackageB.import_ref.6c2: %HasG.assoc_type = import_ref PackageB//default, loc7_21, loaded [concrete = constants.%assoc0]
// CHECK:STDOUT: %PackageB.G = import_ref PackageB//default, G, unloaded
// CHECK:STDOUT: %PackageB.import_ref.ef5: %HasG.type = import_ref PackageB//default, inst18 [no loc], loaded [symbolic = constants.%Self.fcb]
// CHECK:STDOUT: %PackageB.import_ref.ef5: %HasG.type = import_ref PackageB//default, inst19 [no loc], loaded [symbolic = constants.%Self.fcb]
// CHECK:STDOUT: %PackageB.import_ref.fa0 = import_ref PackageB//default, loc13_25, unloaded
// CHECK:STDOUT: %PackageB.import_ref.8db: <witness> = import_ref PackageB//default, inst47 [indirect], loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %PackageB.import_ref.6a9 = import_ref PackageB//default, inst48 [indirect], unloaded
// CHECK:STDOUT: %PackageB.import_ref.8db: <witness> = import_ref PackageB//default, inst48 [indirect], loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %PackageB.import_ref.6a9 = import_ref PackageB//default, inst49 [indirect], unloaded
// CHECK:STDOUT: %PackageB.import_ref.dfb: type = import_ref PackageB//default, loc13_14, loaded [concrete = constants.%C]
// CHECK:STDOUT: %PackageB.import_ref.cee586.1: type = import_ref PackageB//default, loc13_20, loaded [concrete = constants.%HasG.type]
// CHECK:STDOUT: %PackageB.import_ref.96f = import_ref PackageB//default, inst71 [indirect], unloaded
// CHECK:STDOUT: %PackageB.import_ref.a0b = import_ref PackageB//default, inst72 [indirect], unloaded
// CHECK:STDOUT: %PackageB.import_ref.96f = import_ref PackageB//default, inst72 [indirect], unloaded
// CHECK:STDOUT: %PackageB.import_ref.a0b = import_ref PackageB//default, inst73 [indirect], unloaded
// CHECK:STDOUT: %PackageB.F = import_ref PackageB//default, F, unloaded
// CHECK:STDOUT: %PackageB.import_ref.7db = import_ref PackageB//default, loc18_25, unloaded
// CHECK:STDOUT: %PackageB.import_ref.aa9f8a.1: type = import_ref PackageB//default, loc18_6, loaded [concrete = constants.%D]
@@ -1211,10 +1211,10 @@ fn Test(c: HasExtraInterfaces.C(type)) {
// CHECK:STDOUT: import PackageAssociatedInterface//default
// CHECK:STDOUT: }
// CHECK:STDOUT: %PackageAssociatedInterface.Z: type = import_ref PackageAssociatedInterface//default, Z, loaded [concrete = constants.%Z.type]
// CHECK:STDOUT: %PackageAssociatedInterface.import_ref.f88 = import_ref PackageAssociatedInterface//default, inst16 [no loc], unloaded
// CHECK:STDOUT: %PackageAssociatedInterface.import_ref.f88 = import_ref PackageAssociatedInterface//default, inst17 [no loc], unloaded
// CHECK:STDOUT: %PackageAssociatedInterface.import_ref.609: %Z.assoc_type = import_ref PackageAssociatedInterface//default, loc5_21, loaded [concrete = constants.%assoc0]
// CHECK:STDOUT: %PackageAssociatedInterface.H = import_ref PackageAssociatedInterface//default, H, unloaded
// CHECK:STDOUT: %PackageAssociatedInterface.import_ref.d26: %Z.type = import_ref PackageAssociatedInterface//default, inst16 [no loc], loaded [symbolic = constants.%Self]
// CHECK:STDOUT: %PackageAssociatedInterface.import_ref.d26: %Z.type = import_ref PackageAssociatedInterface//default, inst17 [no loc], loaded [symbolic = constants.%Self]
// CHECK:STDOUT: %PackageAssociatedInterface.import_ref.998: <witness> = import_ref PackageAssociatedInterface//default, loc8_14, loaded [concrete = constants.%impl_witness]
// CHECK:STDOUT: %PackageAssociatedInterface.import_ref.e5c: type = import_ref PackageAssociatedInterface//default, loc8_7, loaded [concrete = constants.%empty_tuple.type]
// CHECK:STDOUT: %PackageAssociatedInterface.import_ref.df1: type = import_ref PackageAssociatedInterface//default, loc8_12, loaded [concrete = constants.%Z.type]
@@ -1419,12 +1419,12 @@ fn Test(c: HasExtraInterfaces.C(type)) {
// CHECK:STDOUT: %PackageHasParam.import_ref.5ab: type = import_ref PackageHasParam//default, loc4_16, loaded [symbolic = @AnyParam.%T (constants.%T)]
// CHECK:STDOUT: %PackageHasParam.import_ref.34c: @AnyParam.%T (%T) = import_ref PackageHasParam//default, loc4_26, loaded [symbolic = @AnyParam.%X (constants.%X)]
// CHECK:STDOUT: %PackageHasParam.import_ref.8f2: <witness> = import_ref PackageHasParam//default, loc4_34, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %PackageHasParam.import_ref.601 = import_ref PackageHasParam//default, inst31 [no loc], unloaded
// CHECK:STDOUT: %PackageHasParam.import_ref.601 = import_ref PackageHasParam//default, inst32 [no loc], unloaded
// CHECK:STDOUT: %PackageHasParam.Y: type = import_ref PackageHasParam//default, Y, loaded [concrete = constants.%Y.type]
// CHECK:STDOUT: %PackageHasParam.import_ref.dc1 = import_ref PackageHasParam//default, inst37 [no loc], unloaded
// CHECK:STDOUT: %PackageHasParam.import_ref.dc1 = import_ref PackageHasParam//default, inst38 [no loc], unloaded
// CHECK:STDOUT: %PackageHasParam.import_ref.f69: %Y.assoc_type = import_ref PackageHasParam//default, loc7_22, loaded [concrete = constants.%assoc0]
// CHECK:STDOUT: %PackageHasParam.K: %K.type.311 = import_ref PackageHasParam//default, K, loaded [concrete = constants.%K.7a1]
// CHECK:STDOUT: %PackageHasParam.import_ref.292: %Y.type = import_ref PackageHasParam//default, inst37 [no loc], loaded [symbolic = constants.%Self.f64]
// CHECK:STDOUT: %PackageHasParam.import_ref.292: %Y.type = import_ref PackageHasParam//default, inst38 [no loc], loaded [symbolic = constants.%Self.f64]
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -1634,15 +1634,15 @@ fn Test(c: HasExtraInterfaces.C(type)) {
// CHECK:STDOUT: %PackageHasParam.import_ref.5ab: type = import_ref PackageHasParam//default, loc4_16, loaded [symbolic = @AnyParam.%T (constants.%T)]
// CHECK:STDOUT: %PackageHasParam.import_ref.34c: @AnyParam.%T (%T) = import_ref PackageHasParam//default, loc4_26, loaded [symbolic = @AnyParam.%X (constants.%X)]
// CHECK:STDOUT: %PackageHasParam.import_ref.8f2: <witness> = import_ref PackageHasParam//default, loc4_34, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %PackageHasParam.import_ref.601 = import_ref PackageHasParam//default, inst31 [no loc], unloaded
// CHECK:STDOUT: %PackageHasParam.import_ref.601 = import_ref PackageHasParam//default, inst32 [no loc], unloaded
// CHECK:STDOUT: %PackageGenericInterface.GenericInterface: %GenericInterface.type.0da = import_ref PackageGenericInterface//default, GenericInterface, loaded [concrete = constants.%GenericInterface.generic]
// CHECK:STDOUT: %PackageGenericInterface.import_ref.5ab: type = import_ref PackageGenericInterface//default, loc6_28, loaded [symbolic = @GenericInterface.%U (constants.%U)]
// CHECK:STDOUT: %PackageGenericInterface.import_ref.c3b = import_ref PackageGenericInterface//default, inst27 [no loc], unloaded
// CHECK:STDOUT: %PackageGenericInterface.import_ref.c3b = import_ref PackageGenericInterface//default, inst28 [no loc], unloaded
// CHECK:STDOUT: %PackageHasParam.Y: type = import_ref PackageHasParam//default, Y, loaded [concrete = constants.%Y.type]
// CHECK:STDOUT: %PackageHasParam.import_ref.dc1 = import_ref PackageHasParam//default, inst37 [no loc], unloaded
// CHECK:STDOUT: %PackageHasParam.import_ref.dc1 = import_ref PackageHasParam//default, inst38 [no loc], unloaded
// CHECK:STDOUT: %PackageHasParam.import_ref.f69: %Y.assoc_type = import_ref PackageHasParam//default, loc7_22, loaded [concrete = constants.%assoc0]
// CHECK:STDOUT: %PackageHasParam.K = import_ref PackageHasParam//default, K, unloaded
// CHECK:STDOUT: %PackageHasParam.import_ref.292: %Y.type = import_ref PackageHasParam//default, inst37 [no loc], loaded [symbolic = constants.%Self.f64]
// CHECK:STDOUT: %PackageHasParam.import_ref.292: %Y.type = import_ref PackageHasParam//default, inst38 [no loc], loaded [symbolic = constants.%Self.f64]
// CHECK:STDOUT: %PackageGenericInterface.import_ref.ca8: <witness> = import_ref PackageGenericInterface//default, loc8_70, loaded [concrete = constants.%impl_witness]
// CHECK:STDOUT: %PackageGenericInterface.import_ref.321: type = import_ref PackageGenericInterface//default, loc8_47, loaded [concrete = constants.%AnyParam.861]
// CHECK:STDOUT: %PackageGenericInterface.import_ref.ca6: type = import_ref PackageGenericInterface//default, loc8_67, loaded [concrete = constants.%Y.type]
@@ -1819,12 +1819,12 @@ fn Test(c: HasExtraInterfaces.C(type)) {
// CHECK:STDOUT: %PackageHasParam.import_ref.5ab: type = import_ref PackageHasParam//default, loc4_16, loaded [symbolic = @AnyParam.%T (constants.%T)]
// CHECK:STDOUT: %PackageHasParam.import_ref.34c: @AnyParam.%T (%T) = import_ref PackageHasParam//default, loc4_26, loaded [symbolic = @AnyParam.%X (constants.%X)]
// CHECK:STDOUT: %PackageHasParam.import_ref.8f2: <witness> = import_ref PackageHasParam//default, loc4_34, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %PackageHasParam.import_ref.601 = import_ref PackageHasParam//default, inst31 [no loc], unloaded
// CHECK:STDOUT: %PackageHasParam.import_ref.601 = import_ref PackageHasParam//default, inst32 [no loc], unloaded
// CHECK:STDOUT: %PackageHasParam.Y: type = import_ref PackageHasParam//default, Y, loaded [concrete = constants.%Y.type]
// CHECK:STDOUT: %PackageHasParam.import_ref.dc1 = import_ref PackageHasParam//default, inst37 [no loc], unloaded
// CHECK:STDOUT: %PackageHasParam.import_ref.dc1 = import_ref PackageHasParam//default, inst38 [no loc], unloaded
// CHECK:STDOUT: %PackageHasParam.import_ref.f69: %Y.assoc_type = import_ref PackageHasParam//default, loc7_22, loaded [concrete = constants.%assoc0]
// CHECK:STDOUT: %PackageHasParam.K: %K.type.311 = import_ref PackageHasParam//default, K, loaded [concrete = constants.%K.7a1]
// CHECK:STDOUT: %PackageHasParam.import_ref.292: %Y.type = import_ref PackageHasParam//default, inst37 [no loc], loaded [symbolic = constants.%Self]
// CHECK:STDOUT: %PackageHasParam.import_ref.292: %Y.type = import_ref PackageHasParam//default, inst38 [no loc], loaded [symbolic = constants.%Self]
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -2028,16 +2028,16 @@ fn Test(c: HasExtraInterfaces.C(type)) {
// CHECK:STDOUT: %PackageHasParam.import_ref.5ab: type = import_ref PackageHasParam//default, loc4_16, loaded [symbolic = @AnyParam.%T (constants.%T)]
// CHECK:STDOUT: %PackageHasParam.import_ref.34c: @AnyParam.%T (%T) = import_ref PackageHasParam//default, loc4_26, loaded [symbolic = @AnyParam.%X (constants.%X)]
// CHECK:STDOUT: %PackageHasParam.import_ref.8f2: <witness> = import_ref PackageHasParam//default, loc4_34, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %PackageHasParam.import_ref.601 = import_ref PackageHasParam//default, inst31 [no loc], unloaded
// CHECK:STDOUT: %PackageHasParam.import_ref.601 = import_ref PackageHasParam//default, inst32 [no loc], unloaded
// CHECK:STDOUT: %PackageGenericClass.GenericClass: %GenericClass.type = import_ref PackageGenericClass//default, GenericClass, loaded [concrete = constants.%GenericClass.generic]
// CHECK:STDOUT: %PackageGenericClass.import_ref.5ab: type = import_ref PackageGenericClass//default, loc6_20, loaded [symbolic = @GenericClass.%U (constants.%U)]
// CHECK:STDOUT: %PackageGenericClass.import_ref.8f2: <witness> = import_ref PackageGenericClass//default, loc6_31, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %PackageGenericClass.import_ref.065 = import_ref PackageGenericClass//default, inst26 [no loc], unloaded
// CHECK:STDOUT: %PackageGenericClass.import_ref.065 = import_ref PackageGenericClass//default, inst27 [no loc], unloaded
// CHECK:STDOUT: %PackageHasParam.Y: type = import_ref PackageHasParam//default, Y, loaded [concrete = constants.%Y.type]
// CHECK:STDOUT: %PackageHasParam.import_ref.dc1 = import_ref PackageHasParam//default, inst37 [no loc], unloaded
// CHECK:STDOUT: %PackageHasParam.import_ref.dc1 = import_ref PackageHasParam//default, inst38 [no loc], unloaded
// CHECK:STDOUT: %PackageHasParam.import_ref.f69: %Y.assoc_type = import_ref PackageHasParam//default, loc7_22, loaded [concrete = constants.%assoc0]
// CHECK:STDOUT: %PackageHasParam.K = import_ref PackageHasParam//default, K, unloaded
// CHECK:STDOUT: %PackageHasParam.import_ref.292: %Y.type = import_ref PackageHasParam//default, inst37 [no loc], loaded [symbolic = constants.%Self]
// CHECK:STDOUT: %PackageHasParam.import_ref.292: %Y.type = import_ref PackageHasParam//default, inst38 [no loc], loaded [symbolic = constants.%Self]
// CHECK:STDOUT: %PackageGenericClass.import_ref.f23: <witness> = import_ref PackageGenericClass//default, loc8_66, loaded [concrete = constants.%impl_witness]
// CHECK:STDOUT: %PackageGenericClass.import_ref.a0e: type = import_ref PackageGenericClass//default, loc8_43, loaded [concrete = constants.%AnyParam.d71]
// CHECK:STDOUT: %PackageGenericClass.import_ref.ca6: type = import_ref PackageGenericClass//default, loc8_63, loaded [concrete = constants.%Y.type]
@@ -2439,21 +2439,21 @@ fn Test(c: HasExtraInterfaces.C(type)) {
// CHECK:STDOUT: %HasExtraInterfaces.C: %C.type = import_ref HasExtraInterfaces//default, C, loaded [concrete = constants.%C.generic]
// CHECK:STDOUT: %HasExtraInterfaces.import_ref.5ab: type = import_ref HasExtraInterfaces//default, loc13_9, loaded [symbolic = @C.%T (constants.%T)]
// CHECK:STDOUT: %HasExtraInterfaces.import_ref.8f2: <witness> = import_ref HasExtraInterfaces//default, loc13_20, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %HasExtraInterfaces.import_ref.4c0 = import_ref HasExtraInterfaces//default, inst56 [no loc], unloaded
// CHECK:STDOUT: %HasExtraInterfaces.import_ref.4c0 = import_ref HasExtraInterfaces//default, inst57 [no loc], unloaded
// CHECK:STDOUT: %HasExtraInterfaces.I: type = import_ref HasExtraInterfaces//default, I, loaded [concrete = constants.%I.type]
// CHECK:STDOUT: %HasExtraInterfaces.import_ref.e5d = import_ref HasExtraInterfaces//default, inst62 [no loc], unloaded
// CHECK:STDOUT: %HasExtraInterfaces.import_ref.e5d = import_ref HasExtraInterfaces//default, inst63 [no loc], unloaded
// CHECK:STDOUT: %HasExtraInterfaces.import_ref.be9: %I.assoc_type = import_ref HasExtraInterfaces//default, loc14_33, loaded [concrete = constants.%assoc0]
// CHECK:STDOUT: %HasExtraInterfaces.F = import_ref HasExtraInterfaces//default, F, unloaded
// CHECK:STDOUT: %HasExtraInterfaces.import_ref.1db: %I.type = import_ref HasExtraInterfaces//default, inst62 [no loc], loaded [symbolic = constants.%Self.013]
// CHECK:STDOUT: %HasExtraInterfaces.import_ref.1db: %I.type = import_ref HasExtraInterfaces//default, inst63 [no loc], loaded [symbolic = constants.%Self.013]
// CHECK:STDOUT: %HasExtraInterfaces.import_ref.1c8 = import_ref HasExtraInterfaces//default, loc16_79, unloaded
// CHECK:STDOUT: %HasExtraInterfaces.import_ref.9c8 = import_ref HasExtraInterfaces//default, inst44 [no loc], unloaded
// CHECK:STDOUT: %HasExtraInterfaces.import_ref.dfe = import_ref HasExtraInterfaces//default, inst40 [no loc], unloaded
// CHECK:STDOUT: %HasExtraInterfaces.import_ref.6b6 = import_ref HasExtraInterfaces//default, inst36 [no loc], unloaded
// CHECK:STDOUT: %HasExtraInterfaces.import_ref.576 = import_ref HasExtraInterfaces//default, inst32 [no loc], unloaded
// CHECK:STDOUT: %HasExtraInterfaces.import_ref.0dd = import_ref HasExtraInterfaces//default, inst28 [no loc], unloaded
// CHECK:STDOUT: %HasExtraInterfaces.import_ref.f83 = import_ref HasExtraInterfaces//default, inst24 [no loc], unloaded
// CHECK:STDOUT: %HasExtraInterfaces.import_ref.975 = import_ref HasExtraInterfaces//default, inst20 [no loc], unloaded
// CHECK:STDOUT: %HasExtraInterfaces.import_ref.a3c = import_ref HasExtraInterfaces//default, inst16 [no loc], unloaded
// CHECK:STDOUT: %HasExtraInterfaces.import_ref.9c8 = import_ref HasExtraInterfaces//default, inst45 [no loc], unloaded
// CHECK:STDOUT: %HasExtraInterfaces.import_ref.dfe = import_ref HasExtraInterfaces//default, inst41 [no loc], unloaded
// CHECK:STDOUT: %HasExtraInterfaces.import_ref.6b6 = import_ref HasExtraInterfaces//default, inst37 [no loc], unloaded
// CHECK:STDOUT: %HasExtraInterfaces.import_ref.576 = import_ref HasExtraInterfaces//default, inst33 [no loc], unloaded
// CHECK:STDOUT: %HasExtraInterfaces.import_ref.0dd = import_ref HasExtraInterfaces//default, inst29 [no loc], unloaded
// CHECK:STDOUT: %HasExtraInterfaces.import_ref.f83 = import_ref HasExtraInterfaces//default, inst25 [no loc], unloaded
// CHECK:STDOUT: %HasExtraInterfaces.import_ref.975 = import_ref HasExtraInterfaces//default, inst21 [no loc], unloaded
// CHECK:STDOUT: %HasExtraInterfaces.import_ref.a3c = import_ref HasExtraInterfaces//default, inst17 [no loc], unloaded
// CHECK:STDOUT: %HasExtraInterfaces.import_ref.aa8: type = import_ref HasExtraInterfaces//default, loc16_72, loaded [concrete = constants.%C.074]
// CHECK:STDOUT: %HasExtraInterfaces.import_ref.301: type = import_ref HasExtraInterfaces//default, loc16_77, loaded [concrete = constants.%I.type]
// CHECK:STDOUT: }
@@ -216,13 +216,13 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); }
// CHECK:STDOUT: %Main.C = import_ref Main//types, C, unloaded
// CHECK:STDOUT: %Main.X: type = import_ref Main//types, X, loaded [concrete = constants.%X]
// CHECK:STDOUT: %Main.import_ref.8f2: <witness> = import_ref Main//types, loc7_10, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.acf = import_ref Main//types, inst65 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.acf = import_ref Main//types, inst66 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.5ab3ec.1: type = import_ref Main//types, loc4_13, loaded [symbolic = @I.%T (constants.%T)]
// CHECK:STDOUT: %Main.import_ref.884 = import_ref Main//types, inst25 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.884 = import_ref Main//types, inst26 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.2bb = import_ref Main//types, loc4_43, unloaded
// CHECK:STDOUT: %Main.F: @I.%F.type (%F.type.2ae) = import_ref Main//types, F, loaded [symbolic = @I.%F (constants.%F.bb2)]
// CHECK:STDOUT: %Main.import_ref.5ab3ec.2: type = import_ref Main//types, loc4_13, loaded [symbolic = @I.%T (constants.%T)]
// CHECK:STDOUT: %Main.import_ref.38e: @I.%I.type (%I.type.325) = import_ref Main//types, inst25 [no loc], loaded [symbolic = @I.%Self (constants.%Self.209)]
// CHECK:STDOUT: %Main.import_ref.38e: @I.%I.type (%I.type.325) = import_ref Main//types, inst26 [no loc], loaded [symbolic = @I.%Self (constants.%Self.209)]
// CHECK:STDOUT: %Main.import_ref.479 = import_ref Main//types, loc4_43, unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -385,16 +385,16 @@ 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.InInterfaceArgs: type = import_ref Main//impl_in_interface_args, InInterfaceArgs, loaded [concrete = constants.%InInterfaceArgs]
// CHECK:STDOUT: %Main.import_ref.8f24d3.1: <witness> = import_ref Main//types, loc7_10, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.acf = import_ref Main//types, inst65 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.acf = import_ref Main//types, inst66 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.5ab3ec.1: type = import_ref Main//types, loc4_13, loaded [symbolic = @I.%T (constants.%T)]
// CHECK:STDOUT: %Main.import_ref.884 = import_ref Main//types, inst25 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.884 = import_ref Main//types, inst26 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.474: @I.%I.assoc_type (%I.assoc_type.1e5) = import_ref Main//types, loc4_43, loaded [symbolic = @I.%assoc0 (constants.%assoc0.688)]
// CHECK:STDOUT: %Main.F = import_ref Main//types, F, unloaded
// CHECK:STDOUT: %Main.import_ref.5ab3ec.2: type = import_ref Main//types, loc4_13, loaded [symbolic = @I.%T (constants.%T)]
// CHECK:STDOUT: %Main.import_ref.38e: @I.%I.type (%I.type.325) = import_ref Main//types, inst25 [no loc], loaded [symbolic = @I.%Self (constants.%Self.209)]
// CHECK:STDOUT: %Main.import_ref.38e: @I.%I.type (%I.type.325) = import_ref Main//types, inst26 [no loc], loaded [symbolic = @I.%Self (constants.%Self.209)]
// CHECK:STDOUT: %Main.import_ref.e54: @I.%F.type (%F.type.2ae) = import_ref Main//types, loc4_43, loaded [symbolic = @I.%F (constants.%F.bb2)]
// CHECK:STDOUT: %Main.import_ref.8f24d3.2: <witness> = 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, inst19 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.bf8 = import_ref Main//impl_in_interface_args, inst20 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.f9f: <witness> = import_ref Main//impl_in_interface_args, loc7_30, loaded [concrete = constants.%impl_witness]
// CHECK:STDOUT: %Main.import_ref.956: type = import_ref Main//impl_in_interface_args, loc7_6, loaded [concrete = constants.%X]
// CHECK:STDOUT: %Main.import_ref.e8c: type = import_ref Main//impl_in_interface_args, loc7_28, loaded [concrete = constants.%I.type.e45]
@@ -551,16 +551,16 @@ 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.5ab3ec.1: type = import_ref Main//types, loc5_9, loaded [symbolic = @C.%T (constants.%T)]
// CHECK:STDOUT: %Main.import_ref.8f24d3.1: <witness> = import_ref Main//types, loc5_20, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.4c0 = import_ref Main//types, inst60 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.4c0 = import_ref Main//types, inst61 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.5ab3ec.2: type = import_ref Main//types, loc4_13, loaded [symbolic = @I.%T (constants.%T)]
// CHECK:STDOUT: %Main.import_ref.884 = import_ref Main//types, inst25 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.884 = import_ref Main//types, inst26 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.2bb = import_ref Main//types, loc4_43, unloaded
// CHECK:STDOUT: %Main.F: @I.%F.type (%F.type.2ae) = import_ref Main//types, F, loaded [symbolic = @I.%F (constants.%F.bb2)]
// CHECK:STDOUT: %Main.import_ref.5ab3ec.3: type = import_ref Main//types, loc4_13, loaded [symbolic = @I.%T (constants.%T)]
// CHECK:STDOUT: %Main.import_ref.38e: @I.%I.type (%I.type.325) = import_ref Main//types, inst25 [no loc], loaded [symbolic = @I.%Self (constants.%Self.209)]
// CHECK:STDOUT: %Main.import_ref.38e: @I.%I.type (%I.type.325) = import_ref Main//types, inst26 [no loc], loaded [symbolic = @I.%Self (constants.%Self.209)]
// CHECK:STDOUT: %Main.import_ref.479 = import_ref Main//types, loc4_43, unloaded
// CHECK:STDOUT: %Main.import_ref.8f24d3.2: <witness> = import_ref Main//types, loc7_10, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.acf = import_ref Main//types, inst65 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.acf = import_ref Main//types, inst66 [no loc], unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -754,18 +754,18 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); }
// CHECK:STDOUT: %Main.InClassArgs: type = import_ref Main//impl_in_class_args, InClassArgs, loaded [concrete = constants.%InClassArgs]
// CHECK:STDOUT: %Main.import_ref.5ab3ec.1: type = import_ref Main//types, loc5_9, loaded [symbolic = @C.%T (constants.%T)]
// CHECK:STDOUT: %Main.import_ref.8f24d3.1: <witness> = import_ref Main//types, loc5_20, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.4c0 = import_ref Main//types, inst60 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.4c0 = import_ref Main//types, inst61 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.8f24d3.2: <witness> = 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, inst19 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.683 = import_ref Main//impl_in_class_args, inst20 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.5ab3ec.2: type = import_ref Main//types, loc4_13, loaded [symbolic = @I.%T (constants.%T)]
// CHECK:STDOUT: %Main.import_ref.884 = import_ref Main//types, inst25 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.884 = import_ref Main//types, inst26 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.474: @I.%I.assoc_type (%I.assoc_type.1e5) = import_ref Main//types, loc4_43, loaded [symbolic = @I.%assoc0 (constants.%assoc0.688)]
// CHECK:STDOUT: %Main.F = import_ref Main//types, F, unloaded
// CHECK:STDOUT: %Main.import_ref.5ab3ec.3: type = import_ref Main//types, loc4_13, loaded [symbolic = @I.%T (constants.%T)]
// CHECK:STDOUT: %Main.import_ref.38e: @I.%I.type (%I.type.325) = import_ref Main//types, inst25 [no loc], loaded [symbolic = @I.%Self (constants.%Self.209)]
// CHECK:STDOUT: %Main.import_ref.38e: @I.%I.type (%I.type.325) = import_ref Main//types, inst26 [no loc], loaded [symbolic = @I.%Self (constants.%Self.209)]
// CHECK:STDOUT: %Main.import_ref.e54: @I.%F.type (%F.type.2ae) = import_ref Main//types, loc4_43, loaded [symbolic = @I.%F (constants.%F.bb2)]
// CHECK:STDOUT: %Main.import_ref.8f24d3.3: <witness> = import_ref Main//types, loc7_10, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.acf = import_ref Main//types, inst65 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.acf = import_ref Main//types, inst66 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.6de: <witness> = import_ref Main//impl_in_class_args, loc7_29, loaded [concrete = constants.%impl_witness]
// CHECK:STDOUT: %Main.import_ref.d6e: type = import_ref Main//impl_in_class_args, loc7_19, loaded [concrete = constants.%C.23b]
// CHECK:STDOUT: %Main.import_ref.208: type = import_ref Main//impl_in_class_args, loc7_27, loaded [concrete = constants.%I.type.45c]
+7 -7
View File
@@ -128,10 +128,10 @@ fn Call() {
// CHECK:STDOUT: import Core//prelude
// CHECK:STDOUT: import Core//prelude/...
// CHECK:STDOUT: }
// CHECK:STDOUT: %Main.import_ref.e5d = import_ref Main//i, inst18 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.e5d = import_ref Main//i, inst19 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.507 = import_ref Main//i, loc4_33, unloaded
// CHECK:STDOUT: %Main.F: %F.type.cf0 = import_ref Main//i, F, loaded [concrete = constants.%F.bc6]
// CHECK:STDOUT: %Main.import_ref.5dd: %I.type = import_ref Main//i, inst18 [no loc], loaded [symbolic = constants.%Self]
// CHECK:STDOUT: %Main.import_ref.5dd: %I.type = import_ref Main//i, inst19 [no loc], loaded [symbolic = constants.%Self]
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -219,7 +219,7 @@ fn Call() {
// CHECK:STDOUT: import Core//prelude/...
// CHECK:STDOUT: }
// CHECK:STDOUT: %Main.import_ref.8f2: <witness> = import_ref Main//c, loc6_10, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.2c4 = import_ref Main//c, inst19 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.2c4 = import_ref Main//c, inst20 [no loc], unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -280,12 +280,12 @@ fn Call() {
// CHECK:STDOUT: import Core//prelude
// CHECK:STDOUT: import Core//prelude/...
// CHECK:STDOUT: }
// CHECK:STDOUT: %Main.import_ref.8db: <witness> = import_ref Main//get, inst22 [indirect], loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.6a9 = import_ref Main//get, inst23 [indirect], unloaded
// CHECK:STDOUT: %Main.import_ref.e5d = import_ref Main//i, inst18 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.8db: <witness> = import_ref Main//get, inst23 [indirect], loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.6a9 = import_ref Main//get, inst24 [indirect], unloaded
// CHECK:STDOUT: %Main.import_ref.e5d = import_ref Main//i, inst19 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.c44: %I.assoc_type = import_ref Main//i, loc4_33, loaded [concrete = constants.%assoc0]
// CHECK:STDOUT: %Main.F = import_ref Main//i, F, unloaded
// CHECK:STDOUT: %Main.import_ref.5dd: %I.type = import_ref Main//i, inst18 [no loc], loaded [symbolic = constants.%Self]
// CHECK:STDOUT: %Main.import_ref.5dd: %I.type = import_ref Main//i, inst19 [no loc], loaded [symbolic = constants.%Self]
// CHECK:STDOUT: %Main.import_ref.e53: <witness> = import_ref Main//c, loc7_13, loaded [concrete = constants.%impl_witness]
// CHECK:STDOUT: %Main.import_ref.29a: type = import_ref Main//c, loc7_6, loaded [concrete = constants.%C]
// CHECK:STDOUT: %Main.import_ref.f50: type = import_ref Main//c, loc7_11, loaded [concrete = constants.%I.type]
@@ -87,19 +87,19 @@ interface I {
class C {}
impl C as I;
// CHECK:STDERR: fail_unset_associated_const.carbon:[[@LINE+11]]:8: error: accessing member from impl before it has a defined value [ImplAccessMemberBeforeSet]
// CHECK:STDERR: fail_unset_associated_const.carbon:[[@LINE+4]]:8: error: accessing member from impl before it has a defined value [ImplAccessMemberBeforeSet]
// CHECK:STDERR: let x: (C as I).T = ();
// CHECK:STDERR: ^~~~~~~~~~
// CHECK:STDERR:
// CHECK:STDERR: fail_unset_associated_const.carbon:[[@LINE-6]]:11: error: associated constant T not given a value in impl of interface I [ImplAssociatedConstantNeedsValue]
// CHECK:STDERR: impl C as I;
// CHECK:STDERR: ^
// CHECK:STDERR: fail_unset_associated_const.carbon:[[@LINE-12]]:7: note: associated constant declared here [AssociatedConstantHere]
let x: (C as I).T = ();
// CHECK:STDERR: fail_unset_associated_const.carbon:[[@LINE+7]]:1: error: associated constant T not given a value in impl of interface I [ImplAssociatedConstantNeedsValue]
// CHECK:STDERR: impl C as I {}
// CHECK:STDERR: ^~~~~~~~~~~~~
// CHECK:STDERR: fail_unset_associated_const.carbon:[[@LINE-14]]:7: note: associated constant declared here [AssociatedConstantHere]
// CHECK:STDERR: let T:! type;
// CHECK:STDERR: ^~~~~~~~
// CHECK:STDERR:
let x: (C as I).T = ();
impl C as I {}
// --- fail_associated_const_before_interface_definition.carbon
@@ -169,7 +169,7 @@ impl {} as I & J;
interface I {}
interface J {}
// --- fail_todo_never_assigned_associated_const.carbon
// --- fail_never_assigned_associated_const.carbon
library "[[@TEST_NAME]]";
interface I {
@@ -178,20 +178,15 @@ interface I {
}
class C {}
// TODO: Should accept this, once we support setting
// associated constants in the body of the impl definition.
impl C as I where .T = ();
// CHECK:STDERR: fail_todo_never_assigned_associated_const.carbon:[[@LINE+7]]:11: error: associated constant U not given a value in impl of interface I [ImplAssociatedConstantNeedsValue]
// CHECK:STDERR: impl C as I where .T = ();
// CHECK:STDERR: ^~~~~~~~~~~~~~~
// CHECK:STDERR: fail_todo_never_assigned_associated_const.carbon:[[@LINE-10]]:7: note: associated constant declared here [AssociatedConstantHere]
// CHECK:STDERR: fail_never_assigned_associated_const.carbon:[[@LINE+7]]:1: error: associated constant U not given a value in impl of interface I [ImplAssociatedConstantNeedsValue]
// CHECK:STDERR: impl C as I where .T = () {}
// CHECK:STDERR: ^~~~~~~~~~~~~~~~~~~~~~~~~~~
// CHECK:STDERR: fail_never_assigned_associated_const.carbon:[[@LINE-9]]:7: note: associated constant declared here [AssociatedConstantHere]
// CHECK:STDERR: let U:! type;
// CHECK:STDERR: ^~~~~~~~
// CHECK:STDERR:
impl C as I where .T = ();
// TODO: This should fail instead, unless there is a
// `where U = ...` declaration in the body of the impl.
impl C as I where .T = () {}
// --- example_from_proposal_5168.carbon
@@ -435,10 +430,10 @@ interface I {
// CHECK:STDOUT: .BitAnd = %Core.BitAnd
// CHECK:STDOUT: import Core//prelude
// CHECK:STDOUT: }
// CHECK:STDOUT: %Core.import_ref.ad0 = import_ref Core//prelude, inst101 [no loc], unloaded
// CHECK:STDOUT: %Core.import_ref.ad0 = import_ref Core//prelude, inst102 [no loc], unloaded
// CHECK:STDOUT: %Core.import_ref.a46: %BitAnd.assoc_type = import_ref Core//prelude, loc18_41, loaded [concrete = constants.%assoc0]
// CHECK:STDOUT: %Core.Op = import_ref Core//prelude, Op, unloaded
// CHECK:STDOUT: %Core.import_ref.040: %BitAnd.type = import_ref Core//prelude, inst101 [no loc], loaded [symbolic = constants.%Self.25f]
// CHECK:STDOUT: %Core.import_ref.040: %BitAnd.type = import_ref Core//prelude, inst102 [no loc], loaded [symbolic = constants.%Self.25f]
// CHECK:STDOUT: %Core.import_ref.51c: <witness> = import_ref Core//prelude, loc21_36, loaded [symbolic = @impl.f92.%impl_witness (constants.%impl_witness.b81)]
// CHECK:STDOUT: %Core.import_ref.5ab3ec.1: type = import_ref Core//prelude, loc21_14, loaded [symbolic = @impl.f92.%T (constants.%T)]
// CHECK:STDOUT: %Core.import_ref.583: type = import_ref Core//prelude, loc21_24, loaded [symbolic = @impl.f92.%T (constants.%T)]
@@ -618,6 +613,7 @@ interface I {
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (constants.%empty_tuple.type) [concrete = constants.%impl_witness]
// CHECK:STDOUT: %impl_witness_assoc_constant: type = impl_witness_assoc_constant constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
// CHECK:STDOUT: impl_decl @impl [concrete] {} {
// CHECK:STDOUT: %.loc8_7.1: %empty_struct_type = struct_literal ()
// CHECK:STDOUT: %.loc8_7.2: type = converted %.loc8_7.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type]
@@ -717,6 +713,7 @@ interface I {
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (constants.%empty_tuple.type) [concrete = constants.%impl_witness]
// CHECK:STDOUT: %impl_witness_assoc_constant: type = impl_witness_assoc_constant constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
// CHECK:STDOUT: name_binding_decl {
// CHECK:STDOUT: %x.patt: %empty_tuple.type = binding_pattern x
// CHECK:STDOUT: }
@@ -846,6 +843,7 @@ interface I {
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (constants.%empty_tuple.type) [concrete = constants.%impl_witness]
// CHECK:STDOUT: %impl_witness_assoc_constant: type = impl_witness_assoc_constant constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
// CHECK:STDOUT: name_binding_decl {
// CHECK:STDOUT: %x.patt: %empty_tuple.type = binding_pattern x
// CHECK:STDOUT: }
@@ -961,15 +959,15 @@ interface I {
// CHECK:STDOUT: name_binding_decl {
// CHECK:STDOUT: %x.patt: <error> = binding_pattern x
// CHECK:STDOUT: }
// CHECK:STDOUT: %.loc20_16.1: type = splice_block %impl.elem0 [concrete = <error>] {
// CHECK:STDOUT: %.loc13_16.1: type = splice_block %impl.elem0 [concrete = <error>] {
// CHECK:STDOUT: %C.ref: type = name_ref C, %C.decl [concrete = constants.%C]
// CHECK:STDOUT: %I.ref: type = name_ref I, %I.decl [concrete = constants.%I.type]
// CHECK:STDOUT: %I.facet: %I.type = facet_value constants.%C, (constants.%impl_witness) [concrete = constants.%I.facet]
// CHECK:STDOUT: %.loc20_11: %I.type = converted %C.ref, %I.facet [concrete = constants.%I.facet]
// CHECK:STDOUT: %.loc13_11: %I.type = converted %C.ref, %I.facet [concrete = constants.%I.facet]
// CHECK:STDOUT: %T.ref: %I.assoc_type = name_ref T, @T.%assoc0 [concrete = constants.%assoc0]
// CHECK:STDOUT: %as_type: type = facet_access_type %.loc20_11 [concrete = constants.%C]
// CHECK:STDOUT: %.loc20_16.2: type = converted %.loc20_11, %as_type [concrete = constants.%C]
// CHECK:STDOUT: %as_wit.iface0: <witness> = facet_access_witness %.loc20_11, element0 [concrete = constants.%impl_witness]
// CHECK:STDOUT: %as_type: type = facet_access_type %.loc13_11 [concrete = constants.%C]
// CHECK:STDOUT: %.loc13_16.2: type = converted %.loc13_11, %as_type [concrete = constants.%C]
// CHECK:STDOUT: %as_wit.iface0: <witness> = facet_access_witness %.loc13_11, element0 [concrete = constants.%impl_witness]
// CHECK:STDOUT: %impl.elem0: type = impl_witness_access %as_wit.iface0, element0 [concrete = <error>]
// CHECK:STDOUT: }
// CHECK:STDOUT: %x: <error> = bind_name x, <error>
@@ -1010,7 +1008,7 @@ interface I {
// CHECK:STDOUT:
// CHECK:STDOUT: fn @__global_init() {
// CHECK:STDOUT: !entry:
// CHECK:STDOUT: %.loc20: %empty_tuple.type = tuple_literal ()
// CHECK:STDOUT: %.loc13: %empty_tuple.type = tuple_literal ()
// CHECK:STDOUT: return
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -1170,6 +1168,7 @@ interface I {
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (constants.%C) [concrete = constants.%impl_witness]
// CHECK:STDOUT: %impl_witness_assoc_constant: type = impl_witness_assoc_constant constants.%C [concrete = constants.%C]
// CHECK:STDOUT: %C.decl.loc10: type = class_decl @C [concrete = constants.%C] {} {}
// CHECK:STDOUT: impl_decl @impl [concrete] {} {
// CHECK:STDOUT: %D.ref.loc11: type = name_ref D, file.%D.decl [concrete = constants.%D]
@@ -1441,10 +1440,10 @@ interface I {
// CHECK:STDOUT: .BitAnd = %Core.BitAnd
// CHECK:STDOUT: import Core//prelude
// CHECK:STDOUT: }
// CHECK:STDOUT: %Core.import_ref.ad0 = import_ref Core//prelude, inst101 [no loc], unloaded
// CHECK:STDOUT: %Core.import_ref.ad0 = import_ref Core//prelude, inst102 [no loc], unloaded
// CHECK:STDOUT: %Core.import_ref.a46: %BitAnd.assoc_type = import_ref Core//prelude, loc18_41, loaded [concrete = constants.%assoc0]
// CHECK:STDOUT: %Core.Op = import_ref Core//prelude, Op, unloaded
// CHECK:STDOUT: %Core.import_ref.040: %BitAnd.type = import_ref Core//prelude, inst101 [no loc], loaded [symbolic = constants.%Self.25f]
// CHECK:STDOUT: %Core.import_ref.040: %BitAnd.type = import_ref Core//prelude, inst102 [no loc], loaded [symbolic = constants.%Self.25f]
// CHECK:STDOUT: %Core.import_ref.51c: <witness> = import_ref Core//prelude, loc21_36, loaded [symbolic = @impl.f92.%impl_witness (constants.%impl_witness.b81)]
// CHECK:STDOUT: %Core.import_ref.5ab3ec.1: type = import_ref Core//prelude, loc21_14, loaded [symbolic = @impl.f92.%T (constants.%T)]
// CHECK:STDOUT: %Core.import_ref.583: type = import_ref Core//prelude, loc21_24, loaded [symbolic = @impl.f92.%T (constants.%T)]
@@ -1569,7 +1568,7 @@ interface I {
// CHECK:STDOUT: !definition:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: --- fail_todo_never_assigned_associated_const.carbon
// CHECK:STDOUT: --- fail_never_assigned_associated_const.carbon
// CHECK:STDOUT:
// CHECK:STDOUT: constants {
// CHECK:STDOUT: %I.type: type = facet_type <@I> [concrete]
@@ -1606,36 +1605,37 @@ interface I {
// CHECK:STDOUT: %I.decl: type = interface_decl @I [concrete = constants.%I.type] {} {}
// CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {}
// CHECK:STDOUT: impl_decl @impl [concrete] {} {
// CHECK:STDOUT: %C.ref.loc19: type = name_ref C, file.%C.decl [concrete = constants.%C]
// CHECK:STDOUT: %I.ref.loc19: type = name_ref I, file.%I.decl [concrete = constants.%I.type]
// CHECK:STDOUT: %C.ref.loc9: type = name_ref C, file.%C.decl [concrete = constants.%C]
// CHECK:STDOUT: %I.ref.loc9: type = name_ref I, file.%I.decl [concrete = constants.%I.type]
// CHECK:STDOUT: %.Self.1: %I.type = bind_symbolic_name .Self [symbolic_self = constants.%.Self]
// CHECK:STDOUT: %.Self.ref.loc19: %I.type = name_ref .Self, %.Self.1 [symbolic_self = constants.%.Self]
// CHECK:STDOUT: %T.ref.loc19: %I.assoc_type = name_ref T, @T.%assoc0 [concrete = constants.%assoc0]
// CHECK:STDOUT: %.Self.as_type.loc19: type = facet_access_type %.Self.ref.loc19 [symbolic_self = constants.%.Self.as_type]
// CHECK:STDOUT: %.loc19_19: type = converted %.Self.ref.loc19, %.Self.as_type.loc19 [symbolic_self = constants.%.Self.as_type]
// CHECK:STDOUT: %.Self.as_wit.iface0.loc19: <witness> = facet_access_witness %.Self.ref.loc19, element0 [symbolic_self = constants.%.Self.as_wit.iface0]
// CHECK:STDOUT: %impl.elem0.loc19: type = impl_witness_access %.Self.as_wit.iface0.loc19, element0 [symbolic_self = constants.%impl.elem0]
// CHECK:STDOUT: %.loc19_25.1: %empty_tuple.type = tuple_literal ()
// CHECK:STDOUT: %.loc19_25.2: type = converted %.loc19_25.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
// CHECK:STDOUT: %.loc19_13: type = where_expr %.Self.1 [concrete = constants.%I_where.type] {
// CHECK:STDOUT: requirement_rewrite %impl.elem0.loc19, %.loc19_25.2
// CHECK:STDOUT: %.Self.ref.loc9: %I.type = name_ref .Self, %.Self.1 [symbolic_self = constants.%.Self]
// CHECK:STDOUT: %T.ref.loc9: %I.assoc_type = name_ref T, @T.%assoc0 [concrete = constants.%assoc0]
// CHECK:STDOUT: %.Self.as_type.loc9: type = facet_access_type %.Self.ref.loc9 [symbolic_self = constants.%.Self.as_type]
// CHECK:STDOUT: %.loc9_19: type = converted %.Self.ref.loc9, %.Self.as_type.loc9 [symbolic_self = constants.%.Self.as_type]
// CHECK:STDOUT: %.Self.as_wit.iface0.loc9: <witness> = facet_access_witness %.Self.ref.loc9, element0 [symbolic_self = constants.%.Self.as_wit.iface0]
// CHECK:STDOUT: %impl.elem0.loc9: type = impl_witness_access %.Self.as_wit.iface0.loc9, element0 [symbolic_self = constants.%impl.elem0]
// CHECK:STDOUT: %.loc9_25.1: %empty_tuple.type = tuple_literal ()
// CHECK:STDOUT: %.loc9_25.2: type = converted %.loc9_25.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
// CHECK:STDOUT: %.loc9_13: type = where_expr %.Self.1 [concrete = constants.%I_where.type] {
// CHECK:STDOUT: requirement_rewrite %impl.elem0.loc9, %.loc9_25.2
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (constants.%empty_tuple.type, <error>) [concrete = constants.%impl_witness]
// CHECK:STDOUT: %impl_witness_assoc_constant: type = impl_witness_assoc_constant constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
// CHECK:STDOUT: impl_decl @impl [concrete] {} {
// CHECK:STDOUT: %C.ref.loc23: type = name_ref C, file.%C.decl [concrete = constants.%C]
// CHECK:STDOUT: %I.ref.loc23: type = name_ref I, file.%I.decl [concrete = constants.%I.type]
// CHECK:STDOUT: %C.ref.loc18: type = name_ref C, file.%C.decl [concrete = constants.%C]
// CHECK:STDOUT: %I.ref.loc18: type = name_ref I, file.%I.decl [concrete = constants.%I.type]
// CHECK:STDOUT: %.Self.2: %I.type = bind_symbolic_name .Self [symbolic_self = constants.%.Self]
// CHECK:STDOUT: %.Self.ref.loc23: %I.type = name_ref .Self, %.Self.2 [symbolic_self = constants.%.Self]
// CHECK:STDOUT: %T.ref.loc23: %I.assoc_type = name_ref T, @T.%assoc0 [concrete = constants.%assoc0]
// CHECK:STDOUT: %.Self.as_type.loc23: type = facet_access_type %.Self.ref.loc23 [symbolic_self = constants.%.Self.as_type]
// CHECK:STDOUT: %.loc23_19: type = converted %.Self.ref.loc23, %.Self.as_type.loc23 [symbolic_self = constants.%.Self.as_type]
// CHECK:STDOUT: %.Self.as_wit.iface0.loc23: <witness> = facet_access_witness %.Self.ref.loc23, element0 [symbolic_self = constants.%.Self.as_wit.iface0]
// CHECK:STDOUT: %impl.elem0.loc23: type = impl_witness_access %.Self.as_wit.iface0.loc23, element0 [symbolic_self = constants.%impl.elem0]
// CHECK:STDOUT: %.loc23_25.1: %empty_tuple.type = tuple_literal ()
// CHECK:STDOUT: %.loc23_25.2: type = converted %.loc23_25.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
// CHECK:STDOUT: %.loc23_13: type = where_expr %.Self.2 [concrete = constants.%I_where.type] {
// CHECK:STDOUT: requirement_rewrite %impl.elem0.loc23, %.loc23_25.2
// CHECK:STDOUT: %.Self.ref.loc18: %I.type = name_ref .Self, %.Self.2 [symbolic_self = constants.%.Self]
// CHECK:STDOUT: %T.ref.loc18: %I.assoc_type = name_ref T, @T.%assoc0 [concrete = constants.%assoc0]
// CHECK:STDOUT: %.Self.as_type.loc18: type = facet_access_type %.Self.ref.loc18 [symbolic_self = constants.%.Self.as_type]
// CHECK:STDOUT: %.loc18_19: type = converted %.Self.ref.loc18, %.Self.as_type.loc18 [symbolic_self = constants.%.Self.as_type]
// CHECK:STDOUT: %.Self.as_wit.iface0.loc18: <witness> = facet_access_witness %.Self.ref.loc18, element0 [symbolic_self = constants.%.Self.as_wit.iface0]
// CHECK:STDOUT: %impl.elem0.loc18: type = impl_witness_access %.Self.as_wit.iface0.loc18, element0 [symbolic_self = constants.%impl.elem0]
// CHECK:STDOUT: %.loc18_25.1: %empty_tuple.type = tuple_literal ()
// CHECK:STDOUT: %.loc18_25.2: type = converted %.loc18_25.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
// CHECK:STDOUT: %.loc18_13: type = where_expr %.Self.2 [concrete = constants.%I_where.type] {
// CHECK:STDOUT: requirement_rewrite %impl.elem0.loc18, %.loc18_25.2
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT: }
@@ -1664,7 +1664,7 @@ interface I {
// CHECK:STDOUT: assoc_const U:! type;
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @impl: %C.ref.loc19 as %.loc19_13 {
// CHECK:STDOUT: impl @impl: %C.ref.loc9 as %.loc9_13 {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: witness = file.%impl_witness
// CHECK:STDOUT: }
@@ -2018,7 +2018,7 @@ interface I {
// CHECK:STDOUT: %I.facet: %I.type = facet_value %.Self.as_type, (%.Self.as_wit.iface0) [symbolic_self]
// CHECK:STDOUT: %impl.elem0: type = impl_witness_access %.Self.as_wit.iface0, element0 [symbolic_self]
// CHECK:STDOUT: %I_where.type: type = facet_type <@I where %impl.elem0 = %C.a2d> [concrete]
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (%C.a2d, invalid), @impl(%Self) [symbolic]
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (%C.a2d, <error>), @impl(%Self) [symbolic]
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: imports {
@@ -2058,7 +2058,7 @@ interface I {
// CHECK:STDOUT:
// CHECK:STDOUT: generic impl @impl(@I.%Self: %I.type) {
// CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self)]
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (constants.%C.a2d, invalid), @impl(%Self) [symbolic = %impl_witness (constants.%impl_witness)]
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (constants.%C.a2d, <error>), @impl(%Self) [symbolic = %impl_witness (constants.%impl_witness)]
// CHECK:STDOUT:
// CHECK:STDOUT: !definition:
// CHECK:STDOUT:
@@ -2101,7 +2101,8 @@ interface I {
// CHECK:STDOUT: requirement_rewrite %impl.elem0.loc16, %C.ref.loc16_28
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (constants.%C.a2d, invalid), @impl(constants.%Self) [symbolic = @impl.%impl_witness (constants.%impl_witness)]
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (constants.%C.a2d, <error>), @impl(constants.%Self) [symbolic = @impl.%impl_witness (constants.%impl_witness)]
// CHECK:STDOUT: %impl_witness_assoc_constant: type = impl_witness_assoc_constant constants.%C.a2d [concrete = constants.%C.a2d]
// CHECK:STDOUT: impl_decl @impl [concrete] {} {
// CHECK:STDOUT: %C.ref.loc18_10: type = name_ref C, @F.%C.decl [concrete = constants.%C.a2d]
// CHECK:STDOUT: %I.ref.loc18: type = name_ref I, file.%I.decl [concrete = constants.%I.type]
+4 -4
View File
@@ -334,11 +334,11 @@ fn InstanceCallFail() {
// CHECK:STDOUT: import Core//default
// CHECK:STDOUT: }
// CHECK:STDOUT: %Core.import_ref.5ab3ec.1: type = import_ref Core//default, loc3_22, loaded [symbolic = @ImplicitAs.%Dest (constants.%Dest)]
// CHECK:STDOUT: %Core.import_ref.ff5 = import_ref Core//default, inst25 [no loc], unloaded
// CHECK:STDOUT: %Core.import_ref.ff5 = import_ref Core//default, inst26 [no loc], unloaded
// CHECK:STDOUT: %Core.import_ref.492: @ImplicitAs.%ImplicitAs.assoc_type (%ImplicitAs.assoc_type.ca0) = import_ref Core//default, loc4_35, loaded [symbolic = @ImplicitAs.%assoc0 (constants.%assoc0.dc0)]
// CHECK:STDOUT: %Core.Convert = import_ref Core//default, Convert, unloaded
// CHECK:STDOUT: %Core.import_ref.5ab3ec.2: type = import_ref Core//default, loc3_22, loaded [symbolic = @ImplicitAs.%Dest (constants.%Dest)]
// CHECK:STDOUT: %Core.import_ref.ce1: @ImplicitAs.%ImplicitAs.type (%ImplicitAs.type.d62) = import_ref Core//default, inst25 [no loc], loaded [symbolic = @ImplicitAs.%Self (constants.%Self.519)]
// CHECK:STDOUT: %Core.import_ref.ce1: @ImplicitAs.%ImplicitAs.type (%ImplicitAs.type.d62) = import_ref Core//default, inst26 [no loc], loaded [symbolic = @ImplicitAs.%Self (constants.%Self.519)]
// CHECK:STDOUT: %Core.import_ref.1c7: @ImplicitAs.%Convert.type (%Convert.type.275) = import_ref Core//default, loc4_35, loaded [symbolic = @ImplicitAs.%Convert (constants.%Convert.42e)]
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -512,11 +512,11 @@ fn InstanceCallFail() {
// CHECK:STDOUT: import Core//default
// CHECK:STDOUT: }
// CHECK:STDOUT: %Core.import_ref.5ab3ec.1: type = import_ref Core//default, loc3_22, loaded [symbolic = @ImplicitAs.%Dest (constants.%Dest)]
// CHECK:STDOUT: %Core.import_ref.ff5 = import_ref Core//default, inst25 [no loc], unloaded
// CHECK:STDOUT: %Core.import_ref.ff5 = import_ref Core//default, inst26 [no loc], unloaded
// CHECK:STDOUT: %Core.import_ref.492: @ImplicitAs.%ImplicitAs.assoc_type (%ImplicitAs.assoc_type.ca0) = import_ref Core//default, loc4_35, loaded [symbolic = @ImplicitAs.%assoc0 (constants.%assoc0.dc0)]
// CHECK:STDOUT: %Core.Convert = import_ref Core//default, Convert, unloaded
// CHECK:STDOUT: %Core.import_ref.5ab3ec.2: type = import_ref Core//default, loc3_22, loaded [symbolic = @ImplicitAs.%Dest (constants.%Dest)]
// CHECK:STDOUT: %Core.import_ref.ce1: @ImplicitAs.%ImplicitAs.type (%ImplicitAs.type.d62) = import_ref Core//default, inst25 [no loc], loaded [symbolic = @ImplicitAs.%Self (constants.%Self.519)]
// CHECK:STDOUT: %Core.import_ref.ce1: @ImplicitAs.%ImplicitAs.type (%ImplicitAs.type.d62) = import_ref Core//default, inst26 [no loc], loaded [symbolic = @ImplicitAs.%Self (constants.%Self.519)]
// CHECK:STDOUT: %Core.import_ref.1c7: @ImplicitAs.%Convert.type (%Convert.type.275) = import_ref Core//default, loc4_35, loaded [symbolic = @ImplicitAs.%Convert (constants.%Convert.42e)]
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -10,9 +10,9 @@
interface I { let T:! type; }
// CHECK:STDERR: fail_impl_bad_assoc_const.carbon:[[@LINE+7]]:12: error: associated constant T not given a value in impl of interface I [ImplAssociatedConstantNeedsValue]
// CHECK:STDERR: fail_impl_bad_assoc_const.carbon:[[@LINE+7]]:1: error: associated constant T not given a value in impl of interface I [ImplAssociatedConstantNeedsValue]
// CHECK:STDERR: impl () as I {}
// CHECK:STDERR: ^
// CHECK:STDERR: ^~~~~~~~~~~~~~
// CHECK:STDERR: fail_impl_bad_assoc_const.carbon:[[@LINE-5]]:19: note: associated constant declared here [AssociatedConstantHere]
// CHECK:STDERR: interface I { let T:! type; }
// CHECK:STDERR: ^~~~~~~~
@@ -82,9 +82,9 @@ library "[[@TEST_NAME]]";
interface K { let V:! type; }
impl () as K where .V = {};
// CHECK:STDERR: fail_missing_on_definition.carbon:[[@LINE+11]]:12: error: associated constant V not given a value in impl of interface K [ImplAssociatedConstantNeedsValue]
// CHECK:STDERR: fail_missing_on_definition.carbon:[[@LINE+11]]:1: error: associated constant V not given a value in impl of interface K [ImplAssociatedConstantNeedsValue]
// CHECK:STDERR: impl () as K {}
// CHECK:STDERR: ^
// CHECK:STDERR: ^~~~~~~~~~~~~~
// CHECK:STDERR: fail_missing_on_definition.carbon:[[@LINE-6]]:19: note: associated constant declared here [AssociatedConstantHere]
// CHECK:STDERR: interface K { let V:! type; }
// CHECK:STDERR: ^~~~~~~~
@@ -215,6 +215,7 @@ impl CD as IF where .F = 0 {
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (constants.%empty_struct_type) [concrete = constants.%impl_witness]
// CHECK:STDOUT: %impl_witness_assoc_constant: type = impl_witness_assoc_constant constants.%empty_struct_type [concrete = constants.%empty_struct_type]
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @I {
@@ -283,6 +284,7 @@ impl CD as IF where .F = 0 {
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (constants.%empty_struct_type) [concrete = constants.%impl_witness]
// CHECK:STDOUT: %impl_witness_assoc_constant: type = impl_witness_assoc_constant constants.%empty_struct_type [concrete = constants.%empty_struct_type]
// CHECK:STDOUT: impl_decl @impl [concrete] {} {
// CHECK:STDOUT: %.loc6_7.1: %empty_tuple.type = tuple_literal ()
// CHECK:STDOUT: %.loc6_7.2: type = converted %.loc6_7.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
@@ -375,6 +377,7 @@ impl CD as IF where .F = 0 {
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT: %impl_witness.loc10: <witness> = impl_witness (constants.%empty_struct_type) [concrete = constants.%impl_witness.6de]
// CHECK:STDOUT: %impl_witness_assoc_constant: type = impl_witness_assoc_constant constants.%empty_struct_type [concrete = constants.%empty_struct_type]
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @I3 {
@@ -447,6 +450,7 @@ impl CD as IF where .F = 0 {
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT: %impl_witness.loc9: <witness> = impl_witness (constants.%empty_struct_type) [concrete = constants.%impl_witness.6de]
// CHECK:STDOUT: %impl_witness_assoc_constant.loc9: type = impl_witness_assoc_constant constants.%empty_struct_type [concrete = constants.%empty_struct_type]
// CHECK:STDOUT: impl_decl @impl.6a8 [concrete] {} {
// CHECK:STDOUT: %.loc10_7.1: %empty_tuple.type = tuple_literal ()
// CHECK:STDOUT: %.loc10_7.2: type = converted %.loc10_7.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
@@ -465,6 +469,7 @@ impl CD as IF where .F = 0 {
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT: %impl_witness.loc10: <witness> = impl_witness (constants.%empty_tuple.type) [concrete = constants.%impl_witness.2a6]
// CHECK:STDOUT: %impl_witness_assoc_constant.loc10: type = impl_witness_assoc_constant constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @J {
@@ -688,6 +693,7 @@ impl CD as IF where .F = 0 {
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT: %impl_witness.loc5: <witness> = impl_witness (constants.%empty_struct_type) [concrete = constants.%impl_witness.6de]
// CHECK:STDOUT: %impl_witness_assoc_constant: type = impl_witness_assoc_constant constants.%empty_struct_type [concrete = constants.%empty_struct_type]
// CHECK:STDOUT: impl_decl @impl.4b0 [concrete] {} {
// CHECK:STDOUT: %.loc17_7.1: %empty_tuple.type = tuple_literal ()
// CHECK:STDOUT: %.loc17_7.2: type = converted %.loc17_7.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
@@ -773,6 +779,7 @@ impl CD as IF where .F = 0 {
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (<error>) [concrete = constants.%impl_witness]
// CHECK:STDOUT: %impl_witness_assoc_constant: type = impl_witness_assoc_constant constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @L {
@@ -1070,6 +1077,7 @@ impl CD as IF where .F = 0 {
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (constants.%empty_struct_type) [concrete = constants.%impl_witness]
// CHECK:STDOUT: %impl_witness_assoc_constant: type = impl_witness_assoc_constant constants.%empty_struct_type [concrete = constants.%empty_struct_type]
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @M {
@@ -1145,6 +1153,7 @@ impl CD as IF where .F = 0 {
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (constants.%struct) [concrete = constants.%impl_witness]
// CHECK:STDOUT: %impl_witness_assoc_constant: %struct_type.a.225 = impl_witness_assoc_constant constants.%struct [concrete = constants.%struct]
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @N {
@@ -468,11 +468,11 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt);
// CHECK:STDOUT: %Main.Double: %Double.type = import_ref Main//generic_impl, Double, loaded [concrete = constants.%Double]
// CHECK:STDOUT: %Main.import_ref.f1e294.1: Core.IntLiteral = import_ref Main//generic_impl, loc11_13, loaded [symbolic = @MyInt.%N (constants.%N)]
// CHECK:STDOUT: %Main.import_ref.9e9: <witness> = import_ref Main//generic_impl, loc13_1, loaded [symbolic = @MyInt.%complete_type (constants.%complete_type.a87)]
// CHECK:STDOUT: %Main.import_ref.697 = import_ref Main//generic_impl, inst88 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.07c = import_ref Main//generic_impl, inst16 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.697 = import_ref Main//generic_impl, inst89 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.07c = import_ref Main//generic_impl, inst17 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.f99: %Add.assoc_type = import_ref Main//generic_impl, loc5_41, loaded [concrete = constants.%assoc0]
// CHECK:STDOUT: %Main.Op = import_ref Main//generic_impl, Op, unloaded
// CHECK:STDOUT: %Main.import_ref.e5e: %Add.type = import_ref Main//generic_impl, inst16 [no loc], loaded [symbolic = constants.%Self]
// CHECK:STDOUT: %Main.import_ref.e5e: %Add.type = import_ref Main//generic_impl, inst17 [no loc], loaded [symbolic = constants.%Self]
// CHECK:STDOUT: %Main.import_ref.33b: <witness> = import_ref Main//generic_impl, loc15_48, loaded [symbolic = @impl.%impl_witness (constants.%impl_witness.7e5)]
// CHECK:STDOUT: %Main.import_ref.f1e294.2: Core.IntLiteral = import_ref Main//generic_impl, loc15_14, loaded [symbolic = @impl.%N (constants.%N)]
// CHECK:STDOUT: %Main.import_ref.719: type = import_ref Main//generic_impl, loc15_39, loaded [symbolic = @impl.%MyInt (constants.%MyInt.09f)]
@@ -1079,7 +1079,7 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt);
// CHECK:STDOUT: %Main.MakeFromClass: %MakeFromClass.type = import_ref Main//convert_symbolic, MakeFromClass, loaded [concrete = constants.%MakeFromClass]
// CHECK:STDOUT: %Main.import_ref.85e: %i32.builtin = import_ref Main//convert_symbolic, loc9_9, loaded [symbolic = @Make.%N (constants.%N.987)]
// CHECK:STDOUT: %Main.import_ref.b03: <witness> = import_ref Main//convert_symbolic, loc14_1, loaded [concrete = constants.%complete_type.f8a]
// CHECK:STDOUT: %Main.import_ref.d11 = import_ref Main//convert_symbolic, inst128 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.d11 = import_ref Main//convert_symbolic, inst129 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.8f7 = import_ref Main//convert_symbolic, loc13_45, unloaded
// CHECK:STDOUT: %Main.import_ref.77d: %OtherInt = import_ref Main//convert_symbolic, loc18_18, loaded [symbolic = @MakeFromClass.%N (constants.%N.335)]
// CHECK:STDOUT: }
@@ -363,14 +363,14 @@ fn InstanceCallImportFail() {
// CHECK:STDOUT: imports {
// CHECK:STDOUT: %Main.NonInstance: type = import_ref Main//lib, NonInstance, loaded [concrete = constants.%NonInstance.type]
// CHECK:STDOUT: %Main.Instance = import_ref Main//lib, Instance, unloaded
// CHECK:STDOUT: %Main.import_ref.c55 = import_ref Main//lib, inst16 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.c55 = import_ref Main//lib, inst17 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.e3c: %NonInstance.assoc_type = import_ref Main//lib, loc4_9, loaded [concrete = constants.%assoc0]
// CHECK:STDOUT: %Main.F = import_ref Main//lib, F, unloaded
// CHECK:STDOUT: %Main.import_ref.f85: %NonInstance.type = import_ref Main//lib, inst16 [no loc], loaded [symbolic = constants.%Self.73c]
// CHECK:STDOUT: %Main.import_ref.f85: %NonInstance.type = import_ref Main//lib, inst17 [no loc], loaded [symbolic = constants.%Self.73c]
// CHECK:STDOUT: %Main.import_ref.826: <witness> = import_ref Main//lib, loc7_30, loaded [concrete = constants.%impl_witness]
// CHECK:STDOUT: %Main.import_ref.ded207.1: type = import_ref Main//lib, loc7_13, loaded [concrete = constants.%struct_type.i]
// CHECK:STDOUT: %Main.import_ref.ef5: type = import_ref Main//lib, loc7_18, loaded [concrete = constants.%NonInstance.type]
// CHECK:STDOUT: %Main.import_ref.dcd = import_ref Main//lib, inst40 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.dcd = import_ref Main//lib, inst41 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.f09 = import_ref Main//lib, loc12_21, unloaded
// CHECK:STDOUT: %Main.G = import_ref Main//lib, G, unloaded
// CHECK:STDOUT: %Main.import_ref.ab2 = import_ref Main//lib, loc15_27, unloaded
@@ -472,21 +472,21 @@ fn InstanceCallImportFail() {
// CHECK:STDOUT: .ImplicitAs = %Core.ImplicitAs
// CHECK:STDOUT: import Core//default
// CHECK:STDOUT: }
// CHECK:STDOUT: %Main.import_ref.c55 = import_ref Main//lib, inst16 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.c55 = import_ref Main//lib, inst17 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.e3c: %NonInstance.assoc_type = import_ref Main//lib, loc4_9, loaded [concrete = constants.%assoc0.8ce]
// CHECK:STDOUT: %Main.F = import_ref Main//lib, F, unloaded
// CHECK:STDOUT: %Main.import_ref.f85: %NonInstance.type = import_ref Main//lib, inst16 [no loc], loaded [symbolic = constants.%Self.73c]
// CHECK:STDOUT: %Main.import_ref.f85: %NonInstance.type = import_ref Main//lib, inst17 [no loc], loaded [symbolic = constants.%Self.73c]
// CHECK:STDOUT: %Core.import_ref.5ab3ec.1: type = import_ref Core//default, loc3_22, loaded [symbolic = @ImplicitAs.%Dest (constants.%Dest)]
// CHECK:STDOUT: %Core.import_ref.ff5 = import_ref Core//default, inst25 [no loc], unloaded
// CHECK:STDOUT: %Core.import_ref.ff5 = import_ref Core//default, inst26 [no loc], unloaded
// CHECK:STDOUT: %Core.import_ref.492: @ImplicitAs.%ImplicitAs.assoc_type (%ImplicitAs.assoc_type.ca0) = import_ref Core//default, loc4_35, loaded [symbolic = @ImplicitAs.%assoc0 (constants.%assoc0.dc0)]
// CHECK:STDOUT: %Core.Convert = import_ref Core//default, Convert, unloaded
// CHECK:STDOUT: %Core.import_ref.5ab3ec.2: type = import_ref Core//default, loc3_22, loaded [symbolic = @ImplicitAs.%Dest (constants.%Dest)]
// CHECK:STDOUT: %Core.import_ref.ce1: @ImplicitAs.%ImplicitAs.type (%ImplicitAs.type.d62) = import_ref Core//default, inst25 [no loc], loaded [symbolic = @ImplicitAs.%Self (constants.%Self.519)]
// CHECK:STDOUT: %Core.import_ref.ce1: @ImplicitAs.%ImplicitAs.type (%ImplicitAs.type.d62) = import_ref Core//default, inst26 [no loc], loaded [symbolic = @ImplicitAs.%Self (constants.%Self.519)]
// CHECK:STDOUT: %Core.import_ref.1c7: @ImplicitAs.%Convert.type (%Convert.type.275) = import_ref Core//default, loc4_35, loaded [symbolic = @ImplicitAs.%Convert (constants.%Convert.42e)]
// CHECK:STDOUT: %Main.import_ref.112 = import_ref Main//lib, loc7_30, unloaded
// CHECK:STDOUT: %Main.import_ref.ded207.1: type = import_ref Main//lib, loc7_13, loaded [concrete = constants.%struct_type.i]
// CHECK:STDOUT: %Main.import_ref.ef5: type = import_ref Main//lib, loc7_18, loaded [concrete = constants.%NonInstance.type]
// CHECK:STDOUT: %Main.import_ref.dcd = import_ref Main//lib, inst40 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.dcd = import_ref Main//lib, inst41 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.f09 = import_ref Main//lib, loc12_21, unloaded
// CHECK:STDOUT: %Main.G = import_ref Main//lib, G, unloaded
// CHECK:STDOUT: %Main.import_ref.ab2 = import_ref Main//lib, loc15_27, unloaded
@@ -652,21 +652,21 @@ fn InstanceCallImportFail() {
// CHECK:STDOUT: .ImplicitAs = %Core.ImplicitAs
// CHECK:STDOUT: import Core//default
// CHECK:STDOUT: }
// CHECK:STDOUT: %Main.import_ref.c55 = import_ref Main//lib, inst16 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.c55 = import_ref Main//lib, inst17 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.e3c: %NonInstance.assoc_type = import_ref Main//lib, loc4_9, loaded [concrete = constants.%assoc0.8ce]
// CHECK:STDOUT: %Main.F = import_ref Main//lib, F, unloaded
// CHECK:STDOUT: %Main.import_ref.f85: %NonInstance.type = import_ref Main//lib, inst16 [no loc], loaded [symbolic = constants.%Self.73c]
// CHECK:STDOUT: %Main.import_ref.f85: %NonInstance.type = import_ref Main//lib, inst17 [no loc], loaded [symbolic = constants.%Self.73c]
// CHECK:STDOUT: %Core.import_ref.5ab3ec.1: type = import_ref Core//default, loc3_22, loaded [symbolic = @ImplicitAs.%Dest (constants.%Dest)]
// CHECK:STDOUT: %Core.import_ref.ff5 = import_ref Core//default, inst25 [no loc], unloaded
// CHECK:STDOUT: %Core.import_ref.ff5 = import_ref Core//default, inst26 [no loc], unloaded
// CHECK:STDOUT: %Core.import_ref.492: @ImplicitAs.%ImplicitAs.assoc_type (%ImplicitAs.assoc_type.ca0) = import_ref Core//default, loc4_35, loaded [symbolic = @ImplicitAs.%assoc0 (constants.%assoc0.dc0)]
// CHECK:STDOUT: %Core.Convert = import_ref Core//default, Convert, unloaded
// CHECK:STDOUT: %Core.import_ref.5ab3ec.2: type = import_ref Core//default, loc3_22, loaded [symbolic = @ImplicitAs.%Dest (constants.%Dest)]
// CHECK:STDOUT: %Core.import_ref.ce1: @ImplicitAs.%ImplicitAs.type (%ImplicitAs.type.d62) = import_ref Core//default, inst25 [no loc], loaded [symbolic = @ImplicitAs.%Self (constants.%Self.519)]
// CHECK:STDOUT: %Core.import_ref.ce1: @ImplicitAs.%ImplicitAs.type (%ImplicitAs.type.d62) = import_ref Core//default, inst26 [no loc], loaded [symbolic = @ImplicitAs.%Self (constants.%Self.519)]
// CHECK:STDOUT: %Core.import_ref.1c7: @ImplicitAs.%Convert.type (%Convert.type.275) = import_ref Core//default, loc4_35, loaded [symbolic = @ImplicitAs.%Convert (constants.%Convert.42e)]
// CHECK:STDOUT: %Main.import_ref.112 = import_ref Main//lib, loc7_30, unloaded
// CHECK:STDOUT: %Main.import_ref.ded207.1: type = import_ref Main//lib, loc7_13, loaded [concrete = constants.%struct_type.i]
// CHECK:STDOUT: %Main.import_ref.ef5: type = import_ref Main//lib, loc7_18, loaded [concrete = constants.%NonInstance.type]
// CHECK:STDOUT: %Main.import_ref.dcd = import_ref Main//lib, inst40 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.dcd = import_ref Main//lib, inst41 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.f09 = import_ref Main//lib, loc12_21, unloaded
// CHECK:STDOUT: %Main.G = import_ref Main//lib, G, unloaded
// CHECK:STDOUT: %Main.import_ref.ab2 = import_ref Main//lib, loc15_27, unloaded
@@ -825,11 +825,11 @@ fn InstanceCallImportFail() {
// CHECK:STDOUT: imports {
// CHECK:STDOUT: %Main.NonInstance = import_ref Main//lib, NonInstance, unloaded
// CHECK:STDOUT: %Main.Instance: type = import_ref Main//lib, Instance, loaded [concrete = constants.%Instance.type]
// CHECK:STDOUT: %Main.import_ref.dcd = import_ref Main//lib, inst40 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.dcd = import_ref Main//lib, inst41 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.124: %Instance.assoc_type = import_ref Main//lib, loc12_21, loaded [concrete = constants.%assoc0]
// CHECK:STDOUT: %Main.G = import_ref Main//lib, G, unloaded
// CHECK:STDOUT: %Main.import_ref.0d8: %Instance.type = import_ref Main//lib, inst40 [no loc], loaded [symbolic = constants.%Self.cf8]
// CHECK:STDOUT: %Main.import_ref.c55 = import_ref Main//lib, inst16 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.0d8: %Instance.type = import_ref Main//lib, inst41 [no loc], loaded [symbolic = constants.%Self.cf8]
// CHECK:STDOUT: %Main.import_ref.c55 = import_ref Main//lib, inst17 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.49c = import_ref Main//lib, loc4_9, unloaded
// CHECK:STDOUT: %Main.F = import_ref Main//lib, F, unloaded
// CHECK:STDOUT: %Main.import_ref.112 = import_ref Main//lib, loc7_30, unloaded
@@ -962,11 +962,11 @@ fn InstanceCallImportFail() {
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [concrete] {
// CHECK:STDOUT: import Core//default
// CHECK:STDOUT: }
// CHECK:STDOUT: %Main.import_ref.dcd = import_ref Main//lib, inst40 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.dcd = import_ref Main//lib, inst41 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.124: %Instance.assoc_type = import_ref Main//lib, loc12_21, loaded [concrete = constants.%assoc0]
// CHECK:STDOUT: %Main.G = import_ref Main//lib, G, unloaded
// CHECK:STDOUT: %Main.import_ref.0d8: %Instance.type = import_ref Main//lib, inst40 [no loc], loaded [symbolic = constants.%Self.cf8]
// CHECK:STDOUT: %Main.import_ref.c55 = import_ref Main//lib, inst16 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.0d8: %Instance.type = import_ref Main//lib, inst41 [no loc], loaded [symbolic = constants.%Self.cf8]
// CHECK:STDOUT: %Main.import_ref.c55 = import_ref Main//lib, inst17 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.49c = import_ref Main//lib, loc4_9, unloaded
// CHECK:STDOUT: %Main.F = import_ref Main//lib, F, unloaded
// CHECK:STDOUT: %Main.import_ref.112 = import_ref Main//lib, loc7_30, unloaded
@@ -132,15 +132,15 @@ fn G(c: C) {
// CHECK:STDOUT: %Main.I = import_ref Main//extend_impl_library, I, unloaded
// CHECK:STDOUT: %Main.C: type = import_ref Main//extend_impl_library, C, loaded [concrete = constants.%C]
// CHECK:STDOUT: %Main.import_ref.8f2: <witness> = import_ref Main//extend_impl_library, loc12_1, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.2c4 = import_ref Main//extend_impl_library, inst26 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.2c4 = import_ref Main//extend_impl_library, inst27 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.3019d1.1: type = import_ref Main//extend_impl_library, loc9_18, loaded [concrete = constants.%I.type]
// CHECK:STDOUT: %Main.import_ref.e5d = import_ref Main//extend_impl_library, inst16 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.e5d = import_ref Main//extend_impl_library, inst17 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.c44: %I.assoc_type = import_ref Main//extend_impl_library, loc5_9, loaded [concrete = constants.%assoc0]
// CHECK:STDOUT: %Main.F = import_ref Main//extend_impl_library, F, unloaded
// CHECK:STDOUT: %Main.import_ref.b86: <witness> = import_ref Main//extend_impl_library, loc9_20, loaded [concrete = constants.%impl_witness]
// CHECK:STDOUT: %Main.import_ref.0ed: type = import_ref Main//extend_impl_library, loc9_15, loaded [concrete = constants.%C]
// CHECK:STDOUT: %Main.import_ref.3019d1.2: type = import_ref Main//extend_impl_library, loc9_18, loaded [concrete = constants.%I.type]
// CHECK:STDOUT: %Main.import_ref.5dd: %I.type = import_ref Main//extend_impl_library, inst16 [no loc], loaded [symbolic = constants.%Self]
// CHECK:STDOUT: %Main.import_ref.5dd: %I.type = import_ref Main//extend_impl_library, inst17 [no loc], loaded [symbolic = constants.%Self]
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -290,10 +290,10 @@ impl forall [T:! type] D as J(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.import_ref.5ab3ec.1: type = import_ref Main//import_generic, loc5_13, loaded [symbolic = @I.%T (constants.%T)]
// CHECK:STDOUT: %Main.import_ref.884 = import_ref Main//import_generic, inst30 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.884 = import_ref Main//import_generic, inst31 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.003 = import_ref Main//import_generic, loc8_33, unloaded
// CHECK:STDOUT: %Main.import_ref.8f2: <witness> = import_ref Main//import_generic, loc4_10, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.2c4 = import_ref Main//import_generic, inst15 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.2c4 = import_ref Main//import_generic, inst16 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.5ab3ec.2: type = import_ref Main//import_generic, loc8_14, loaded [symbolic = @impl.08450a.1.%T (constants.%T)]
// CHECK:STDOUT: %Main.import_ref.29aca8.1: type = import_ref Main//import_generic, loc8_24, loaded [concrete = constants.%C]
// CHECK:STDOUT: %Main.import_ref.4be: type = import_ref Main//import_generic, loc8_32, loaded [symbolic = @impl.08450a.1.%I.type (constants.%I.type.325)]
@@ -709,9 +709,9 @@ impl forall [T:! type] D as J(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.import_ref.5ab3ec.1: type = import_ref Main//import_generic_decl, loc5_13, loaded [symbolic = @J.%T (constants.%T)]
// CHECK:STDOUT: %Main.import_ref.ff5 = import_ref Main//import_generic_decl, inst30 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.ff5 = import_ref Main//import_generic_decl, inst31 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.8f2: <witness> = 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, inst15 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.cab = import_ref Main//import_generic_decl, inst16 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.5ab3ec.2: type = import_ref Main//import_generic_decl, loc11_14, loaded [symbolic = @impl.199bba.1.%T (constants.%T)]
// CHECK:STDOUT: %Main.import_ref.aa9f8a.1: type = import_ref Main//import_generic_decl, loc11_24, loaded [concrete = constants.%D]
// CHECK:STDOUT: %Main.import_ref.ded: type = import_ref Main//import_generic_decl, loc11_32, loaded [symbolic = @impl.199bba.1.%J.type (constants.%J.type.b72)]
@@ -97,9 +97,9 @@ import library "interface";
class C6 { }
impl C6 as I where .T = {};
// CHECK:STDERR: fail_missing_on_definition.carbon:[[@LINE+12]]:12: error: associated constant T not given a value in impl of interface I [ImplAssociatedConstantNeedsValue]
// CHECK:STDERR: fail_missing_on_definition.carbon:[[@LINE+12]]:1: error: associated constant T not given a value in impl of interface I [ImplAssociatedConstantNeedsValue]
// CHECK:STDERR: impl C6 as I { }
// CHECK:STDERR: ^
// CHECK:STDERR: ^~~~~~~~~~~~~~
// CHECK:STDERR: fail_missing_on_definition.carbon:[[@LINE-7]]:1: in import [InImport]
// CHECK:STDERR: interface.carbon:3:19: note: associated constant declared here [AssociatedConstantHere]
// CHECK:STDERR: interface I { let T:! type; }
@@ -327,10 +327,10 @@ impl CD as IF where .F = 0 {
// CHECK:STDOUT: %Main.I: type = import_ref Main//interface, I, loaded [concrete = constants.%I.type]
// CHECK:STDOUT: %Main.I3 = import_ref Main//interface, I3, unloaded
// CHECK:STDOUT: %Main.NonType = import_ref Main//interface, NonType, unloaded
// CHECK:STDOUT: %Main.import_ref.e5d = import_ref Main//interface, inst16 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.e5d = import_ref Main//interface, inst17 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.4fb: %I.assoc_type = import_ref Main//interface, loc3_20, loaded [concrete = constants.%assoc0]
// CHECK:STDOUT: %Main.T: type = import_ref Main//interface, T, loaded [concrete = %T]
// CHECK:STDOUT: %Main.import_ref.5dd: %I.type = import_ref Main//interface, inst16 [no loc], loaded [symbolic = constants.%Self]
// CHECK:STDOUT: %Main.import_ref.5dd: %I.type = import_ref Main//interface, inst17 [no loc], loaded [symbolic = constants.%Self]
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -359,6 +359,7 @@ impl CD as IF where .F = 0 {
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (constants.%empty_struct_type) [concrete = constants.%impl_witness]
// CHECK:STDOUT: %impl_witness_assoc_constant: type = impl_witness_assoc_constant constants.%empty_struct_type [concrete = constants.%empty_struct_type]
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @I [from "interface.carbon"] {
@@ -412,10 +413,10 @@ impl CD as IF where .F = 0 {
// CHECK:STDOUT: %Main.I: type = import_ref Main//interface, I, loaded [concrete = constants.%I.type]
// CHECK:STDOUT: %Main.I3 = import_ref Main//interface, I3, unloaded
// CHECK:STDOUT: %Main.NonType = import_ref Main//interface, NonType, unloaded
// CHECK:STDOUT: %Main.import_ref.e5d = import_ref Main//interface, inst16 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.e5d = import_ref Main//interface, inst17 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.4fb: %I.assoc_type = import_ref Main//interface, loc3_20, loaded [concrete = constants.%assoc0]
// CHECK:STDOUT: %Main.T: type = import_ref Main//interface, T, loaded [concrete = %T]
// CHECK:STDOUT: %Main.import_ref.5dd: %I.type = import_ref Main//interface, inst16 [no loc], loaded [symbolic = constants.%Self]
// CHECK:STDOUT: %Main.import_ref.5dd: %I.type = import_ref Main//interface, inst17 [no loc], loaded [symbolic = constants.%Self]
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -444,6 +445,7 @@ impl CD as IF where .F = 0 {
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (constants.%empty_struct_type) [concrete = constants.%impl_witness]
// CHECK:STDOUT: %impl_witness_assoc_constant: type = impl_witness_assoc_constant constants.%empty_struct_type [concrete = constants.%empty_struct_type]
// CHECK:STDOUT: impl_decl @impl [concrete] {} {
// CHECK:STDOUT: %C2.ref.loc6: type = name_ref C2, file.%C2.decl [concrete = constants.%C2]
// CHECK:STDOUT: %I.ref.loc6: type = name_ref I, imports.%Main.I [concrete = constants.%I.type]
@@ -514,10 +516,10 @@ impl CD as IF where .F = 0 {
// CHECK:STDOUT: %Main.I: type = import_ref Main//interface, I, loaded [concrete = constants.%I.type]
// CHECK:STDOUT: %Main.I3 = import_ref Main//interface, I3, unloaded
// CHECK:STDOUT: %Main.NonType = import_ref Main//interface, NonType, unloaded
// CHECK:STDOUT: %Main.import_ref.e5d = import_ref Main//interface, inst16 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.e5d = import_ref Main//interface, inst17 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.4fb: %I.assoc_type = import_ref Main//interface, loc3_20, loaded [concrete = constants.%assoc0]
// CHECK:STDOUT: %Main.T: type = import_ref Main//interface, T, loaded [concrete = %T]
// CHECK:STDOUT: %Main.import_ref.5dd: %I.type = import_ref Main//interface, inst16 [no loc], loaded [symbolic = constants.%Self]
// CHECK:STDOUT: %Main.import_ref.5dd: %I.type = import_ref Main//interface, inst17 [no loc], loaded [symbolic = constants.%Self]
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -551,6 +553,7 @@ impl CD as IF where .F = 0 {
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT: %impl_witness.loc10: <witness> = impl_witness (constants.%empty_struct_type) [concrete = constants.%impl_witness.6de]
// CHECK:STDOUT: %impl_witness_assoc_constant: type = impl_witness_assoc_constant constants.%empty_struct_type [concrete = constants.%empty_struct_type]
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @I [from "interface.carbon"] {
@@ -609,10 +612,10 @@ impl CD as IF where .F = 0 {
// CHECK:STDOUT: %Main.I: type = import_ref Main//interface, I, loaded [concrete = constants.%I.type]
// CHECK:STDOUT: %Main.I3 = import_ref Main//interface, I3, unloaded
// CHECK:STDOUT: %Main.NonType = import_ref Main//interface, NonType, unloaded
// CHECK:STDOUT: %Main.import_ref.e5d = import_ref Main//interface, inst16 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.e5d = import_ref Main//interface, inst17 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.4fb: %I.assoc_type = import_ref Main//interface, loc3_20, loaded [concrete = constants.%assoc0]
// CHECK:STDOUT: %Main.T: type = import_ref Main//interface, T, loaded [concrete = %T]
// CHECK:STDOUT: %Main.import_ref.5dd: %I.type = import_ref Main//interface, inst16 [no loc], loaded [symbolic = constants.%Self]
// CHECK:STDOUT: %Main.import_ref.5dd: %I.type = import_ref Main//interface, inst17 [no loc], loaded [symbolic = constants.%Self]
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -641,6 +644,7 @@ impl CD as IF where .F = 0 {
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT: %impl_witness.loc9: <witness> = impl_witness (constants.%empty_struct_type) [concrete = constants.%impl_witness.6de]
// CHECK:STDOUT: %impl_witness_assoc_constant.loc9: type = impl_witness_assoc_constant constants.%empty_struct_type [concrete = constants.%empty_struct_type]
// CHECK:STDOUT: impl_decl @impl.2de [concrete] {} {
// CHECK:STDOUT: %C4.ref: type = name_ref C4, file.%C4.decl [concrete = constants.%C4]
// CHECK:STDOUT: %I.ref: type = name_ref I, imports.%Main.I [concrete = constants.%I.type]
@@ -658,6 +662,7 @@ impl CD as IF where .F = 0 {
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT: %impl_witness.loc10: <witness> = impl_witness (constants.%empty_tuple.type) [concrete = constants.%impl_witness.2a6]
// CHECK:STDOUT: %impl_witness_assoc_constant.loc10: type = impl_witness_assoc_constant constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @I [from "interface.carbon"] {
@@ -717,16 +722,16 @@ impl CD as IF where .F = 0 {
// CHECK:STDOUT: %Main.I = import_ref Main//interface, I, unloaded
// CHECK:STDOUT: %Main.I3: type = import_ref Main//interface, I3, loaded [concrete = constants.%I3.type]
// CHECK:STDOUT: %Main.NonType = import_ref Main//interface, NonType, unloaded
// CHECK:STDOUT: %Main.import_ref.148 = import_ref Main//interface, inst24 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.148 = import_ref Main//interface, inst25 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.f5f: %I3.assoc_type = import_ref Main//interface, loc6_9, loaded [concrete = constants.%assoc0]
// CHECK:STDOUT: %Main.import_ref.680: %I3.assoc_type = import_ref Main//interface, loc7_9, loaded [concrete = constants.%assoc1]
// CHECK:STDOUT: %Main.import_ref.181: %I3.assoc_type = import_ref Main//interface, loc8_9, loaded [concrete = constants.%assoc2]
// CHECK:STDOUT: %Main.T1 = import_ref Main//interface, T1, unloaded
// CHECK:STDOUT: %Main.T2 = import_ref Main//interface, T2, unloaded
// CHECK:STDOUT: %Main.T3 = import_ref Main//interface, T3, unloaded
// CHECK:STDOUT: %Main.import_ref.8a8474.1: %I3.type = import_ref Main//interface, inst24 [no loc], loaded [symbolic = constants.%Self]
// CHECK:STDOUT: %Main.import_ref.8a8474.2: %I3.type = import_ref Main//interface, inst24 [no loc], loaded [symbolic = constants.%Self]
// CHECK:STDOUT: %Main.import_ref.8a8474.3: %I3.type = import_ref Main//interface, inst24 [no loc], loaded [symbolic = constants.%Self]
// CHECK:STDOUT: %Main.import_ref.8a8474.1: %I3.type = import_ref Main//interface, inst25 [no loc], loaded [symbolic = constants.%Self]
// CHECK:STDOUT: %Main.import_ref.8a8474.2: %I3.type = import_ref Main//interface, inst25 [no loc], loaded [symbolic = constants.%Self]
// CHECK:STDOUT: %Main.import_ref.8a8474.3: %I3.type = import_ref Main//interface, inst25 [no loc], loaded [symbolic = constants.%Self]
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -882,10 +887,10 @@ impl CD as IF where .F = 0 {
// CHECK:STDOUT: %Main.I: type = import_ref Main//interface, I, loaded [concrete = constants.%I.type]
// CHECK:STDOUT: %Main.I3 = import_ref Main//interface, I3, unloaded
// CHECK:STDOUT: %Main.NonType = import_ref Main//interface, NonType, unloaded
// CHECK:STDOUT: %Main.import_ref.e5d = import_ref Main//interface, inst16 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.e5d = import_ref Main//interface, inst17 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.4fb: %I.assoc_type = import_ref Main//interface, loc3_20, loaded [concrete = constants.%assoc0]
// CHECK:STDOUT: %Main.T: type = import_ref Main//interface, T, loaded [concrete = %T]
// CHECK:STDOUT: %Main.import_ref.5dd: %I.type = import_ref Main//interface, inst16 [no loc], loaded [symbolic = constants.%Self]
// CHECK:STDOUT: %Main.import_ref.5dd: %I.type = import_ref Main//interface, inst17 [no loc], loaded [symbolic = constants.%Self]
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -914,6 +919,7 @@ impl CD as IF where .F = 0 {
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT: %impl_witness.loc5: <witness> = impl_witness (constants.%empty_struct_type) [concrete = constants.%impl_witness.6de]
// CHECK:STDOUT: %impl_witness_assoc_constant: type = impl_witness_assoc_constant constants.%empty_struct_type [concrete = constants.%empty_struct_type]
// CHECK:STDOUT: impl_decl @impl.482 [concrete] {} {
// CHECK:STDOUT: %C6.ref: type = name_ref C6, file.%C6.decl [concrete = constants.%C6]
// CHECK:STDOUT: %I.ref: type = name_ref I, imports.%Main.I [concrete = constants.%I.type]
@@ -975,10 +981,10 @@ impl CD as IF where .F = 0 {
// CHECK:STDOUT: %Main.I: type = import_ref Main//interface, I, loaded [concrete = constants.%I.type]
// CHECK:STDOUT: %Main.I3 = import_ref Main//interface, I3, unloaded
// CHECK:STDOUT: %Main.NonType = import_ref Main//interface, NonType, unloaded
// CHECK:STDOUT: %Main.import_ref.e5d = import_ref Main//interface, inst16 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.e5d = import_ref Main//interface, inst17 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.4fb: %I.assoc_type = import_ref Main//interface, loc3_20, loaded [concrete = constants.%assoc0]
// CHECK:STDOUT: %Main.T: type = import_ref Main//interface, T, loaded [concrete = %T]
// CHECK:STDOUT: %Main.import_ref.5dd: %I.type = import_ref Main//interface, inst16 [no loc], loaded [symbolic = constants.%Self]
// CHECK:STDOUT: %Main.import_ref.5dd: %I.type = import_ref Main//interface, inst17 [no loc], loaded [symbolic = constants.%Self]
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -1016,6 +1022,7 @@ impl CD as IF where .F = 0 {
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (<error>) [concrete = constants.%impl_witness]
// CHECK:STDOUT: %impl_witness_assoc_constant: type = impl_witness_assoc_constant constants.%empty_struct_type [concrete = constants.%empty_struct_type]
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @I [from "interface.carbon"] {
@@ -1068,10 +1075,10 @@ impl CD as IF where .F = 0 {
// CHECK:STDOUT: %Main.I: type = import_ref Main//interface, I, loaded [concrete = constants.%I.type]
// CHECK:STDOUT: %Main.I3 = import_ref Main//interface, I3, unloaded
// CHECK:STDOUT: %Main.NonType = import_ref Main//interface, NonType, unloaded
// CHECK:STDOUT: %Main.import_ref.e5d = import_ref Main//interface, inst16 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.e5d = import_ref Main//interface, inst17 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.4fb: %I.assoc_type = import_ref Main//interface, loc3_20, loaded [concrete = constants.%assoc0]
// CHECK:STDOUT: %Main.T = import_ref Main//interface, T, unloaded
// CHECK:STDOUT: %Main.import_ref.5dd: %I.type = import_ref Main//interface, inst16 [no loc], loaded [symbolic = constants.%Self]
// CHECK:STDOUT: %Main.import_ref.5dd: %I.type = import_ref Main//interface, inst17 [no loc], loaded [symbolic = constants.%Self]
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -1159,10 +1166,10 @@ impl CD as IF where .F = 0 {
// CHECK:STDOUT: %Main.I: type = import_ref Main//interface, I, loaded [concrete = constants.%I.type]
// CHECK:STDOUT: %Main.I3 = import_ref Main//interface, I3, unloaded
// CHECK:STDOUT: %Main.NonType = import_ref Main//interface, NonType, unloaded
// CHECK:STDOUT: %Main.import_ref.e5d = import_ref Main//interface, inst16 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.e5d = import_ref Main//interface, inst17 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.4fb: %I.assoc_type = import_ref Main//interface, loc3_20, loaded [concrete = constants.%assoc0]
// CHECK:STDOUT: %Main.T = import_ref Main//interface, T, unloaded
// CHECK:STDOUT: %Main.import_ref.5dd: %I.type = import_ref Main//interface, inst16 [no loc], loaded [symbolic = constants.%Self]
// CHECK:STDOUT: %Main.import_ref.5dd: %I.type = import_ref Main//interface, inst17 [no loc], loaded [symbolic = constants.%Self]
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -1250,10 +1257,10 @@ impl CD as IF where .F = 0 {
// CHECK:STDOUT: %Main.I: type = import_ref Main//interface, I, loaded [concrete = constants.%I.type]
// CHECK:STDOUT: %Main.I3 = import_ref Main//interface, I3, unloaded
// CHECK:STDOUT: %Main.NonType = import_ref Main//interface, NonType, unloaded
// CHECK:STDOUT: %Main.import_ref.e5d = import_ref Main//interface, inst16 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.e5d = import_ref Main//interface, inst17 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.4fb: %I.assoc_type = import_ref Main//interface, loc3_20, loaded [concrete = constants.%assoc0]
// CHECK:STDOUT: %Main.T = import_ref Main//interface, T, unloaded
// CHECK:STDOUT: %Main.import_ref.5dd: %I.type = import_ref Main//interface, inst16 [no loc], loaded [symbolic = constants.%Self]
// CHECK:STDOUT: %Main.import_ref.5dd: %I.type = import_ref Main//interface, inst17 [no loc], loaded [symbolic = constants.%Self]
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -1343,10 +1350,10 @@ impl CD as IF where .F = 0 {
// CHECK:STDOUT: %Main.I: type = import_ref Main//interface, I, loaded [concrete = constants.%I.type]
// CHECK:STDOUT: %Main.I3 = import_ref Main//interface, I3, unloaded
// CHECK:STDOUT: %Main.NonType = import_ref Main//interface, NonType, unloaded
// CHECK:STDOUT: %Main.import_ref.e5d = import_ref Main//interface, inst16 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.e5d = import_ref Main//interface, inst17 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.4fb: %I.assoc_type = import_ref Main//interface, loc3_20, loaded [concrete = constants.%assoc0]
// CHECK:STDOUT: %Main.T: type = import_ref Main//interface, T, loaded [concrete = %T]
// CHECK:STDOUT: %Main.import_ref.5dd: %I.type = import_ref Main//interface, inst16 [no loc], loaded [symbolic = constants.%Self]
// CHECK:STDOUT: %Main.import_ref.5dd: %I.type = import_ref Main//interface, inst17 [no loc], loaded [symbolic = constants.%Self]
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -1384,6 +1391,7 @@ impl CD as IF where .F = 0 {
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (constants.%empty_struct_type) [concrete = constants.%impl_witness]
// CHECK:STDOUT: %impl_witness_assoc_constant: type = impl_witness_assoc_constant constants.%empty_struct_type [concrete = constants.%empty_struct_type]
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @I [from "interface.carbon"] {
@@ -1440,10 +1448,10 @@ impl CD as IF where .F = 0 {
// CHECK:STDOUT: %Main.I = import_ref Main//interface, I, unloaded
// CHECK:STDOUT: %Main.I3 = import_ref Main//interface, I3, unloaded
// CHECK:STDOUT: %Main.NonType: type = import_ref Main//interface, NonType, loaded [concrete = constants.%NonType.type]
// CHECK:STDOUT: %Main.import_ref.8b7 = import_ref Main//interface, inst38 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.8b7 = import_ref Main//interface, inst39 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.9fa: %NonType.assoc_type = import_ref Main//interface, loc12_8, loaded [concrete = constants.%assoc0]
// CHECK:STDOUT: %Main.Y: %struct_type.a.225 = import_ref Main//interface, Y, loaded [concrete = %Y]
// CHECK:STDOUT: %Main.import_ref.86c: %NonType.type = import_ref Main//interface, inst38 [no loc], loaded [symbolic = constants.%Self]
// CHECK:STDOUT: %Main.import_ref.86c: %NonType.type = import_ref Main//interface, inst39 [no loc], loaded [symbolic = constants.%Self]
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -1476,6 +1484,7 @@ impl CD as IF where .F = 0 {
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (constants.%struct) [concrete = constants.%impl_witness]
// CHECK:STDOUT: %impl_witness_assoc_constant: %struct_type.a.225 = impl_witness_assoc_constant constants.%struct [concrete = constants.%struct]
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @NonType [from "interface.carbon"] {
@@ -1569,10 +1578,10 @@ impl CD as IF where .F = 0 {
// CHECK:STDOUT:
// CHECK:STDOUT: imports {
// CHECK:STDOUT: %Main.IF: type = import_ref Main//interface_with_function, IF, loaded [concrete = constants.%IF.type]
// CHECK:STDOUT: %Main.import_ref.a2a = import_ref Main//interface_with_function, inst16 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.a2a = import_ref Main//interface_with_function, inst17 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.f22: %IF.assoc_type = import_ref Main//interface_with_function, loc3_22, loaded [concrete = constants.%assoc0]
// CHECK:STDOUT: %Main.F: %F.type.496 = import_ref Main//interface_with_function, F, loaded [concrete = constants.%F.1de]
// CHECK:STDOUT: %Main.import_ref.f57: %IF.type = import_ref Main//interface_with_function, inst16 [no loc], loaded [symbolic = constants.%Self]
// CHECK:STDOUT: %Main.import_ref.f57: %IF.type = import_ref Main//interface_with_function, inst17 [no loc], loaded [symbolic = constants.%Self]
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -122,10 +122,10 @@ fn F(x: (), y: ()) -> () {
// CHECK:STDOUT:
// CHECK:STDOUT: imports {
// CHECK:STDOUT: %Main.Add: type = import_ref Main//a, Add, loaded [concrete = constants.%Add.type]
// CHECK:STDOUT: %Main.import_ref.07c = import_ref Main//a, inst16 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.07c = import_ref Main//a, inst17 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.f99: %Add.assoc_type = import_ref Main//a, loc5_41, loaded [concrete = constants.%assoc0]
// CHECK:STDOUT: %Main.Op: %Op.type.31b = import_ref Main//a, Op, loaded [concrete = constants.%Op.d59]
// CHECK:STDOUT: %Main.import_ref.e5e: %Add.type = import_ref Main//a, inst16 [no loc], loaded [symbolic = constants.%Self]
// CHECK:STDOUT: %Main.import_ref.e5e: %Add.type = import_ref Main//a, inst17 [no loc], loaded [symbolic = constants.%Self]
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -217,11 +217,11 @@ fn H() -> C({}).(I.F)() {}
// CHECK:STDOUT: %Main.I: type = import_ref Main//import_generic, I, loaded [concrete = constants.%I.type]
// CHECK:STDOUT: %Main.import_ref.5ab3ec.1: type = import_ref Main//import_generic, loc4_9, loaded [symbolic = @C.%T (constants.%T)]
// CHECK:STDOUT: %Main.import_ref.8f2: <witness> = import_ref Main//import_generic, loc4_20, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.4c0 = import_ref Main//import_generic, inst24 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.e5d = import_ref Main//import_generic, inst30 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.4c0 = import_ref Main//import_generic, inst25 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.e5d = import_ref Main//import_generic, inst31 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.c44: %I.assoc_type = import_ref Main//import_generic, loc7_9, loaded [concrete = constants.%assoc0]
// CHECK:STDOUT: %Main.F = import_ref Main//import_generic, F, unloaded
// CHECK:STDOUT: %Main.import_ref.5dd: %I.type = import_ref Main//import_generic, inst30 [no loc], loaded [symbolic = constants.%Self]
// CHECK:STDOUT: %Main.import_ref.5dd: %I.type = import_ref Main//import_generic, inst31 [no loc], loaded [symbolic = constants.%Self]
// CHECK:STDOUT: %Main.import_ref.d91: <witness> = import_ref Main//import_generic, loc10_34, loaded [symbolic = @impl.%impl_witness (constants.%impl_witness.bbe)]
// CHECK:STDOUT: %Main.import_ref.5ab3ec.2: type = import_ref Main//import_generic, loc10_14, loaded [symbolic = @impl.%T (constants.%T)]
// CHECK:STDOUT: %Main.import_ref.499: type = import_ref Main//import_generic, loc10_27, loaded [symbolic = @impl.%C (constants.%C.f2e)]
@@ -446,19 +446,19 @@ fn InstanceC(a: A) -> C {
// CHECK:STDOUT: %Main.C = import_ref Main//action, C, unloaded
// CHECK:STDOUT: %Main.F = import_ref Main//action, F, unloaded
// CHECK:STDOUT: %Main.import_ref.8f24d3.1: <witness> = import_ref Main//action, loc9_10, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.54a = import_ref Main//action, inst59 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.54a = import_ref Main//action, inst60 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.5ab3ec.1: type = import_ref Main//action, loc4_18, loaded [symbolic = @Action.%T (constants.%T)]
// CHECK:STDOUT: %Main.import_ref.ddc = import_ref Main//action, inst25 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.ddc = import_ref Main//action, inst26 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.c55: @Action.%Action.assoc_type (%Action.assoc_type.32e) = import_ref Main//action, loc5_22, loaded [symbolic = @Action.%assoc0 (constants.%assoc0.f18741.2)]
// CHECK:STDOUT: %Main.Op = import_ref Main//action, Op, unloaded
// CHECK:STDOUT: %Main.import_ref.71c: <witness> = import_ref Main//action, loc12_21, loaded [concrete = constants.%impl_witness]
// CHECK:STDOUT: %Main.import_ref.8f24d3.2: <witness> = import_ref Main//action, loc8_10, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.da3 = import_ref Main//action, inst54 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.da3 = import_ref Main//action, inst55 [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.bb2: type = import_ref Main//action, loc12_19, loaded [concrete = constants.%Action.type.cb0]
// CHECK:STDOUT: %Main.import_ref.7b5 = import_ref Main//action, loc13_23, unloaded
// CHECK:STDOUT: %Main.import_ref.5ab3ec.2: type = import_ref Main//action, loc4_18, loaded [symbolic = @Action.%T (constants.%T)]
// CHECK:STDOUT: %Main.import_ref.835: @Action.%Action.type (%Action.type.cca) = import_ref Main//action, inst25 [no loc], loaded [symbolic = @Action.%Self (constants.%Self.e98)]
// CHECK:STDOUT: %Main.import_ref.835: @Action.%Action.type (%Action.type.cca) = import_ref Main//action, inst26 [no loc], loaded [symbolic = @Action.%Self (constants.%Self.e98)]
// CHECK:STDOUT: %Main.import_ref.0e3753.1 = import_ref Main//action, loc5_22, unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -620,22 +620,22 @@ fn InstanceC(a: A) -> C {
// CHECK:STDOUT: %Main.C: type = import_ref Main//action, C, loaded [concrete = constants.%C]
// CHECK:STDOUT: %Main.F = import_ref Main//action, F, unloaded
// CHECK:STDOUT: %Main.import_ref.8f24d3.1: <witness> = import_ref Main//action, loc9_10, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.54a = import_ref Main//action, inst59 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.54a = import_ref Main//action, inst60 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.5ab3ec.1: type = import_ref Main//action, loc4_18, loaded [symbolic = @Action.%T (constants.%T)]
// CHECK:STDOUT: %Main.import_ref.ddc = import_ref Main//action, inst25 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.ddc = import_ref Main//action, inst26 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.c55: @Action.%Action.assoc_type (%Action.assoc_type.32e) = import_ref Main//action, loc5_22, loaded [symbolic = @Action.%assoc0 (constants.%assoc0.f18)]
// CHECK:STDOUT: %Main.Op = import_ref Main//action, Op, unloaded
// CHECK:STDOUT: %Main.import_ref.7a1 = import_ref Main//action, loc12_21, unloaded
// CHECK:STDOUT: %Main.import_ref.8f24d3.2: <witness> = import_ref Main//action, loc8_10, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.da3 = import_ref Main//action, inst54 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.da3 = import_ref Main//action, inst55 [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.bb2: type = import_ref Main//action, loc12_19, loaded [concrete = constants.%Action.type.cb0]
// CHECK:STDOUT: %Main.import_ref.7b5 = import_ref Main//action, loc13_23, unloaded
// CHECK:STDOUT: %Main.import_ref.5ab3ec.2: type = import_ref Main//action, loc4_18, loaded [symbolic = @Action.%T (constants.%T)]
// CHECK:STDOUT: %Main.import_ref.835: @Action.%Action.type (%Action.type.cca) = import_ref Main//action, inst25 [no loc], loaded [symbolic = @Action.%Self (constants.%Self.e98)]
// CHECK:STDOUT: %Main.import_ref.835: @Action.%Action.type (%Action.type.cca) = import_ref Main//action, inst26 [no loc], loaded [symbolic = @Action.%Self (constants.%Self.e98)]
// CHECK:STDOUT: %Main.import_ref.1f6: @Action.%Op.type (%Op.type.036) = import_ref Main//action, loc5_22, loaded [symbolic = @Action.%Op (constants.%Op.6ed)]
// CHECK:STDOUT: %Main.import_ref.8f24d3.3: <witness> = import_ref Main//action, loc10_10, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.2c4 = import_ref Main//action, inst62 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.2c4 = import_ref Main//action, inst63 [no loc], unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -1046,25 +1046,25 @@ fn InstanceC(a: A) -> C {
// CHECK:STDOUT: %Main.A: type = import_ref Main//factory, A, loaded [concrete = constants.%A]
// CHECK:STDOUT: %Main.B: type = import_ref Main//factory, B, loaded [concrete = constants.%B]
// CHECK:STDOUT: %Main.import_ref.8f24d3.1: <witness> = import_ref Main//factory, loc12_10, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.54a = import_ref Main//factory, inst78 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.54a = import_ref Main//factory, inst79 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.5ab3ec.1: type = import_ref Main//factory, loc4_19, loaded [symbolic = @Factory.%T (constants.%T)]
// CHECK:STDOUT: %Main.import_ref.fbb = import_ref Main//factory, inst25 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.fbb = import_ref Main//factory, inst26 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.46c: @Factory.%Factory.assoc_type (%Factory.assoc_type.207) = import_ref Main//factory, loc6_17, loaded [symbolic = @Factory.%assoc0 (constants.%assoc0.46d25f.2)]
// CHECK:STDOUT: %Main.import_ref.2e4: @Factory.%Factory.assoc_type (%Factory.assoc_type.207) = import_ref Main//factory, loc8_31, loaded [symbolic = @Factory.%assoc1 (constants.%assoc1.16541d.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.f8d: <witness> = import_ref Main//factory, loc14_22, loaded [concrete = constants.%impl_witness]
// CHECK:STDOUT: %Main.import_ref.8f24d3.2: <witness> = import_ref Main//factory, loc11_10, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.da3 = import_ref Main//factory, inst73 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.da3 = import_ref Main//factory, inst74 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.984: type = import_ref Main//factory, loc14_6, loaded [concrete = constants.%A]
// CHECK:STDOUT: %Main.import_ref.bd2: type = import_ref Main//factory, loc14_20, loaded [concrete = constants.%Factory.type.a5d]
// CHECK:STDOUT: %Main.import_ref.a27 = import_ref Main//factory, loc15_17, unloaded
// CHECK:STDOUT: %Main.import_ref.163 = import_ref Main//factory, loc16_31, unloaded
// CHECK:STDOUT: %Main.import_ref.5ab3ec.2: type = import_ref Main//factory, loc4_19, loaded [symbolic = @Factory.%T (constants.%T)]
// CHECK:STDOUT: %Main.import_ref.91b53a.1: @Factory.%Factory.type (%Factory.type.c96) = import_ref Main//factory, inst25 [no loc], loaded [symbolic = @Factory.%Self (constants.%Self.9ba)]
// CHECK:STDOUT: %Main.import_ref.91b53a.1: @Factory.%Factory.type (%Factory.type.c96) = import_ref Main//factory, inst26 [no loc], loaded [symbolic = @Factory.%Self (constants.%Self.9ba)]
// CHECK:STDOUT: %Main.import_ref.21018a.1 = import_ref Main//factory, loc6_17, unloaded
// CHECK:STDOUT: %Main.import_ref.5ab3ec.3: type = import_ref Main//factory, loc4_19, loaded [symbolic = @Factory.%T (constants.%T)]
// CHECK:STDOUT: %Main.import_ref.91b53a.2: @Factory.%Factory.type (%Factory.type.c96) = import_ref Main//factory, inst25 [no loc], loaded [symbolic = @Factory.%Self (constants.%Self.9ba)]
// CHECK:STDOUT: %Main.import_ref.91b53a.2: @Factory.%Factory.type (%Factory.type.c96) = import_ref Main//factory, inst26 [no loc], loaded [symbolic = @Factory.%Self (constants.%Self.9ba)]
// CHECK:STDOUT: %Main.import_ref.46fc3c.1 = import_ref Main//factory, loc8_31, unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -1289,25 +1289,25 @@ fn InstanceC(a: A) -> C {
// CHECK:STDOUT: import Core//default
// CHECK:STDOUT: }
// CHECK:STDOUT: %Main.import_ref.8f24d3.1: <witness> = import_ref Main//factory, loc12_10, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.54a = import_ref Main//factory, inst78 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.54a = import_ref Main//factory, inst79 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.5ab3ec.1: type = import_ref Main//factory, loc4_19, loaded [symbolic = @Factory.%T (constants.%T)]
// CHECK:STDOUT: %Main.import_ref.fbb = import_ref Main//factory, inst25 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.fbb = import_ref Main//factory, inst26 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.46c: @Factory.%Factory.assoc_type (%Factory.assoc_type.207) = import_ref Main//factory, loc6_17, loaded [symbolic = @Factory.%assoc0 (constants.%assoc0.46d)]
// CHECK:STDOUT: %Main.import_ref.2e4: @Factory.%Factory.assoc_type (%Factory.assoc_type.207) = import_ref Main//factory, loc8_31, loaded [symbolic = @Factory.%assoc1 (constants.%assoc1.165)]
// 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.e41 = import_ref Main//factory, loc14_22, unloaded
// CHECK:STDOUT: %Main.import_ref.8f24d3.2: <witness> = import_ref Main//factory, loc11_10, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.da3 = import_ref Main//factory, inst73 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.da3 = import_ref Main//factory, inst74 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.984: type = import_ref Main//factory, loc14_6, loaded [concrete = constants.%A]
// CHECK:STDOUT: %Main.import_ref.bd2: type = import_ref Main//factory, loc14_20, loaded [concrete = constants.%Factory.type.a5d]
// CHECK:STDOUT: %Main.import_ref.a27 = import_ref Main//factory, loc15_17, unloaded
// CHECK:STDOUT: %Main.import_ref.163 = import_ref Main//factory, loc16_31, unloaded
// CHECK:STDOUT: %Main.import_ref.5ab3ec.2: type = import_ref Main//factory, loc4_19, loaded [symbolic = @Factory.%T (constants.%T)]
// CHECK:STDOUT: %Main.import_ref.91b53a.1: @Factory.%Factory.type (%Factory.type.c96) = import_ref Main//factory, inst25 [no loc], loaded [symbolic = @Factory.%Self (constants.%Self.9ba)]
// CHECK:STDOUT: %Main.import_ref.91b53a.1: @Factory.%Factory.type (%Factory.type.c96) = import_ref Main//factory, inst26 [no loc], loaded [symbolic = @Factory.%Self (constants.%Self.9ba)]
// CHECK:STDOUT: %Main.import_ref.1aa: @Factory.%Make.type (%Make.type.598) = import_ref Main//factory, loc6_17, loaded [symbolic = @Factory.%Make (constants.%Make.737)]
// CHECK:STDOUT: %Main.import_ref.5ab3ec.3: type = import_ref Main//factory, loc4_19, loaded [symbolic = @Factory.%T (constants.%T)]
// CHECK:STDOUT: %Main.import_ref.91b53a.2: @Factory.%Factory.type (%Factory.type.c96) = import_ref Main//factory, inst25 [no loc], loaded [symbolic = @Factory.%Self (constants.%Self.9ba)]
// CHECK:STDOUT: %Main.import_ref.91b53a.2: @Factory.%Factory.type (%Factory.type.c96) = import_ref Main//factory, inst26 [no loc], loaded [symbolic = @Factory.%Self (constants.%Self.9ba)]
// CHECK:STDOUT: %Main.import_ref.5be: @Factory.%Method.type (%Method.type.7ee) = import_ref Main//factory, loc8_31, loaded [symbolic = @Factory.%Method (constants.%Method.a71)]
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -143,7 +143,7 @@ impl () as D;
// CHECK:STDOUT:
// CHECK:STDOUT: imports {
// CHECK:STDOUT: %Main.A: type = import_ref Main//decl_in_api_definition_in_impl, A, loaded [concrete = constants.%A.type]
// CHECK:STDOUT: %Main.import_ref.b61 = import_ref Main//decl_in_api_definition_in_impl, inst16 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.b61 = import_ref Main//decl_in_api_definition_in_impl, inst17 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.e5c: type = import_ref Main//decl_in_api_definition_in_impl, loc10_7, loaded [concrete = constants.%empty_tuple.type]
// CHECK:STDOUT: %Main.import_ref.831: type = import_ref Main//decl_in_api_definition_in_impl, loc10_12, loaded [concrete = constants.%A.type]
// CHECK:STDOUT: }
@@ -244,7 +244,7 @@ impl () as D;
// CHECK:STDOUT:
// CHECK:STDOUT: imports {
// CHECK:STDOUT: %Main.B = import_ref Main//decl_only_in_api, B, unloaded
// CHECK:STDOUT: %Main.import_ref.420 = import_ref Main//decl_only_in_api, inst16 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.420 = import_ref Main//decl_only_in_api, inst17 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.e5c: type = import_ref Main//decl_only_in_api, loc10_7, loaded [concrete = constants.%empty_tuple.type]
// CHECK:STDOUT: %Main.import_ref.171: type = import_ref Main//decl_only_in_api, loc10_12, loaded [concrete = constants.%B.type]
// CHECK:STDOUT: }
@@ -307,7 +307,7 @@ impl () as D;
// CHECK:STDOUT:
// CHECK:STDOUT: imports {
// CHECK:STDOUT: %Main.C: type = import_ref Main//decl_in_api_decl_in_impl, C, loaded [concrete = constants.%C.type]
// CHECK:STDOUT: %Main.import_ref.721 = import_ref Main//decl_in_api_decl_in_impl, inst16 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.721 = import_ref Main//decl_in_api_decl_in_impl, inst17 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.e5c: type = import_ref Main//decl_in_api_decl_in_impl, loc10_7, loaded [concrete = constants.%empty_tuple.type]
// CHECK:STDOUT: %Main.import_ref.653: type = import_ref Main//decl_in_api_decl_in_impl, loc10_12, loaded [concrete = constants.%C.type]
// CHECK:STDOUT: }
+13
View File
@@ -394,6 +394,7 @@ fn F() {
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT: %impl_witness.loc8: <witness> = impl_witness (constants.%i32, @impl.05c.%F.decl) [concrete = constants.%impl_witness.bcc]
// CHECK:STDOUT: %impl_witness_assoc_constant.loc8: type = impl_witness_assoc_constant constants.%i32 [concrete = constants.%i32]
// CHECK:STDOUT: %CallMethod.decl: %CallMethod.type = fn_decl @CallMethod [concrete = constants.%CallMethod] {
// CHECK:STDOUT: %x.patt: %empty_tuple.type = binding_pattern x
// CHECK:STDOUT: %x.param_patt: %empty_tuple.type = value_param_pattern %x.patt, call_param0
@@ -428,6 +429,7 @@ fn F() {
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT: %impl_witness.loc21: <witness> = impl_witness (constants.%C, @impl.f57.%F.decl) [concrete = constants.%impl_witness.192]
// CHECK:STDOUT: %impl_witness_assoc_constant.loc21: type = impl_witness_assoc_constant constants.%C [concrete = constants.%C]
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @J {
@@ -723,6 +725,7 @@ fn F() {
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (constants.%i32, @impl.847.%F.decl) [concrete = constants.%impl_witness.56c]
// CHECK:STDOUT: %impl_witness_assoc_constant: type = impl_witness_assoc_constant constants.%i32 [concrete = constants.%i32]
// CHECK:STDOUT: %CallFunction.decl: %CallFunction.type = fn_decl @CallFunction [concrete = constants.%CallFunction] {
// CHECK:STDOUT: %return.patt: %i32 = return_slot_pattern
// CHECK:STDOUT: %return.param_patt: %i32 = out_param_pattern %return.patt, call_param0
@@ -1194,6 +1197,7 @@ fn F() {
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (constants.%i32, @impl.2dd.%F.decl, @impl.2dd.%G.decl) [concrete = constants.%impl_witness.71e]
// CHECK:STDOUT: %impl_witness_assoc_constant: type = impl_witness_assoc_constant constants.%i32 [concrete = constants.%i32]
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357]
// CHECK:STDOUT: complete_type_witness = %complete_type
// CHECK:STDOUT:
@@ -2291,6 +2295,7 @@ fn F() {
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (constants.%i32, <error>) [concrete = constants.%impl_witness]
// CHECK:STDOUT: %impl_witness_assoc_constant: type = impl_witness_assoc_constant constants.%i32 [concrete = constants.%i32]
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357]
// CHECK:STDOUT: complete_type_witness = %complete_type
// CHECK:STDOUT:
@@ -2400,6 +2405,7 @@ fn F() {
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT: %impl_witness.loc22: <witness> = impl_witness (constants.%empty_struct_type, <error>) [concrete = constants.%impl_witness.f71]
// CHECK:STDOUT: %impl_witness_assoc_constant.loc22: type = impl_witness_assoc_constant constants.%empty_struct_type [concrete = constants.%empty_struct_type]
// CHECK:STDOUT: %C2.decl: type = class_decl @C2 [concrete = constants.%C2] {} {}
// CHECK:STDOUT: impl_decl @impl.3df [concrete] {} {
// CHECK:STDOUT: %C2.ref.loc31_6: type = name_ref C2, file.%C2.decl [concrete = constants.%C2]
@@ -2417,6 +2423,7 @@ fn F() {
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT: %impl_witness.loc31: <witness> = impl_witness (constants.%C2, <error>) [concrete = constants.%impl_witness.d84]
// CHECK:STDOUT: %impl_witness_assoc_constant.loc31: type = impl_witness_assoc_constant constants.%C2 [concrete = constants.%C2]
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @J2 {
@@ -2625,6 +2632,7 @@ fn F() {
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (constants.%struct_type.a, <error>) [concrete = constants.%impl_witness]
// CHECK:STDOUT: %impl_witness_assoc_constant: type = impl_witness_assoc_constant constants.%struct_type.a [concrete = constants.%struct_type.a]
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @K {
@@ -2802,6 +2810,7 @@ fn F() {
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (constants.%struct, @impl.%G.decl) [concrete = constants.%impl_witness]
// CHECK:STDOUT: %impl_witness_assoc_constant: %struct_type.b.347 = impl_witness_assoc_constant constants.%struct [concrete = constants.%struct]
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @M {
@@ -2962,6 +2971,7 @@ fn F() {
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT: %impl_witness.loc10: <witness> = impl_witness (constants.%struct.0f3, @impl.9c5.%G.decl) [concrete = constants.%impl_witness.ae0]
// CHECK:STDOUT: %impl_witness_assoc_constant.loc10: %struct_type.b.86f = impl_witness_assoc_constant constants.%struct.0f3 [concrete = constants.%struct.0f3]
// CHECK:STDOUT: impl_decl @impl.f46 [concrete] {} {
// CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [concrete = constants.%C.generic]
// CHECK:STDOUT: %.loc16_9: %empty_tuple.type = tuple_literal ()
@@ -2985,6 +2995,7 @@ fn F() {
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT: %impl_witness.loc16: <witness> = impl_witness (constants.%struct.c94, @impl.f46.%G.decl) [concrete = constants.%impl_witness.6b9]
// CHECK:STDOUT: %impl_witness_assoc_constant.loc16: %struct_type.b.86f = impl_witness_assoc_constant constants.%struct.c94 [concrete = constants.%struct.c94]
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @M {
@@ -3225,6 +3236,7 @@ fn F() {
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (constants.%int_2.ef8, @impl.dd2.%F.decl) [concrete = constants.%impl_witness.d8a]
// CHECK:STDOUT: %impl_witness_assoc_constant: %i32 = impl_witness_assoc_constant constants.%int_2.ef8 [concrete = constants.%int_2.ef8]
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @I {
@@ -3434,6 +3446,7 @@ fn F() {
// CHECK:STDOUT: %T.loc9_14.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc9_14.2 (constants.%T)]
// CHECK:STDOUT: }
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (constants.%C.f2e), @impl(constants.%T) [symbolic = @impl.%impl_witness (constants.%impl_witness.00e)]
// CHECK:STDOUT: %impl_witness_assoc_constant: type = impl_witness_assoc_constant constants.%C.f2e [symbolic = @impl.%C.loc9_45.2 (constants.%C.f2e)]
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {}
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -546,13 +546,13 @@ fn Works() {
// CHECK:STDOUT: import Core//prelude
// CHECK:STDOUT: }
// CHECK:STDOUT: %Core.import_ref.5ab3ec.1: type = import_ref Core//prelude, loc13_22, loaded [symbolic = @ImplicitAs.%Dest (constants.%Dest)]
// CHECK:STDOUT: %Core.import_ref.ff5 = import_ref Core//prelude, inst66 [no loc], unloaded
// CHECK:STDOUT: %Core.import_ref.ff5 = import_ref Core//prelude, inst67 [no loc], unloaded
// CHECK:STDOUT: %Core.import_ref.492: @ImplicitAs.%ImplicitAs.assoc_type (%ImplicitAs.assoc_type.ca0) = import_ref Core//prelude, loc14_35, loaded [symbolic = @ImplicitAs.%assoc0 (constants.%assoc0.dc0)]
// CHECK:STDOUT: %Core.Convert = import_ref Core//prelude, Convert, unloaded
// CHECK:STDOUT: %Core.import_ref.5ab3ec.2: type = import_ref Core//prelude, loc13_22, loaded [symbolic = @ImplicitAs.%Dest (constants.%Dest)]
// CHECK:STDOUT: %Core.import_ref.ce1: @ImplicitAs.%ImplicitAs.type (%ImplicitAs.type.d62) = import_ref Core//prelude, inst66 [no loc], loaded [symbolic = @ImplicitAs.%Self (constants.%Self.519)]
// CHECK:STDOUT: %Core.import_ref.ce1: @ImplicitAs.%ImplicitAs.type (%ImplicitAs.type.d62) = import_ref Core//prelude, inst67 [no loc], loaded [symbolic = @ImplicitAs.%Self (constants.%Self.519)]
// CHECK:STDOUT: %Core.import_ref.1c7: @ImplicitAs.%Convert.type (%Convert.type.275) = import_ref Core//prelude, loc14_35, loaded [symbolic = @ImplicitAs.%Convert (constants.%Convert.42e)]
// CHECK:STDOUT: %Core.import_ref.ad0 = import_ref Core//prelude, inst101 [no loc], unloaded
// CHECK:STDOUT: %Core.import_ref.ad0 = import_ref Core//prelude, inst102 [no loc], unloaded
// CHECK:STDOUT: %Core.import_ref.02e = import_ref Core//prelude, loc18_41, unloaded
// CHECK:STDOUT: %Core.Op = import_ref Core//prelude, Op, unloaded
// CHECK:STDOUT: %Core.import_ref.f80 = import_ref Core//prelude, loc21_36, unloaded
@@ -1373,10 +1373,10 @@ fn Works() {
// CHECK:STDOUT: .ImplicitAs = %Core.ImplicitAs
// CHECK:STDOUT: import Core//prelude
// CHECK:STDOUT: }
// CHECK:STDOUT: %Core.import_ref.ad0 = import_ref Core//prelude, inst101 [no loc], unloaded
// CHECK:STDOUT: %Core.import_ref.ad0 = import_ref Core//prelude, inst102 [no loc], unloaded
// CHECK:STDOUT: %Core.import_ref.a46: %BitAnd.assoc_type = import_ref Core//prelude, loc18_41, loaded [concrete = constants.%assoc0.d45]
// CHECK:STDOUT: %Core.Op = import_ref Core//prelude, Op, unloaded
// CHECK:STDOUT: %Core.import_ref.040: %BitAnd.type = import_ref Core//prelude, inst101 [no loc], loaded [symbolic = constants.%Self.25f]
// CHECK:STDOUT: %Core.import_ref.040: %BitAnd.type = import_ref Core//prelude, inst102 [no loc], loaded [symbolic = constants.%Self.25f]
// CHECK:STDOUT: %Core.import_ref.51c: <witness> = import_ref Core//prelude, loc21_36, loaded [symbolic = @impl.f92.%impl_witness (constants.%impl_witness.b81)]
// CHECK:STDOUT: %Core.import_ref.5ab3ec.1: type = import_ref Core//prelude, loc21_14, loaded [symbolic = @impl.f92.%T (constants.%T)]
// CHECK:STDOUT: %Core.import_ref.583: type = import_ref Core//prelude, loc21_24, loaded [symbolic = @impl.f92.%T (constants.%T)]
@@ -1384,11 +1384,11 @@ fn Works() {
// CHECK:STDOUT: %Core.import_ref.1e6: @impl.f92.%Op.type (%Op.type.f99) = import_ref Core//prelude, loc22_42, loaded [symbolic = @impl.f92.%Op (constants.%Op.05a)]
// CHECK:STDOUT: %Core.import_ref.5ab3ec.2: type = import_ref Core//prelude, loc21_14, loaded [symbolic = @impl.f92.%T (constants.%T)]
// CHECK:STDOUT: %Core.import_ref.5ab3ec.3: type = import_ref Core//prelude, loc13_22, loaded [symbolic = @ImplicitAs.%Dest (constants.%Dest)]
// CHECK:STDOUT: %Core.import_ref.ff5 = import_ref Core//prelude, inst66 [no loc], unloaded
// CHECK:STDOUT: %Core.import_ref.ff5 = import_ref Core//prelude, inst67 [no loc], unloaded
// CHECK:STDOUT: %Core.import_ref.492: @ImplicitAs.%ImplicitAs.assoc_type (%ImplicitAs.assoc_type.ca0) = import_ref Core//prelude, loc14_35, loaded [symbolic = @ImplicitAs.%assoc0 (constants.%assoc0.dc0)]
// CHECK:STDOUT: %Core.Convert = import_ref Core//prelude, Convert, unloaded
// CHECK:STDOUT: %Core.import_ref.5ab3ec.4: type = import_ref Core//prelude, loc13_22, loaded [symbolic = @ImplicitAs.%Dest (constants.%Dest)]
// CHECK:STDOUT: %Core.import_ref.ce1: @ImplicitAs.%ImplicitAs.type (%ImplicitAs.type.d62) = import_ref Core//prelude, inst66 [no loc], loaded [symbolic = @ImplicitAs.%Self (constants.%Self.519)]
// CHECK:STDOUT: %Core.import_ref.ce1: @ImplicitAs.%ImplicitAs.type (%ImplicitAs.type.d62) = import_ref Core//prelude, inst67 [no loc], loaded [symbolic = @ImplicitAs.%Self (constants.%Self.519)]
// CHECK:STDOUT: %Core.import_ref.1c7: @ImplicitAs.%Convert.type (%Convert.type.275) = import_ref Core//prelude, loc14_35, loaded [symbolic = @ImplicitAs.%Convert (constants.%Convert.42e)]
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -1701,10 +1701,10 @@ fn Works() {
// CHECK:STDOUT: .BitAnd = %Core.BitAnd
// CHECK:STDOUT: import Core//prelude
// CHECK:STDOUT: }
// CHECK:STDOUT: %Core.import_ref.ad0 = import_ref Core//prelude, inst101 [no loc], unloaded
// CHECK:STDOUT: %Core.import_ref.ad0 = import_ref Core//prelude, inst102 [no loc], unloaded
// CHECK:STDOUT: %Core.import_ref.a46: %BitAnd.assoc_type = import_ref Core//prelude, loc18_41, loaded [concrete = constants.%assoc0.d45]
// CHECK:STDOUT: %Core.Op = import_ref Core//prelude, Op, unloaded
// CHECK:STDOUT: %Core.import_ref.040: %BitAnd.type = import_ref Core//prelude, inst101 [no loc], loaded [symbolic = constants.%Self.25f]
// CHECK:STDOUT: %Core.import_ref.040: %BitAnd.type = import_ref Core//prelude, inst102 [no loc], loaded [symbolic = constants.%Self.25f]
// CHECK:STDOUT: %Core.import_ref.51c: <witness> = import_ref Core//prelude, loc21_36, loaded [symbolic = @impl.f92.%impl_witness (constants.%impl_witness.b81)]
// CHECK:STDOUT: %Core.import_ref.5ab3ec.1: type = import_ref Core//prelude, loc21_14, loaded [symbolic = @impl.f92.%T (constants.%T)]
// CHECK:STDOUT: %Core.import_ref.583: type = import_ref Core//prelude, loc21_24, loaded [symbolic = @impl.f92.%T (constants.%T)]
@@ -68,7 +68,7 @@ fn UseEmpty(i: I) {}
// CHECK:STDOUT:
// CHECK:STDOUT: imports {
// CHECK:STDOUT: %Main.I: type = import_ref Main//base, I, loaded [concrete = constants.%I.type]
// CHECK:STDOUT: %Main.import_ref = import_ref Main//base, inst16 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref = import_ref Main//base, inst17 [no loc], unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -95,7 +95,7 @@ fn UseEmpty(i: I) {}
// CHECK:STDOUT:
// CHECK:STDOUT: imports {
// CHECK:STDOUT: %Main.I: type = import_ref Main//export, I, loaded [concrete = constants.%I.type]
// CHECK:STDOUT: %Main.import_ref = import_ref Main//export, inst19 [indirect], unloaded
// CHECK:STDOUT: %Main.import_ref = import_ref Main//export, inst20 [indirect], unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -324,6 +324,7 @@ interface C {
// CHECK:STDOUT: %V.loc11_14.1: %J2.type = bind_symbolic_name V, 0 [symbolic = %V.loc11_14.2 (constants.%V)]
// CHECK:STDOUT: }
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (constants.%empty_tuple.type), @impl(constants.%V) [symbolic = @impl.%impl_witness (constants.%impl_witness.ec95d0.1)]
// CHECK:STDOUT: %impl_witness_assoc_constant: type = impl_witness_assoc_constant constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
// CHECK:STDOUT: %J2.decl.loc13: type = interface_decl @J2 [concrete = constants.%J2.type] {} {}
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -127,7 +127,7 @@ interface I {
// CHECK:STDOUT:
// CHECK:STDOUT: interface @I {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = <unexpected>.inst16
// CHECK:STDOUT: .Self = <unexpected>.inst17
// CHECK:STDOUT: witness = invalid
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -140,7 +140,7 @@ interface I {
// CHECK:STDOUT:
// CHECK:STDOUT: interface @I {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = <unexpected>.inst16
// CHECK:STDOUT: .Self = <unexpected>.inst17
// CHECK:STDOUT: witness = invalid
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -187,11 +187,11 @@ fn G(U:! Different) -> U.(Interface.T);
// CHECK:STDOUT: import Core//default
// CHECK:STDOUT: }
// CHECK:STDOUT: %Core.import_ref.5ab3ec.1: type = import_ref Core//default, loc3_22, loaded [symbolic = @ImplicitAs.%Dest (constants.%Dest)]
// CHECK:STDOUT: %Core.import_ref.ff5 = import_ref Core//default, inst25 [no loc], unloaded
// CHECK:STDOUT: %Core.import_ref.ff5 = import_ref Core//default, inst26 [no loc], unloaded
// CHECK:STDOUT: %Core.import_ref.492: @ImplicitAs.%ImplicitAs.assoc_type (%ImplicitAs.assoc_type.ca0) = import_ref Core//default, loc4_35, loaded [symbolic = @ImplicitAs.%assoc0 (constants.%assoc0.dc0)]
// CHECK:STDOUT: %Core.Convert = import_ref Core//default, Convert, unloaded
// CHECK:STDOUT: %Core.import_ref.5ab3ec.2: type = import_ref Core//default, loc3_22, loaded [symbolic = @ImplicitAs.%Dest (constants.%Dest)]
// CHECK:STDOUT: %Core.import_ref.ce1: @ImplicitAs.%ImplicitAs.type (%ImplicitAs.type.d62) = import_ref Core//default, inst25 [no loc], loaded [symbolic = @ImplicitAs.%Self (constants.%Self.519)]
// CHECK:STDOUT: %Core.import_ref.ce1: @ImplicitAs.%ImplicitAs.type (%ImplicitAs.type.d62) = import_ref Core//default, inst26 [no loc], loaded [symbolic = @ImplicitAs.%Self (constants.%Self.519)]
// CHECK:STDOUT: %Core.import_ref.1c7: @ImplicitAs.%Convert.type (%Convert.type.275) = import_ref Core//default, loc4_35, loaded [symbolic = @ImplicitAs.%Convert (constants.%Convert.42e)]
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -121,11 +121,11 @@ impl C as AddWith(C) {
// 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.5ab3ec.1: type = import_ref Main//a, loc4_19, loaded [symbolic = @AddWith.%T (constants.%T)]
// CHECK:STDOUT: %Main.import_ref.476 = import_ref Main//a, inst25 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.476 = import_ref Main//a, inst26 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.c77 = import_ref Main//a, loc5_9, unloaded
// CHECK:STDOUT: %Main.F: @AddWith.%F.type (%F.type.fbc) = import_ref Main//a, F, loaded [symbolic = @AddWith.%F (constants.%F.be3)]
// CHECK:STDOUT: %Main.import_ref.5ab3ec.2: type = import_ref Main//a, loc4_19, loaded [symbolic = @AddWith.%T (constants.%T)]
// CHECK:STDOUT: %Main.import_ref.5a4: @AddWith.%AddWith.type (%AddWith.type.bc7) = import_ref Main//a, inst25 [no loc], loaded [symbolic = @AddWith.%Self (constants.%Self.deb)]
// CHECK:STDOUT: %Main.import_ref.5a4: @AddWith.%AddWith.type (%AddWith.type.bc7) = import_ref Main//a, inst26 [no loc], loaded [symbolic = @AddWith.%Self (constants.%Self.deb)]
// CHECK:STDOUT: %Main.import_ref.0c5 = import_ref Main//a, loc5_9, unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -181,13 +181,13 @@ var f: ForwardDeclared* = &f_ref.f;
// CHECK:STDOUT: %Main.Basic: type = import_ref Main//a, Basic, loaded [concrete = constants.%Basic.type]
// CHECK:STDOUT: %Main.ForwardDeclared: type = import_ref Main//a, ForwardDeclared, loaded [concrete = constants.%ForwardDeclared.type]
// CHECK:STDOUT: %Main.f_ref: ref %struct_type.f = import_ref Main//a, f_ref, loaded
// CHECK:STDOUT: %Main.import_ref.cc0 = import_ref Main//a, inst16 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.37f = import_ref Main//a, inst20 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.cc0 = import_ref Main//a, inst17 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.37f = import_ref Main//a, inst21 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.3d5: %Basic.assoc_type = import_ref Main//a, loc8_8, loaded [concrete = constants.%assoc0.fee]
// CHECK:STDOUT: %Main.import_ref.760: %Basic.assoc_type = import_ref Main//a, loc9_9, loaded [concrete = constants.%assoc1.4ea]
// CHECK:STDOUT: %Main.T.44f = import_ref Main//a, T, unloaded
// CHECK:STDOUT: %Main.F.eea = import_ref Main//a, F, unloaded
// CHECK:STDOUT: %Main.import_ref.52b = import_ref Main//a, inst34 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.52b = import_ref Main//a, inst35 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.ad1: %ForwardDeclared.assoc_type = import_ref Main//a, loc16_8, loaded [concrete = constants.%assoc0.d40]
// CHECK:STDOUT: %Main.import_ref.339: %ForwardDeclared.assoc_type = import_ref Main//a, loc17_9, loaded [concrete = constants.%assoc1.e3d]
// CHECK:STDOUT: %Main.T.6ee = import_ref Main//a, T, unloaded
@@ -209,7 +209,7 @@ private interface Redecl {}
// CHECK:STDOUT:
// CHECK:STDOUT: imports {
// CHECK:STDOUT: %Test.Def: type = import_ref Test//def, Def, loaded [concrete = constants.%Def.type]
// CHECK:STDOUT: %Test.import_ref = import_ref Test//def, inst16 [no loc], unloaded
// CHECK:STDOUT: %Test.import_ref = import_ref Test//def, inst17 [no loc], unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -316,7 +316,7 @@ private interface Redecl {}
// CHECK:STDOUT:
// CHECK:STDOUT: imports {
// CHECK:STDOUT: %Test.ForwardWithDef: type = import_ref Test//forward_with_def, ForwardWithDef, loaded [concrete = constants.%ForwardWithDef.type]
// CHECK:STDOUT: %Test.import_ref = import_ref Test//forward_with_def, inst17 [no loc], unloaded
// CHECK:STDOUT: %Test.import_ref = import_ref Test//forward_with_def, inst18 [no loc], unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -97,7 +97,7 @@ impl library "[[@TEST_NAME]]";
// CHECK:STDOUT:
// CHECK:STDOUT: imports {
// CHECK:STDOUT: %Main.B = import_ref Main//b, B, unloaded
// CHECK:STDOUT: %Main.import_ref.420 = import_ref Main//b, inst16 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.420 = import_ref Main//b, inst17 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.e5c: type = import_ref Main//b, loc7_7, loaded [concrete = constants.%empty_tuple.type]
// CHECK:STDOUT: %Main.import_ref.171: type = import_ref Main//b, loc7_12, loaded [concrete = constants.%B.type]
// CHECK:STDOUT: }
@@ -606,7 +606,7 @@ interface Foo(a:! const (const C)) {}
// CHECK:STDOUT: %Main.Foo: %Foo.type.5380b8.1 = import_ref Main//two_file, Foo, loaded [concrete = constants.%Foo.generic.ec3175.1]
// CHECK:STDOUT: %Main.Bar: %Bar.type.982aac.1 = import_ref Main//two_file, Bar, loaded [concrete = constants.%Bar.generic.4bda5e.1]
// CHECK:STDOUT: %Main.import_ref.8f2: <witness> = import_ref Main//two_file, loc4_10, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.2c4 = import_ref Main//two_file, inst15 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.2c4 = import_ref Main//two_file, inst16 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.f97b44.1: %C = import_ref Main//two_file, loc7_15, loaded [symbolic = @Foo.1.%a (constants.%a)]
// CHECK:STDOUT: %Main.import_ref.f97b44.2: %C = import_ref Main//two_file, loc8_15, loaded [symbolic = @Bar.1.%a (constants.%a)]
// CHECK:STDOUT: }
@@ -1030,7 +1030,7 @@ interface Foo(a:! const (const C)) {}
// CHECK:STDOUT: %Main.C: type = import_ref Main//alias_two_file, C, loaded [concrete = constants.%C]
// CHECK:STDOUT: %Main.Foo: %Foo.type.5380b8.1 = import_ref Main//alias_two_file, Foo, loaded [concrete = constants.%Foo.generic.ec3175.1]
// CHECK:STDOUT: %Main.import_ref.8f2: <witness> = import_ref Main//alias_two_file, loc4_10, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.2c4 = import_ref Main//alias_two_file, inst15 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.2c4 = import_ref Main//alias_two_file, inst16 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.f97: %C = import_ref Main//alias_two_file, loc6_15, loaded [symbolic = @Foo.1.%a (constants.%a)]
// CHECK:STDOUT: }
// CHECK:STDOUT:
+2 -2
View File
@@ -565,12 +565,12 @@ impl i32 as Empty {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = constants.%C
// CHECK:STDOUT: .F = %F.decl
// CHECK:STDOUT: .x = <unexpected>.inst30.loc14_7
// CHECK:STDOUT: .x = <unexpected>.inst31.loc14_7
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: fn @F() -> %empty_tuple.type {
// CHECK:STDOUT: !entry:
// CHECK:STDOUT: %x.ref: %empty_tuple.type = name_ref x, <unexpected>.inst30.loc14_7
// CHECK:STDOUT: %x.ref: %empty_tuple.type = name_ref x, <unexpected>.inst31.loc14_7
// CHECK:STDOUT: return %x.ref
// CHECK:STDOUT: }
// CHECK:STDOUT:
+1 -1
View File
@@ -42,7 +42,7 @@ fn F() {
// CHECK:STDOUT: file {
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
// CHECK:STDOUT: .Core = imports.%Core
// CHECK:STDOUT: .n = <unexpected>.inst44.loc15_5
// CHECK:STDOUT: .n = <unexpected>.inst45.loc15_5
// CHECK:STDOUT: .F = %F.decl
// CHECK:STDOUT: }
// CHECK:STDOUT: %Core.import = import Core
@@ -100,7 +100,7 @@ fn Run() {
// CHECK:STDOUT: import Core//prelude/...
// CHECK:STDOUT: }
// CHECK:STDOUT: %Other.import_ref.8f2: <witness> = import_ref Other//a, loc5_14, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Other.import_ref.ca8 = import_ref Other//a, inst18 [no loc], unloaded
// CHECK:STDOUT: %Other.import_ref.ca8 = import_ref Other//a, inst19 [no loc], unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -174,8 +174,8 @@ fn Run() {
// CHECK:STDOUT: import Other//a
// CHECK:STDOUT: }
// CHECK:STDOUT: %Other.F: %F.type = import_ref Other//b, F, loaded [concrete = constants.%F]
// CHECK:STDOUT: %Other.import_ref.8db: <witness> = import_ref Other//b, inst29 [indirect], loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Other.import_ref.bbd = import_ref Other//b, inst30 [indirect], unloaded
// CHECK:STDOUT: %Other.import_ref.8db: <witness> = import_ref Other//b, inst30 [indirect], loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Other.import_ref.bbd = import_ref Other//b, inst31 [indirect], unloaded
// CHECK:STDOUT: %Other.NS1: <namespace> = import_ref Other//b, NS1, loaded
// CHECK:STDOUT: %NS1: <namespace> = namespace %Other.NS1, [concrete] {
// CHECK:STDOUT: .A = %Other.A
@@ -102,7 +102,7 @@ fn F() { ()[()]; }
// CHECK:STDOUT: import Core//core_wrong_index_with
// CHECK:STDOUT: }
// CHECK:STDOUT: %Core.import_ref.8f2: <witness> = import_ref Core//core_wrong_index_with, loc4_18, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Core.import_ref.4c7 = import_ref Core//core_wrong_index_with, inst15 [no loc], unloaded
// CHECK:STDOUT: %Core.import_ref.4c7 = import_ref Core//core_wrong_index_with, inst16 [no loc], unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -292,11 +292,11 @@ fn F() { ()[()]; }
// 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.5ab3ec.1: type = import_ref Core//core_wrong_arg_count, loc4_21, loaded [symbolic = @IndexWith.%SubscriptType (constants.%SubscriptType)]
// CHECK:STDOUT: %Core.import_ref.68a = import_ref Core//core_wrong_arg_count, inst25 [no loc], unloaded
// CHECK:STDOUT: %Core.import_ref.68a = import_ref Core//core_wrong_arg_count, inst26 [no loc], unloaded
// CHECK:STDOUT: %Core.import_ref.613: @IndexWith.%IndexWith.assoc_type (%IndexWith.assoc_type.290) = import_ref Core//core_wrong_arg_count, loc5_52, loaded [symbolic = @IndexWith.%assoc0 (constants.%assoc0.e1e)]
// CHECK:STDOUT: %Core.At: @IndexWith.%At.type (%At.type.cf4) = import_ref Core//core_wrong_arg_count, At, loaded [symbolic = @IndexWith.%At (constants.%At.281)]
// CHECK:STDOUT: %Core.import_ref.5ab3ec.2: type = import_ref Core//core_wrong_arg_count, loc4_21, loaded [symbolic = @IndexWith.%SubscriptType (constants.%SubscriptType)]
// CHECK:STDOUT: %Core.import_ref.fb5: @IndexWith.%IndexWith.type (%IndexWith.type.bd2) = import_ref Core//core_wrong_arg_count, inst25 [no loc], loaded [symbolic = @IndexWith.%Self (constants.%Self.30a)]
// CHECK:STDOUT: %Core.import_ref.fb5: @IndexWith.%IndexWith.type (%IndexWith.type.bd2) = import_ref Core//core_wrong_arg_count, inst26 [no loc], loaded [symbolic = @IndexWith.%Self (constants.%Self.30a)]
// CHECK:STDOUT: %Core.import_ref.e99: @IndexWith.%At.type (%At.type.cf4) = import_ref Core//core_wrong_arg_count, loc5_52, loaded [symbolic = @IndexWith.%At (constants.%At.281)]
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -293,7 +293,7 @@ alias C = Other.C;
// CHECK:STDOUT: imports {
// CHECK:STDOUT: %Other.C: type = import_ref Other//base, C, loaded [concrete = constants.%C]
// CHECK:STDOUT: %Other.import_ref.56d: <witness> = import_ref Other//base, loc6_1, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Other.import_ref.2c4 = import_ref Other//base, inst15 [no loc], unloaded
// CHECK:STDOUT: %Other.import_ref.2c4 = import_ref Other//base, inst16 [no loc], unloaded
// CHECK:STDOUT: %Other.import_ref.276 = import_ref Other//base, loc5_8, unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -325,7 +325,7 @@ alias C = Other.C;
// CHECK:STDOUT: imports {
// CHECK:STDOUT: %Other.C: type = import_ref Other//base, C, loaded [concrete = constants.%C]
// CHECK:STDOUT: %Other.import_ref.56d: <witness> = import_ref Other//base, loc6_1, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Other.import_ref.2c4 = import_ref Other//base, inst15 [no loc], unloaded
// CHECK:STDOUT: %Other.import_ref.2c4 = import_ref Other//base, inst16 [no loc], unloaded
// CHECK:STDOUT: %Other.import_ref.276 = import_ref Other//base, loc5_8, unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -356,9 +356,9 @@ alias C = Other.C;
// CHECK:STDOUT:
// CHECK:STDOUT: imports {
// CHECK:STDOUT: %Other.C: type = import_ref Other//export_name, C, loaded [concrete = constants.%C]
// CHECK:STDOUT: %Other.import_ref.ad3: <witness> = import_ref Other//export_name, inst21 [indirect], loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Other.import_ref.6a9 = import_ref Other//export_name, inst22 [indirect], unloaded
// CHECK:STDOUT: %Other.import_ref.f67 = import_ref Other//export_name, inst23 [indirect], unloaded
// CHECK:STDOUT: %Other.import_ref.ad3: <witness> = import_ref Other//export_name, inst22 [indirect], loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Other.import_ref.6a9 = import_ref Other//export_name, inst23 [indirect], unloaded
// CHECK:STDOUT: %Other.import_ref.f67 = import_ref Other//export_name, inst24 [indirect], unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -396,7 +396,7 @@ alias C = Other.C;
// CHECK:STDOUT: }
// CHECK:STDOUT: %Other.C: type = import_ref Other//base, C, loaded [concrete = constants.%C]
// CHECK:STDOUT: %Other.import_ref.56d: <witness> = import_ref Other//base, loc6_1, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Other.import_ref.2c4 = import_ref Other//base, inst15 [no loc], unloaded
// CHECK:STDOUT: %Other.import_ref.2c4 = import_ref Other//base, inst16 [no loc], unloaded
// CHECK:STDOUT: %Other.import_ref.276 = import_ref Other//base, loc5_8, unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -459,7 +459,7 @@ alias C = Other.C;
// CHECK:STDOUT: }
// CHECK:STDOUT: %Other.C: type = import_ref Other//base, C, loaded [concrete = constants.%C]
// CHECK:STDOUT: %Other.import_ref.56d: <witness> = import_ref Other//base, loc6_1, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Other.import_ref.2c4 = import_ref Other//base, inst15 [no loc], unloaded
// CHECK:STDOUT: %Other.import_ref.2c4 = import_ref Other//base, inst16 [no loc], unloaded
// CHECK:STDOUT: %Other.import_ref.276 = import_ref Other//base, loc5_8, unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -522,7 +522,7 @@ alias C = Other.C;
// CHECK:STDOUT: }
// CHECK:STDOUT: %Other.C: type = import_ref Other//base, C, loaded [concrete = constants.%C]
// CHECK:STDOUT: %Other.import_ref.56d: <witness> = import_ref Other//base, loc6_1, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Other.import_ref.2c4 = import_ref Other//base, inst15 [no loc], unloaded
// CHECK:STDOUT: %Other.import_ref.2c4 = import_ref Other//base, inst16 [no loc], unloaded
// CHECK:STDOUT: %Other.import_ref.276 = import_ref Other//base, loc5_8, unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -582,9 +582,9 @@ alias C = Other.C;
// CHECK:STDOUT: import Other//export_name
// CHECK:STDOUT: }
// CHECK:STDOUT: %Other.C: type = import_ref Other//export_name, C, loaded [concrete = constants.%C]
// CHECK:STDOUT: %Other.import_ref.ad3: <witness> = import_ref Other//export_name, inst21 [indirect], loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Other.import_ref.6a9 = import_ref Other//export_name, inst22 [indirect], unloaded
// CHECK:STDOUT: %Other.import_ref.f67 = import_ref Other//export_name, inst23 [indirect], unloaded
// CHECK:STDOUT: %Other.import_ref.ad3: <witness> = import_ref Other//export_name, inst22 [indirect], loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Other.import_ref.6a9 = import_ref Other//export_name, inst23 [indirect], unloaded
// CHECK:STDOUT: %Other.import_ref.f67 = import_ref Other//export_name, inst24 [indirect], unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -644,9 +644,9 @@ alias C = Other.C;
// CHECK:STDOUT: import Other//export_name_copy
// CHECK:STDOUT: }
// CHECK:STDOUT: %Other.C: type = import_ref Other//export_name, C, loaded [concrete = constants.%C]
// CHECK:STDOUT: %Other.import_ref.ad3: <witness> = import_ref Other//export_name, inst21 [indirect], loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Other.import_ref.6a9 = import_ref Other//export_name, inst22 [indirect], unloaded
// CHECK:STDOUT: %Other.import_ref.f67 = import_ref Other//export_name, inst23 [indirect], unloaded
// CHECK:STDOUT: %Other.import_ref.ad3: <witness> = import_ref Other//export_name, inst22 [indirect], loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Other.import_ref.6a9 = import_ref Other//export_name, inst23 [indirect], unloaded
// CHECK:STDOUT: %Other.import_ref.f67 = import_ref Other//export_name, inst24 [indirect], unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -705,9 +705,9 @@ alias C = Other.C;
// CHECK:STDOUT: import Other//export_name_indirect
// CHECK:STDOUT: }
// CHECK:STDOUT: %Other.C: type = import_ref Other//export_name_indirect, C, loaded [concrete = constants.%C]
// CHECK:STDOUT: %Other.import_ref.328: <witness> = import_ref Other//export_name_indirect, inst21 [indirect], loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Other.import_ref.db8 = import_ref Other//export_name_indirect, inst22 [indirect], unloaded
// CHECK:STDOUT: %Other.import_ref.3ef = import_ref Other//export_name_indirect, inst23 [indirect], unloaded
// CHECK:STDOUT: %Other.import_ref.328: <witness> = import_ref Other//export_name_indirect, inst22 [indirect], loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Other.import_ref.db8 = import_ref Other//export_name_indirect, inst23 [indirect], unloaded
// CHECK:STDOUT: %Other.import_ref.3ef = import_ref Other//export_name_indirect, inst24 [indirect], unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -772,9 +772,9 @@ alias C = Other.C;
// CHECK:STDOUT: import Other//base
// CHECK:STDOUT: }
// CHECK:STDOUT: %Other.C: type = import_ref Other//export_name, C, loaded [concrete = constants.%C]
// CHECK:STDOUT: %Other.import_ref.ad3: <witness> = import_ref Other//export_name, inst21 [indirect], loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Other.import_ref.6a9 = import_ref Other//export_name, inst22 [indirect], unloaded
// CHECK:STDOUT: %Other.import_ref.f67 = import_ref Other//export_name, inst23 [indirect], unloaded
// CHECK:STDOUT: %Other.import_ref.ad3: <witness> = import_ref Other//export_name, inst22 [indirect], loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Other.import_ref.6a9 = import_ref Other//export_name, inst23 [indirect], unloaded
// CHECK:STDOUT: %Other.import_ref.f67 = import_ref Other//export_name, inst24 [indirect], unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -895,9 +895,9 @@ alias C = Other.C;
// CHECK:STDOUT: import Other//conflict
// CHECK:STDOUT: }
// CHECK:STDOUT: %Other.C: type = import_ref Other//export_name, C, loaded [concrete = constants.%C]
// CHECK:STDOUT: %Other.import_ref.ad3: <witness> = import_ref Other//export_name, inst21 [indirect], loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Other.import_ref.6a9 = import_ref Other//export_name, inst22 [indirect], unloaded
// CHECK:STDOUT: %Other.import_ref.f67 = import_ref Other//export_name, inst23 [indirect], unloaded
// CHECK:STDOUT: %Other.import_ref.ad3: <witness> = import_ref Other//export_name, inst22 [indirect], loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Other.import_ref.6a9 = import_ref Other//export_name, inst23 [indirect], unloaded
// CHECK:STDOUT: %Other.import_ref.f67 = import_ref Other//export_name, inst24 [indirect], unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -302,7 +302,7 @@ export Poison;
// CHECK:STDOUT: imports {
// CHECK:STDOUT: %Main.C: type = import_ref Main//base, C, loaded [concrete = constants.%C]
// CHECK:STDOUT: %Main.import_ref.56d: <witness> = import_ref Main//base, loc6_1, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.2c4 = import_ref Main//base, inst15 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.2c4 = import_ref Main//base, inst16 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.276 = import_ref Main//base, loc5_8, unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -360,7 +360,7 @@ export Poison;
// CHECK:STDOUT: imports {
// CHECK:STDOUT: %Main.C: type = import_ref Main//export_export, C, loaded [concrete = constants.%C]
// CHECK:STDOUT: %Main.import_ref.56d: <witness> = import_ref Main//base, loc6_1, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.2c4 = import_ref Main//base, inst15 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.2c4 = import_ref Main//base, inst16 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.276 = import_ref Main//base, loc5_8, unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -415,7 +415,7 @@ export Poison;
// CHECK:STDOUT: imports {
// CHECK:STDOUT: %Main.C: type = import_ref Main//base, C, loaded [concrete = constants.%C]
// CHECK:STDOUT: %Main.import_ref.56d: <witness> = import_ref Main//base, loc6_1, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.2c4 = import_ref Main//base, inst15 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.2c4 = import_ref Main//base, inst16 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.276 = import_ref Main//base, loc5_8, unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -469,7 +469,7 @@ export Poison;
// CHECK:STDOUT: imports {
// CHECK:STDOUT: %Main.C: type = import_ref Main//base, C, loaded [concrete = constants.%C]
// CHECK:STDOUT: %Main.import_ref.56d: <witness> = import_ref Main//base, loc6_1, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.2c4 = import_ref Main//base, inst15 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.2c4 = import_ref Main//base, inst16 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.276 = import_ref Main//base, loc5_8, unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -523,7 +523,7 @@ export Poison;
// CHECK:STDOUT: imports {
// CHECK:STDOUT: %Main.C: type = import_ref Main//base, C, loaded [concrete = constants.%C]
// CHECK:STDOUT: %Main.import_ref.56d: <witness> = import_ref Main//base, loc6_1, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.2c4 = import_ref Main//base, inst15 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.2c4 = import_ref Main//base, inst16 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.276 = import_ref Main//base, loc5_8, unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -577,7 +577,7 @@ export Poison;
// CHECK:STDOUT: imports {
// CHECK:STDOUT: %Main.C: type = import_ref Main//base, C, loaded [concrete = constants.%C]
// CHECK:STDOUT: %Main.import_ref.56d: <witness> = import_ref Main//base, loc6_1, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.2c4 = import_ref Main//base, inst15 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.2c4 = import_ref Main//base, inst16 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.276 = import_ref Main//base, loc5_8, unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -631,7 +631,7 @@ export Poison;
// CHECK:STDOUT: imports {
// CHECK:STDOUT: %Main.C: type = import_ref Main//base, C, loaded [concrete = constants.%C]
// CHECK:STDOUT: %Main.import_ref.56d: <witness> = import_ref Main//base, loc6_1, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.2c4 = import_ref Main//base, inst15 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.2c4 = import_ref Main//base, inst16 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.276 = import_ref Main//base, loc5_8, unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -685,7 +685,7 @@ export Poison;
// CHECK:STDOUT: imports {
// CHECK:STDOUT: %Main.C: type = import_ref Main//base, C, loaded [concrete = constants.%C]
// CHECK:STDOUT: %Main.import_ref.56d: <witness> = import_ref Main//base, loc6_1, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.2c4 = import_ref Main//base, inst15 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.2c4 = import_ref Main//base, inst16 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.276 = import_ref Main//base, loc5_8, unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -751,7 +751,7 @@ export Poison;
// CHECK:STDOUT: imports {
// CHECK:STDOUT: %Main.C: type = import_ref Main//base, C, loaded [concrete = constants.%C]
// CHECK:STDOUT: %Main.import_ref.56d: <witness> = import_ref Main//base, loc6_1, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.2c4 = import_ref Main//base, inst15 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.2c4 = import_ref Main//base, inst16 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.276 = import_ref Main//base, loc5_8, unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -806,7 +806,7 @@ export Poison;
// CHECK:STDOUT: %Main.c = import_ref Main//use_non_export_then_base, c, unloaded
// CHECK:STDOUT: %Main.C: type = import_ref Main//base, C, loaded [concrete = constants.%C]
// CHECK:STDOUT: %Main.import_ref.56d: <witness> = import_ref Main//base, loc6_1, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.2c4 = import_ref Main//base, inst15 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.2c4 = import_ref Main//base, inst16 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.276 = import_ref Main//base, loc5_8, unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -193,7 +193,7 @@ var d: D = {.y = ()};
// CHECK:STDOUT: %Main.C: type = import_ref Main//base, C, loaded [concrete = constants.%C]
// CHECK:STDOUT: %Main.D = import_ref Main//base, D, unloaded
// CHECK:STDOUT: %Main.import_ref.56d: <witness> = import_ref Main//base, loc6_1, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.2c4 = import_ref Main//base, inst15 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.2c4 = import_ref Main//base, inst16 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.276 = import_ref Main//base, loc5_8, unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -227,7 +227,7 @@ var d: D = {.y = ()};
// CHECK:STDOUT: %Main.C: type = import_ref Main//base, C, loaded [concrete = constants.%C]
// CHECK:STDOUT: %Main.D = import_ref Main//base, D, unloaded
// CHECK:STDOUT: %Main.import_ref.56d: <witness> = import_ref Main//base, loc6_1, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.2c4 = import_ref Main//base, inst15 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.2c4 = import_ref Main//base, inst16 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.276 = import_ref Main//base, loc5_8, unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -274,9 +274,9 @@ var d: D = {.y = ()};
// CHECK:STDOUT:
// CHECK:STDOUT: imports {
// CHECK:STDOUT: %Main.C: type = import_ref Main//export_import_then_name, C, loaded [concrete = constants.%C]
// CHECK:STDOUT: %Main.import_ref.ad3: <witness> = import_ref Main//export_import_then_name, inst22 [indirect], loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.6a9 = import_ref Main//export_import_then_name, inst23 [indirect], unloaded
// CHECK:STDOUT: %Main.import_ref.f67 = import_ref Main//export_import_then_name, inst24 [indirect], unloaded
// CHECK:STDOUT: %Main.import_ref.ad3: <witness> = import_ref Main//export_import_then_name, inst23 [indirect], loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.6a9 = import_ref Main//export_import_then_name, inst24 [indirect], unloaded
// CHECK:STDOUT: %Main.import_ref.f67 = import_ref Main//export_import_then_name, inst25 [indirect], unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -328,9 +328,9 @@ var d: D = {.y = ()};
// CHECK:STDOUT:
// CHECK:STDOUT: imports {
// CHECK:STDOUT: %Main.C: type = import_ref Main//export_name, C, loaded [concrete = constants.%C]
// CHECK:STDOUT: %Main.import_ref.ad3: <witness> = import_ref Main//export_name, inst22 [indirect], loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.6a9 = import_ref Main//export_name, inst23 [indirect], unloaded
// CHECK:STDOUT: %Main.import_ref.f67 = import_ref Main//export_name, inst24 [indirect], unloaded
// CHECK:STDOUT: %Main.import_ref.ad3: <witness> = import_ref Main//export_name, inst23 [indirect], loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.6a9 = import_ref Main//export_name, inst24 [indirect], unloaded
// CHECK:STDOUT: %Main.import_ref.f67 = import_ref Main//export_name, inst25 [indirect], unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -382,9 +382,9 @@ var d: D = {.y = ()};
// CHECK:STDOUT:
// CHECK:STDOUT: imports {
// CHECK:STDOUT: %Main.C: type = import_ref Main//export_import_then_name, C, loaded [concrete = constants.%C]
// CHECK:STDOUT: %Main.import_ref.ad3: <witness> = import_ref Main//export_import_then_name, inst22 [indirect], loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.6a9 = import_ref Main//export_import_then_name, inst23 [indirect], unloaded
// CHECK:STDOUT: %Main.import_ref.f67 = import_ref Main//export_import_then_name, inst24 [indirect], unloaded
// CHECK:STDOUT: %Main.import_ref.ad3: <witness> = import_ref Main//export_import_then_name, inst23 [indirect], loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.6a9 = import_ref Main//export_import_then_name, inst24 [indirect], unloaded
// CHECK:STDOUT: %Main.import_ref.f67 = import_ref Main//export_import_then_name, inst25 [indirect], unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -471,9 +471,9 @@ var d: D = {.y = ()};
// CHECK:STDOUT:
// CHECK:STDOUT: imports {
// CHECK:STDOUT: %Main.C: type = import_ref Main//export_import_then_name, C, loaded [concrete = constants.%C]
// CHECK:STDOUT: %Main.import_ref.ad3: <witness> = import_ref Main//export_import_then_name, inst22 [indirect], loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.6a9 = import_ref Main//export_import_then_name, inst23 [indirect], unloaded
// CHECK:STDOUT: %Main.import_ref.f67 = import_ref Main//export_import_then_name, inst24 [indirect], unloaded
// CHECK:STDOUT: %Main.import_ref.ad3: <witness> = import_ref Main//export_import_then_name, inst23 [indirect], loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.6a9 = import_ref Main//export_import_then_name, inst24 [indirect], unloaded
// CHECK:STDOUT: %Main.import_ref.f67 = import_ref Main//export_import_then_name, inst25 [indirect], unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -530,11 +530,11 @@ var d: D = {.y = ()};
// CHECK:STDOUT: imports {
// CHECK:STDOUT: %Main.C: type = import_ref Main//export_import_then_name, C, loaded [concrete = constants.%C]
// CHECK:STDOUT: %Main.D: type = import_ref Main//base, D, loaded [concrete = constants.%D]
// CHECK:STDOUT: %Main.import_ref.ad3: <witness> = import_ref Main//export_import_then_name, inst22 [indirect], loaded [concrete = constants.%complete_type.9be]
// CHECK:STDOUT: %Main.import_ref.6a9 = import_ref Main//export_import_then_name, inst23 [indirect], unloaded
// CHECK:STDOUT: %Main.import_ref.f67 = import_ref Main//export_import_then_name, inst24 [indirect], unloaded
// CHECK:STDOUT: %Main.import_ref.ad3: <witness> = import_ref Main//export_import_then_name, inst23 [indirect], loaded [concrete = constants.%complete_type.9be]
// CHECK:STDOUT: %Main.import_ref.6a9 = import_ref Main//export_import_then_name, inst24 [indirect], unloaded
// CHECK:STDOUT: %Main.import_ref.f67 = import_ref Main//export_import_then_name, inst25 [indirect], unloaded
// CHECK:STDOUT: %Main.import_ref.5ab: <witness> = import_ref Main//base, loc10_1, loaded [concrete = constants.%complete_type.9f4]
// CHECK:STDOUT: %Main.import_ref.cab = import_ref Main//base, inst28 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.cab = import_ref Main//base, inst29 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.950 = import_ref Main//base, loc9_8, unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -275,10 +275,10 @@ private export C;
// CHECK:STDOUT: }
// CHECK:STDOUT: %Main.NSC: type = import_ref Main//base, NSC, loaded [concrete = constants.%NSC]
// CHECK:STDOUT: %Main.import_ref.56d: <witness> = import_ref Main//base, loc6_1, loaded [concrete = constants.%complete_type.9be]
// CHECK:STDOUT: %Main.import_ref.2c4 = import_ref Main//base, inst15 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.2c4 = import_ref Main//base, inst16 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.276 = import_ref Main//base, loc5_8, unloaded
// CHECK:STDOUT: %Main.import_ref.5ab: <witness> = import_ref Main//base, loc11_1, loaded [concrete = constants.%complete_type.9f4]
// CHECK:STDOUT: %Main.import_ref.31c = import_ref Main//base, inst29 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.31c = import_ref Main//base, inst30 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.be6 = import_ref Main//base, loc10_8, unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -345,12 +345,12 @@ private export C;
// CHECK:STDOUT: .NSC = file.%NSC
// CHECK:STDOUT: }
// CHECK:STDOUT: %Main.NSC: type = import_ref Main//export, NSC, loaded [concrete = constants.%NSC]
// CHECK:STDOUT: %Main.import_ref.ad3: <witness> = import_ref Main//export, inst24 [indirect], loaded [concrete = constants.%complete_type.9be]
// CHECK:STDOUT: %Main.import_ref.6a9 = import_ref Main//export, inst25 [indirect], unloaded
// CHECK:STDOUT: %Main.import_ref.f67 = import_ref Main//export, inst26 [indirect], unloaded
// CHECK:STDOUT: %Main.import_ref.63c: <witness> = import_ref Main//export, inst32 [indirect], loaded [concrete = constants.%complete_type.9f4]
// CHECK:STDOUT: %Main.import_ref.f0b = import_ref Main//export, inst33 [indirect], unloaded
// CHECK:STDOUT: %Main.import_ref.ebc = import_ref Main//export, inst34 [indirect], unloaded
// CHECK:STDOUT: %Main.import_ref.ad3: <witness> = import_ref Main//export, inst25 [indirect], loaded [concrete = constants.%complete_type.9be]
// CHECK:STDOUT: %Main.import_ref.6a9 = import_ref Main//export, inst26 [indirect], unloaded
// CHECK:STDOUT: %Main.import_ref.f67 = import_ref Main//export, inst27 [indirect], unloaded
// CHECK:STDOUT: %Main.import_ref.63c: <witness> = import_ref Main//export, inst33 [indirect], loaded [concrete = constants.%complete_type.9f4]
// CHECK:STDOUT: %Main.import_ref.f0b = import_ref Main//export, inst34 [indirect], unloaded
// CHECK:STDOUT: %Main.import_ref.ebc = import_ref Main//export, inst35 [indirect], unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -407,12 +407,12 @@ private export C;
// CHECK:STDOUT: .NSC = %Main.NSC
// CHECK:STDOUT: }
// CHECK:STDOUT: %Main.NSC: type = import_ref Main//export, NSC, loaded [concrete = constants.%NSC]
// CHECK:STDOUT: %Main.import_ref.ad3: <witness> = import_ref Main//export, inst24 [indirect], loaded [concrete = constants.%complete_type.9be]
// CHECK:STDOUT: %Main.import_ref.6a9 = import_ref Main//export, inst25 [indirect], unloaded
// CHECK:STDOUT: %Main.import_ref.f67 = import_ref Main//export, inst26 [indirect], unloaded
// CHECK:STDOUT: %Main.import_ref.63c: <witness> = import_ref Main//export, inst32 [indirect], loaded [concrete = constants.%complete_type.9f4]
// CHECK:STDOUT: %Main.import_ref.f0b = import_ref Main//export, inst33 [indirect], unloaded
// CHECK:STDOUT: %Main.import_ref.ebc = import_ref Main//export, inst34 [indirect], unloaded
// CHECK:STDOUT: %Main.import_ref.ad3: <witness> = import_ref Main//export, inst25 [indirect], loaded [concrete = constants.%complete_type.9be]
// CHECK:STDOUT: %Main.import_ref.6a9 = import_ref Main//export, inst26 [indirect], unloaded
// CHECK:STDOUT: %Main.import_ref.f67 = import_ref Main//export, inst27 [indirect], unloaded
// CHECK:STDOUT: %Main.import_ref.63c: <witness> = import_ref Main//export, inst33 [indirect], loaded [concrete = constants.%complete_type.9f4]
// CHECK:STDOUT: %Main.import_ref.f0b = import_ref Main//export, inst34 [indirect], unloaded
// CHECK:STDOUT: %Main.import_ref.ebc = import_ref Main//export, inst35 [indirect], unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -501,12 +501,12 @@ private export C;
// CHECK:STDOUT: .NSC = %Main.NSC
// CHECK:STDOUT: }
// CHECK:STDOUT: %Main.NSC: type = import_ref Main//export_export, NSC, loaded [concrete = constants.%NSC]
// CHECK:STDOUT: %Main.import_ref.328: <witness> = import_ref Main//export_export, inst24 [indirect], loaded [concrete = constants.%complete_type.9be]
// CHECK:STDOUT: %Main.import_ref.db8 = import_ref Main//export_export, inst25 [indirect], unloaded
// CHECK:STDOUT: %Main.import_ref.3ef = import_ref Main//export_export, inst26 [indirect], unloaded
// CHECK:STDOUT: %Main.import_ref.c12: <witness> = import_ref Main//export_export, inst32 [indirect], loaded [concrete = constants.%complete_type.9f4]
// CHECK:STDOUT: %Main.import_ref.1cb = import_ref Main//export_export, inst33 [indirect], unloaded
// CHECK:STDOUT: %Main.import_ref.b18 = import_ref Main//export_export, inst34 [indirect], unloaded
// CHECK:STDOUT: %Main.import_ref.328: <witness> = import_ref Main//export_export, inst25 [indirect], loaded [concrete = constants.%complete_type.9be]
// CHECK:STDOUT: %Main.import_ref.db8 = import_ref Main//export_export, inst26 [indirect], unloaded
// CHECK:STDOUT: %Main.import_ref.3ef = import_ref Main//export_export, inst27 [indirect], unloaded
// CHECK:STDOUT: %Main.import_ref.c12: <witness> = import_ref Main//export_export, inst33 [indirect], loaded [concrete = constants.%complete_type.9f4]
// CHECK:STDOUT: %Main.import_ref.1cb = import_ref Main//export_export, inst34 [indirect], unloaded
// CHECK:STDOUT: %Main.import_ref.b18 = import_ref Main//export_export, inst35 [indirect], unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -596,12 +596,12 @@ private export C;
// CHECK:STDOUT: .NSC = %Main.NSC
// CHECK:STDOUT: }
// CHECK:STDOUT: %Main.NSC: type = import_ref Main//export_export, NSC, loaded [concrete = constants.%NSC]
// CHECK:STDOUT: %Main.import_ref.328: <witness> = import_ref Main//export_export, inst24 [indirect], loaded [concrete = constants.%complete_type.9be]
// CHECK:STDOUT: %Main.import_ref.db8 = import_ref Main//export_export, inst25 [indirect], unloaded
// CHECK:STDOUT: %Main.import_ref.3ef = import_ref Main//export_export, inst26 [indirect], unloaded
// CHECK:STDOUT: %Main.import_ref.c12: <witness> = import_ref Main//export_export, inst32 [indirect], loaded [concrete = constants.%complete_type.9f4]
// CHECK:STDOUT: %Main.import_ref.1cb = import_ref Main//export_export, inst33 [indirect], unloaded
// CHECK:STDOUT: %Main.import_ref.b18 = import_ref Main//export_export, inst34 [indirect], unloaded
// CHECK:STDOUT: %Main.import_ref.328: <witness> = import_ref Main//export_export, inst25 [indirect], loaded [concrete = constants.%complete_type.9be]
// CHECK:STDOUT: %Main.import_ref.db8 = import_ref Main//export_export, inst26 [indirect], unloaded
// CHECK:STDOUT: %Main.import_ref.3ef = import_ref Main//export_export, inst27 [indirect], unloaded
// CHECK:STDOUT: %Main.import_ref.c12: <witness> = import_ref Main//export_export, inst33 [indirect], loaded [concrete = constants.%complete_type.9f4]
// CHECK:STDOUT: %Main.import_ref.1cb = import_ref Main//export_export, inst34 [indirect], unloaded
// CHECK:STDOUT: %Main.import_ref.b18 = import_ref Main//export_export, inst35 [indirect], unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -725,7 +725,7 @@ private export C;
// CHECK:STDOUT: .NSC = %Main.NSC
// CHECK:STDOUT: }
// CHECK:STDOUT: %Main.import_ref.56d: <witness> = import_ref Main//base, loc6_1, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.2c4 = import_ref Main//base, inst15 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.2c4 = import_ref Main//base, inst16 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.276 = import_ref Main//base, loc5_8, unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -768,10 +768,10 @@ private export C;
// CHECK:STDOUT: }
// CHECK:STDOUT: %Main.NSC: type = import_ref Main//base, NSC, loaded [concrete = constants.%NSC]
// CHECK:STDOUT: %Main.import_ref.56d: <witness> = import_ref Main//base, loc6_1, loaded [concrete = constants.%complete_type.9be]
// CHECK:STDOUT: %Main.import_ref.2c4 = import_ref Main//base, inst15 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.2c4 = import_ref Main//base, inst16 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.276 = import_ref Main//base, loc5_8, unloaded
// CHECK:STDOUT: %Main.import_ref.5ab: <witness> = import_ref Main//base, loc11_1, loaded [concrete = constants.%complete_type.9f4]
// CHECK:STDOUT: %Main.import_ref.31c = import_ref Main//base, inst29 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.31c = import_ref Main//base, inst30 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.be6 = import_ref Main//base, loc10_8, unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -861,12 +861,12 @@ private export C;
// CHECK:STDOUT: .NSC = %Main.NSC
// CHECK:STDOUT: }
// CHECK:STDOUT: %Main.NSC: type = import_ref Main//export, NSC, loaded [concrete = constants.%NSC]
// CHECK:STDOUT: %Main.import_ref.ad3: <witness> = import_ref Main//export, inst24 [indirect], loaded [concrete = constants.%complete_type.9be]
// CHECK:STDOUT: %Main.import_ref.6a9 = import_ref Main//export, inst25 [indirect], unloaded
// CHECK:STDOUT: %Main.import_ref.f67 = import_ref Main//export, inst26 [indirect], unloaded
// CHECK:STDOUT: %Main.import_ref.63c: <witness> = import_ref Main//export, inst32 [indirect], loaded [concrete = constants.%complete_type.9f4]
// CHECK:STDOUT: %Main.import_ref.f0b = import_ref Main//export, inst33 [indirect], unloaded
// CHECK:STDOUT: %Main.import_ref.ebc = import_ref Main//export, inst34 [indirect], unloaded
// CHECK:STDOUT: %Main.import_ref.ad3: <witness> = import_ref Main//export, inst25 [indirect], loaded [concrete = constants.%complete_type.9be]
// CHECK:STDOUT: %Main.import_ref.6a9 = import_ref Main//export, inst26 [indirect], unloaded
// CHECK:STDOUT: %Main.import_ref.f67 = import_ref Main//export, inst27 [indirect], unloaded
// CHECK:STDOUT: %Main.import_ref.63c: <witness> = import_ref Main//export, inst33 [indirect], loaded [concrete = constants.%complete_type.9f4]
// CHECK:STDOUT: %Main.import_ref.f0b = import_ref Main//export, inst34 [indirect], unloaded
// CHECK:STDOUT: %Main.import_ref.ebc = import_ref Main//export, inst35 [indirect], unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -966,7 +966,7 @@ private export C;
// CHECK:STDOUT: .NSC = %Main.NSC
// CHECK:STDOUT: }
// CHECK:STDOUT: %Main.import_ref.56d: <witness> = import_ref Main//base, loc6_1, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.2c4 = import_ref Main//base, inst15 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.2c4 = import_ref Main//base, inst16 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.276 = import_ref Main//base, loc5_8, unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -1000,9 +1000,9 @@ private export C;
// CHECK:STDOUT:
// CHECK:STDOUT: imports {
// CHECK:STDOUT: %Main.C: type = import_ref Main//repeat_export, C, loaded [concrete = constants.%C]
// CHECK:STDOUT: %Main.import_ref.ad3: <witness> = import_ref Main//repeat_export, inst24 [indirect], loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.6a9 = import_ref Main//repeat_export, inst25 [indirect], unloaded
// CHECK:STDOUT: %Main.import_ref.f67 = import_ref Main//repeat_export, inst26 [indirect], unloaded
// CHECK:STDOUT: %Main.import_ref.ad3: <witness> = import_ref Main//repeat_export, inst25 [indirect], loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.6a9 = import_ref Main//repeat_export, inst26 [indirect], unloaded
// CHECK:STDOUT: %Main.import_ref.f67 = import_ref Main//repeat_export, inst27 [indirect], unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -1057,7 +1057,7 @@ private export C;
// CHECK:STDOUT: .NSC = %Main.NSC
// CHECK:STDOUT: }
// CHECK:STDOUT: %Main.import_ref.56d: <witness> = import_ref Main//base, loc6_1, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.2c4 = import_ref Main//base, inst15 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.2c4 = import_ref Main//base, inst16 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.276 = import_ref Main//base, loc5_8, unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -77,7 +77,7 @@ export C.n;
// CHECK:STDOUT: imports {
// CHECK:STDOUT: %Foo.C: type = import_ref Foo//a, C, loaded [concrete = constants.%C]
// CHECK:STDOUT: %Foo.import_ref.9fc: <witness> = import_ref Foo//a, loc6_1, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Foo.import_ref.2c4 = import_ref Foo//a, inst15 [no loc], unloaded
// CHECK:STDOUT: %Foo.import_ref.2c4 = import_ref Foo//a, inst16 [no loc], unloaded
// CHECK:STDOUT: %Foo.import_ref.4cb = import_ref Foo//a, loc5_8, unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -334,9 +334,9 @@ import Other library "o1";
// CHECK:STDOUT: %Main.C1: type = import_ref Main//mix_current_package, C1, loaded [concrete = constants.%C1]
// CHECK:STDOUT: %Main.C2: type = import_ref Main//c2, C2, loaded [concrete = constants.%C2]
// CHECK:STDOUT: %Main.import_ref.8f24d3.1: <witness> = import_ref Main//c1, loc4_11, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.eb7 = import_ref Main//c1, inst15 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.eb7 = import_ref Main//c1, inst16 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.8f24d3.2: <witness> = import_ref Main//c2, loc4_11, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.5b0 = import_ref Main//c2, inst15 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.5b0 = import_ref Main//c2, inst16 [no loc], unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -416,7 +416,7 @@ import Other library "o1";
// CHECK:STDOUT: imports {
// CHECK:STDOUT: %Main.C1: type = import_ref Main//dup_c1, C1, loaded [concrete = constants.%C1]
// CHECK:STDOUT: %Main.import_ref.8f2: <witness> = import_ref Main//c1, loc4_11, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.eb7 = import_ref Main//c1, inst15 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.eb7 = import_ref Main//c1, inst16 [no loc], unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -483,7 +483,7 @@ import Other library "o1";
// CHECK:STDOUT: }
// CHECK:STDOUT: %Main.C: type = import_ref Main//use_ns, C, loaded [concrete = constants.%C]
// CHECK:STDOUT: %Main.import_ref.8f2: <witness> = import_ref Main//ns, loc5_13, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Main.import_ref.2dd = import_ref Main//ns, inst16 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.2dd = import_ref Main//ns, inst17 [no loc], unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -556,10 +556,10 @@ import Other library "o1";
// CHECK:STDOUT: }
// CHECK:STDOUT: %Other.O1: type = import_ref Other//o1, O1, loaded [concrete = constants.%O1]
// CHECK:STDOUT: %Other.import_ref.8f24d3.1: <witness> = import_ref Other//o1, loc4_11, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Other.import_ref.481 = import_ref Other//o1, inst15 [no loc], unloaded
// CHECK:STDOUT: %Other.import_ref.481 = import_ref Other//o1, inst16 [no loc], unloaded
// CHECK:STDOUT: %Other.O2: type = import_ref Other//o2, O2, loaded [concrete = constants.%O2]
// CHECK:STDOUT: %Other.import_ref.8f24d3.2: <witness> = import_ref Other//o2, loc4_11, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Other.import_ref.2eb = import_ref Other//o2, inst15 [no loc], unloaded
// CHECK:STDOUT: %Other.import_ref.2eb = import_ref Other//o2, inst16 [no loc], unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -651,7 +651,7 @@ import Other library "o1";
// CHECK:STDOUT: }
// CHECK:STDOUT: %Other.O1: type = import_ref Other//o1, O1, loaded [concrete = constants.%O1]
// CHECK:STDOUT: %Other.import_ref.8f2: <witness> = import_ref Other//o1, loc4_11, loaded [concrete = constants.%complete_type]
// CHECK:STDOUT: %Other.import_ref.481 = import_ref Other//o1, inst15 [no loc], unloaded
// CHECK:STDOUT: %Other.import_ref.481 = import_ref Other//o1, inst16 [no loc], unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -385,11 +385,11 @@ fn F0(n: i32) -> P.D {
// CHECK:STDOUT: }
// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//default, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic]
// CHECK:STDOUT: %Core.import_ref.5ab3ec.1: type = import_ref Core//default, loc8_22, loaded [symbolic = @ImplicitAs.%T (constants.%T)]
// CHECK:STDOUT: %Core.import_ref.ff5 = import_ref Core//default, inst48 [no loc], unloaded
// CHECK:STDOUT: %Core.import_ref.ff5 = import_ref Core//default, inst49 [no loc], unloaded
// CHECK:STDOUT: %Core.import_ref.492: @ImplicitAs.%ImplicitAs.assoc_type (%ImplicitAs.assoc_type.ca0) = import_ref Core//default, loc9_32, loaded [symbolic = @ImplicitAs.%assoc0 (constants.%assoc0.dc0)]
// CHECK:STDOUT: %Core.Convert: @ImplicitAs.%Convert.type (%Convert.type.275) = import_ref Core//default, Convert, loaded [symbolic = @ImplicitAs.%Convert (constants.%Convert.42e)]
// CHECK:STDOUT: %Core.import_ref.5ab3ec.2: type = import_ref Core//default, loc8_22, loaded [symbolic = @ImplicitAs.%T (constants.%T)]
// CHECK:STDOUT: %Core.import_ref.ce1: @ImplicitAs.%ImplicitAs.type (%ImplicitAs.type.d62) = import_ref Core//default, inst48 [no loc], loaded [symbolic = @ImplicitAs.%Self (constants.%Self.519)]
// CHECK:STDOUT: %Core.import_ref.ce1: @ImplicitAs.%ImplicitAs.type (%ImplicitAs.type.d62) = import_ref Core//default, inst49 [no loc], loaded [symbolic = @ImplicitAs.%Self (constants.%Self.519)]
// CHECK:STDOUT: %Core.import_ref.1c7: @ImplicitAs.%Convert.type (%Convert.type.275) = import_ref Core//default, loc9_32, loaded [symbolic = @ImplicitAs.%Convert (constants.%Convert.42e)]
// CHECK:STDOUT: %Core.import_ref.de9: <witness> = import_ref Core//default, loc12_38, loaded [concrete = constants.%impl_witness.39c7]
// CHECK:STDOUT: %Core.import_ref.872: type = import_ref Core//default, loc12_17, loaded [concrete = Core.IntLiteral]
@@ -1184,19 +1184,19 @@ fn F0(n: i32) -> P.D {
// CHECK:STDOUT: }
// CHECK:STDOUT: %P.D: type = import_ref P//library, D, loaded [concrete = constants.%D]
// CHECK:STDOUT: %P.import_ref.7e5: <witness> = import_ref P//library, loc7_35, loaded [concrete = constants.%complete_type.682]
// CHECK:STDOUT: %P.import_ref.cab = import_ref P//library, inst46 [no loc], unloaded
// CHECK:STDOUT: %P.import_ref.cab = import_ref P//library, inst47 [no loc], unloaded
// CHECK:STDOUT: %P.import_ref.a99 = import_ref P//library, loc7_16, unloaded
// CHECK:STDOUT: %P.import_ref.9d2 = import_ref P//library, loc7_28, unloaded
// CHECK:STDOUT: %P.C: %C.type = import_ref P//library, C, loaded [concrete = constants.%C.generic]
// CHECK:STDOUT: %P.import_ref.85e: %i32.builtin = import_ref P//library, loc6_9, loaded [symbolic = @C.%N (constants.%N)]
// CHECK:STDOUT: %P.import_ref.8f2: <witness> = import_ref P//library, loc6_19, loaded [concrete = constants.%complete_type.357]
// CHECK:STDOUT: %P.import_ref.d9b = import_ref P//library, inst41 [no loc], unloaded
// CHECK:STDOUT: %P.import_ref.d9b = import_ref P//library, inst42 [no loc], unloaded
// CHECK:STDOUT: %Core.import_ref.5ab3ec.1: type = import_ref Core//default, loc8_22, loaded [symbolic = @ImplicitAs.%T (constants.%T)]
// CHECK:STDOUT: %Core.import_ref.ff5 = import_ref Core//default, inst48 [no loc], unloaded
// CHECK:STDOUT: %Core.import_ref.ff5 = import_ref Core//default, inst49 [no loc], unloaded
// CHECK:STDOUT: %Core.import_ref.492: @ImplicitAs.%ImplicitAs.assoc_type (%ImplicitAs.assoc_type.ca0) = import_ref Core//default, loc9_32, loaded [symbolic = @ImplicitAs.%assoc0 (constants.%assoc0.dc0)]
// CHECK:STDOUT: %Core.Convert = import_ref Core//default, Convert, unloaded
// CHECK:STDOUT: %Core.import_ref.5ab3ec.2: type = import_ref Core//default, loc8_22, loaded [symbolic = @ImplicitAs.%T (constants.%T)]
// CHECK:STDOUT: %Core.import_ref.ce1: @ImplicitAs.%ImplicitAs.type (%ImplicitAs.type.d62) = import_ref Core//default, inst48 [no loc], loaded [symbolic = @ImplicitAs.%Self (constants.%Self.519)]
// CHECK:STDOUT: %Core.import_ref.ce1: @ImplicitAs.%ImplicitAs.type (%ImplicitAs.type.d62) = import_ref Core//default, inst49 [no loc], loaded [symbolic = @ImplicitAs.%Self (constants.%Self.519)]
// CHECK:STDOUT: %Core.import_ref.1c7: @ImplicitAs.%Convert.type (%Convert.type.275) = import_ref Core//default, loc9_32, loaded [symbolic = @ImplicitAs.%Convert (constants.%Convert.42e)]
// CHECK:STDOUT: %Core.import_ref.de9: <witness> = import_ref Core//default, loc12_38, loaded [concrete = constants.%impl_witness.39c]
// CHECK:STDOUT: %Core.import_ref.872: type = import_ref Core//default, loc12_17, loaded [concrete = Core.IntLiteral]
+3 -3
View File
@@ -328,7 +328,7 @@ var c_bad: C({.a = 3, .b = 4}) = F();
// CHECK:STDOUT: }
// CHECK:STDOUT: %Implicit.import_ref.c81: %struct_type.a.b.5ca = import_ref Implicit//default, loc8_9, loaded [symbolic = @C.%S (constants.%S)]
// CHECK:STDOUT: %Implicit.import_ref.8f2: <witness> = import_ref Implicit//default, loc8_34, loaded [concrete = constants.%complete_type.357]
// CHECK:STDOUT: %Implicit.import_ref.b8b = import_ref Implicit//default, inst1142 [no loc], unloaded
// CHECK:STDOUT: %Implicit.import_ref.b8b = import_ref Implicit//default, inst1143 [no loc], unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -505,7 +505,7 @@ var c_bad: C({.a = 3, .b = 4}) = F();
// CHECK:STDOUT: }
// CHECK:STDOUT: %Implicit.import_ref.c81: %struct_type.a.b = import_ref Implicit//default, loc8_9, loaded [symbolic = @C.%S (constants.%S)]
// CHECK:STDOUT: %Implicit.import_ref.8f2: <witness> = import_ref Implicit//default, loc8_34, loaded [concrete = constants.%complete_type.357]
// CHECK:STDOUT: %Implicit.import_ref.b8b = import_ref Implicit//default, inst1142 [no loc], unloaded
// CHECK:STDOUT: %Implicit.import_ref.b8b = import_ref Implicit//default, inst1143 [no loc], unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -622,7 +622,7 @@ var c_bad: C({.a = 3, .b = 4}) = F();
// CHECK:STDOUT: }
// CHECK:STDOUT: %Implicit.import_ref.c81: %struct_type.a.b.5ca = import_ref Implicit//default, loc8_9, loaded [symbolic = @C.%S (constants.%S)]
// CHECK:STDOUT: %Implicit.import_ref.8f2: <witness> = import_ref Implicit//default, loc8_34, loaded [concrete = constants.%complete_type.357]
// CHECK:STDOUT: %Implicit.import_ref.b8b = import_ref Implicit//default, inst1142 [no loc], unloaded
// CHECK:STDOUT: %Implicit.import_ref.b8b = import_ref Implicit//default, inst1143 [no loc], unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
+3 -3
View File
@@ -358,7 +358,7 @@ var c_bad: C((3, 4)) = F();
// CHECK:STDOUT: }
// CHECK:STDOUT: %Implicit.import_ref.48d: %tuple.type.c2c = import_ref Implicit//default, loc7_9, loaded [symbolic = @C.%X (constants.%X)]
// CHECK:STDOUT: %Implicit.import_ref.8f2: <witness> = import_ref Implicit//default, loc7_26, loaded [concrete = constants.%complete_type.357]
// CHECK:STDOUT: %Implicit.import_ref.964 = import_ref Implicit//default, inst1179 [no loc], unloaded
// CHECK:STDOUT: %Implicit.import_ref.964 = import_ref Implicit//default, inst1180 [no loc], unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -551,7 +551,7 @@ var c_bad: C((3, 4)) = F();
// CHECK:STDOUT: }
// CHECK:STDOUT: %Implicit.import_ref.48d: %tuple.type.c2c = import_ref Implicit//default, loc7_9, loaded [symbolic = @C.%X (constants.%X)]
// CHECK:STDOUT: %Implicit.import_ref.8f2: <witness> = import_ref Implicit//default, loc7_26, loaded [concrete = constants.%complete_type.357]
// CHECK:STDOUT: %Implicit.import_ref.964 = import_ref Implicit//default, inst1179 [no loc], unloaded
// CHECK:STDOUT: %Implicit.import_ref.964 = import_ref Implicit//default, inst1180 [no loc], unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -669,7 +669,7 @@ var c_bad: C((3, 4)) = F();
// CHECK:STDOUT: }
// CHECK:STDOUT: %Implicit.import_ref.48d: %tuple.type.c2c = import_ref Implicit//default, loc7_9, loaded [symbolic = @C.%X (constants.%X)]
// CHECK:STDOUT: %Implicit.import_ref.8f2: <witness> = import_ref Implicit//default, loc7_26, loaded [concrete = constants.%complete_type.357]
// CHECK:STDOUT: %Implicit.import_ref.964 = import_ref Implicit//default, inst1179 [no loc], unloaded
// CHECK:STDOUT: %Implicit.import_ref.964 = import_ref Implicit//default, inst1180 [no loc], unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -496,8 +496,8 @@ let (a: {}, b: {}) = ({}, {}, {});
// CHECK:STDOUT:
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .x = <unexpected>.inst22.loc9_8
// CHECK:STDOUT: .y = <unexpected>.inst26.loc9_15
// CHECK:STDOUT: .x = <unexpected>.inst23.loc9_8
// CHECK:STDOUT: .y = <unexpected>.inst27.loc9_15
// CHECK:STDOUT: has_error
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT: }
@@ -522,7 +522,7 @@ let (a: {}, b: {}) = ({}, {}, {});
// CHECK:STDOUT:
// CHECK:STDOUT: class @C {
// CHECK:STDOUT: name_binding_decl {
// CHECK:STDOUT: %.loc9_20: %tuple.type = tuple_pattern (<unexpected>.inst21.loc9_9, <unexpected>.inst24.loc9_16)
// CHECK:STDOUT: %.loc9_20: %tuple.type = tuple_pattern (<unexpected>.inst22.loc9_9, <unexpected>.inst25.loc9_16)
// CHECK:STDOUT: %.loc9_3: %tuple.type = var_pattern %.loc9_20
// CHECK:STDOUT: }
// CHECK:STDOUT: %.var: ref %tuple.type = var <none>
@@ -531,8 +531,8 @@ let (a: {}, b: {}) = ({}, {}, {});
// CHECK:STDOUT:
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = constants.%C
// CHECK:STDOUT: .x = <unexpected>.inst21.loc9_9
// CHECK:STDOUT: .y = <unexpected>.inst24.loc9_16
// CHECK:STDOUT: .x = <unexpected>.inst22.loc9_9
// CHECK:STDOUT: .y = <unexpected>.inst25.loc9_16
// CHECK:STDOUT: has_error
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -547,10 +547,10 @@ let (a: {}, b: {}) = ({}, {}, {});
// CHECK:STDOUT:
// CHECK:STDOUT: file {
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
// CHECK:STDOUT: .x = <unexpected>.inst18.loc8_6
// CHECK:STDOUT: .y = <unexpected>.inst22.loc8_13
// CHECK:STDOUT: .a = <unexpected>.inst32.loc14_6
// CHECK:STDOUT: .b = <unexpected>.inst36.loc14_13
// CHECK:STDOUT: .x = <unexpected>.inst19.loc8_6
// CHECK:STDOUT: .y = <unexpected>.inst23.loc8_13
// CHECK:STDOUT: .a = <unexpected>.inst33.loc14_6
// CHECK:STDOUT: .b = <unexpected>.inst37.loc14_13
// CHECK:STDOUT: }
// CHECK:STDOUT: name_binding_decl {
// CHECK:STDOUT: %x.patt: %empty_struct_type = binding_pattern x
@@ -35,7 +35,7 @@ interface I {
// CHECK:STDOUT:
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .v = <unexpected>.inst21.loc16_7
// CHECK:STDOUT: .v = <unexpected>.inst22.loc16_7
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT: }
// CHECK:STDOUT:
+3 -3
View File
@@ -610,8 +610,8 @@ fn NotEmptyStruct() {
// CHECK:STDOUT: import Core//prelude
// CHECK:STDOUT: import Core//prelude/...
// CHECK:STDOUT: }
// CHECK:STDOUT: %Main.import_ref.8fd = import_ref Main//state_constraints, inst18 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.e5d = import_ref Main//state_constraints, inst22 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.8fd = import_ref Main//state_constraints, inst19 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.e5d = import_ref Main//state_constraints, inst23 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.ce7 = import_ref Main//state_constraints, loc7_13, unloaded
// CHECK:STDOUT: %Main.import_ref.731 = import_ref Main//state_constraints, loc8_13, unloaded
// CHECK:STDOUT: %Main.Member = import_ref Main//state_constraints, Member, unloaded
@@ -715,7 +715,7 @@ fn NotEmptyStruct() {
// CHECK:STDOUT: import Core//prelude
// CHECK:STDOUT: import Core//prelude/...
// CHECK:STDOUT: }
// CHECK:STDOUT: %Main.import_ref = import_ref Main//state_constraints, inst18 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref = import_ref Main//state_constraints, inst19 [no loc], unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
+2 -2
View File
@@ -1218,11 +1218,11 @@ let K: (E where .F = .Self.G) = bool;
// CHECK:STDOUT: import Core//prelude
// CHECK:STDOUT: import Core//prelude/...
// CHECK:STDOUT: }
// CHECK:STDOUT: %Main.import_ref.169 = import_ref Main//equal_constraint, inst18 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.169 = import_ref Main//equal_constraint, inst19 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.56b = import_ref Main//equal_constraint, loc5_8, unloaded
// CHECK:STDOUT: %Main.P = import_ref Main//equal_constraint, P, unloaded
// CHECK:STDOUT: %Main.import_ref.3bc: %N_where.type = import_ref Main//equal_constraint, loc8_10, loaded [symbolic = @Equal.1.%T (constants.%T)]
// CHECK:STDOUT: %Main.import_ref.b61 = import_ref Main//nested_rewrites, inst18 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.b61 = import_ref Main//nested_rewrites, inst19 [no loc], unloaded
// CHECK:STDOUT: %Main.import_ref.38f = import_ref Main//nested_rewrites, loc5_8, unloaded
// CHECK:STDOUT: %Main.import_ref.30f = import_ref Main//nested_rewrites, loc6_8, unloaded
// CHECK:STDOUT: %Main.B = import_ref Main//nested_rewrites, B, unloaded
+10
View File
@@ -140,6 +140,10 @@ class TypeCompleter {
auto BuildInfoForInst(SemIR::TypeId /*type_id*/, SemIR::ConstType inst) const
-> SemIR::CompleteTypeInfo;
auto BuildInfoForInst(SemIR::TypeId /*type_id*/,
SemIR::ImplWitnessAssociatedConstant inst) const
-> SemIR::CompleteTypeInfo;
template <typename InstT>
requires(InstT::Kind.constant_kind() ==
SemIR::InstConstantKind::SymbolicOnly ||
@@ -502,6 +506,12 @@ auto TypeCompleter::BuildInfoForInst(SemIR::TypeId /*type_id*/,
return GetNestedInfo(context_->types().GetTypeIdForTypeInstId(inst.inner_id));
}
auto TypeCompleter::BuildInfoForInst(
SemIR::TypeId /*type_id*/, SemIR::ImplWitnessAssociatedConstant inst) const
-> SemIR::CompleteTypeInfo {
return GetNestedInfo(inst.type_id);
}
// Builds and returns the value representation for the given type. All nested
// types, as found by AddNestedIncompleteTypes, are known to be complete.
auto TypeCompleter::BuildInfo(SemIR::TypeId type_id, SemIR::Inst inst) const
+7 -1
View File
@@ -128,7 +128,9 @@ class TypeStructureBuilder {
// The self type comes first in the type structure, so we push it last, as
// the queue works from the back.
Push(interface_constraint);
PushInstId(self_inst_id);
if (self_inst_id.has_value()) {
PushInstId(self_inst_id);
}
BuildTypeStructure();
// TODO: This requires 4 SmallVector moves (two here and two in the
@@ -266,6 +268,10 @@ class TypeStructureBuilder {
PushInstId(const_type.inner_id);
break;
}
case CARBON_KIND(SemIR::ImplWitnessAssociatedConstant assoc): {
Push(assoc.type_id);
break;
}
case CARBON_KIND(SemIR::PointerType pointer_type): {
AppendStructural(TypeStructure::Structural::ConcreteOpenParen);
Push(CloseType());
@@ -33,7 +33,7 @@ fn B() {
// CHECK:STDOUT: ir0: {decl_id: inst<none>, is_export: false}
// CHECK:STDOUT: import_ir_insts: {}
// CHECK:STDOUT: name_scopes:
// CHECK:STDOUT: name_scope0: {inst: inst13, parent_scope: name_scope<none>, has_error: false, extended_scopes: [], names: {name0: inst14}}
// CHECK:STDOUT: name_scope0: {inst: inst14, parent_scope: name_scope<none>, has_error: false, extended_scopes: [], names: {name0: inst15}}
// CHECK:STDOUT: entity_names: {}
// CHECK:STDOUT: functions:
// CHECK:STDOUT: function0: {name: name0, parent_scope: name_scope0, call_params_id: inst_block_empty, body: [inst_block5]}
@@ -49,38 +49,38 @@ fn B() {
// CHECK:STDOUT: value_repr: {kind: copy, type: type(Error)}
// CHECK:STDOUT: 'type(inst(NamespaceType))':
// CHECK:STDOUT: value_repr: {kind: copy, type: type(inst(NamespaceType))}
// CHECK:STDOUT: 'type(inst15)':
// CHECK:STDOUT: value_repr: {kind: none, type: type(inst16)}
// CHECK:STDOUT: 'type(inst16)':
// CHECK:STDOUT: value_repr: {kind: none, type: type(inst16)}
// CHECK:STDOUT: value_repr: {kind: none, type: type(inst17)}
// CHECK:STDOUT: 'type(inst17)':
// CHECK:STDOUT: value_repr: {kind: none, type: type(inst17)}
// CHECK:STDOUT: type_blocks:
// CHECK:STDOUT: type_block0: {}
// CHECK:STDOUT: insts:
// CHECK:STDOUT: inst13: {kind: Namespace, arg0: name_scope0, arg1: inst<none>, type: type(inst(NamespaceType))}
// CHECK:STDOUT: inst14: {kind: FunctionDecl, arg0: function0, arg1: inst_block_empty, type: type(inst15)}
// CHECK:STDOUT: inst15: {kind: FunctionType, arg0: function0, arg1: specific<none>, type: type(TypeType)}
// CHECK:STDOUT: inst16: {kind: TupleType, arg0: type_block0, type: type(TypeType)}
// CHECK:STDOUT: inst17: {kind: StructValue, arg0: inst_block_empty, type: type(inst15)}
// CHECK:STDOUT: inst18: {kind: Return}
// CHECK:STDOUT: inst14: {kind: Namespace, arg0: name_scope0, arg1: inst<none>, type: type(inst(NamespaceType))}
// CHECK:STDOUT: inst15: {kind: FunctionDecl, arg0: function0, arg1: inst_block_empty, type: type(inst16)}
// CHECK:STDOUT: inst16: {kind: FunctionType, arg0: function0, arg1: specific<none>, type: type(TypeType)}
// CHECK:STDOUT: inst17: {kind: TupleType, arg0: type_block0, type: type(TypeType)}
// CHECK:STDOUT: inst18: {kind: StructValue, arg0: inst_block_empty, type: type(inst16)}
// CHECK:STDOUT: inst19: {kind: Return}
// CHECK:STDOUT: constant_values:
// CHECK:STDOUT: inst13: concrete_constant(inst13)
// CHECK:STDOUT: inst14: concrete_constant(inst17)
// CHECK:STDOUT: inst15: concrete_constant(inst15)
// CHECK:STDOUT: inst14: concrete_constant(inst14)
// CHECK:STDOUT: inst15: concrete_constant(inst18)
// CHECK:STDOUT: inst16: concrete_constant(inst16)
// CHECK:STDOUT: inst17: concrete_constant(inst17)
// CHECK:STDOUT: inst18: concrete_constant(inst18)
// CHECK:STDOUT: symbolic_constants: {}
// CHECK:STDOUT: inst_blocks:
// CHECK:STDOUT: inst_block_empty: {}
// CHECK:STDOUT: exports:
// CHECK:STDOUT: 0: inst14
// CHECK:STDOUT: 0: inst15
// CHECK:STDOUT: import_refs: {}
// CHECK:STDOUT: global_init: {}
// CHECK:STDOUT: inst_block4: {}
// CHECK:STDOUT: inst_block5:
// CHECK:STDOUT: 0: inst18
// CHECK:STDOUT: 0: inst19
// CHECK:STDOUT: inst_block6:
// CHECK:STDOUT: 0: inst13
// CHECK:STDOUT: 1: inst14
// CHECK:STDOUT: 0: inst14
// CHECK:STDOUT: 1: inst15
// CHECK:STDOUT: ...
// CHECK:STDOUT:
// CHECK:STDOUT: --- a.carbon
@@ -107,13 +107,13 @@ fn B() {
// CHECK:STDOUT: sem_ir:
// CHECK:STDOUT: import_irs:
// CHECK:STDOUT: ir0: {decl_id: inst<none>, is_export: false}
// CHECK:STDOUT: ir1: {decl_id: inst14, is_export: false}
// CHECK:STDOUT: ir1: {decl_id: inst15, is_export: false}
// CHECK:STDOUT: import_ir_insts:
// CHECK:STDOUT: import_ir_inst0: {ir_id: ir1, inst_id: inst14}
// CHECK:STDOUT: import_ir_inst1: {ir_id: ir1, inst_id: inst14}
// CHECK:STDOUT: import_ir_inst0: {ir_id: ir1, inst_id: inst15}
// CHECK:STDOUT: import_ir_inst1: {ir_id: ir1, inst_id: inst15}
// CHECK:STDOUT: name_scopes:
// CHECK:STDOUT: name_scope0: {inst: inst13, parent_scope: name_scope<none>, has_error: false, extended_scopes: [], names: {name1: inst15, name0: inst16}}
// CHECK:STDOUT: name_scope1: {inst: inst15, parent_scope: name_scope0, has_error: false, extended_scopes: [], names: {name1: inst21}}
// CHECK:STDOUT: name_scope0: {inst: inst14, parent_scope: name_scope<none>, has_error: false, extended_scopes: [], names: {name1: inst16, name0: inst17}}
// CHECK:STDOUT: name_scope1: {inst: inst16, parent_scope: name_scope0, has_error: false, extended_scopes: [], names: {name1: inst22}}
// CHECK:STDOUT: entity_names:
// CHECK:STDOUT: entity_name0: {name: name1, parent_scope: name_scope1, index: -1, is_template: 0}
// CHECK:STDOUT: functions:
@@ -131,62 +131,62 @@ fn B() {
// CHECK:STDOUT: value_repr: {kind: copy, type: type(Error)}
// CHECK:STDOUT: 'type(inst(NamespaceType))':
// CHECK:STDOUT: value_repr: {kind: copy, type: type(inst(NamespaceType))}
// CHECK:STDOUT: 'type(inst17)':
// CHECK:STDOUT: value_repr: {kind: none, type: type(inst18)}
// CHECK:STDOUT: 'type(inst18)':
// CHECK:STDOUT: value_repr: {kind: none, type: type(inst18)}
// CHECK:STDOUT: 'type(inst23)':
// CHECK:STDOUT: value_repr: {kind: none, type: type(inst18)}
// CHECK:STDOUT: value_repr: {kind: none, type: type(inst19)}
// CHECK:STDOUT: 'type(inst19)':
// CHECK:STDOUT: value_repr: {kind: none, type: type(inst19)}
// CHECK:STDOUT: 'type(inst24)':
// CHECK:STDOUT: value_repr: {kind: none, type: type(inst19)}
// CHECK:STDOUT: type_blocks:
// CHECK:STDOUT: type_block0: {}
// CHECK:STDOUT: insts:
// CHECK:STDOUT: inst13: {kind: Namespace, arg0: name_scope0, arg1: inst<none>, type: type(inst(NamespaceType))}
// CHECK:STDOUT: inst14: {kind: ImportDecl, arg0: name1}
// CHECK:STDOUT: inst15: {kind: Namespace, arg0: name_scope1, arg1: inst14, type: type(inst(NamespaceType))}
// CHECK:STDOUT: inst16: {kind: FunctionDecl, arg0: function0, arg1: inst_block_empty, type: type(inst17)}
// CHECK:STDOUT: inst17: {kind: FunctionType, arg0: function0, arg1: specific<none>, type: type(TypeType)}
// CHECK:STDOUT: inst18: {kind: TupleType, arg0: type_block0, type: type(TypeType)}
// CHECK:STDOUT: inst19: {kind: StructValue, arg0: inst_block_empty, type: type(inst17)}
// CHECK:STDOUT: inst20: {kind: NameRef, arg0: name1, arg1: inst15, type: type(inst(NamespaceType))}
// CHECK:STDOUT: inst21: {kind: ImportRefLoaded, arg0: import_ir_inst0, arg1: entity_name0, type: type(inst23)}
// CHECK:STDOUT: inst22: {kind: FunctionDecl, arg0: function1, arg1: inst_block_empty, type: type(inst23)}
// CHECK:STDOUT: inst23: {kind: FunctionType, arg0: function1, arg1: specific<none>, type: type(TypeType)}
// CHECK:STDOUT: inst24: {kind: StructValue, arg0: inst_block_empty, type: type(inst23)}
// CHECK:STDOUT: inst25: {kind: NameRef, arg0: name1, arg1: inst21, type: type(inst23)}
// CHECK:STDOUT: inst26: {kind: Call, arg0: inst25, arg1: inst_block_empty, type: type(inst18)}
// CHECK:STDOUT: inst27: {kind: Return}
// CHECK:STDOUT: inst14: {kind: Namespace, arg0: name_scope0, arg1: inst<none>, type: type(inst(NamespaceType))}
// CHECK:STDOUT: inst15: {kind: ImportDecl, arg0: name1}
// CHECK:STDOUT: inst16: {kind: Namespace, arg0: name_scope1, arg1: inst15, type: type(inst(NamespaceType))}
// CHECK:STDOUT: inst17: {kind: FunctionDecl, arg0: function0, arg1: inst_block_empty, type: type(inst18)}
// CHECK:STDOUT: inst18: {kind: FunctionType, arg0: function0, arg1: specific<none>, type: type(TypeType)}
// CHECK:STDOUT: inst19: {kind: TupleType, arg0: type_block0, type: type(TypeType)}
// CHECK:STDOUT: inst20: {kind: StructValue, arg0: inst_block_empty, type: type(inst18)}
// CHECK:STDOUT: inst21: {kind: NameRef, arg0: name1, arg1: inst16, type: type(inst(NamespaceType))}
// CHECK:STDOUT: inst22: {kind: ImportRefLoaded, arg0: import_ir_inst0, arg1: entity_name0, type: type(inst24)}
// CHECK:STDOUT: inst23: {kind: FunctionDecl, arg0: function1, arg1: inst_block_empty, type: type(inst24)}
// CHECK:STDOUT: inst24: {kind: FunctionType, arg0: function1, arg1: specific<none>, type: type(TypeType)}
// CHECK:STDOUT: inst25: {kind: StructValue, arg0: inst_block_empty, type: type(inst24)}
// CHECK:STDOUT: inst26: {kind: NameRef, arg0: name1, arg1: inst22, type: type(inst24)}
// CHECK:STDOUT: inst27: {kind: Call, arg0: inst26, arg1: inst_block_empty, type: type(inst19)}
// CHECK:STDOUT: inst28: {kind: Return}
// CHECK:STDOUT: constant_values:
// CHECK:STDOUT: inst13: concrete_constant(inst13)
// CHECK:STDOUT: inst15: concrete_constant(inst15)
// CHECK:STDOUT: inst16: concrete_constant(inst19)
// CHECK:STDOUT: inst17: concrete_constant(inst17)
// CHECK:STDOUT: inst14: concrete_constant(inst14)
// CHECK:STDOUT: inst16: concrete_constant(inst16)
// CHECK:STDOUT: inst17: concrete_constant(inst20)
// CHECK:STDOUT: inst18: concrete_constant(inst18)
// CHECK:STDOUT: inst19: concrete_constant(inst19)
// CHECK:STDOUT: inst20: concrete_constant(inst15)
// CHECK:STDOUT: inst21: concrete_constant(inst24)
// CHECK:STDOUT: inst22: concrete_constant(inst24)
// CHECK:STDOUT: inst23: concrete_constant(inst23)
// CHECK:STDOUT: inst20: concrete_constant(inst20)
// CHECK:STDOUT: inst21: concrete_constant(inst16)
// CHECK:STDOUT: inst22: concrete_constant(inst25)
// CHECK:STDOUT: inst23: concrete_constant(inst25)
// CHECK:STDOUT: inst24: concrete_constant(inst24)
// CHECK:STDOUT: inst25: concrete_constant(inst24)
// CHECK:STDOUT: inst25: concrete_constant(inst25)
// CHECK:STDOUT: inst26: concrete_constant(inst25)
// CHECK:STDOUT: symbolic_constants: {}
// CHECK:STDOUT: inst_blocks:
// CHECK:STDOUT: inst_block_empty: {}
// CHECK:STDOUT: exports:
// CHECK:STDOUT: 0: inst16
// CHECK:STDOUT: 0: inst17
// CHECK:STDOUT: import_refs:
// CHECK:STDOUT: 0: inst15
// CHECK:STDOUT: 1: inst21
// CHECK:STDOUT: 0: inst16
// CHECK:STDOUT: 1: inst22
// CHECK:STDOUT: global_init: {}
// CHECK:STDOUT: inst_block4: {}
// CHECK:STDOUT: inst_block5:
// CHECK:STDOUT: 0: inst20
// CHECK:STDOUT: 1: inst25
// CHECK:STDOUT: 2: inst26
// CHECK:STDOUT: 3: inst27
// CHECK:STDOUT: 0: inst21
// CHECK:STDOUT: 1: inst26
// CHECK:STDOUT: 2: inst27
// CHECK:STDOUT: 3: inst28
// CHECK:STDOUT: inst_block6:
// CHECK:STDOUT: 0: inst13
// CHECK:STDOUT: 1: inst14
// CHECK:STDOUT: 2: inst16
// CHECK:STDOUT: 0: inst14
// CHECK:STDOUT: 1: inst15
// CHECK:STDOUT: 2: inst17
// CHECK:STDOUT: ...
// CHECK:STDOUT:
// CHECK:STDOUT: --- b.carbon
+61 -61
View File
@@ -33,7 +33,7 @@ fn B() {
// CHECK:STDOUT: ir0: {decl_id: inst<none>, is_export: false}
// CHECK:STDOUT: import_ir_insts: {}
// CHECK:STDOUT: name_scopes:
// CHECK:STDOUT: name_scope0: {inst: inst13, parent_scope: name_scope<none>, has_error: false, extended_scopes: [], names: {name0: inst14}}
// CHECK:STDOUT: name_scope0: {inst: inst14, parent_scope: name_scope<none>, has_error: false, extended_scopes: [], names: {name0: inst15}}
// CHECK:STDOUT: entity_names: {}
// CHECK:STDOUT: functions:
// CHECK:STDOUT: function0: {name: name0, parent_scope: name_scope0, call_params_id: inst_block_empty, body: [inst_block5]}
@@ -49,51 +49,51 @@ fn B() {
// CHECK:STDOUT: value_repr: {kind: copy, type: type(Error)}
// CHECK:STDOUT: 'type(inst(NamespaceType))':
// CHECK:STDOUT: value_repr: {kind: copy, type: type(inst(NamespaceType))}
// CHECK:STDOUT: 'type(inst15)':
// CHECK:STDOUT: value_repr: {kind: none, type: type(inst16)}
// CHECK:STDOUT: 'type(inst16)':
// CHECK:STDOUT: value_repr: {kind: none, type: type(inst16)}
// CHECK:STDOUT: value_repr: {kind: none, type: type(inst17)}
// CHECK:STDOUT: 'type(inst17)':
// CHECK:STDOUT: value_repr: {kind: none, type: type(inst17)}
// CHECK:STDOUT: type_blocks:
// CHECK:STDOUT: type_block0: {}
// CHECK:STDOUT: insts:
// CHECK:STDOUT: inst13: {kind: Namespace, arg0: name_scope0, arg1: inst<none>, type: type(inst(NamespaceType))}
// CHECK:STDOUT: inst14: {kind: FunctionDecl, arg0: function0, arg1: inst_block_empty, type: type(inst15)}
// CHECK:STDOUT: inst15: {kind: FunctionType, arg0: function0, arg1: specific<none>, type: type(TypeType)}
// CHECK:STDOUT: inst16: {kind: TupleType, arg0: type_block0, type: type(TypeType)}
// CHECK:STDOUT: inst17: {kind: StructValue, arg0: inst_block_empty, type: type(inst15)}
// CHECK:STDOUT: inst18: {kind: Return}
// CHECK:STDOUT: inst14: {kind: Namespace, arg0: name_scope0, arg1: inst<none>, type: type(inst(NamespaceType))}
// CHECK:STDOUT: inst15: {kind: FunctionDecl, arg0: function0, arg1: inst_block_empty, type: type(inst16)}
// CHECK:STDOUT: inst16: {kind: FunctionType, arg0: function0, arg1: specific<none>, type: type(TypeType)}
// CHECK:STDOUT: inst17: {kind: TupleType, arg0: type_block0, type: type(TypeType)}
// CHECK:STDOUT: inst18: {kind: StructValue, arg0: inst_block_empty, type: type(inst16)}
// CHECK:STDOUT: inst19: {kind: Return}
// CHECK:STDOUT: constant_values:
// CHECK:STDOUT: inst13: concrete_constant(inst13)
// CHECK:STDOUT: inst14: concrete_constant(inst17)
// CHECK:STDOUT: inst15: concrete_constant(inst15)
// CHECK:STDOUT: inst14: concrete_constant(inst14)
// CHECK:STDOUT: inst15: concrete_constant(inst18)
// CHECK:STDOUT: inst16: concrete_constant(inst16)
// CHECK:STDOUT: inst17: concrete_constant(inst17)
// CHECK:STDOUT: inst18: concrete_constant(inst18)
// CHECK:STDOUT: symbolic_constants: {}
// CHECK:STDOUT: inst_blocks:
// CHECK:STDOUT: inst_block_empty: {}
// CHECK:STDOUT: exports:
// CHECK:STDOUT: 0: inst14
// CHECK:STDOUT: 0: inst15
// CHECK:STDOUT: import_refs: {}
// CHECK:STDOUT: global_init: {}
// CHECK:STDOUT: inst_block4: {}
// CHECK:STDOUT: inst_block5:
// CHECK:STDOUT: 0: inst18
// CHECK:STDOUT: 0: inst19
// CHECK:STDOUT: inst_block6:
// CHECK:STDOUT: 0: inst13
// CHECK:STDOUT: 1: inst14
// CHECK:STDOUT: 0: inst14
// CHECK:STDOUT: 1: inst15
// CHECK:STDOUT: ...
// CHECK:STDOUT: ---
// CHECK:STDOUT: filename: b.carbon
// CHECK:STDOUT: sem_ir:
// CHECK:STDOUT: import_irs:
// CHECK:STDOUT: ir0: {decl_id: inst<none>, is_export: false}
// CHECK:STDOUT: ir1: {decl_id: inst14, is_export: false}
// CHECK:STDOUT: ir1: {decl_id: inst15, is_export: false}
// CHECK:STDOUT: import_ir_insts:
// CHECK:STDOUT: import_ir_inst0: {ir_id: ir1, inst_id: inst14}
// CHECK:STDOUT: import_ir_inst1: {ir_id: ir1, inst_id: inst14}
// CHECK:STDOUT: import_ir_inst0: {ir_id: ir1, inst_id: inst15}
// CHECK:STDOUT: import_ir_inst1: {ir_id: ir1, inst_id: inst15}
// CHECK:STDOUT: name_scopes:
// CHECK:STDOUT: name_scope0: {inst: inst13, parent_scope: name_scope<none>, has_error: false, extended_scopes: [], names: {name1: inst15, name0: inst16}}
// CHECK:STDOUT: name_scope1: {inst: inst15, parent_scope: name_scope0, has_error: false, extended_scopes: [], names: {name1: inst21}}
// CHECK:STDOUT: name_scope0: {inst: inst14, parent_scope: name_scope<none>, has_error: false, extended_scopes: [], names: {name1: inst16, name0: inst17}}
// CHECK:STDOUT: name_scope1: {inst: inst16, parent_scope: name_scope0, has_error: false, extended_scopes: [], names: {name1: inst22}}
// CHECK:STDOUT: entity_names:
// CHECK:STDOUT: entity_name0: {name: name1, parent_scope: name_scope1, index: -1, is_template: 0}
// CHECK:STDOUT: functions:
@@ -111,60 +111,60 @@ fn B() {
// CHECK:STDOUT: value_repr: {kind: copy, type: type(Error)}
// CHECK:STDOUT: 'type(inst(NamespaceType))':
// CHECK:STDOUT: value_repr: {kind: copy, type: type(inst(NamespaceType))}
// CHECK:STDOUT: 'type(inst17)':
// CHECK:STDOUT: value_repr: {kind: none, type: type(inst18)}
// CHECK:STDOUT: 'type(inst18)':
// CHECK:STDOUT: value_repr: {kind: none, type: type(inst18)}
// CHECK:STDOUT: 'type(inst23)':
// CHECK:STDOUT: value_repr: {kind: none, type: type(inst18)}
// CHECK:STDOUT: value_repr: {kind: none, type: type(inst19)}
// CHECK:STDOUT: 'type(inst19)':
// CHECK:STDOUT: value_repr: {kind: none, type: type(inst19)}
// CHECK:STDOUT: 'type(inst24)':
// CHECK:STDOUT: value_repr: {kind: none, type: type(inst19)}
// CHECK:STDOUT: type_blocks:
// CHECK:STDOUT: type_block0: {}
// CHECK:STDOUT: insts:
// CHECK:STDOUT: inst13: {kind: Namespace, arg0: name_scope0, arg1: inst<none>, type: type(inst(NamespaceType))}
// CHECK:STDOUT: inst14: {kind: ImportDecl, arg0: name1}
// CHECK:STDOUT: inst15: {kind: Namespace, arg0: name_scope1, arg1: inst14, type: type(inst(NamespaceType))}
// CHECK:STDOUT: inst16: {kind: FunctionDecl, arg0: function0, arg1: inst_block_empty, type: type(inst17)}
// CHECK:STDOUT: inst17: {kind: FunctionType, arg0: function0, arg1: specific<none>, type: type(TypeType)}
// CHECK:STDOUT: inst18: {kind: TupleType, arg0: type_block0, type: type(TypeType)}
// CHECK:STDOUT: inst19: {kind: StructValue, arg0: inst_block_empty, type: type(inst17)}
// CHECK:STDOUT: inst20: {kind: NameRef, arg0: name1, arg1: inst15, type: type(inst(NamespaceType))}
// CHECK:STDOUT: inst21: {kind: ImportRefLoaded, arg0: import_ir_inst0, arg1: entity_name0, type: type(inst23)}
// CHECK:STDOUT: inst22: {kind: FunctionDecl, arg0: function1, arg1: inst_block_empty, type: type(inst23)}
// CHECK:STDOUT: inst23: {kind: FunctionType, arg0: function1, arg1: specific<none>, type: type(TypeType)}
// CHECK:STDOUT: inst24: {kind: StructValue, arg0: inst_block_empty, type: type(inst23)}
// CHECK:STDOUT: inst25: {kind: NameRef, arg0: name1, arg1: inst21, type: type(inst23)}
// CHECK:STDOUT: inst26: {kind: Call, arg0: inst25, arg1: inst_block_empty, type: type(inst18)}
// CHECK:STDOUT: inst27: {kind: Return}
// CHECK:STDOUT: inst14: {kind: Namespace, arg0: name_scope0, arg1: inst<none>, type: type(inst(NamespaceType))}
// CHECK:STDOUT: inst15: {kind: ImportDecl, arg0: name1}
// CHECK:STDOUT: inst16: {kind: Namespace, arg0: name_scope1, arg1: inst15, type: type(inst(NamespaceType))}
// CHECK:STDOUT: inst17: {kind: FunctionDecl, arg0: function0, arg1: inst_block_empty, type: type(inst18)}
// CHECK:STDOUT: inst18: {kind: FunctionType, arg0: function0, arg1: specific<none>, type: type(TypeType)}
// CHECK:STDOUT: inst19: {kind: TupleType, arg0: type_block0, type: type(TypeType)}
// CHECK:STDOUT: inst20: {kind: StructValue, arg0: inst_block_empty, type: type(inst18)}
// CHECK:STDOUT: inst21: {kind: NameRef, arg0: name1, arg1: inst16, type: type(inst(NamespaceType))}
// CHECK:STDOUT: inst22: {kind: ImportRefLoaded, arg0: import_ir_inst0, arg1: entity_name0, type: type(inst24)}
// CHECK:STDOUT: inst23: {kind: FunctionDecl, arg0: function1, arg1: inst_block_empty, type: type(inst24)}
// CHECK:STDOUT: inst24: {kind: FunctionType, arg0: function1, arg1: specific<none>, type: type(TypeType)}
// CHECK:STDOUT: inst25: {kind: StructValue, arg0: inst_block_empty, type: type(inst24)}
// CHECK:STDOUT: inst26: {kind: NameRef, arg0: name1, arg1: inst22, type: type(inst24)}
// CHECK:STDOUT: inst27: {kind: Call, arg0: inst26, arg1: inst_block_empty, type: type(inst19)}
// CHECK:STDOUT: inst28: {kind: Return}
// CHECK:STDOUT: constant_values:
// CHECK:STDOUT: inst13: concrete_constant(inst13)
// CHECK:STDOUT: inst15: concrete_constant(inst15)
// CHECK:STDOUT: inst16: concrete_constant(inst19)
// CHECK:STDOUT: inst17: concrete_constant(inst17)
// CHECK:STDOUT: inst14: concrete_constant(inst14)
// CHECK:STDOUT: inst16: concrete_constant(inst16)
// CHECK:STDOUT: inst17: concrete_constant(inst20)
// CHECK:STDOUT: inst18: concrete_constant(inst18)
// CHECK:STDOUT: inst19: concrete_constant(inst19)
// CHECK:STDOUT: inst20: concrete_constant(inst15)
// CHECK:STDOUT: inst21: concrete_constant(inst24)
// CHECK:STDOUT: inst22: concrete_constant(inst24)
// CHECK:STDOUT: inst23: concrete_constant(inst23)
// CHECK:STDOUT: inst20: concrete_constant(inst20)
// CHECK:STDOUT: inst21: concrete_constant(inst16)
// CHECK:STDOUT: inst22: concrete_constant(inst25)
// CHECK:STDOUT: inst23: concrete_constant(inst25)
// CHECK:STDOUT: inst24: concrete_constant(inst24)
// CHECK:STDOUT: inst25: concrete_constant(inst24)
// CHECK:STDOUT: inst25: concrete_constant(inst25)
// CHECK:STDOUT: inst26: concrete_constant(inst25)
// CHECK:STDOUT: symbolic_constants: {}
// CHECK:STDOUT: inst_blocks:
// CHECK:STDOUT: inst_block_empty: {}
// CHECK:STDOUT: exports:
// CHECK:STDOUT: 0: inst16
// CHECK:STDOUT: 0: inst17
// CHECK:STDOUT: import_refs:
// CHECK:STDOUT: 0: inst15
// CHECK:STDOUT: 1: inst21
// CHECK:STDOUT: 0: inst16
// CHECK:STDOUT: 1: inst22
// CHECK:STDOUT: global_init: {}
// CHECK:STDOUT: inst_block4: {}
// CHECK:STDOUT: inst_block5:
// CHECK:STDOUT: 0: inst20
// CHECK:STDOUT: 1: inst25
// CHECK:STDOUT: 2: inst26
// CHECK:STDOUT: 3: inst27
// CHECK:STDOUT: 0: inst21
// CHECK:STDOUT: 1: inst26
// CHECK:STDOUT: 2: inst27
// CHECK:STDOUT: 3: inst28
// CHECK:STDOUT: inst_block6:
// CHECK:STDOUT: 0: inst13
// CHECK:STDOUT: 1: inst14
// CHECK:STDOUT: 2: inst16
// CHECK:STDOUT: 0: inst14
// CHECK:STDOUT: 1: inst15
// CHECK:STDOUT: 2: inst17
// CHECK:STDOUT: ...
+110 -110
View File
@@ -23,11 +23,11 @@ fn Foo(n: ()) -> ((), ()) {
// CHECK:STDOUT: ir0: {decl_id: inst<none>, is_export: false}
// CHECK:STDOUT: import_ir_insts: {}
// CHECK:STDOUT: name_scopes:
// CHECK:STDOUT: name_scope0: {inst: inst13, parent_scope: name_scope<none>, has_error: false, extended_scopes: [], names: {name0: inst33}}
// CHECK:STDOUT: name_scope0: {inst: inst14, parent_scope: name_scope<none>, has_error: false, extended_scopes: [], names: {name0: inst34}}
// CHECK:STDOUT: entity_names:
// CHECK:STDOUT: entity_name0: {name: name1, parent_scope: name_scope<none>, index: -1, is_template: 0}
// CHECK:STDOUT: functions:
// CHECK:STDOUT: function0: {name: name0, parent_scope: name_scope0, call_params_id: inst_block7, return_slot_pattern: inst28, body: [inst_block10]}
// CHECK:STDOUT: function0: {name: name0, parent_scope: name_scope0, call_params_id: inst_block7, return_slot_pattern: inst29, body: [inst_block10]}
// CHECK:STDOUT: classes: {}
// CHECK:STDOUT: generics: {}
// CHECK:STDOUT: specifics: {}
@@ -40,140 +40,140 @@ fn Foo(n: ()) -> ((), ()) {
// CHECK:STDOUT: value_repr: {kind: copy, type: type(Error)}
// CHECK:STDOUT: 'type(inst(NamespaceType))':
// CHECK:STDOUT: value_repr: {kind: copy, type: type(inst(NamespaceType))}
// CHECK:STDOUT: 'type(inst34)':
// CHECK:STDOUT: value_repr: {kind: none, type: type(inst14)}
// CHECK:STDOUT: 'type(inst14)':
// CHECK:STDOUT: value_repr: {kind: none, type: type(inst14)}
// CHECK:STDOUT: 'type(inst22)':
// CHECK:STDOUT: value_repr: {kind: pointer, type: type(inst36)}
// CHECK:STDOUT: 'type(inst36)':
// CHECK:STDOUT: value_repr: {kind: copy, type: type(inst36)}
// CHECK:STDOUT: 'type(inst35)':
// CHECK:STDOUT: value_repr: {kind: none, type: type(inst15)}
// CHECK:STDOUT: 'type(inst15)':
// CHECK:STDOUT: value_repr: {kind: none, type: type(inst15)}
// CHECK:STDOUT: 'type(inst23)':
// CHECK:STDOUT: value_repr: {kind: pointer, type: type(inst37)}
// CHECK:STDOUT: 'type(inst37)':
// CHECK:STDOUT: value_repr: {kind: copy, type: type(inst37)}
// CHECK:STDOUT: type_blocks:
// CHECK:STDOUT: type_block0: {}
// CHECK:STDOUT: type_block1:
// CHECK:STDOUT: 0: type(inst14)
// CHECK:STDOUT: 1: type(inst14)
// CHECK:STDOUT: 0: type(inst15)
// CHECK:STDOUT: 1: type(inst15)
// CHECK:STDOUT: insts:
// CHECK:STDOUT: inst13: {kind: Namespace, arg0: name_scope0, arg1: inst<none>, type: type(inst(NamespaceType))}
// CHECK:STDOUT: inst14: {kind: TupleType, arg0: type_block0, type: type(TypeType)}
// CHECK:STDOUT: inst15: {kind: TupleLiteral, arg0: inst_block_empty, type: type(inst14)}
// CHECK:STDOUT: inst16: {kind: Converted, arg0: inst15, arg1: inst14, type: type(TypeType)}
// CHECK:STDOUT: inst17: {kind: BindName, arg0: entity_name0, arg1: inst29, type: type(inst14)}
// CHECK:STDOUT: inst18: {kind: BindingPattern, arg0: entity_name0, type: type(inst14)}
// CHECK:STDOUT: inst19: {kind: ValueParamPattern, arg0: inst18, arg1: call_param0, type: type(inst14)}
// CHECK:STDOUT: inst20: {kind: TupleLiteral, arg0: inst_block_empty, type: type(inst14)}
// CHECK:STDOUT: inst21: {kind: TupleLiteral, arg0: inst_block_empty, type: type(inst14)}
// CHECK:STDOUT: inst22: {kind: TupleType, arg0: type_block1, type: type(TypeType)}
// CHECK:STDOUT: inst23: {kind: TupleLiteral, arg0: inst_block6, type: type(inst22)}
// CHECK:STDOUT: inst24: {kind: Converted, arg0: inst20, arg1: inst14, type: type(TypeType)}
// CHECK:STDOUT: inst25: {kind: Converted, arg0: inst21, arg1: inst14, type: type(TypeType)}
// CHECK:STDOUT: inst26: {kind: Converted, arg0: inst23, arg1: inst22, type: type(TypeType)}
// CHECK:STDOUT: inst27: {kind: ReturnSlotPattern, arg0: inst23, type: type(inst22)}
// CHECK:STDOUT: inst28: {kind: OutParamPattern, arg0: inst27, arg1: call_param1, type: type(inst22)}
// CHECK:STDOUT: inst29: {kind: ValueParam, arg0: call_param0, arg1: name1, type: type(inst14)}
// CHECK:STDOUT: inst30: {kind: SpliceBlock, arg0: inst_block4, arg1: inst16, type: type(TypeType)}
// CHECK:STDOUT: inst31: {kind: OutParam, arg0: call_param1, arg1: name(ReturnSlot), type: type(inst22)}
// CHECK:STDOUT: inst32: {kind: ReturnSlot, arg0: inst23, arg1: inst31, type: type(inst22)}
// CHECK:STDOUT: inst33: {kind: FunctionDecl, arg0: function0, arg1: inst_block9, type: type(inst34)}
// CHECK:STDOUT: inst34: {kind: FunctionType, arg0: function0, arg1: specific<none>, type: type(TypeType)}
// CHECK:STDOUT: inst35: {kind: StructValue, arg0: inst_block_empty, type: type(inst34)}
// CHECK:STDOUT: inst36: {kind: PointerType, arg0: inst22, type: type(TypeType)}
// CHECK:STDOUT: inst37: {kind: NameRef, arg0: name1, arg1: inst17, type: type(inst14)}
// CHECK:STDOUT: inst38: {kind: TupleLiteral, arg0: inst_block_empty, type: type(inst14)}
// CHECK:STDOUT: inst39: {kind: TupleLiteral, arg0: inst_block11, type: type(inst22)}
// CHECK:STDOUT: inst40: {kind: TupleAccess, arg0: inst32, arg1: element0, type: type(inst14)}
// CHECK:STDOUT: inst41: {kind: TupleInit, arg0: inst_block12, arg1: inst40, type: type(inst14)}
// CHECK:STDOUT: inst42: {kind: TupleValue, arg0: inst_block_empty, type: type(inst14)}
// CHECK:STDOUT: inst43: {kind: Converted, arg0: inst37, arg1: inst41, type: type(inst14)}
// CHECK:STDOUT: inst44: {kind: TupleAccess, arg0: inst32, arg1: element1, type: type(inst14)}
// CHECK:STDOUT: inst45: {kind: TupleInit, arg0: inst_block_empty, arg1: inst44, type: type(inst14)}
// CHECK:STDOUT: inst46: {kind: Converted, arg0: inst38, arg1: inst45, type: type(inst14)}
// CHECK:STDOUT: inst47: {kind: TupleInit, arg0: inst_block13, arg1: inst32, type: type(inst22)}
// CHECK:STDOUT: inst48: {kind: TupleValue, arg0: inst_block14, type: type(inst22)}
// CHECK:STDOUT: inst49: {kind: Converted, arg0: inst39, arg1: inst47, type: type(inst22)}
// CHECK:STDOUT: inst50: {kind: ReturnExpr, arg0: inst49, arg1: inst32}
// CHECK:STDOUT: inst14: {kind: Namespace, arg0: name_scope0, arg1: inst<none>, type: type(inst(NamespaceType))}
// CHECK:STDOUT: inst15: {kind: TupleType, arg0: type_block0, type: type(TypeType)}
// CHECK:STDOUT: inst16: {kind: TupleLiteral, arg0: inst_block_empty, type: type(inst15)}
// CHECK:STDOUT: inst17: {kind: Converted, arg0: inst16, arg1: inst15, type: type(TypeType)}
// CHECK:STDOUT: inst18: {kind: BindName, arg0: entity_name0, arg1: inst30, type: type(inst15)}
// CHECK:STDOUT: inst19: {kind: BindingPattern, arg0: entity_name0, type: type(inst15)}
// CHECK:STDOUT: inst20: {kind: ValueParamPattern, arg0: inst19, arg1: call_param0, type: type(inst15)}
// CHECK:STDOUT: inst21: {kind: TupleLiteral, arg0: inst_block_empty, type: type(inst15)}
// CHECK:STDOUT: inst22: {kind: TupleLiteral, arg0: inst_block_empty, type: type(inst15)}
// CHECK:STDOUT: inst23: {kind: TupleType, arg0: type_block1, type: type(TypeType)}
// CHECK:STDOUT: inst24: {kind: TupleLiteral, arg0: inst_block6, type: type(inst23)}
// CHECK:STDOUT: inst25: {kind: Converted, arg0: inst21, arg1: inst15, type: type(TypeType)}
// CHECK:STDOUT: inst26: {kind: Converted, arg0: inst22, arg1: inst15, type: type(TypeType)}
// CHECK:STDOUT: inst27: {kind: Converted, arg0: inst24, arg1: inst23, type: type(TypeType)}
// CHECK:STDOUT: inst28: {kind: ReturnSlotPattern, arg0: inst24, type: type(inst23)}
// CHECK:STDOUT: inst29: {kind: OutParamPattern, arg0: inst28, arg1: call_param1, type: type(inst23)}
// CHECK:STDOUT: inst30: {kind: ValueParam, arg0: call_param0, arg1: name1, type: type(inst15)}
// CHECK:STDOUT: inst31: {kind: SpliceBlock, arg0: inst_block4, arg1: inst17, type: type(TypeType)}
// CHECK:STDOUT: inst32: {kind: OutParam, arg0: call_param1, arg1: name(ReturnSlot), type: type(inst23)}
// CHECK:STDOUT: inst33: {kind: ReturnSlot, arg0: inst24, arg1: inst32, type: type(inst23)}
// CHECK:STDOUT: inst34: {kind: FunctionDecl, arg0: function0, arg1: inst_block9, type: type(inst35)}
// CHECK:STDOUT: inst35: {kind: FunctionType, arg0: function0, arg1: specific<none>, type: type(TypeType)}
// CHECK:STDOUT: inst36: {kind: StructValue, arg0: inst_block_empty, type: type(inst35)}
// CHECK:STDOUT: inst37: {kind: PointerType, arg0: inst23, type: type(TypeType)}
// CHECK:STDOUT: inst38: {kind: NameRef, arg0: name1, arg1: inst18, type: type(inst15)}
// CHECK:STDOUT: inst39: {kind: TupleLiteral, arg0: inst_block_empty, type: type(inst15)}
// CHECK:STDOUT: inst40: {kind: TupleLiteral, arg0: inst_block11, type: type(inst23)}
// CHECK:STDOUT: inst41: {kind: TupleAccess, arg0: inst33, arg1: element0, type: type(inst15)}
// CHECK:STDOUT: inst42: {kind: TupleInit, arg0: inst_block12, arg1: inst41, type: type(inst15)}
// CHECK:STDOUT: inst43: {kind: TupleValue, arg0: inst_block_empty, type: type(inst15)}
// CHECK:STDOUT: inst44: {kind: Converted, arg0: inst38, arg1: inst42, type: type(inst15)}
// CHECK:STDOUT: inst45: {kind: TupleAccess, arg0: inst33, arg1: element1, type: type(inst15)}
// CHECK:STDOUT: inst46: {kind: TupleInit, arg0: inst_block_empty, arg1: inst45, type: type(inst15)}
// CHECK:STDOUT: inst47: {kind: Converted, arg0: inst39, arg1: inst46, type: type(inst15)}
// CHECK:STDOUT: inst48: {kind: TupleInit, arg0: inst_block13, arg1: inst33, type: type(inst23)}
// CHECK:STDOUT: inst49: {kind: TupleValue, arg0: inst_block14, type: type(inst23)}
// CHECK:STDOUT: inst50: {kind: Converted, arg0: inst40, arg1: inst48, type: type(inst23)}
// CHECK:STDOUT: inst51: {kind: ReturnExpr, arg0: inst50, arg1: inst33}
// CHECK:STDOUT: constant_values:
// CHECK:STDOUT: inst13: concrete_constant(inst13)
// CHECK:STDOUT: inst14: concrete_constant(inst14)
// CHECK:STDOUT: inst16: concrete_constant(inst14)
// CHECK:STDOUT: inst22: concrete_constant(inst22)
// CHECK:STDOUT: inst24: concrete_constant(inst14)
// CHECK:STDOUT: inst25: concrete_constant(inst14)
// CHECK:STDOUT: inst26: concrete_constant(inst22)
// CHECK:STDOUT: inst30: concrete_constant(inst14)
// CHECK:STDOUT: inst33: concrete_constant(inst35)
// CHECK:STDOUT: inst34: concrete_constant(inst34)
// CHECK:STDOUT: inst15: concrete_constant(inst15)
// CHECK:STDOUT: inst17: concrete_constant(inst15)
// CHECK:STDOUT: inst23: concrete_constant(inst23)
// CHECK:STDOUT: inst25: concrete_constant(inst15)
// CHECK:STDOUT: inst26: concrete_constant(inst15)
// CHECK:STDOUT: inst27: concrete_constant(inst23)
// CHECK:STDOUT: inst31: concrete_constant(inst15)
// CHECK:STDOUT: inst34: concrete_constant(inst36)
// CHECK:STDOUT: inst35: concrete_constant(inst35)
// CHECK:STDOUT: inst36: concrete_constant(inst36)
// CHECK:STDOUT: inst41: concrete_constant(inst42)
// CHECK:STDOUT: inst42: concrete_constant(inst42)
// CHECK:STDOUT: inst43: concrete_constant(inst42)
// CHECK:STDOUT: inst45: concrete_constant(inst42)
// CHECK:STDOUT: inst46: concrete_constant(inst42)
// CHECK:STDOUT: inst47: concrete_constant(inst48)
// CHECK:STDOUT: inst48: concrete_constant(inst48)
// CHECK:STDOUT: inst49: concrete_constant(inst48)
// CHECK:STDOUT: inst37: concrete_constant(inst37)
// CHECK:STDOUT: inst42: concrete_constant(inst43)
// CHECK:STDOUT: inst43: concrete_constant(inst43)
// CHECK:STDOUT: inst44: concrete_constant(inst43)
// CHECK:STDOUT: inst46: concrete_constant(inst43)
// CHECK:STDOUT: inst47: concrete_constant(inst43)
// CHECK:STDOUT: inst48: concrete_constant(inst49)
// CHECK:STDOUT: inst49: concrete_constant(inst49)
// CHECK:STDOUT: inst50: concrete_constant(inst49)
// CHECK:STDOUT: symbolic_constants: {}
// CHECK:STDOUT: inst_blocks:
// CHECK:STDOUT: inst_block_empty: {}
// CHECK:STDOUT: exports:
// CHECK:STDOUT: 0: inst33
// CHECK:STDOUT: 0: inst34
// CHECK:STDOUT: import_refs: {}
// CHECK:STDOUT: global_init: {}
// CHECK:STDOUT: inst_block4:
// CHECK:STDOUT: 0: inst15
// CHECK:STDOUT: 1: inst16
// CHECK:STDOUT: 0: inst16
// CHECK:STDOUT: 1: inst17
// CHECK:STDOUT: inst_block5:
// CHECK:STDOUT: 0: inst19
// CHECK:STDOUT: 0: inst20
// CHECK:STDOUT: inst_block6:
// CHECK:STDOUT: 0: inst20
// CHECK:STDOUT: 1: inst21
// CHECK:STDOUT: 0: inst21
// CHECK:STDOUT: 1: inst22
// CHECK:STDOUT: inst_block7:
// CHECK:STDOUT: 0: inst29
// CHECK:STDOUT: 1: inst31
// CHECK:STDOUT: 0: inst30
// CHECK:STDOUT: 1: inst32
// CHECK:STDOUT: inst_block8:
// CHECK:STDOUT: 0: inst18
// CHECK:STDOUT: 1: inst19
// CHECK:STDOUT: 2: inst27
// CHECK:STDOUT: 3: inst28
// CHECK:STDOUT: 0: inst19
// CHECK:STDOUT: 1: inst20
// CHECK:STDOUT: 2: inst28
// CHECK:STDOUT: 3: inst29
// CHECK:STDOUT: inst_block9:
// CHECK:STDOUT: 0: inst20
// CHECK:STDOUT: 1: inst21
// CHECK:STDOUT: 2: inst23
// CHECK:STDOUT: 3: inst24
// CHECK:STDOUT: 4: inst25
// CHECK:STDOUT: 5: inst26
// CHECK:STDOUT: 6: inst29
// CHECK:STDOUT: 7: inst30
// CHECK:STDOUT: 8: inst17
// CHECK:STDOUT: 9: inst31
// CHECK:STDOUT: 10: inst32
// CHECK:STDOUT: 0: inst21
// CHECK:STDOUT: 1: inst22
// CHECK:STDOUT: 2: inst24
// CHECK:STDOUT: 3: inst25
// CHECK:STDOUT: 4: inst26
// CHECK:STDOUT: 5: inst27
// CHECK:STDOUT: 6: inst30
// CHECK:STDOUT: 7: inst31
// CHECK:STDOUT: 8: inst18
// CHECK:STDOUT: 9: inst32
// CHECK:STDOUT: 10: inst33
// CHECK:STDOUT: inst_block10:
// CHECK:STDOUT: 0: inst37
// CHECK:STDOUT: 1: inst38
// CHECK:STDOUT: 2: inst39
// CHECK:STDOUT: 3: inst40
// CHECK:STDOUT: 4: inst41
// CHECK:STDOUT: 5: inst43
// CHECK:STDOUT: 6: inst44
// CHECK:STDOUT: 7: inst45
// CHECK:STDOUT: 8: inst46
// CHECK:STDOUT: 9: inst47
// CHECK:STDOUT: 10: inst49
// CHECK:STDOUT: 11: inst50
// CHECK:STDOUT: 0: inst38
// CHECK:STDOUT: 1: inst39
// CHECK:STDOUT: 2: inst40
// CHECK:STDOUT: 3: inst41
// CHECK:STDOUT: 4: inst42
// CHECK:STDOUT: 5: inst44
// CHECK:STDOUT: 6: inst45
// CHECK:STDOUT: 7: inst46
// CHECK:STDOUT: 8: inst47
// CHECK:STDOUT: 9: inst48
// CHECK:STDOUT: 10: inst50
// CHECK:STDOUT: 11: inst51
// CHECK:STDOUT: inst_block11:
// CHECK:STDOUT: 0: inst37
// CHECK:STDOUT: 1: inst38
// CHECK:STDOUT: 0: inst38
// CHECK:STDOUT: 1: inst39
// CHECK:STDOUT: inst_block12: {}
// CHECK:STDOUT: inst_block13:
// CHECK:STDOUT: 0: inst43
// CHECK:STDOUT: 1: inst46
// CHECK:STDOUT: 0: inst44
// CHECK:STDOUT: 1: inst47
// CHECK:STDOUT: inst_block14:
// CHECK:STDOUT: 0: inst42
// CHECK:STDOUT: 1: inst42
// CHECK:STDOUT: 0: inst43
// CHECK:STDOUT: 1: inst43
// CHECK:STDOUT: inst_block15:
// CHECK:STDOUT: 0: inst13
// CHECK:STDOUT: 1: inst33
// CHECK:STDOUT: 0: inst14
// CHECK:STDOUT: 1: inst34
// CHECK:STDOUT: ...
// CHECK:STDOUT:
// CHECK:STDOUT: --- raw_and_textual_ir.carbon
+147 -147
View File
@@ -23,15 +23,15 @@ fn Foo[T:! type](n: T) -> (T, ()) {
// CHECK:STDOUT: ir0: {decl_id: inst<none>, is_export: false}
// CHECK:STDOUT: import_ir_insts: {}
// CHECK:STDOUT: name_scopes:
// CHECK:STDOUT: name_scope0: {inst: inst13, parent_scope: name_scope<none>, has_error: false, extended_scopes: [], names: {name0: inst35}}
// CHECK:STDOUT: name_scope0: {inst: inst14, parent_scope: name_scope<none>, has_error: false, extended_scopes: [], names: {name0: inst36}}
// CHECK:STDOUT: entity_names:
// CHECK:STDOUT: entity_name0: {name: name1, parent_scope: name_scope<none>, index: 0, is_template: 0}
// CHECK:STDOUT: entity_name1: {name: name2, parent_scope: name_scope<none>, index: -1, is_template: 0}
// CHECK:STDOUT: functions:
// CHECK:STDOUT: function0: {name: name0, parent_scope: name_scope0, call_params_id: inst_block9, return_slot_pattern: inst31, body: [inst_block16]}
// CHECK:STDOUT: function0: {name: name0, parent_scope: name_scope0, call_params_id: inst_block9, return_slot_pattern: inst32, body: [inst_block16]}
// CHECK:STDOUT: classes: {}
// CHECK:STDOUT: generics:
// CHECK:STDOUT: generic0: {decl: inst35, bindings: inst_block12}
// CHECK:STDOUT: generic0: {decl: inst36, bindings: inst_block12}
// CHECK:STDOUT: specifics:
// CHECK:STDOUT: specific0: {generic: generic0, args: inst_block13}
// CHECK:STDOUT: struct_type_fields:
@@ -43,10 +43,10 @@ fn Foo[T:! type](n: T) -> (T, ()) {
// CHECK:STDOUT: value_repr: {kind: copy, type: type(Error)}
// CHECK:STDOUT: 'type(inst(NamespaceType))':
// CHECK:STDOUT: value_repr: {kind: copy, type: type(inst(NamespaceType))}
// CHECK:STDOUT: 'type(inst39)':
// CHECK:STDOUT: value_repr: {kind: none, type: type(inst23)}
// CHECK:STDOUT: 'type(inst23)':
// CHECK:STDOUT: value_repr: {kind: none, type: type(inst23)}
// CHECK:STDOUT: 'type(inst40)':
// CHECK:STDOUT: value_repr: {kind: none, type: type(inst24)}
// CHECK:STDOUT: 'type(inst24)':
// CHECK:STDOUT: value_repr: {kind: none, type: type(inst24)}
// CHECK:STDOUT: 'type(symbolic_constant0)':
// CHECK:STDOUT: value_repr: {kind: copy, type: type(symbolic_constant0)}
// CHECK:STDOUT: 'type(symbolic_constant2)':
@@ -63,177 +63,177 @@ fn Foo[T:! type](n: T) -> (T, ()) {
// CHECK:STDOUT: type_block0: {}
// CHECK:STDOUT: type_block1:
// CHECK:STDOUT: 0: type(TypeType)
// CHECK:STDOUT: 1: type(inst23)
// CHECK:STDOUT: 1: type(inst24)
// CHECK:STDOUT: type_block2:
// CHECK:STDOUT: 0: type(symbolic_constant0)
// CHECK:STDOUT: 1: type(inst23)
// CHECK:STDOUT: 1: type(inst24)
// CHECK:STDOUT: type_block3:
// CHECK:STDOUT: 0: type(symbolic_constant3)
// CHECK:STDOUT: 1: type(inst23)
// CHECK:STDOUT: 1: type(inst24)
// CHECK:STDOUT: insts:
// CHECK:STDOUT: inst13: {kind: Namespace, arg0: name_scope0, arg1: inst<none>, type: type(inst(NamespaceType))}
// CHECK:STDOUT: inst14: {kind: BindSymbolicName, arg0: entity_name0, arg1: inst<none>, type: type(TypeType)}
// CHECK:STDOUT: inst14: {kind: Namespace, arg0: name_scope0, arg1: inst<none>, type: type(inst(NamespaceType))}
// CHECK:STDOUT: inst15: {kind: BindSymbolicName, arg0: entity_name0, arg1: inst<none>, type: type(TypeType)}
// CHECK:STDOUT: inst16: {kind: SymbolicBindingPattern, arg0: entity_name0, type: type(TypeType)}
// CHECK:STDOUT: inst16: {kind: BindSymbolicName, arg0: entity_name0, arg1: inst<none>, type: type(TypeType)}
// CHECK:STDOUT: inst17: {kind: SymbolicBindingPattern, arg0: entity_name0, type: type(TypeType)}
// CHECK:STDOUT: inst18: {kind: NameRef, arg0: name1, arg1: inst14, type: type(TypeType)}
// CHECK:STDOUT: inst19: {kind: BindName, arg0: entity_name1, arg1: inst32, type: type(symbolic_constant3)}
// CHECK:STDOUT: inst20: {kind: BindingPattern, arg0: entity_name1, type: type(symbolic_constant3)}
// CHECK:STDOUT: inst21: {kind: ValueParamPattern, arg0: inst20, arg1: call_param0, type: type(symbolic_constant3)}
// CHECK:STDOUT: inst22: {kind: NameRef, arg0: name1, arg1: inst14, type: type(TypeType)}
// CHECK:STDOUT: inst23: {kind: TupleType, arg0: type_block0, type: type(TypeType)}
// CHECK:STDOUT: inst24: {kind: TupleLiteral, arg0: inst_block_empty, type: type(inst23)}
// CHECK:STDOUT: inst25: {kind: TupleType, arg0: type_block1, type: type(TypeType)}
// CHECK:STDOUT: inst26: {kind: TupleLiteral, arg0: inst_block8, type: type(inst25)}
// CHECK:STDOUT: inst27: {kind: Converted, arg0: inst24, arg1: inst23, type: type(TypeType)}
// CHECK:STDOUT: inst28: {kind: TupleType, arg0: type_block2, type: type(TypeType)}
// CHECK:STDOUT: inst29: {kind: Converted, arg0: inst26, arg1: inst28, type: type(TypeType)}
// CHECK:STDOUT: inst30: {kind: ReturnSlotPattern, arg0: inst26, type: type(symbolic_constant5)}
// CHECK:STDOUT: inst31: {kind: OutParamPattern, arg0: inst30, arg1: call_param1, type: type(symbolic_constant5)}
// CHECK:STDOUT: inst32: {kind: ValueParam, arg0: call_param0, arg1: name2, type: type(symbolic_constant3)}
// CHECK:STDOUT: inst33: {kind: OutParam, arg0: call_param1, arg1: name(ReturnSlot), type: type(symbolic_constant5)}
// CHECK:STDOUT: inst34: {kind: ReturnSlot, arg0: inst26, arg1: inst33, type: type(symbolic_constant5)}
// CHECK:STDOUT: inst35: {kind: FunctionDecl, arg0: function0, arg1: inst_block11, type: type(inst39)}
// CHECK:STDOUT: inst36: {kind: BindSymbolicName, arg0: entity_name0, arg1: inst<none>, type: type(TypeType)}
// CHECK:STDOUT: inst37: {kind: SymbolicBindingPattern, arg0: entity_name0, type: type(TypeType)}
// CHECK:STDOUT: inst38: {kind: TupleType, arg0: type_block3, type: type(TypeType)}
// CHECK:STDOUT: inst39: {kind: FunctionType, arg0: function0, arg1: specific<none>, type: type(TypeType)}
// CHECK:STDOUT: inst40: {kind: StructValue, arg0: inst_block_empty, type: type(inst39)}
// CHECK:STDOUT: inst41: {kind: PointerType, arg0: inst28, type: type(TypeType)}
// CHECK:STDOUT: inst42: {kind: RequireCompleteType, arg0: type(symbolic_constant2), type: type(inst(WitnessType))}
// CHECK:STDOUT: inst18: {kind: SymbolicBindingPattern, arg0: entity_name0, type: type(TypeType)}
// CHECK:STDOUT: inst19: {kind: NameRef, arg0: name1, arg1: inst15, type: type(TypeType)}
// CHECK:STDOUT: inst20: {kind: BindName, arg0: entity_name1, arg1: inst33, type: type(symbolic_constant3)}
// CHECK:STDOUT: inst21: {kind: BindingPattern, arg0: entity_name1, type: type(symbolic_constant3)}
// CHECK:STDOUT: inst22: {kind: ValueParamPattern, arg0: inst21, arg1: call_param0, type: type(symbolic_constant3)}
// CHECK:STDOUT: inst23: {kind: NameRef, arg0: name1, arg1: inst15, type: type(TypeType)}
// CHECK:STDOUT: inst24: {kind: TupleType, arg0: type_block0, type: type(TypeType)}
// CHECK:STDOUT: inst25: {kind: TupleLiteral, arg0: inst_block_empty, type: type(inst24)}
// CHECK:STDOUT: inst26: {kind: TupleType, arg0: type_block1, type: type(TypeType)}
// CHECK:STDOUT: inst27: {kind: TupleLiteral, arg0: inst_block8, type: type(inst26)}
// CHECK:STDOUT: inst28: {kind: Converted, arg0: inst25, arg1: inst24, type: type(TypeType)}
// CHECK:STDOUT: inst29: {kind: TupleType, arg0: type_block2, type: type(TypeType)}
// CHECK:STDOUT: inst30: {kind: Converted, arg0: inst27, arg1: inst29, type: type(TypeType)}
// CHECK:STDOUT: inst31: {kind: ReturnSlotPattern, arg0: inst27, type: type(symbolic_constant5)}
// CHECK:STDOUT: inst32: {kind: OutParamPattern, arg0: inst31, arg1: call_param1, type: type(symbolic_constant5)}
// CHECK:STDOUT: inst33: {kind: ValueParam, arg0: call_param0, arg1: name2, type: type(symbolic_constant3)}
// CHECK:STDOUT: inst34: {kind: OutParam, arg0: call_param1, arg1: name(ReturnSlot), type: type(symbolic_constant5)}
// CHECK:STDOUT: inst35: {kind: ReturnSlot, arg0: inst27, arg1: inst34, type: type(symbolic_constant5)}
// CHECK:STDOUT: inst36: {kind: FunctionDecl, arg0: function0, arg1: inst_block11, type: type(inst40)}
// CHECK:STDOUT: inst37: {kind: BindSymbolicName, arg0: entity_name0, arg1: inst<none>, type: type(TypeType)}
// CHECK:STDOUT: inst38: {kind: SymbolicBindingPattern, arg0: entity_name0, type: type(TypeType)}
// CHECK:STDOUT: inst39: {kind: TupleType, arg0: type_block3, type: type(TypeType)}
// CHECK:STDOUT: inst40: {kind: FunctionType, arg0: function0, arg1: specific<none>, type: type(TypeType)}
// CHECK:STDOUT: inst41: {kind: StructValue, arg0: inst_block_empty, type: type(inst40)}
// CHECK:STDOUT: inst42: {kind: PointerType, arg0: inst29, type: type(TypeType)}
// CHECK:STDOUT: inst43: {kind: RequireCompleteType, arg0: type(symbolic_constant2), type: type(inst(WitnessType))}
// CHECK:STDOUT: inst44: {kind: RequireCompleteType, arg0: type(symbolic_constant3), type: type(inst(WitnessType))}
// CHECK:STDOUT: inst45: {kind: RequireCompleteType, arg0: type(symbolic_constant0), type: type(inst(WitnessType))}
// CHECK:STDOUT: inst46: {kind: NameRef, arg0: name2, arg1: inst19, type: type(symbolic_constant3)}
// CHECK:STDOUT: inst47: {kind: TupleLiteral, arg0: inst_block_empty, type: type(inst23)}
// CHECK:STDOUT: inst48: {kind: TupleLiteral, arg0: inst_block17, type: type(symbolic_constant5)}
// CHECK:STDOUT: inst49: {kind: RequireCompleteType, arg0: type(symbolic_constant5), type: type(inst(WitnessType))}
// CHECK:STDOUT: inst50: {kind: TupleAccess, arg0: inst34, arg1: element0, type: type(symbolic_constant3)}
// CHECK:STDOUT: inst51: {kind: RequireCompleteType, arg0: type(symbolic_constant0), type: type(inst(WitnessType))}
// CHECK:STDOUT: inst52: {kind: InitializeFrom, arg0: inst46, arg1: inst50, type: type(symbolic_constant3)}
// CHECK:STDOUT: inst53: {kind: TupleAccess, arg0: inst34, arg1: element1, type: type(inst23)}
// CHECK:STDOUT: inst54: {kind: TupleInit, arg0: inst_block_empty, arg1: inst53, type: type(inst23)}
// CHECK:STDOUT: inst55: {kind: TupleValue, arg0: inst_block_empty, type: type(inst23)}
// CHECK:STDOUT: inst56: {kind: Converted, arg0: inst47, arg1: inst54, type: type(inst23)}
// CHECK:STDOUT: inst57: {kind: TupleInit, arg0: inst_block18, arg1: inst34, type: type(symbolic_constant5)}
// CHECK:STDOUT: inst58: {kind: Converted, arg0: inst48, arg1: inst57, type: type(symbolic_constant5)}
// CHECK:STDOUT: inst59: {kind: ReturnExpr, arg0: inst58, arg1: inst34}
// CHECK:STDOUT: inst60: {kind: RequireCompleteType, arg0: type(symbolic_constant5), type: type(inst(WitnessType))}
// CHECK:STDOUT: inst61: {kind: RequireCompleteType, arg0: type(symbolic_constant3), type: type(inst(WitnessType))}
// CHECK:STDOUT: inst44: {kind: RequireCompleteType, arg0: type(symbolic_constant2), type: type(inst(WitnessType))}
// CHECK:STDOUT: inst45: {kind: RequireCompleteType, arg0: type(symbolic_constant3), type: type(inst(WitnessType))}
// CHECK:STDOUT: inst46: {kind: RequireCompleteType, arg0: type(symbolic_constant0), type: type(inst(WitnessType))}
// CHECK:STDOUT: inst47: {kind: NameRef, arg0: name2, arg1: inst20, type: type(symbolic_constant3)}
// CHECK:STDOUT: inst48: {kind: TupleLiteral, arg0: inst_block_empty, type: type(inst24)}
// CHECK:STDOUT: inst49: {kind: TupleLiteral, arg0: inst_block17, type: type(symbolic_constant5)}
// CHECK:STDOUT: inst50: {kind: RequireCompleteType, arg0: type(symbolic_constant5), type: type(inst(WitnessType))}
// CHECK:STDOUT: inst51: {kind: TupleAccess, arg0: inst35, arg1: element0, type: type(symbolic_constant3)}
// CHECK:STDOUT: inst52: {kind: RequireCompleteType, arg0: type(symbolic_constant0), type: type(inst(WitnessType))}
// CHECK:STDOUT: inst53: {kind: InitializeFrom, arg0: inst47, arg1: inst51, type: type(symbolic_constant3)}
// CHECK:STDOUT: inst54: {kind: TupleAccess, arg0: inst35, arg1: element1, type: type(inst24)}
// CHECK:STDOUT: inst55: {kind: TupleInit, arg0: inst_block_empty, arg1: inst54, type: type(inst24)}
// CHECK:STDOUT: inst56: {kind: TupleValue, arg0: inst_block_empty, type: type(inst24)}
// CHECK:STDOUT: inst57: {kind: Converted, arg0: inst48, arg1: inst55, type: type(inst24)}
// CHECK:STDOUT: inst58: {kind: TupleInit, arg0: inst_block18, arg1: inst35, type: type(symbolic_constant5)}
// CHECK:STDOUT: inst59: {kind: Converted, arg0: inst49, arg1: inst58, type: type(symbolic_constant5)}
// CHECK:STDOUT: inst60: {kind: ReturnExpr, arg0: inst59, arg1: inst35}
// CHECK:STDOUT: inst61: {kind: RequireCompleteType, arg0: type(symbolic_constant5), type: type(inst(WitnessType))}
// CHECK:STDOUT: inst62: {kind: RequireCompleteType, arg0: type(symbolic_constant3), type: type(inst(WitnessType))}
// CHECK:STDOUT: constant_values:
// CHECK:STDOUT: inst13: concrete_constant(inst13)
// CHECK:STDOUT: inst14: symbolic_constant3
// CHECK:STDOUT: inst15: symbolic_constant0
// CHECK:STDOUT: inst16: symbolic_constant4
// CHECK:STDOUT: inst17: symbolic_constant1
// CHECK:STDOUT: inst18: symbolic_constant3
// CHECK:STDOUT: inst22: symbolic_constant3
// CHECK:STDOUT: inst23: concrete_constant(inst23)
// CHECK:STDOUT: inst25: concrete_constant(inst25)
// CHECK:STDOUT: inst27: concrete_constant(inst23)
// CHECK:STDOUT: inst28: symbolic_constant2
// CHECK:STDOUT: inst29: symbolic_constant5
// CHECK:STDOUT: inst35: concrete_constant(inst40)
// CHECK:STDOUT: inst36: symbolic_constant3
// CHECK:STDOUT: inst37: symbolic_constant4
// CHECK:STDOUT: inst38: symbolic_constant5
// CHECK:STDOUT: inst39: concrete_constant(inst39)
// CHECK:STDOUT: inst14: concrete_constant(inst14)
// CHECK:STDOUT: inst15: symbolic_constant3
// CHECK:STDOUT: inst16: symbolic_constant0
// CHECK:STDOUT: inst17: symbolic_constant4
// CHECK:STDOUT: inst18: symbolic_constant1
// CHECK:STDOUT: inst19: symbolic_constant3
// CHECK:STDOUT: inst23: symbolic_constant3
// CHECK:STDOUT: inst24: concrete_constant(inst24)
// CHECK:STDOUT: inst26: concrete_constant(inst26)
// CHECK:STDOUT: inst28: concrete_constant(inst24)
// CHECK:STDOUT: inst29: symbolic_constant2
// CHECK:STDOUT: inst30: symbolic_constant5
// CHECK:STDOUT: inst36: concrete_constant(inst41)
// CHECK:STDOUT: inst37: symbolic_constant3
// CHECK:STDOUT: inst38: symbolic_constant4
// CHECK:STDOUT: inst39: symbolic_constant5
// CHECK:STDOUT: inst40: concrete_constant(inst40)
// CHECK:STDOUT: inst41: symbolic_constant6
// CHECK:STDOUT: inst42: symbolic_constant9
// CHECK:STDOUT: inst43: symbolic_constant7
// CHECK:STDOUT: inst44: symbolic_constant10
// CHECK:STDOUT: inst45: symbolic_constant8
// CHECK:STDOUT: inst49: symbolic_constant9
// CHECK:STDOUT: inst51: symbolic_constant10
// CHECK:STDOUT: inst54: concrete_constant(inst55)
// CHECK:STDOUT: inst55: concrete_constant(inst55)
// CHECK:STDOUT: inst56: concrete_constant(inst55)
// CHECK:STDOUT: inst60: symbolic_constant9
// CHECK:STDOUT: inst61: symbolic_constant10
// CHECK:STDOUT: inst41: concrete_constant(inst41)
// CHECK:STDOUT: inst42: symbolic_constant6
// CHECK:STDOUT: inst43: symbolic_constant9
// CHECK:STDOUT: inst44: symbolic_constant7
// CHECK:STDOUT: inst45: symbolic_constant10
// CHECK:STDOUT: inst46: symbolic_constant8
// CHECK:STDOUT: inst50: symbolic_constant9
// CHECK:STDOUT: inst52: symbolic_constant10
// CHECK:STDOUT: inst55: concrete_constant(inst56)
// CHECK:STDOUT: inst56: concrete_constant(inst56)
// CHECK:STDOUT: inst57: concrete_constant(inst56)
// CHECK:STDOUT: inst61: symbolic_constant9
// CHECK:STDOUT: inst62: symbolic_constant10
// CHECK:STDOUT: symbolic_constants:
// CHECK:STDOUT: symbolic_constant0: {inst: inst15, generic: generic<none>, index: generic_inst<none>, kind: checked}
// CHECK:STDOUT: symbolic_constant1: {inst: inst17, generic: generic<none>, index: generic_inst<none>, kind: checked}
// CHECK:STDOUT: symbolic_constant2: {inst: inst28, generic: generic<none>, index: generic_inst<none>, kind: checked}
// CHECK:STDOUT: symbolic_constant3: {inst: inst15, generic: generic0, index: generic_inst_in_decl0, kind: checked}
// CHECK:STDOUT: symbolic_constant4: {inst: inst17, generic: generic0, index: generic_inst_in_decl1, kind: checked}
// CHECK:STDOUT: symbolic_constant5: {inst: inst28, generic: generic0, index: generic_inst_in_decl2, kind: checked}
// CHECK:STDOUT: symbolic_constant6: {inst: inst41, generic: generic<none>, index: generic_inst<none>, kind: checked}
// CHECK:STDOUT: symbolic_constant7: {inst: inst43, generic: generic<none>, index: generic_inst<none>, kind: checked}
// CHECK:STDOUT: symbolic_constant8: {inst: inst45, generic: generic<none>, index: generic_inst<none>, kind: checked}
// CHECK:STDOUT: symbolic_constant9: {inst: inst43, generic: generic0, index: generic_inst_in_def0, kind: checked}
// CHECK:STDOUT: symbolic_constant10: {inst: inst45, generic: generic0, index: generic_inst_in_def1, kind: checked}
// CHECK:STDOUT: symbolic_constant0: {inst: inst16, generic: generic<none>, index: generic_inst<none>, kind: checked}
// CHECK:STDOUT: symbolic_constant1: {inst: inst18, generic: generic<none>, index: generic_inst<none>, kind: checked}
// CHECK:STDOUT: symbolic_constant2: {inst: inst29, generic: generic<none>, index: generic_inst<none>, kind: checked}
// CHECK:STDOUT: symbolic_constant3: {inst: inst16, generic: generic0, index: generic_inst_in_decl0, kind: checked}
// CHECK:STDOUT: symbolic_constant4: {inst: inst18, generic: generic0, index: generic_inst_in_decl1, kind: checked}
// CHECK:STDOUT: symbolic_constant5: {inst: inst29, generic: generic0, index: generic_inst_in_decl2, kind: checked}
// CHECK:STDOUT: symbolic_constant6: {inst: inst42, generic: generic<none>, index: generic_inst<none>, kind: checked}
// CHECK:STDOUT: symbolic_constant7: {inst: inst44, generic: generic<none>, index: generic_inst<none>, kind: checked}
// CHECK:STDOUT: symbolic_constant8: {inst: inst46, generic: generic<none>, index: generic_inst<none>, kind: checked}
// CHECK:STDOUT: symbolic_constant9: {inst: inst44, generic: generic0, index: generic_inst_in_def0, kind: checked}
// CHECK:STDOUT: symbolic_constant10: {inst: inst46, generic: generic0, index: generic_inst_in_def1, kind: checked}
// CHECK:STDOUT: inst_blocks:
// CHECK:STDOUT: inst_block_empty: {}
// CHECK:STDOUT: exports:
// CHECK:STDOUT: 0: inst35
// CHECK:STDOUT: 0: inst36
// CHECK:STDOUT: import_refs: {}
// CHECK:STDOUT: global_init: {}
// CHECK:STDOUT: inst_block4: {}
// CHECK:STDOUT: inst_block5:
// CHECK:STDOUT: 0: inst16
// CHECK:STDOUT: 0: inst17
// CHECK:STDOUT: inst_block6:
// CHECK:STDOUT: 0: inst18
// CHECK:STDOUT: 0: inst19
// CHECK:STDOUT: inst_block7:
// CHECK:STDOUT: 0: inst21
// CHECK:STDOUT: 0: inst22
// CHECK:STDOUT: inst_block8:
// CHECK:STDOUT: 0: inst22
// CHECK:STDOUT: 1: inst24
// CHECK:STDOUT: 0: inst23
// CHECK:STDOUT: 1: inst25
// CHECK:STDOUT: inst_block9:
// CHECK:STDOUT: 0: inst32
// CHECK:STDOUT: 1: inst33
// CHECK:STDOUT: 0: inst33
// CHECK:STDOUT: 1: inst34
// CHECK:STDOUT: inst_block10:
// CHECK:STDOUT: 0: inst16
// CHECK:STDOUT: 1: inst20
// CHECK:STDOUT: 2: inst21
// CHECK:STDOUT: 3: inst30
// CHECK:STDOUT: 4: inst31
// CHECK:STDOUT: 0: inst17
// CHECK:STDOUT: 1: inst21
// CHECK:STDOUT: 2: inst22
// CHECK:STDOUT: 3: inst31
// CHECK:STDOUT: 4: inst32
// CHECK:STDOUT: inst_block11:
// CHECK:STDOUT: 0: inst22
// CHECK:STDOUT: 1: inst24
// CHECK:STDOUT: 2: inst26
// CHECK:STDOUT: 3: inst27
// CHECK:STDOUT: 4: inst29
// CHECK:STDOUT: 5: inst14
// CHECK:STDOUT: 6: inst32
// CHECK:STDOUT: 7: inst18
// CHECK:STDOUT: 8: inst19
// CHECK:STDOUT: 9: inst33
// CHECK:STDOUT: 10: inst34
// CHECK:STDOUT: 0: inst23
// CHECK:STDOUT: 1: inst25
// CHECK:STDOUT: 2: inst27
// CHECK:STDOUT: 3: inst28
// CHECK:STDOUT: 4: inst30
// CHECK:STDOUT: 5: inst15
// CHECK:STDOUT: 6: inst33
// CHECK:STDOUT: 7: inst19
// CHECK:STDOUT: 8: inst20
// CHECK:STDOUT: 9: inst34
// CHECK:STDOUT: 10: inst35
// CHECK:STDOUT: inst_block12:
// CHECK:STDOUT: 0: inst14
// CHECK:STDOUT: 0: inst15
// CHECK:STDOUT: inst_block13:
// CHECK:STDOUT: 0: inst15
// CHECK:STDOUT: 0: inst16
// CHECK:STDOUT: inst_block14:
// CHECK:STDOUT: 0: inst36
// CHECK:STDOUT: 1: inst37
// CHECK:STDOUT: 2: inst38
// CHECK:STDOUT: 0: inst37
// CHECK:STDOUT: 1: inst38
// CHECK:STDOUT: 2: inst39
// CHECK:STDOUT: inst_block15:
// CHECK:STDOUT: 0: inst15
// CHECK:STDOUT: 1: inst17
// CHECK:STDOUT: 2: inst28
// CHECK:STDOUT: 0: inst16
// CHECK:STDOUT: 1: inst18
// CHECK:STDOUT: 2: inst29
// CHECK:STDOUT: inst_block16:
// CHECK:STDOUT: 0: inst46
// CHECK:STDOUT: 1: inst47
// CHECK:STDOUT: 2: inst48
// CHECK:STDOUT: 3: inst50
// CHECK:STDOUT: 4: inst52
// CHECK:STDOUT: 5: inst53
// CHECK:STDOUT: 6: inst54
// CHECK:STDOUT: 7: inst56
// CHECK:STDOUT: 8: inst57
// CHECK:STDOUT: 9: inst58
// CHECK:STDOUT: 10: inst59
// CHECK:STDOUT: 0: inst47
// CHECK:STDOUT: 1: inst48
// CHECK:STDOUT: 2: inst49
// CHECK:STDOUT: 3: inst51
// CHECK:STDOUT: 4: inst53
// CHECK:STDOUT: 5: inst54
// CHECK:STDOUT: 6: inst55
// CHECK:STDOUT: 7: inst57
// CHECK:STDOUT: 8: inst58
// CHECK:STDOUT: 9: inst59
// CHECK:STDOUT: 10: inst60
// CHECK:STDOUT: inst_block17:
// CHECK:STDOUT: 0: inst46
// CHECK:STDOUT: 1: inst47
// CHECK:STDOUT: 0: inst47
// CHECK:STDOUT: 1: inst48
// CHECK:STDOUT: inst_block18:
// CHECK:STDOUT: 0: inst52
// CHECK:STDOUT: 1: inst56
// CHECK:STDOUT: 0: inst53
// CHECK:STDOUT: 1: inst57
// CHECK:STDOUT: inst_block19:
// CHECK:STDOUT: 0: inst60
// CHECK:STDOUT: 1: inst61
// CHECK:STDOUT: 0: inst61
// CHECK:STDOUT: 1: inst62
// CHECK:STDOUT: inst_block20:
// CHECK:STDOUT: 0: inst13
// CHECK:STDOUT: 1: inst35
// CHECK:STDOUT: 0: inst14
// CHECK:STDOUT: 1: inst36
// CHECK:STDOUT: ...
+6
View File
@@ -565,6 +565,12 @@ static auto BuildTypeForInst(FileContext& context, SemIR::ConstType inst)
context.sem_ir().types().GetTypeIdForTypeInstId(inst.inner_id));
}
static auto BuildTypeForInst(FileContext& context,
SemIR::ImplWitnessAssociatedConstant inst)
-> llvm::Type* {
return context.GetType(inst.type_id);
}
static auto BuildTypeForInst(FileContext& /*context*/,
SemIR::ErrorInst /*inst*/) -> llvm::Type* {
// This is a complete type but uses of it should never be lowered.
+6
View File
@@ -78,6 +78,11 @@ auto GetExprCategory(const File& file, InstId inst_id) -> ExprCategory {
continue;
}
case CARBON_KIND(ImplWitnessAssociatedConstant inst): {
inst_id = inst.inst_id;
continue;
}
case CARBON_KIND(SpecificConstant inst): {
inst_id = inst.inst_id;
continue;
@@ -116,6 +121,7 @@ auto GetExprCategory(const File& file, InstId inst_id) -> ExprCategory {
case LookupImplWitness::Kind:
case ImplWitness::Kind:
case ImplWitnessAccess::Kind:
case ImplWitnessTablePlaceholder::Kind:
case ImportCppDecl::Kind:
case ImportDecl::Kind:
case InstType::Kind:
+2
View File
@@ -74,6 +74,8 @@ CARBON_SEM_IR_INST_KIND(ImplDecl)
CARBON_SEM_IR_INST_KIND(LookupImplWitness)
CARBON_SEM_IR_INST_KIND(ImplWitness)
CARBON_SEM_IR_INST_KIND(ImplWitnessAccess)
CARBON_SEM_IR_INST_KIND(ImplWitnessAssociatedConstant)
CARBON_SEM_IR_INST_KIND(ImplWitnessTablePlaceholder)
CARBON_SEM_IR_INST_KIND(ImportCppDecl)
CARBON_SEM_IR_INST_KIND(ImportDecl)
CARBON_SEM_IR_INST_KIND(ImportRefLoaded)
+4
View File
@@ -701,6 +701,10 @@ auto InstNamer::CollectNamesInBlock(ScopeId top_scope_id,
add_inst_name(out.TakeStr());
continue;
}
case ImplWitnessAssociatedConstant::Kind: {
add_inst_name("impl_witness_assoc_constant");
continue;
}
case ImportCppDecl::Kind: {
add_inst_name("Cpp.import_cpp");
continue;
+13 -6
View File
@@ -13,12 +13,19 @@ namespace Carbon::SemIR {
// The canonical list of singleton kinds. The order of `TypeType` is
// significant because other singletons use it as a type.
static constexpr std::array SingletonInstKinds = {
InstKind::TypeType, InstKind::AutoType,
InstKind::BoolType, InstKind::BoundMethodType,
InstKind::ErrorInst, InstKind::InstType,
InstKind::IntLiteralType, InstKind::LegacyFloatType,
InstKind::NamespaceType, InstKind::SpecificFunctionType,
InstKind::StringType, InstKind::VtableType,
InstKind::TypeType,
InstKind::AutoType,
InstKind::BoolType,
InstKind::BoundMethodType,
InstKind::ErrorInst,
InstKind::ImplWitnessTablePlaceholder,
InstKind::InstType,
InstKind::IntLiteralType,
InstKind::LegacyFloatType,
InstKind::NamespaceType,
InstKind::SpecificFunctionType,
InstKind::StringType,
InstKind::VtableType,
InstKind::WitnessType,
};
+49
View File
@@ -688,6 +688,7 @@ struct FacetAccessType {
.is_type = InstIsType::Always,
.constant_kind = InstConstantKind::SymbolicOnly});
// Always the builtin type TypeType.
TypeId type_id;
// An instruction that evaluates to a `FacetValue`.
InstId facet_value_inst_id;
@@ -900,6 +901,18 @@ struct ImplWitness {
// Always the type of the builtin `WitnessType` singleton instruction.
TypeId type_id;
// The witness table with an instruction for each associated constant and
// function in the impl declaration (and definition, if seen). The specific_id
// should be applied to those instructions. Instructions will be
// `ImplWitnessTablePlaceholder` until a value is seen for them.
//
// TODO: To avoid importing the table with every `ImplWitness`, split this
// table out to a separate `ImplWitnessTable` instruction. It can still remain
// as an AbsoluteInstBlockId there. The `ImplWitnessTable's constant_kind
// should be `Unique` to avoid it being evaluated or substituted. The
// `ImplWitnessTable` can also hold a reference back to the impl that the
// witness is for via an `ImplId` which allows diagnostics to show the impl
// from a given witness or witness access.
AbsoluteInstBlockId elements_id;
SpecificId specific_id;
};
@@ -919,6 +932,40 @@ struct ImplWitnessAccess {
ElementIndex index;
};
// An instruction that just points to an associated constant, which exists to
// live inside the generic for an `impl` and be rewritten in the generic eval
// block, unlike the instruction which it points to. This allows a symbolic
// constant value of this instruction to be be substituted to be associated with
// the generic.
struct ImplWitnessAssociatedConstant {
static constexpr auto Kind =
InstKind::ImplWitnessAssociatedConstant.Define<Parse::NodeId>(
{.ir_name = "impl_witness_assoc_constant",
.is_type = InstIsType::Maybe,
// TODO: For dynamic dispatch, we might want to lower witness tables
// as constants.
.is_lowered = false});
// The type of the `inst_id`.
TypeId type_id;
// The instruction of the associated constant.
InstId inst_id;
};
// A singleton placeholder instruction used in the `ImplWitness` table of
// instructions for members of the impl. These are replaced as values are seen
// for the witness table in the impl declaration or definition.
struct ImplWitnessTablePlaceholder {
static constexpr auto Kind =
InstKind::ImplWitnessTablePlaceholder.Define<Parse::NodeId>(
{.ir_name = "impl_witness_table_placeholder",
.constant_kind = InstConstantKind::Unique,
.is_lowered = false});
static constexpr auto SingletonInstId = MakeSingletonInstId<Kind>();
TypeId type_id;
};
// An `import Cpp` declaration.
struct ImportCppDecl {
static constexpr auto Kind =
@@ -1836,6 +1883,8 @@ struct WhereExpr {
// The type of `ImplWitness` and `ImplSymbolicType` instructions. The latter
// will evaluate at some point during specific computation into the former, and
// their types should not change in the process.
//
// Also the type of `RequireCompleteType` instructions.
struct WitnessType {
static constexpr auto Kind = InstKind::WitnessType.Define<Parse::NoneNodeId>(
{.ir_name = "<witness>",