mirror of
https://github.com/carbon-language/carbon-lang.git
synced 2026-10-06 09:24:46 +01:00
Fix SemIR not showing insts used to compute FieldDecl type (#7706)
Add an `ExprRegionId` to `FieldDecl`. This required moving the `NameId` into `Field`.
This commit is contained in:
@@ -123,7 +123,7 @@ static auto AddStructTypeFields(
|
||||
SemIR::ElementIndex{static_cast<int>(struct_type_fields.size())};
|
||||
if (field_decl.type_id == SemIR::ErrorInst::TypeId) {
|
||||
struct_type_fields.push_back(
|
||||
{.name_id = field_decl.name_id,
|
||||
{.name_id = field.name_id,
|
||||
.type_inst_id = SemIR::ErrorInst::TypeInstId});
|
||||
continue;
|
||||
}
|
||||
@@ -131,7 +131,7 @@ static auto AddStructTypeFields(
|
||||
context.sem_ir().types().GetAs<SemIR::UnboundElementType>(
|
||||
field_decl.type_id);
|
||||
struct_type_fields.push_back(
|
||||
{.name_id = field_decl.name_id,
|
||||
{.name_id = field.name_id,
|
||||
.type_inst_id = unbound_element_type.element_type_inst_id});
|
||||
}
|
||||
auto fields_id =
|
||||
|
||||
@@ -79,10 +79,10 @@ static auto MapLValueToConstant(Context& context, SemIR::LocId loc_id,
|
||||
|
||||
const SemIR::FieldDecl& field_decl_inst =
|
||||
context.insts().GetAs<SemIR::FieldDecl>(field_inst_id);
|
||||
const auto& field = context.fields().Get(field_decl_inst.field_id);
|
||||
|
||||
qual_type = field_decl->getType();
|
||||
inst_id = PerformMemberAccess(context, loc_id, inst_id,
|
||||
field_decl_inst.name_id);
|
||||
inst_id = PerformMemberAccess(context, loc_id, inst_id, field.name_id);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -502,9 +502,10 @@ static auto CreateCppFieldDecl(Context& context,
|
||||
}
|
||||
|
||||
// Get the field's C++ identifier.
|
||||
auto* identifier_info = GetClangIdentifierInfo(context, field_decl.name_id);
|
||||
const auto& field = context.fields().Get(field_decl.field_id);
|
||||
auto* identifier_info = GetClangIdentifierInfo(context, field.name_id);
|
||||
CARBON_CHECK(identifier_info, "field with non-identifier name {0}",
|
||||
field_decl.name_id);
|
||||
field.name_id);
|
||||
|
||||
// Create the `clang::FieldDecl`.
|
||||
auto* cpp_field_decl = clang::FieldDecl::Create(
|
||||
@@ -514,7 +515,7 @@ static auto CreateCppFieldDecl(Context& context,
|
||||
/*Mutable=*/true, clang::ICIS_NoInit);
|
||||
cpp_field_decl->setInvalidDecl(invalid);
|
||||
|
||||
SetCppClassMemberAccess(class_scope, field_decl.name_id, cpp_field_decl);
|
||||
SetCppClassMemberAccess(class_scope, field.name_id, cpp_field_decl);
|
||||
|
||||
record_decl->addHiddenDecl(cpp_field_decl);
|
||||
|
||||
|
||||
@@ -811,8 +811,16 @@ static auto ImportClassObjectRepr(Context& context, SemIR::ClassId class_id,
|
||||
}
|
||||
|
||||
auto field_name_id = AddIdentifierName(context, field->getName());
|
||||
|
||||
BeginExprRegionForPattern(context);
|
||||
|
||||
auto [field_type_inst_id, field_type_id] =
|
||||
ImportCppType(context, import_ir_inst_id, field->getType());
|
||||
|
||||
SemIR::ExprRegionId type_region_id =
|
||||
ConsumeExprRegionForPattern(context, field_type_inst_id);
|
||||
EndEmptyExprRegionForPattern(context);
|
||||
|
||||
if (!field_type_inst_id.has_value()) {
|
||||
// TODO: For now, just skip over fields whose types we can't map.
|
||||
continue;
|
||||
@@ -822,6 +830,7 @@ static auto ImportClassObjectRepr(Context& context, SemIR::ClassId class_id,
|
||||
// TODO: Consider doing this lazily instead.
|
||||
auto field_id =
|
||||
context.fields().Add({.index = SemIR::ElementIndex(fields.size()),
|
||||
.name_id = field_name_id,
|
||||
// TODO: import initializers.
|
||||
.initializer_id = SemIR::InstId::None});
|
||||
auto field_decl_id = AddInst(
|
||||
@@ -830,8 +839,9 @@ static auto ImportClassObjectRepr(Context& context, SemIR::ClassId class_id,
|
||||
SemIR::FieldDecl{
|
||||
.type_id = GetUnboundElementType(
|
||||
context, class_type_inst_id, field_type_inst_id),
|
||||
.name_id = field_name_id,
|
||||
.field_id = field_id,
|
||||
.type_region_id = type_region_id
|
||||
|
||||
}));
|
||||
// The imported SemIR::FieldDecl represents the original declaration `decl`,
|
||||
// which is either the field or the indirect field declaration.
|
||||
|
||||
@@ -180,6 +180,9 @@ class ImportContext {
|
||||
auto import_entity_names() -> const SemIR::EntityNameStore& {
|
||||
return import_ir().entity_names();
|
||||
}
|
||||
auto import_expr_regions() -> const SemIR::ExprRegionStore& {
|
||||
return import_ir().expr_regions();
|
||||
}
|
||||
auto import_facet_types() -> const SemIR::DeclaredFacetTypeStore& {
|
||||
return import_ir().declared_facet_types();
|
||||
}
|
||||
@@ -265,6 +268,9 @@ class ImportContext {
|
||||
auto local_entity_names() -> SemIR::EntityNameStore& {
|
||||
return local_ir().entity_names();
|
||||
}
|
||||
auto local_expr_regions() -> SemIR::ExprRegionStore& {
|
||||
return local_ir().expr_regions();
|
||||
}
|
||||
auto local_facet_types() -> SemIR::DeclaredFacetTypeStore& {
|
||||
return local_ir().declared_facet_types();
|
||||
}
|
||||
@@ -2303,6 +2309,11 @@ static auto TryResolveTypedInst(ImportRefResolver& resolver,
|
||||
static auto TryResolveTypedInst(ImportRefResolver& resolver,
|
||||
SemIR::FieldDecl inst,
|
||||
SemIR::InstId import_inst_id) -> ResolveResult {
|
||||
auto import_expr_region =
|
||||
resolver.import_expr_regions().Get(inst.type_region_id);
|
||||
SemIR::ExprRegion expr_region{
|
||||
.result_id = AddImportRef(resolver, import_expr_region.result_id)};
|
||||
|
||||
auto const_id = GetLocalConstantId(resolver, inst.type_id);
|
||||
const auto& import_field = resolver.import_ir().fields().Get(inst.field_id);
|
||||
auto initializer_id =
|
||||
@@ -2311,13 +2322,20 @@ static auto TryResolveTypedInst(ImportRefResolver& resolver,
|
||||
return ResolveResult::Retry();
|
||||
}
|
||||
|
||||
auto type_region_id = resolver.local_expr_regions().Add(expr_region);
|
||||
|
||||
auto field_id = resolver.local_ir().fields().Add(
|
||||
{.index = import_field.index, .initializer_id = initializer_id});
|
||||
{.index = import_field.index,
|
||||
.name_id = GetLocalNameId(resolver, import_field.name_id),
|
||||
.initializer_id = initializer_id});
|
||||
return ResolveResult::Unique<SemIR::FieldDecl>(
|
||||
resolver, import_inst_id,
|
||||
{.type_id = resolver.local_types().GetTypeIdForTypeConstantId(const_id),
|
||||
.name_id = GetLocalNameId(resolver, inst.name_id),
|
||||
.field_id = field_id});
|
||||
{
|
||||
.type_id =
|
||||
resolver.local_types().GetTypeIdForTypeConstantId(const_id),
|
||||
.field_id = field_id,
|
||||
.type_region_id = type_region_id,
|
||||
});
|
||||
}
|
||||
|
||||
static auto TryResolveTypedInst(ImportRefResolver& resolver,
|
||||
|
||||
+32
-27
@@ -126,33 +126,6 @@ auto AddBindingForPattern(Context& context, SemIR::LocId name_loc,
|
||||
pattern.kind);
|
||||
}
|
||||
|
||||
// Handle non-static `var` decls in a class by creating a `FieldDecl`.
|
||||
if (InNonStaticFieldDecl(context)) {
|
||||
auto class_decl =
|
||||
context.scope_stack().TryGetCurrentScopeAs<SemIR::ClassDecl>();
|
||||
auto name_id = context.entity_names().Get(pattern.entity_name_id).name_id;
|
||||
auto& class_info = context.classes().Get(class_decl->class_id);
|
||||
auto field_type_id = GetUnboundElementType(
|
||||
context, context.types().GetTypeInstId(class_info.self_type_id),
|
||||
context.types().GetTypeInstId(binding_type_id));
|
||||
|
||||
if (name_id == SemIR::NameId::Underscore) {
|
||||
CARBON_DIAGNOSTIC(FieldNamedUnderscore, Error,
|
||||
"expected identifier in field declaration");
|
||||
context.emitter().Emit(name_loc, FieldNamedUnderscore);
|
||||
}
|
||||
|
||||
auto field_id =
|
||||
context.fields().Add({.index = SemIR::ElementIndex::None,
|
||||
.initializer_id = SemIR::InstId::None});
|
||||
auto field_decl_id = AddInst<SemIR::FieldDecl>(
|
||||
context, name_loc,
|
||||
{.type_id = field_type_id, .name_id = name_id, .field_id = field_id});
|
||||
context.field_decls_stack().AppendToTop(field_decl_id);
|
||||
|
||||
return field_decl_id;
|
||||
}
|
||||
|
||||
auto bind_id = AddInstInNoBlock(
|
||||
context, SemIR::LocIdAndInst::RuntimeVerified(
|
||||
context.sem_ir(), name_loc,
|
||||
@@ -172,6 +145,38 @@ auto AddBindingPattern(Context& context, SemIR::LocId name_loc,
|
||||
SemIR::ExprRegionId type_region_id,
|
||||
SemIR::TypeId scrutinee_type_id,
|
||||
SemIR::AnyBindingPattern pattern) -> BindingPatternInfo {
|
||||
// Handle non-static `var` decls in a class by creating a `FieldDecl`.
|
||||
if (InNonStaticFieldDecl(context)) {
|
||||
auto class_decl =
|
||||
context.scope_stack().TryGetCurrentScopeAs<SemIR::ClassDecl>();
|
||||
auto name_id = context.entity_names().Get(pattern.entity_name_id).name_id;
|
||||
auto& class_info = context.classes().Get(class_decl->class_id);
|
||||
auto field_type_id = GetUnboundElementType(
|
||||
context, context.types().GetTypeInstId(class_info.self_type_id),
|
||||
context.types().GetTypeInstId(scrutinee_type_id));
|
||||
|
||||
if (name_id == SemIR::NameId::Underscore) {
|
||||
CARBON_DIAGNOSTIC(FieldNamedUnderscore, Error,
|
||||
"expected identifier in field declaration");
|
||||
context.emitter().Emit(name_loc, FieldNamedUnderscore);
|
||||
}
|
||||
|
||||
auto field_id =
|
||||
context.fields().Add({.index = SemIR::ElementIndex::None,
|
||||
.name_id = name_id,
|
||||
.initializer_id = SemIR::InstId::None});
|
||||
auto field_decl_id =
|
||||
AddInst<SemIR::FieldDecl>(context, name_loc,
|
||||
{
|
||||
.type_id = field_type_id,
|
||||
.field_id = field_id,
|
||||
.type_region_id = type_region_id,
|
||||
});
|
||||
context.field_decls_stack().AppendToTop(field_decl_id);
|
||||
|
||||
return {.pattern_id = field_decl_id, .bind_id = field_decl_id};
|
||||
}
|
||||
|
||||
auto binding_pattern_id =
|
||||
AddInst(context, SemIR::LocIdAndInst::RuntimeVerified(context.sem_ir(),
|
||||
name_loc, pattern));
|
||||
|
||||
+13
-8
@@ -38,6 +38,7 @@ var a_val: a = {.v = b_val.v};
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %C: type = class_type @C [concrete]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete]
|
||||
// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete]
|
||||
// CHECK:STDOUT: %C.elem: type = unbound_element_type %C, %empty_tuple.type [concrete]
|
||||
// CHECK:STDOUT: %struct_type.v: type = struct_type {.v: %empty_tuple.type} [concrete]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %struct_type.v [concrete]
|
||||
@@ -63,13 +64,16 @@ var a_val: a = {.v = b_val.v};
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @C {
|
||||
// CHECK:STDOUT: %.loc4: %C.elem = field_decl v, element0 [concrete]
|
||||
// CHECK:STDOUT: %field_decl: %C.elem = field_decl v, element0, %.loc4_19.2 in [concrete] {
|
||||
// CHECK:STDOUT: %.loc4_19.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple]
|
||||
// CHECK:STDOUT: %.loc4_19.2: type = converted %.loc4_19.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness constants.%struct_type.v [concrete = constants.%complete_type]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = constants.%C
|
||||
// CHECK:STDOUT: .v = %.loc4
|
||||
// CHECK:STDOUT: .v = %field_decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: --- b.carbon
|
||||
@@ -109,8 +113,9 @@ var a_val: a = {.v = b_val.v};
|
||||
// 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.e47 = import_ref Main//a, inst{{[0-9A-F]+}} [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.0c6: %C.elem = import_ref Main//a, loc4_16, loaded [concrete = %.a44]
|
||||
// CHECK:STDOUT: %.a44: %C.elem = field_decl v, element0 [concrete]
|
||||
// CHECK:STDOUT: %Main.import_ref.3e4: %C.elem = import_ref Main//a, loc4_16, loaded [concrete = %field_decl]
|
||||
// CHECK:STDOUT: %Main.import_ref.5f5 = import_ref Main//a, loc4_19, unloaded
|
||||
// CHECK:STDOUT: %field_decl: %C.elem = field_decl v, element0, %Main.import_ref.5f5 in [concrete] {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -161,7 +166,7 @@ var a_val: a = {.v = b_val.v};
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Main.import_ref.e47
|
||||
// CHECK:STDOUT: .v = imports.%Main.import_ref.0c6
|
||||
// CHECK:STDOUT: .v = imports.%Main.import_ref.3e4
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @__global_init() {
|
||||
@@ -176,7 +181,7 @@ var a_val: a = {.v = b_val.v};
|
||||
// CHECK:STDOUT: %.loc7_1: init %C = converted %.loc7_24.1, %.loc7_24.5 [concrete = constants.%C.val]
|
||||
// CHECK:STDOUT: assign file.%d_val.var, %.loc7_1
|
||||
// CHECK:STDOUT: %d_val.ref: ref %C = name_ref d_val, file.%d_val [concrete = file.%d_val.var]
|
||||
// CHECK:STDOUT: %v.ref.loc8: %C.elem = name_ref v, imports.%Main.import_ref.0c6 [concrete = imports.%.a44]
|
||||
// CHECK:STDOUT: %v.ref.loc8: %C.elem = name_ref v, imports.%Main.import_ref.3e4 [concrete = imports.%field_decl]
|
||||
// CHECK:STDOUT: %.loc8_27.1: ref %empty_tuple.type = class_element_access %d_val.ref, element0 [concrete = constants.%.4c6]
|
||||
// CHECK:STDOUT: %.loc8_29.1: %struct_type.v = struct_literal (%.loc8_27.1) [concrete = constants.%struct.898]
|
||||
// CHECK:STDOUT: %.loc8_29.2: ref %empty_tuple.type = class_element_access file.%c_val.var, element0 [concrete = constants.%.f57]
|
||||
@@ -187,7 +192,7 @@ var a_val: a = {.v = b_val.v};
|
||||
// CHECK:STDOUT: %.loc8_1: init %C = converted %.loc8_29.1, %.loc8_29.5 [concrete = constants.%C.val]
|
||||
// CHECK:STDOUT: assign file.%c_val.var, %.loc8_1
|
||||
// CHECK:STDOUT: %c_val.ref: ref %C = name_ref c_val, file.%c_val [concrete = file.%c_val.var]
|
||||
// CHECK:STDOUT: %v.ref.loc9: %C.elem = name_ref v, imports.%Main.import_ref.0c6 [concrete = imports.%.a44]
|
||||
// CHECK:STDOUT: %v.ref.loc9: %C.elem = name_ref v, imports.%Main.import_ref.3e4 [concrete = imports.%field_decl]
|
||||
// CHECK:STDOUT: %.loc9_27.1: ref %empty_tuple.type = class_element_access %c_val.ref, element0 [concrete = constants.%.f57]
|
||||
// CHECK:STDOUT: %.loc9_29.1: %struct_type.v = struct_literal (%.loc9_27.1) [concrete = constants.%struct.2ea]
|
||||
// CHECK:STDOUT: %.loc9_29.2: ref %empty_tuple.type = class_element_access file.%b_val.var, element0 [concrete = constants.%.db9]
|
||||
@@ -198,7 +203,7 @@ var a_val: a = {.v = b_val.v};
|
||||
// CHECK:STDOUT: %.loc9_1: init %C = converted %.loc9_29.1, %.loc9_29.5 [concrete = constants.%C.val]
|
||||
// CHECK:STDOUT: assign file.%b_val.var, %.loc9_1
|
||||
// CHECK:STDOUT: %b_val.ref: ref %C = name_ref b_val, file.%b_val [concrete = file.%b_val.var]
|
||||
// CHECK:STDOUT: %v.ref.loc10: %C.elem = name_ref v, imports.%Main.import_ref.0c6 [concrete = imports.%.a44]
|
||||
// CHECK:STDOUT: %v.ref.loc10: %C.elem = name_ref v, imports.%Main.import_ref.3e4 [concrete = imports.%field_decl]
|
||||
// CHECK:STDOUT: %.loc10_27.1: ref %empty_tuple.type = class_element_access %b_val.ref, element0 [concrete = constants.%.db9]
|
||||
// CHECK:STDOUT: %.loc10_29.1: %struct_type.v = struct_literal (%.loc10_27.1) [concrete = constants.%struct.da5]
|
||||
// CHECK:STDOUT: %.loc10_29.2: ref %empty_tuple.type = class_element_access file.%a_val.var, element0 [concrete = constants.%.5b1]
|
||||
|
||||
+27
-26
@@ -78,10 +78,10 @@ fn G(x: Cpp.X) {
|
||||
// CHECK:STDOUT: function50000000: {name: name0, parent_scope: name_scope0, call_param_patterns_id: inst_block50000007, call_params_id: inst_block50000008, body: [inst_block5000000B]}
|
||||
// CHECK:STDOUT: function50000001: {name: name3, parent_scope: name_scope50000001, call_param_patterns_id: inst_block_empty, call_params_id: inst_block_empty, cpp_thunk_decl: inst50000032}
|
||||
// CHECK:STDOUT: function50000002: {name: name6, parent_scope: name_scope50000001, call_param_patterns_id: inst_block_empty, call_params_id: inst_block_empty, cpp_thunk_callee: inst5000002F}
|
||||
// CHECK:STDOUT: function50000003: {name: name3, parent_scope: name_scope50000001, call_param_patterns_id: inst_block5000000F, call_params_id: inst_block50000010, cpp_thunk_decl: inst50000047}
|
||||
// CHECK:STDOUT: function50000004: {name: name6, parent_scope: name_scope50000001, call_param_patterns_id: inst_block50000015, call_params_id: inst_block50000016, cpp_thunk_callee: inst5000003D}
|
||||
// CHECK:STDOUT: function50000003: {name: name3, parent_scope: name_scope50000001, call_param_patterns_id: inst_block50000010, call_params_id: inst_block50000011, cpp_thunk_decl: inst50000047}
|
||||
// CHECK:STDOUT: function50000004: {name: name6, parent_scope: name_scope50000001, call_param_patterns_id: inst_block50000016, call_params_id: inst_block50000017, cpp_thunk_callee: inst5000003D}
|
||||
// CHECK:STDOUT: classes:
|
||||
// CHECK:STDOUT: class50000000: {name: name2, parent_scope: name_scope50000001, self_type_id: type(inst50000014), inheritance_kind: Base, is_dynamic: 0, scope_id: name_scope50000002, body_block_id: inst_block5000000C, adapt_id: inst<none>, base_id: inst<none>, complete_type_witness_id: inst50000027, vtable_decl_id: inst<none>}}
|
||||
// CHECK:STDOUT: class50000000: {name: name2, parent_scope: name_scope50000001, self_type_id: type(inst50000014), inheritance_kind: Base, is_dynamic: 0, scope_id: name_scope50000002, body_block_id: inst_block5000000D, adapt_id: inst<none>, base_id: inst<none>, complete_type_witness_id: inst50000027, vtable_decl_id: inst<none>}}
|
||||
// CHECK:STDOUT: interfaces: {}
|
||||
// CHECK:STDOUT: associated_constants: {}
|
||||
// CHECK:STDOUT: impls: {}
|
||||
@@ -218,7 +218,7 @@ fn G(x: Cpp.X) {
|
||||
// CHECK:STDOUT: inst50000021: {kind: StructValue, arg0: inst_block_empty, type: type(inst5000001F)}
|
||||
// CHECK:STDOUT: inst50000022: {kind: PointerType, arg0: inst50000014, type: type(TypeType)}
|
||||
// CHECK:STDOUT: inst50000023: {kind: UnboundElementType, arg0: inst50000014, arg1: inst50000022, type: type(TypeType)}
|
||||
// CHECK:STDOUT: inst50000024: {kind: FieldDecl, arg0: name5, arg1: field50000000, type: type(inst50000023)}
|
||||
// CHECK:STDOUT: inst50000024: {kind: FieldDecl, arg0: field50000000, arg1: region50000001, type: type(inst50000023)}
|
||||
// CHECK:STDOUT: inst50000025: {kind: CustomLayoutType, arg0: struct_type_fields50000001, arg1: custom_layout50000001, type: type(TypeType)}
|
||||
// CHECK:STDOUT: inst50000026: {kind: CustomLayoutType, arg0: struct_type_fields50000002, arg1: custom_layout50000001, type: type(TypeType)}
|
||||
// CHECK:STDOUT: inst50000027: {kind: CompleteTypeWitness, arg0: inst50000025, type: type(inst(WitnessType))}
|
||||
@@ -243,7 +243,7 @@ fn G(x: Cpp.X) {
|
||||
// CHECK:STDOUT: inst5000003A: {kind: WrapperBindingPattern, arg0: entity_name50000001, arg1: inst50000039, type: type(inst50000016)}
|
||||
// CHECK:STDOUT: inst5000003B: {kind: WrapperBinding, arg0: entity_name50000001, arg1: inst5000003C, type: type(inst50000014)}
|
||||
// CHECK:STDOUT: inst5000003C: {kind: ValueParam, arg0: call_param0, arg1: name1, type: type(inst50000014)}
|
||||
// CHECK:STDOUT: inst5000003D: {kind: FunctionDecl, arg0: function50000003, arg1: inst_block50000012, type: type(inst5000003E)}
|
||||
// CHECK:STDOUT: inst5000003D: {kind: FunctionDecl, arg0: function50000003, arg1: inst_block50000013, type: type(inst5000003E)}
|
||||
// CHECK:STDOUT: inst5000003E: {kind: FunctionType, arg0: function50000003, arg1: specific<none>, type: type(TypeType)}
|
||||
// CHECK:STDOUT: inst5000003F: {kind: StructValue, arg0: inst_block_empty, type: type(inst5000003E)}
|
||||
// CHECK:STDOUT: inst50000040: {kind: PatternType, arg0: inst50000022, type: type(TypeType)}
|
||||
@@ -253,12 +253,12 @@ fn G(x: Cpp.X) {
|
||||
// CHECK:STDOUT: inst50000044: {kind: WrapperBindingPattern, arg0: entity_name50000000, arg1: inst50000042, type: type(inst50000040)}
|
||||
// CHECK:STDOUT: inst50000045: {kind: WrapperBinding, arg0: entity_name50000002, arg1: inst50000046, type: type(inst50000022)}
|
||||
// CHECK:STDOUT: inst50000046: {kind: ValueParam, arg0: call_param0, arg1: name1, type: type(inst50000022)}
|
||||
// CHECK:STDOUT: inst50000047: {kind: FunctionDecl, arg0: function50000004, arg1: inst_block50000018, type: type(inst50000048)}
|
||||
// CHECK:STDOUT: inst50000047: {kind: FunctionDecl, arg0: function50000004, arg1: inst_block50000019, type: type(inst50000048)}
|
||||
// CHECK:STDOUT: inst50000048: {kind: FunctionType, arg0: function50000004, arg1: specific<none>, type: type(TypeType)}
|
||||
// CHECK:STDOUT: inst50000049: {kind: StructValue, arg0: inst_block_empty, type: type(inst50000048)}
|
||||
// CHECK:STDOUT: inst5000004A: {kind: ValueAsRef, arg0: inst50000038, type: type(inst50000014)}
|
||||
// CHECK:STDOUT: inst5000004B: {kind: AddrOf, arg0: inst5000004A, type: type(inst50000022)}
|
||||
// CHECK:STDOUT: inst5000004C: {kind: Call, arg0: inst50000047, arg1: inst_block5000001A, type: type(inst50000020)}
|
||||
// CHECK:STDOUT: inst5000004C: {kind: Call, arg0: inst50000047, arg1: inst_block5000001B, type: type(inst50000020)}
|
||||
// CHECK:STDOUT: inst5000004D: {kind: NameRef, arg0: name(Cpp), arg1: inst50000011, type: type(inst(NamespaceType))}
|
||||
// CHECK:STDOUT: inst5000004E: {kind: NameRef, arg0: name3, arg1: inst5000002C, type: type(inst5000002B)}
|
||||
// CHECK:STDOUT: inst5000004F: {kind: NameRef, arg0: name(Cpp), arg1: inst50000011, type: type(inst(NamespaceType))}
|
||||
@@ -273,7 +273,7 @@ fn G(x: Cpp.X) {
|
||||
// CHECK:STDOUT: inst50000058: {kind: AcquireValue, arg0: inst50000057, type: type(inst50000014)}
|
||||
// CHECK:STDOUT: inst50000059: {kind: ValueAsRef, arg0: inst50000058, type: type(inst50000014)}
|
||||
// CHECK:STDOUT: inst5000005A: {kind: AddrOf, arg0: inst50000059, type: type(inst50000022)}
|
||||
// CHECK:STDOUT: inst5000005B: {kind: Call, arg0: inst50000047, arg1: inst_block5000001C, type: type(inst50000020)}
|
||||
// CHECK:STDOUT: inst5000005B: {kind: Call, arg0: inst50000047, arg1: inst_block5000001D, type: type(inst50000020)}
|
||||
// CHECK:STDOUT: inst5000005C: {kind: Return}
|
||||
// CHECK:STDOUT: bundles: {}
|
||||
// CHECK:STDOUT: constant_values:
|
||||
@@ -407,45 +407,46 @@ fn G(x: Cpp.X) {
|
||||
// CHECK:STDOUT: 17: inst5000005A
|
||||
// CHECK:STDOUT: 18: inst5000005B
|
||||
// CHECK:STDOUT: 19: inst5000005C
|
||||
// CHECK:STDOUT: inst_block5000000C:
|
||||
// CHECK:STDOUT: inst_block5000000C: {}
|
||||
// CHECK:STDOUT: inst_block5000000D:
|
||||
// CHECK:STDOUT: 0: inst50000024
|
||||
// CHECK:STDOUT: 1: inst50000025
|
||||
// CHECK:STDOUT: 2: inst50000027
|
||||
// CHECK:STDOUT: inst_block5000000D: {}
|
||||
// CHECK:STDOUT: inst_block5000000E:
|
||||
// CHECK:STDOUT: 0: inst5000003A
|
||||
// CHECK:STDOUT: inst_block5000000E: {}
|
||||
// CHECK:STDOUT: inst_block5000000F:
|
||||
// CHECK:STDOUT: 0: inst50000039
|
||||
// CHECK:STDOUT: 0: inst5000003A
|
||||
// CHECK:STDOUT: inst_block50000010:
|
||||
// CHECK:STDOUT: 0: inst5000003C
|
||||
// CHECK:STDOUT: 0: inst50000039
|
||||
// CHECK:STDOUT: inst_block50000011:
|
||||
// CHECK:STDOUT: 0: inst5000003C
|
||||
// CHECK:STDOUT: inst_block50000012:
|
||||
// CHECK:STDOUT: 0: inst50000039
|
||||
// CHECK:STDOUT: 1: inst5000003A
|
||||
// CHECK:STDOUT: inst_block50000012:
|
||||
// CHECK:STDOUT: inst_block50000013:
|
||||
// CHECK:STDOUT: 0: inst5000003C
|
||||
// CHECK:STDOUT: 1: inst5000003B
|
||||
// CHECK:STDOUT: inst_block50000013: {}
|
||||
// CHECK:STDOUT: inst_block50000014:
|
||||
// CHECK:STDOUT: 0: inst50000043
|
||||
// CHECK:STDOUT: inst_block50000014: {}
|
||||
// CHECK:STDOUT: inst_block50000015:
|
||||
// CHECK:STDOUT: 0: inst50000041
|
||||
// CHECK:STDOUT: 0: inst50000043
|
||||
// CHECK:STDOUT: inst_block50000016:
|
||||
// CHECK:STDOUT: 0: inst50000046
|
||||
// CHECK:STDOUT: 0: inst50000041
|
||||
// CHECK:STDOUT: inst_block50000017:
|
||||
// CHECK:STDOUT: 0: inst50000046
|
||||
// CHECK:STDOUT: inst_block50000018:
|
||||
// CHECK:STDOUT: 0: inst50000041
|
||||
// CHECK:STDOUT: 1: inst50000043
|
||||
// CHECK:STDOUT: inst_block50000018:
|
||||
// CHECK:STDOUT: inst_block50000019:
|
||||
// CHECK:STDOUT: 0: inst50000046
|
||||
// CHECK:STDOUT: 1: inst50000045
|
||||
// CHECK:STDOUT: inst_block50000019:
|
||||
// CHECK:STDOUT: 0: inst50000038
|
||||
// CHECK:STDOUT: inst_block5000001A:
|
||||
// CHECK:STDOUT: 0: inst5000004B
|
||||
// CHECK:STDOUT: 0: inst50000038
|
||||
// CHECK:STDOUT: inst_block5000001B:
|
||||
// CHECK:STDOUT: 0: inst50000058
|
||||
// CHECK:STDOUT: 0: inst5000004B
|
||||
// CHECK:STDOUT: inst_block5000001C:
|
||||
// CHECK:STDOUT: 0: inst5000005A
|
||||
// CHECK:STDOUT: 0: inst50000058
|
||||
// CHECK:STDOUT: inst_block5000001D:
|
||||
// CHECK:STDOUT: 0: inst5000005A
|
||||
// CHECK:STDOUT: inst_block5000001E:
|
||||
// CHECK:STDOUT: 0: instF
|
||||
// CHECK:STDOUT: 1: inst50000010
|
||||
// CHECK:STDOUT: 2: inst5000001E
|
||||
|
||||
+30
-15
@@ -275,14 +275,16 @@ fn Assign(ref a: Abstract) {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @Contains {
|
||||
// CHECK:STDOUT: %.loc14: <error> = field_decl a, element0 [concrete]
|
||||
// CHECK:STDOUT: %field_decl: <error> = field_decl a, element0, %Abstract.ref in [concrete] {
|
||||
// CHECK:STDOUT: %Abstract.ref: type = name_ref Abstract, file.%Abstract.decl [concrete = constants.%Abstract]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = constants.%Contains
|
||||
// CHECK:STDOUT: .Abstract = <poisoned>
|
||||
// CHECK:STDOUT: .a = %.loc14
|
||||
// CHECK:STDOUT: .a = %field_decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: --- fail_abstract_var.carbon
|
||||
@@ -624,7 +626,10 @@ fn Assign(ref a: Abstract) {
|
||||
// CHECK:STDOUT: class @Derived {
|
||||
// CHECK:STDOUT: %Abstract.ref: type = name_ref Abstract, file.%Abstract.decl [concrete = constants.%Abstract]
|
||||
// CHECK:STDOUT: %.loc7: %Derived.elem.ce6 = base_decl %Abstract.ref, element0 [concrete]
|
||||
// CHECK:STDOUT: %.loc9: %Derived.elem.1ef = field_decl d, element1 [concrete]
|
||||
// CHECK:STDOUT: %field_decl: %Derived.elem.1ef = field_decl d, element1, %.loc9_11.2 in [concrete] {
|
||||
// CHECK:STDOUT: %.loc9_11.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct.a40]
|
||||
// CHECK:STDOUT: %.loc9_11.2: type = converted %.loc9_11.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness constants.%struct_type.base.d.008 [concrete = constants.%complete_type.3c7]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
@@ -632,7 +637,7 @@ fn Assign(ref a: Abstract) {
|
||||
// CHECK:STDOUT: .Self = constants.%Derived
|
||||
// CHECK:STDOUT: .Abstract = <poisoned>
|
||||
// CHECK:STDOUT: .base = %.loc7
|
||||
// CHECK:STDOUT: .d = %.loc9
|
||||
// CHECK:STDOUT: .d = %field_decl
|
||||
// CHECK:STDOUT: extend %Abstract.ref
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -662,6 +667,7 @@ fn Assign(ref a: Abstract) {
|
||||
// CHECK:STDOUT: %complete_type.357: <witness> = complete_type_witness %empty_struct_type [concrete]
|
||||
// CHECK:STDOUT: %Derived: type = class_type @Derived [concrete]
|
||||
// CHECK:STDOUT: %Derived.elem.ce6: type = unbound_element_type %Derived, %Abstract [concrete]
|
||||
// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Derived.elem.1ef: type = unbound_element_type %Derived, %empty_struct_type [concrete]
|
||||
// CHECK:STDOUT: %struct_type.base.d: type = struct_type {.base: %Abstract, .d: %empty_struct_type} [concrete]
|
||||
// CHECK:STDOUT: %complete_type.3c7: <witness> = complete_type_witness %struct_type.base.d [concrete]
|
||||
@@ -719,7 +725,10 @@ fn Assign(ref a: Abstract) {
|
||||
// CHECK:STDOUT: class @Derived {
|
||||
// CHECK:STDOUT: %Abstract.ref: type = name_ref Abstract, file.%Abstract.decl [concrete = constants.%Abstract]
|
||||
// CHECK:STDOUT: %.loc7: %Derived.elem.ce6 = base_decl %Abstract.ref, element0 [concrete]
|
||||
// CHECK:STDOUT: %.loc9: %Derived.elem.1ef = field_decl d, element1 [concrete]
|
||||
// CHECK:STDOUT: %field_decl: %Derived.elem.1ef = field_decl d, element1, %.loc9_11.2 in [concrete] {
|
||||
// CHECK:STDOUT: %.loc9_11.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct]
|
||||
// CHECK:STDOUT: %.loc9_11.2: type = converted %.loc9_11.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness constants.%struct_type.base.d [concrete = constants.%complete_type.3c7]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
@@ -727,7 +736,7 @@ fn Assign(ref a: Abstract) {
|
||||
// CHECK:STDOUT: .Self = constants.%Derived
|
||||
// CHECK:STDOUT: .Abstract = <poisoned>
|
||||
// CHECK:STDOUT: .base = %.loc7
|
||||
// CHECK:STDOUT: .d = %.loc9
|
||||
// CHECK:STDOUT: .d = %field_decl
|
||||
// CHECK:STDOUT: extend %Abstract.ref
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -754,7 +763,7 @@ fn Assign(ref a: Abstract) {
|
||||
// CHECK:STDOUT: %complete_type.3c7: <witness> = complete_type_witness %struct_type.base.d.008 [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.746: type = pattern_type %Derived [concrete]
|
||||
// CHECK:STDOUT: %d.param_patt: %pattern_type.746 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %d.patt.2df: %pattern_type.746 = wrapper_binding_pattern d, %d.param_patt [concrete]
|
||||
// CHECK:STDOUT: %d.patt: %pattern_type.746 = wrapper_binding_pattern d, %d.param_patt [concrete]
|
||||
// CHECK:STDOUT: %.469: Core.Form = init_form %empty_struct_type [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.a96 = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.a96 = return_slot_pattern %return.param_patt, %empty_struct_type [concrete]
|
||||
@@ -784,7 +793,7 @@ fn Assign(ref a: Abstract) {
|
||||
// CHECK:STDOUT: %Derived.decl: type = class_decl @Derived [concrete = constants.%Derived] {} {}
|
||||
// CHECK:STDOUT: %AccessViaBase.decl: %AccessViaBase.type = fn_decl @AccessViaBase [concrete = constants.%AccessViaBase] {
|
||||
// CHECK:STDOUT: %d.param_patt: %pattern_type.746 = value_param_pattern [concrete = constants.%d.param_patt]
|
||||
// CHECK:STDOUT: %d.patt: %pattern_type.746 = wrapper_binding_pattern d, %d.param_patt [concrete = constants.%d.patt.2df]
|
||||
// CHECK:STDOUT: %d.patt: %pattern_type.746 = wrapper_binding_pattern d, %d.param_patt [concrete = constants.%d.patt]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.a96 = out_param_pattern [concrete = constants.%return.param_patt]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.a96 = return_slot_pattern %return.param_patt, %.loc13_34.2 [concrete = constants.%return.patt]
|
||||
// CHECK:STDOUT: } {
|
||||
@@ -799,7 +808,7 @@ fn Assign(ref a: Abstract) {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Access.decl: %Access.type = fn_decl @Access [concrete = constants.%Access] {
|
||||
// CHECK:STDOUT: %d.param_patt: %pattern_type.746 = value_param_pattern [concrete = constants.%d.param_patt]
|
||||
// CHECK:STDOUT: %d.patt: %pattern_type.746 = wrapper_binding_pattern d, %d.param_patt [concrete = constants.%d.patt.2df]
|
||||
// CHECK:STDOUT: %d.patt: %pattern_type.746 = wrapper_binding_pattern d, %d.param_patt [concrete = constants.%d.patt]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.a96 = out_param_pattern [concrete = constants.%return.param_patt]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.a96 = return_slot_pattern %return.param_patt, %.loc17_27.2 [concrete = constants.%return.patt]
|
||||
// CHECK:STDOUT: } {
|
||||
@@ -815,19 +824,25 @@ fn Assign(ref a: Abstract) {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @Abstract {
|
||||
// CHECK:STDOUT: %.loc4: %Abstract.elem = field_decl a, element0 [concrete]
|
||||
// CHECK:STDOUT: %field_decl: %Abstract.elem = field_decl a, element0, %.loc4_11.2 in [concrete] {
|
||||
// CHECK:STDOUT: %.loc4_11.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct]
|
||||
// CHECK:STDOUT: %.loc4_11.2: type = converted %.loc4_11.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness constants.%struct_type.a.225 [concrete = constants.%complete_type.8c6]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = constants.%Abstract
|
||||
// CHECK:STDOUT: .a = %.loc4
|
||||
// CHECK:STDOUT: .a = %field_decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @Derived {
|
||||
// CHECK:STDOUT: %Abstract.ref: type = name_ref Abstract, file.%Abstract.decl [concrete = constants.%Abstract]
|
||||
// CHECK:STDOUT: %.loc8: %Derived.elem.ce6 = base_decl %Abstract.ref, element0 [concrete]
|
||||
// CHECK:STDOUT: %.loc10: %Derived.elem.1ef = field_decl d, element1 [concrete]
|
||||
// CHECK:STDOUT: %field_decl: %Derived.elem.1ef = field_decl d, element1, %.loc10_11.2 in [concrete] {
|
||||
// CHECK:STDOUT: %.loc10_11.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct]
|
||||
// CHECK:STDOUT: %.loc10_11.2: type = converted %.loc10_11.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness constants.%struct_type.base.d.008 [concrete = constants.%complete_type.3c7]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
@@ -835,7 +850,7 @@ fn Assign(ref a: Abstract) {
|
||||
// CHECK:STDOUT: .Self = constants.%Derived
|
||||
// CHECK:STDOUT: .Abstract = <poisoned>
|
||||
// CHECK:STDOUT: .base = %.loc8
|
||||
// CHECK:STDOUT: .d = %.loc10
|
||||
// CHECK:STDOUT: .d = %field_decl
|
||||
// CHECK:STDOUT: .a = <poisoned>
|
||||
// CHECK:STDOUT: extend %Abstract.ref
|
||||
// CHECK:STDOUT: }
|
||||
@@ -846,7 +861,7 @@ fn Assign(ref a: Abstract) {
|
||||
// CHECK:STDOUT: %base.ref: %Derived.elem.ce6 = name_ref base, @Derived.%.loc8 [concrete = @Derived.%.loc8]
|
||||
// CHECK:STDOUT: %.loc14_11.1: ref %Abstract = class_element_access %d.ref, element0
|
||||
// CHECK:STDOUT: %.loc14_11.2: %Abstract = acquire_value %.loc14_11.1
|
||||
// CHECK:STDOUT: %a.ref: %Abstract.elem = name_ref a, @Abstract.%.loc4 [concrete = @Abstract.%.loc4]
|
||||
// CHECK:STDOUT: %a.ref: %Abstract.elem = name_ref a, @Abstract.%field_decl [concrete = @Abstract.%field_decl]
|
||||
// CHECK:STDOUT: %.loc14_16.1: ref %empty_struct_type = class_element_access %.loc14_11.2, element0
|
||||
// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete = constants.%empty_struct]
|
||||
// CHECK:STDOUT: %.loc14_16.2: %empty_struct_type = converted %.loc14_16.1, %empty_struct [concrete = constants.%empty_struct]
|
||||
@@ -858,7 +873,7 @@ fn Assign(ref a: Abstract) {
|
||||
// CHECK:STDOUT: fn @Access(%d.param: %Derived) -> out %return.param: %empty_struct_type {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %d.ref: %Derived = name_ref d, %d
|
||||
// CHECK:STDOUT: %a.ref: %Abstract.elem = name_ref a, @Abstract.%.loc4 [concrete = @Abstract.%.loc4]
|
||||
// CHECK:STDOUT: %a.ref: %Abstract.elem = name_ref a, @Abstract.%field_decl [concrete = @Abstract.%field_decl]
|
||||
// CHECK:STDOUT: %.loc18_11.1: %Abstract = as_compatible %d.ref
|
||||
// CHECK:STDOUT: %.loc18_11.2: ref %Abstract = class_element_access %.loc18_11.1, element0
|
||||
// CHECK:STDOUT: %.loc18_11.3: ref %Abstract = converted %d.ref, %.loc18_11.2
|
||||
|
||||
@@ -122,6 +122,7 @@ var v5: {.m: Abstract};
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete]
|
||||
// CHECK:STDOUT: %Contains: type = class_type @Contains [concrete]
|
||||
// CHECK:STDOUT: %struct_type.m1.868: type = struct_type {.m1: %Abstract1} [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -142,14 +143,17 @@ var v5: {.m: Abstract};
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @Contains {
|
||||
// CHECK:STDOUT: %.loc13: <error> = field_decl a, element0 [concrete]
|
||||
// CHECK:STDOUT: %field_decl: <error> = field_decl a, element0, %struct_type.m1 in [concrete] {
|
||||
// CHECK:STDOUT: %Abstract1.ref: type = name_ref Abstract1, file.%Abstract1.decl [concrete = constants.%Abstract1]
|
||||
// CHECK:STDOUT: %struct_type.m1: type = struct_type {.m1: %Abstract1} [concrete = constants.%struct_type.m1.868]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = constants.%Contains
|
||||
// CHECK:STDOUT: .Abstract1 = <poisoned>
|
||||
// CHECK:STDOUT: .a = %.loc13
|
||||
// CHECK:STDOUT: .a = %field_decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: --- fail_abstract_var.carbon
|
||||
|
||||
@@ -132,6 +132,9 @@ fn Var5() {
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete]
|
||||
// CHECK:STDOUT: %Contains: type = class_type @Contains [concrete]
|
||||
// CHECK:STDOUT: %tuple.type.85c: type = tuple_type (type) [concrete]
|
||||
// CHECK:STDOUT: %tuple: %tuple.type.85c = tuple_value (%Abstract1) [concrete]
|
||||
// CHECK:STDOUT: %tuple.type.b06: type = tuple_type (%Abstract1) [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
@@ -161,14 +164,18 @@ fn Var5() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @Contains {
|
||||
// CHECK:STDOUT: %.loc13: <error> = field_decl a, element0 [concrete]
|
||||
// CHECK:STDOUT: %field_decl: <error> = field_decl a, element0, %.loc13_21.2 in [concrete] {
|
||||
// CHECK:STDOUT: %Abstract1.ref: type = name_ref Abstract1, file.%Abstract1.decl [concrete = constants.%Abstract1]
|
||||
// CHECK:STDOUT: %.loc13_21.1: %tuple.type.85c = tuple_literal (%Abstract1.ref) [concrete = constants.%tuple]
|
||||
// CHECK:STDOUT: %.loc13_21.2: type = converted %.loc13_21.1, constants.%tuple.type.b06 [concrete = constants.%tuple.type.b06]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = constants.%Contains
|
||||
// CHECK:STDOUT: .Abstract1 = <poisoned>
|
||||
// CHECK:STDOUT: .a = %.loc13
|
||||
// CHECK:STDOUT: .a = %field_decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: --- fail_abstract_var.carbon
|
||||
|
||||
@@ -192,7 +192,7 @@ class A {
|
||||
// CHECK:STDOUT: %struct: %struct_type.radius.f47 = struct_value (%int_5.64b) [concrete]
|
||||
// CHECK:STDOUT: %Circle.val: %Circle = struct_value (%int_5.eef) [concrete]
|
||||
// CHECK:STDOUT: %circle.patt: %pattern_type.f70 = value_binding_pattern circle [concrete]
|
||||
// CHECK:STDOUT: %radius.patt.a1f: %pattern_type.6b6 = value_binding_pattern radius [concrete]
|
||||
// CHECK:STDOUT: %radius.patt: %pattern_type.6b6 = value_binding_pattern radius [concrete]
|
||||
// CHECK:STDOUT: %Destroy.Op.type.1d8f74.4: type = fn_type @Destroy.Op.loc20_36.4 [concrete]
|
||||
// CHECK:STDOUT: %Destroy.Op.1a2547.4: %Destroy.Op.type.1d8f74.4 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
@@ -208,7 +208,7 @@ class A {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = constants.%Circle
|
||||
// CHECK:STDOUT: .radius [private] = %.loc4
|
||||
// CHECK:STDOUT: .radius [private] = %field_decl
|
||||
// CHECK:STDOUT: .SOME_INTERNAL_CONSTANT [private] = %SOME_INTERNAL_CONSTANT
|
||||
// CHECK:STDOUT: .SomeInternalFunction [private] = %Circle.SomeInternalFunction.decl
|
||||
// CHECK:STDOUT: .Make = %Circle.Make.decl
|
||||
@@ -249,7 +249,7 @@ class A {
|
||||
// CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %radius: %i32 = wrapper_binding radius, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %radius.patt: %pattern_type.6b6 = value_binding_pattern radius [concrete = constants.%radius.patt.a1f]
|
||||
// CHECK:STDOUT: %radius.patt: %pattern_type.6b6 = value_binding_pattern radius [concrete = constants.%radius.patt]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %circle.ref.loc36: %Circle = name_ref circle, %circle
|
||||
// CHECK:STDOUT: %radius.ref.loc36: <error> = name_ref radius, <error> [concrete = <error>]
|
||||
@@ -288,7 +288,7 @@ class A {
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.6b6: type = pattern_type %i32 [concrete]
|
||||
// CHECK:STDOUT: %x.patt.939: %pattern_type.6b6 = value_binding_pattern x [concrete]
|
||||
// CHECK:STDOUT: %x.patt: %pattern_type.6b6 = value_binding_pattern x [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @Run() {
|
||||
@@ -298,7 +298,7 @@ class A {
|
||||
// CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %x: %i32 = wrapper_binding x, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %x.patt: %pattern_type.6b6 = value_binding_pattern x [concrete = constants.%x.patt.939]
|
||||
// CHECK:STDOUT: %x.patt: %pattern_type.6b6 = value_binding_pattern x [concrete = constants.%x.patt]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: <elided>
|
||||
// CHECK:STDOUT: }
|
||||
@@ -336,7 +336,7 @@ class A {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = constants.%Circle
|
||||
// CHECK:STDOUT: .radius [private] = %.loc4
|
||||
// CHECK:STDOUT: .radius [private] = %field_decl
|
||||
// CHECK:STDOUT: .GetRadius = %Circle.GetRadius.decl
|
||||
// CHECK:STDOUT: .SomeInternalFunction [private] = %Circle.SomeInternalFunction.decl
|
||||
// CHECK:STDOUT: .Compute = %Circle.Compute.decl
|
||||
@@ -345,7 +345,7 @@ class A {
|
||||
// CHECK:STDOUT: fn @Circle.GetRadius(%self.param: %Circle) -> out %return.param: %i32 {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %self.ref: %Circle = name_ref self, %self
|
||||
// CHECK:STDOUT: %radius.ref: %Circle.elem = name_ref radius, @Circle.%.loc4 [concrete = @Circle.%.loc4]
|
||||
// CHECK:STDOUT: %radius.ref: %Circle.elem = name_ref radius, @Circle.%field_decl [concrete = @Circle.%field_decl]
|
||||
// CHECK:STDOUT: %.loc8_16.1: ref %i32 = class_element_access %self.ref, element0
|
||||
// CHECK:STDOUT: %.loc8_16.2: %i32 = acquire_value %.loc8_16.1
|
||||
// CHECK:STDOUT: %impl.elem0: %.737 = impl_witness_access constants.%Copy.impl_witness.b51, element0 [concrete = constants.%Int.as.Copy.impl.Op.4f6]
|
||||
|
||||
+28
-16
@@ -349,15 +349,19 @@ class B {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @Shape {
|
||||
// CHECK:STDOUT: %.loc5: %Shape.elem = field_decl x, element0 [concrete]
|
||||
// CHECK:STDOUT: %.loc6: %Shape.elem = field_decl y, element1 [concrete]
|
||||
// CHECK:STDOUT: %field_decl.loc5: %Shape.elem = field_decl x, element0, %i32.loc5 in [concrete] {
|
||||
// CHECK:STDOUT: %i32.loc5: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %field_decl.loc6: %Shape.elem = field_decl y, element1, %i32.loc6 in [concrete] {
|
||||
// CHECK:STDOUT: %i32.loc6: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness constants.%struct_type.x.y [concrete = constants.%complete_type.292]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = constants.%Shape
|
||||
// CHECK:STDOUT: .x [protected] = %.loc5
|
||||
// CHECK:STDOUT: .y [protected] = %.loc6
|
||||
// CHECK:STDOUT: .x [protected] = %field_decl.loc5
|
||||
// CHECK:STDOUT: .y [protected] = %field_decl.loc6
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @Circle {
|
||||
@@ -396,13 +400,13 @@ class B {
|
||||
// CHECK:STDOUT: fn @Circle.GetPosition(%self.param: %Circle) -> out %return.param: %tuple.type.e55 {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %self.ref.loc13_13: %Circle = name_ref self, %self
|
||||
// CHECK:STDOUT: %x.ref: %Shape.elem = name_ref x, @Shape.%.loc5 [concrete = @Shape.%.loc5]
|
||||
// CHECK:STDOUT: %x.ref: %Shape.elem = name_ref x, @Shape.%field_decl.loc5 [concrete = @Shape.%field_decl.loc5]
|
||||
// CHECK:STDOUT: %.loc13_17.1: %Shape = as_compatible %self.ref.loc13_13
|
||||
// CHECK:STDOUT: %.loc13_17.2: ref %Shape = class_element_access %.loc13_17.1, element0
|
||||
// CHECK:STDOUT: %.loc13_17.3: ref %Shape = converted %self.ref.loc13_13, %.loc13_17.2
|
||||
// CHECK:STDOUT: %.loc13_17.4: ref %i32 = class_element_access %.loc13_17.3, element0
|
||||
// CHECK:STDOUT: %self.ref.loc13_21: %Circle = name_ref self, %self
|
||||
// CHECK:STDOUT: %y.ref: %Shape.elem = name_ref y, @Shape.%.loc6 [concrete = @Shape.%.loc6]
|
||||
// CHECK:STDOUT: %y.ref: %Shape.elem = name_ref y, @Shape.%field_decl.loc6 [concrete = @Shape.%field_decl.loc6]
|
||||
// CHECK:STDOUT: %.loc13_25.1: %Shape = as_compatible %self.ref.loc13_21
|
||||
// CHECK:STDOUT: %.loc13_25.2: ref %Shape = class_element_access %.loc13_25.1, element0
|
||||
// CHECK:STDOUT: %.loc13_25.3: ref %Shape = converted %self.ref.loc13_21, %.loc13_25.2
|
||||
@@ -793,13 +797,15 @@ class B {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @Shape {
|
||||
// CHECK:STDOUT: %.loc5: %Shape.elem = field_decl y, element0 [concrete]
|
||||
// CHECK:STDOUT: %field_decl: %Shape.elem = field_decl y, element0, %i32 in [concrete] {
|
||||
// CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness constants.%struct_type.y [concrete = constants.%complete_type.620]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = constants.%Shape
|
||||
// CHECK:STDOUT: .y [private] = %.loc5
|
||||
// CHECK:STDOUT: .y [private] = %field_decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @Square {
|
||||
@@ -1407,7 +1413,9 @@ class B {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @B {
|
||||
// CHECK:STDOUT: %.loc14: %B.elem = field_decl internal, element0 [concrete]
|
||||
// CHECK:STDOUT: %field_decl: %B.elem = field_decl internal, element0, %Internal.ref in [concrete] {
|
||||
// CHECK:STDOUT: %Internal.ref: type = name_ref Internal, file.%Internal.decl [concrete = constants.%Internal]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %B.G.decl: %B.G.type = fn_decl @B.G [concrete = constants.%B.G] {
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.6b6 = out_param_pattern [concrete = constants.%return.param_patt.a9a]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32 [concrete = constants.%return.patt.e1b]
|
||||
@@ -1437,7 +1445,7 @@ class B {
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = constants.%B
|
||||
// CHECK:STDOUT: .Internal = <poisoned>
|
||||
// CHECK:STDOUT: .internal [private] = %.loc14
|
||||
// CHECK:STDOUT: .internal [private] = %field_decl
|
||||
// CHECK:STDOUT: .G = %B.G.decl
|
||||
// CHECK:STDOUT: .SomeFunc = %B.SomeFunc.decl
|
||||
// CHECK:STDOUT: .A = <poisoned>
|
||||
@@ -1455,7 +1463,7 @@ class B {
|
||||
// CHECK:STDOUT: fn @B.SomeFunc(%self.param: %B) -> out %return.param: %i32 {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %self.ref: %B = name_ref self, %self
|
||||
// CHECK:STDOUT: %internal.ref: %B.elem = name_ref internal, @B.%.loc14 [concrete = @B.%.loc14]
|
||||
// CHECK:STDOUT: %internal.ref: %B.elem = name_ref internal, @B.%field_decl [concrete = @B.%field_decl]
|
||||
// CHECK:STDOUT: %.loc44_16.1: ref %Internal = class_element_access %self.ref, element0
|
||||
// CHECK:STDOUT: %.loc44_16.2: %Internal = acquire_value %.loc44_16.1
|
||||
// CHECK:STDOUT: %INTERNAL_CONSTANT.ref: <error> = name_ref INTERNAL_CONSTANT, <error> [concrete = <error>]
|
||||
@@ -1505,13 +1513,15 @@ class B {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @A {
|
||||
// CHECK:STDOUT: %.loc5: %A.elem = field_decl x, element0 [concrete]
|
||||
// CHECK:STDOUT: %field_decl: %A.elem = field_decl x, element0, %i32 in [concrete] {
|
||||
// CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness constants.%struct_type.x [concrete = constants.%complete_type.0c6]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = constants.%A
|
||||
// CHECK:STDOUT: .x [private] = %.loc5
|
||||
// CHECK:STDOUT: .x [private] = %field_decl
|
||||
// CHECK:STDOUT: .A = <poisoned>
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -1588,13 +1598,15 @@ class B {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @A {
|
||||
// CHECK:STDOUT: %.loc5: %A.elem = field_decl x, element0 [concrete]
|
||||
// CHECK:STDOUT: %field_decl: %A.elem = field_decl x, element0, %i32 in [concrete] {
|
||||
// CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness constants.%struct_type.x [concrete = constants.%complete_type.0c6]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = constants.%A
|
||||
// CHECK:STDOUT: .x [protected] = %.loc5
|
||||
// CHECK:STDOUT: .x [protected] = %field_decl
|
||||
// CHECK:STDOUT: .A = <poisoned>
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -1624,7 +1636,7 @@ class B {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %self.ref: %B = name_ref self, %self
|
||||
// CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [concrete = constants.%A]
|
||||
// CHECK:STDOUT: %x.ref: %A.elem = name_ref x, @A.%.loc5 [concrete = @A.%.loc5]
|
||||
// CHECK:STDOUT: %x.ref: %A.elem = name_ref x, @A.%field_decl [concrete = @A.%field_decl]
|
||||
// CHECK:STDOUT: %.loc12_9.1: %A = as_compatible %self.ref
|
||||
// CHECK:STDOUT: %.loc12_9.2: ref %A = class_element_access %.loc12_9.1, element0
|
||||
// CHECK:STDOUT: %.loc12_9.3: ref %A = converted %self.ref, %.loc12_9.2
|
||||
|
||||
+8
-4
@@ -108,15 +108,19 @@ interface I {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @SomeClass {
|
||||
// CHECK:STDOUT: %.loc5: %SomeClass.elem = field_decl a, element0 [concrete]
|
||||
// CHECK:STDOUT: %.loc6: %SomeClass.elem = field_decl b, element1 [concrete]
|
||||
// CHECK:STDOUT: %field_decl.loc5: %SomeClass.elem = field_decl a, element0, %i32.loc5 in [concrete] {
|
||||
// CHECK:STDOUT: %i32.loc5: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %field_decl.loc6: %SomeClass.elem = field_decl b, element1, %i32.loc6 in [concrete] {
|
||||
// CHECK:STDOUT: %i32.loc6: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness constants.%struct_type.a.b [concrete = constants.%complete_type.7b9]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = constants.%SomeClass
|
||||
// CHECK:STDOUT: .a = %.loc5
|
||||
// CHECK:STDOUT: .b = %.loc6
|
||||
// CHECK:STDOUT: .a = %field_decl.loc5
|
||||
// CHECK:STDOUT: .b = %field_decl.loc6
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @SomeClassAdapter {
|
||||
|
||||
+22
-14
@@ -163,7 +163,7 @@ fn F(a: IntAdapter) -> i32 {
|
||||
// CHECK:STDOUT: %struct_type.a.b: type = struct_type {.a: %i32, .b: %i32} [concrete]
|
||||
// CHECK:STDOUT: %complete_type.7b9: <witness> = complete_type_witness %struct_type.a.b [concrete]
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type.54b = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %a.patt.80b: %pattern_type.54b = wrapper_binding_pattern a, %a.param_patt [concrete]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.54b = wrapper_binding_pattern a, %a.param_patt [concrete]
|
||||
// CHECK:STDOUT: %TestStaticMemberFunction.type: type = fn_type @TestStaticMemberFunction [concrete]
|
||||
// CHECK:STDOUT: %TestStaticMemberFunction: %TestStaticMemberFunction.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %TestAdapterMethod.type: type = fn_type @TestAdapterMethod [concrete]
|
||||
@@ -193,7 +193,7 @@ fn F(a: IntAdapter) -> i32 {
|
||||
// CHECK:STDOUT: %SomeClassAdapter.decl.loc15: type = class_decl @SomeClassAdapter [concrete = constants.%SomeClassAdapter] {} {}
|
||||
// CHECK:STDOUT: %TestStaticMemberFunction.decl: %TestStaticMemberFunction.type = fn_decl @TestStaticMemberFunction [concrete = constants.%TestStaticMemberFunction] {
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type.54b = value_param_pattern [concrete = constants.%a.param_patt]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.54b = wrapper_binding_pattern a, %a.param_patt [concrete = constants.%a.patt.80b]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.54b = wrapper_binding_pattern a, %a.param_patt [concrete = constants.%a.patt]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %a.param: %SomeClassAdapter = value_param call_param0
|
||||
// CHECK:STDOUT: %SomeClassAdapter.ref: type = name_ref SomeClassAdapter, file.%SomeClassAdapter.decl.loc4 [concrete = constants.%SomeClassAdapter]
|
||||
@@ -201,7 +201,7 @@ fn F(a: IntAdapter) -> i32 {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %TestAdapterMethod.decl: %TestAdapterMethod.type = fn_decl @TestAdapterMethod [concrete = constants.%TestAdapterMethod] {
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type.54b = value_param_pattern [concrete = constants.%a.param_patt]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.54b = wrapper_binding_pattern a, %a.param_patt [concrete = constants.%a.patt.80b]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.54b = wrapper_binding_pattern a, %a.param_patt [concrete = constants.%a.patt]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %a.param: %SomeClassAdapter = value_param call_param0
|
||||
// CHECK:STDOUT: %SomeClassAdapter.ref: type = name_ref SomeClassAdapter, file.%SomeClassAdapter.decl.loc4 [concrete = constants.%SomeClassAdapter]
|
||||
@@ -224,8 +224,12 @@ fn F(a: IntAdapter) -> i32 {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @SomeClass {
|
||||
// CHECK:STDOUT: %.loc7: %SomeClass.elem = field_decl a, element0 [concrete]
|
||||
// CHECK:STDOUT: %.loc8: %SomeClass.elem = field_decl b, element1 [concrete]
|
||||
// CHECK:STDOUT: %field_decl.loc7: %SomeClass.elem = field_decl a, element0, %i32.loc7 in [concrete] {
|
||||
// CHECK:STDOUT: %i32.loc7: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %field_decl.loc8: %SomeClass.elem = field_decl b, element1, %i32.loc8 in [concrete] {
|
||||
// CHECK:STDOUT: %i32.loc8: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %SomeClass.StaticMemberFunction.decl: %SomeClass.StaticMemberFunction.type = fn_decl @SomeClass.StaticMemberFunction [concrete = constants.%SomeClass.StaticMemberFunction] {} {}
|
||||
// CHECK:STDOUT: %SomeClass.AdapterMethod.decl: %SomeClass.AdapterMethod.type = fn_decl @SomeClass.AdapterMethod [concrete = constants.%SomeClass.AdapterMethod] {
|
||||
// CHECK:STDOUT: %self.param_patt: %pattern_type.54b = value_param_pattern [concrete = constants.%self.param_patt]
|
||||
@@ -240,8 +244,8 @@ fn F(a: IntAdapter) -> i32 {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = constants.%SomeClass
|
||||
// CHECK:STDOUT: .a = %.loc7
|
||||
// CHECK:STDOUT: .b = %.loc8
|
||||
// CHECK:STDOUT: .a = %field_decl.loc7
|
||||
// CHECK:STDOUT: .b = %field_decl.loc8
|
||||
// CHECK:STDOUT: .StaticMemberFunction = %SomeClass.StaticMemberFunction.decl
|
||||
// CHECK:STDOUT: .SomeClassAdapter = <poisoned>
|
||||
// CHECK:STDOUT: .AdapterMethod = %SomeClass.AdapterMethod.decl
|
||||
@@ -376,7 +380,7 @@ fn F(a: IntAdapter) -> i32 {
|
||||
// CHECK:STDOUT: %SomeClassAdapter: type = class_type @SomeClassAdapter [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.54b: type = pattern_type %SomeClassAdapter [concrete]
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type.54b = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %a.patt.80b: %pattern_type.54b = wrapper_binding_pattern a, %a.param_patt [concrete]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.54b = wrapper_binding_pattern a, %a.param_patt [concrete]
|
||||
// CHECK:STDOUT: %.795: Core.Form = init_form %i32 [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt.a9a: %pattern_type.6b6 = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt.e1b: %pattern_type.6b6 = return_slot_pattern %return.param_patt.a9a, %i32 [concrete]
|
||||
@@ -409,7 +413,7 @@ fn F(a: IntAdapter) -> i32 {
|
||||
// CHECK:STDOUT: %SomeClassAdapter.decl: type = class_decl @SomeClassAdapter [concrete = constants.%SomeClassAdapter] {} {}
|
||||
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type.54b = value_param_pattern [concrete = constants.%a.param_patt]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.54b = wrapper_binding_pattern a, %a.param_patt [concrete = constants.%a.patt.80b]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.54b = wrapper_binding_pattern a, %a.param_patt [concrete = constants.%a.patt]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.6b6 = out_param_pattern [concrete = constants.%return.param_patt.a9a]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32 [concrete = constants.%return.patt.e1b]
|
||||
// CHECK:STDOUT: } {
|
||||
@@ -424,15 +428,19 @@ fn F(a: IntAdapter) -> i32 {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @SomeClass {
|
||||
// CHECK:STDOUT: %.loc5: %SomeClass.elem = field_decl a, element0 [concrete]
|
||||
// CHECK:STDOUT: %.loc6: %SomeClass.elem = field_decl b, element1 [concrete]
|
||||
// CHECK:STDOUT: %field_decl.loc5: %SomeClass.elem = field_decl a, element0, %i32.loc5 in [concrete] {
|
||||
// CHECK:STDOUT: %i32.loc5: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %field_decl.loc6: %SomeClass.elem = field_decl b, element1, %i32.loc6 in [concrete] {
|
||||
// CHECK:STDOUT: %i32.loc6: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness constants.%struct_type.a.b [concrete = constants.%complete_type.7b9]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = constants.%SomeClass
|
||||
// CHECK:STDOUT: .a = %.loc5
|
||||
// CHECK:STDOUT: .b = %.loc6
|
||||
// CHECK:STDOUT: .a = %field_decl.loc5
|
||||
// CHECK:STDOUT: .b = %field_decl.loc6
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @SomeClassAdapter {
|
||||
@@ -451,7 +459,7 @@ fn F(a: IntAdapter) -> i32 {
|
||||
// CHECK:STDOUT: fn @F(%a.param: %SomeClassAdapter) -> out %return.param: %i32 {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %a.ref: %SomeClassAdapter = name_ref a, %a
|
||||
// CHECK:STDOUT: %b.ref: %SomeClass.elem = name_ref b, @SomeClass.%.loc6 [concrete = @SomeClass.%.loc6]
|
||||
// CHECK:STDOUT: %b.ref: %SomeClass.elem = name_ref b, @SomeClass.%field_decl.loc6 [concrete = @SomeClass.%field_decl.loc6]
|
||||
// CHECK:STDOUT: %.loc21_11.1: %SomeClass = converted %a.ref, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: %.loc21_11.2: %i32 = class_element_access <error>, element1 [concrete = <error>]
|
||||
// CHECK:STDOUT: return <error>
|
||||
|
||||
@@ -169,29 +169,37 @@ class AdaptWithBaseAndFields {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @AdaptWithField {
|
||||
// CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: adapt_decl %i32 [concrete]
|
||||
// CHECK:STDOUT: %.loc13: %AdaptWithField.elem = field_decl n, element<none> [concrete]
|
||||
// CHECK:STDOUT: %i32.loc8: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: adapt_decl %i32.loc8 [concrete]
|
||||
// CHECK:STDOUT: %field_decl: %AdaptWithField.elem = field_decl n, element<none>, %i32.loc13 in [concrete] {
|
||||
// CHECK:STDOUT: %i32.loc13: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: complete_type_witness = <error>
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = constants.%AdaptWithField
|
||||
// CHECK:STDOUT: .n = %.loc13
|
||||
// CHECK:STDOUT: .n = %field_decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @AdaptWithFields {
|
||||
// CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: adapt_decl %i32 [concrete]
|
||||
// CHECK:STDOUT: %.loc25: %AdaptWithFields.elem = field_decl a, element<none> [concrete]
|
||||
// CHECK:STDOUT: %.loc26: %AdaptWithFields.elem = field_decl b, element<none> [concrete]
|
||||
// CHECK:STDOUT: %.loc27: %AdaptWithFields.elem = field_decl c, element<none> [concrete]
|
||||
// CHECK:STDOUT: %i32.loc20: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: adapt_decl %i32.loc20 [concrete]
|
||||
// CHECK:STDOUT: %field_decl.loc25: %AdaptWithFields.elem = field_decl a, element<none>, %i32.loc25 in [concrete] {
|
||||
// CHECK:STDOUT: %i32.loc25: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %field_decl.loc26: %AdaptWithFields.elem = field_decl b, element<none>, %i32.loc26 in [concrete] {
|
||||
// CHECK:STDOUT: %i32.loc26: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %field_decl.loc27: %AdaptWithFields.elem = field_decl c, element<none>, %i32.loc27 in [concrete] {
|
||||
// CHECK:STDOUT: %i32.loc27: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: complete_type_witness = <error>
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = constants.%AdaptWithFields
|
||||
// CHECK:STDOUT: .a = %.loc25
|
||||
// CHECK:STDOUT: .b = %.loc26
|
||||
// CHECK:STDOUT: .c = %.loc27
|
||||
// CHECK:STDOUT: .a = %field_decl.loc25
|
||||
// CHECK:STDOUT: .b = %field_decl.loc26
|
||||
// CHECK:STDOUT: .c = %field_decl.loc27
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: --- fail_adapt_with_base_and_fields.carbon
|
||||
@@ -241,7 +249,9 @@ class AdaptWithBaseAndFields {
|
||||
// CHECK:STDOUT: class @AdaptWithBaseAndFields {
|
||||
// CHECK:STDOUT: %Base.ref: type = name_ref Base, file.%Base.decl [concrete = constants.%Base]
|
||||
// CHECK:STDOUT: %.loc7: %AdaptWithBaseAndFields.elem.8fd = base_decl %Base.ref, element<none> [concrete]
|
||||
// CHECK:STDOUT: %.loc8: %AdaptWithBaseAndFields.elem.3f0 = field_decl n, element<none> [concrete]
|
||||
// CHECK:STDOUT: %field_decl: %AdaptWithBaseAndFields.elem.3f0 = field_decl n, element<none>, %i32 in [concrete] {
|
||||
// CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.loc16_10: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct]
|
||||
// CHECK:STDOUT: %.loc16_11: type = converted %.loc16_10, constants.%empty_struct_type [concrete = constants.%empty_struct_type]
|
||||
// CHECK:STDOUT: adapt_decl %.loc16_11 [concrete]
|
||||
@@ -251,7 +261,7 @@ class AdaptWithBaseAndFields {
|
||||
// CHECK:STDOUT: .Self = constants.%AdaptWithBaseAndFields
|
||||
// CHECK:STDOUT: .Base = <poisoned>
|
||||
// CHECK:STDOUT: .base = %.loc7
|
||||
// CHECK:STDOUT: .n = %.loc8
|
||||
// CHECK:STDOUT: .n = %field_decl
|
||||
// CHECK:STDOUT: extend %Base.ref
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
+24
-16
@@ -109,7 +109,7 @@ var e: C = MakeAdaptC();
|
||||
// CHECK:STDOUT: %complete_type.7b9: <witness> = complete_type_witness %struct_type.a.b.b4c [concrete]
|
||||
// CHECK:STDOUT: %AdaptC: type = class_type @AdaptC [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.98b: type = pattern_type %C [concrete]
|
||||
// CHECK:STDOUT: %a.patt.c32: %pattern_type.98b = value_binding_pattern a [concrete]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.98b = value_binding_pattern a [concrete]
|
||||
// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete]
|
||||
// CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [concrete]
|
||||
// CHECK:STDOUT: %struct_type.a.b.cfd: type = struct_type {.a: Core.IntLiteral, .b: Core.IntLiteral} [concrete]
|
||||
@@ -136,7 +136,7 @@ var e: C = MakeAdaptC();
|
||||
// CHECK:STDOUT: %C.val: %C = struct_value (%int_1.0c6, %int_2.295) [concrete]
|
||||
// CHECK:STDOUT: %.c76: ref %C = temporary invalid, %C.val [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.720: type = pattern_type %AdaptC [concrete]
|
||||
// CHECK:STDOUT: %b.patt.658: %pattern_type.720 = value_binding_pattern b [concrete]
|
||||
// CHECK:STDOUT: %b.patt: %pattern_type.720 = value_binding_pattern b [concrete]
|
||||
// CHECK:STDOUT: %c.patt: %pattern_type.98b = value_binding_pattern c [concrete]
|
||||
// CHECK:STDOUT: %.a44: Core.Form = init_form %C [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt.89a: %pattern_type.98b = out_param_pattern [concrete]
|
||||
@@ -207,12 +207,12 @@ var e: C = MakeAdaptC();
|
||||
// CHECK:STDOUT: %C.ref.loc13: type = name_ref C, %C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %a: %C = wrapper_binding a, %.loc13_27.11
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.98b = value_binding_pattern a [concrete = constants.%a.patt.c32]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.98b = value_binding_pattern a [concrete = constants.%a.patt]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %AdaptC.ref.loc15: type = name_ref AdaptC, %AdaptC.decl [concrete = constants.%AdaptC]
|
||||
// CHECK:STDOUT: %b: %AdaptC = wrapper_binding b, @__global_init.%.loc15_19.2
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %b.patt: %pattern_type.720 = value_binding_pattern b [concrete = constants.%b.patt.658]
|
||||
// CHECK:STDOUT: %b.patt: %pattern_type.720 = value_binding_pattern b [concrete = constants.%b.patt]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %C.ref.loc17: type = name_ref C, %C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %c: %C = wrapper_binding c, @__global_init.%.loc17_14.2
|
||||
@@ -254,15 +254,19 @@ var e: C = MakeAdaptC();
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @C {
|
||||
// CHECK:STDOUT: %.loc5: %C.elem = field_decl a, element0 [concrete]
|
||||
// CHECK:STDOUT: %.loc6: %C.elem = field_decl b, element1 [concrete]
|
||||
// CHECK:STDOUT: %field_decl.loc5: %C.elem = field_decl a, element0, %i32.loc5 in [concrete] {
|
||||
// CHECK:STDOUT: %i32.loc5: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %field_decl.loc6: %C.elem = field_decl b, element1, %i32.loc6 in [concrete] {
|
||||
// CHECK:STDOUT: %i32.loc6: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness constants.%struct_type.a.b.b4c [concrete = constants.%complete_type.7b9]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = constants.%C
|
||||
// CHECK:STDOUT: .a = %.loc5
|
||||
// CHECK:STDOUT: .b = %.loc6
|
||||
// CHECK:STDOUT: .a = %field_decl.loc5
|
||||
// CHECK:STDOUT: .b = %field_decl.loc6
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @AdaptC {
|
||||
@@ -323,7 +327,7 @@ var e: C = MakeAdaptC();
|
||||
// CHECK:STDOUT: %complete_type.7b9: <witness> = complete_type_witness %struct_type.a.b.b4c [concrete]
|
||||
// CHECK:STDOUT: %AdaptC: type = class_type @AdaptC [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.98b: type = pattern_type %C [concrete]
|
||||
// CHECK:STDOUT: %a.patt.c32: %pattern_type.98b = value_binding_pattern a [concrete]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.98b = value_binding_pattern a [concrete]
|
||||
// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete]
|
||||
// CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [concrete]
|
||||
// CHECK:STDOUT: %struct_type.a.b.cfd: type = struct_type {.a: Core.IntLiteral, .b: Core.IntLiteral} [concrete]
|
||||
@@ -350,7 +354,7 @@ var e: C = MakeAdaptC();
|
||||
// CHECK:STDOUT: %C.val: %C = struct_value (%int_1.0c6, %int_2.295) [concrete]
|
||||
// CHECK:STDOUT: %.c76: ref %C = temporary invalid, %C.val [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.720: type = pattern_type %AdaptC [concrete]
|
||||
// CHECK:STDOUT: %b.patt.658: %pattern_type.720 = value_binding_pattern b [concrete]
|
||||
// CHECK:STDOUT: %b.patt: %pattern_type.720 = value_binding_pattern b [concrete]
|
||||
// CHECK:STDOUT: %c.patt: %pattern_type.98b = value_binding_pattern c [concrete]
|
||||
// CHECK:STDOUT: %.a44: Core.Form = init_form %C [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt.89a: %pattern_type.98b = out_param_pattern [concrete]
|
||||
@@ -421,13 +425,13 @@ var e: C = MakeAdaptC();
|
||||
// CHECK:STDOUT: %C.ref.loc13: type = name_ref C, %C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %a: %C = wrapper_binding a, %.loc13_27.11
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.98b = value_binding_pattern a [concrete = constants.%a.patt.c32]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.98b = value_binding_pattern a [concrete = constants.%a.patt]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.loc24: %AdaptC = converted @__global_init.%a.ref, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: %AdaptC.ref.loc24: type = name_ref AdaptC, %AdaptC.decl [concrete = constants.%AdaptC]
|
||||
// CHECK:STDOUT: %b: %AdaptC = wrapper_binding b, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %b.patt: %pattern_type.720 = value_binding_pattern b [concrete = constants.%b.patt.658]
|
||||
// CHECK:STDOUT: %b.patt: %pattern_type.720 = value_binding_pattern b [concrete = constants.%b.patt]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.loc33: %C = converted @__global_init.%b.ref, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: %C.ref.loc33: type = name_ref C, %C.decl [concrete = constants.%C]
|
||||
@@ -470,15 +474,19 @@ var e: C = MakeAdaptC();
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @C {
|
||||
// CHECK:STDOUT: %.loc5: %C.elem = field_decl a, element0 [concrete]
|
||||
// CHECK:STDOUT: %.loc6: %C.elem = field_decl b, element1 [concrete]
|
||||
// CHECK:STDOUT: %field_decl.loc5: %C.elem = field_decl a, element0, %i32.loc5 in [concrete] {
|
||||
// CHECK:STDOUT: %i32.loc5: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %field_decl.loc6: %C.elem = field_decl b, element1, %i32.loc6 in [concrete] {
|
||||
// CHECK:STDOUT: %i32.loc6: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness constants.%struct_type.a.b.b4c [concrete = constants.%complete_type.7b9]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = constants.%C
|
||||
// CHECK:STDOUT: .a = %.loc5
|
||||
// CHECK:STDOUT: .b = %.loc6
|
||||
// CHECK:STDOUT: .a = %field_decl.loc5
|
||||
// CHECK:STDOUT: .b = %field_decl.loc6
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @AdaptC {
|
||||
|
||||
+4
-2
@@ -162,7 +162,9 @@ fn Run() -> i32 {
|
||||
// CHECK:STDOUT: %return.param.loc20: ref %i32 = out_param call_param1
|
||||
// CHECK:STDOUT: %return.loc20: ref %i32 = return_slot %return.param.loc20
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.loc22: %Class.elem = field_decl k, element0 [concrete]
|
||||
// CHECK:STDOUT: %field_decl: %Class.elem = field_decl k, element0, %i32 in [concrete] {
|
||||
// CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness constants.%struct_type.k [concrete = constants.%complete_type.d82]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
@@ -170,7 +172,7 @@ fn Run() -> i32 {
|
||||
// CHECK:STDOUT: .Self = constants.%Class
|
||||
// CHECK:STDOUT: .F = %Class.F.decl
|
||||
// CHECK:STDOUT: .G = %Class.G.decl
|
||||
// CHECK:STDOUT: .k = %.loc22
|
||||
// CHECK:STDOUT: .k = %field_decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @Class.F(%n.param: %i32) -> out %return.param: %i32 {
|
||||
|
||||
@@ -88,7 +88,9 @@ class C {
|
||||
// CHECK:STDOUT: %return.param: ref %i32 = out_param call_param1
|
||||
// CHECK:STDOUT: %return: ref %i32 = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.loc18: %C.elem = field_decl a, element0 [concrete]
|
||||
// CHECK:STDOUT: %field_decl: %C.elem = field_decl a, element0, %i32 in [concrete] {
|
||||
// CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness constants.%struct_type.a [concrete = constants.%complete_type.388]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
@@ -96,13 +98,13 @@ class C {
|
||||
// CHECK:STDOUT: .Self = constants.%C
|
||||
// CHECK:STDOUT: .C = <poisoned>
|
||||
// CHECK:STDOUT: .F = %C.F.decl
|
||||
// CHECK:STDOUT: .a = %.loc18
|
||||
// CHECK:STDOUT: .a = %field_decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @C.F(%c.param: %C) -> out %return.param: %i32 {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %c.ref: %C = name_ref c, %c
|
||||
// CHECK:STDOUT: %a.ref: %C.elem = name_ref a, @C.%.loc18 [concrete = @C.%.loc18]
|
||||
// CHECK:STDOUT: %a.ref: %C.elem = name_ref a, @C.%field_decl [concrete = @C.%field_decl]
|
||||
// CHECK:STDOUT: %.loc16_31.1: ref %i32 = class_element_access %c.ref, element0
|
||||
// CHECK:STDOUT: %.loc16_31.2: %i32 = acquire_value %.loc16_31.1
|
||||
// CHECK:STDOUT: %impl.elem0: %.737 = impl_witness_access constants.%Copy.impl_witness.b51, element0 [concrete = constants.%Int.as.Copy.impl.Op.4f6]
|
||||
|
||||
+27
-17
@@ -61,7 +61,7 @@ fn AccessBaseIndirect(p: Derived*) -> i32* {
|
||||
// CHECK:STDOUT: %complete_type.9b3: <witness> = complete_type_witness %struct_type.base.d.e.26c [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.746: type = pattern_type %Derived [concrete]
|
||||
// CHECK:STDOUT: %d.param_patt: %pattern_type.746 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %d.patt.2df: %pattern_type.746 = wrapper_binding_pattern d, %d.param_patt [concrete]
|
||||
// CHECK:STDOUT: %d.patt: %pattern_type.746 = wrapper_binding_pattern d, %d.param_patt [concrete]
|
||||
// CHECK:STDOUT: %.795: Core.Form = init_form %i32 [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt.a9a: %pattern_type.6b6 = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt.e1b: %pattern_type.6b6 = return_slot_pattern %return.param_patt.a9a, %i32 [concrete]
|
||||
@@ -134,7 +134,7 @@ fn AccessBaseIndirect(p: Derived*) -> i32* {
|
||||
// CHECK:STDOUT: %Derived.decl: type = class_decl @Derived [concrete = constants.%Derived] {} {}
|
||||
// CHECK:STDOUT: %AccessDerived.decl: %AccessDerived.type = fn_decl @AccessDerived [concrete = constants.%AccessDerived] {
|
||||
// CHECK:STDOUT: %d.param_patt: %pattern_type.746 = value_param_pattern [concrete = constants.%d.param_patt]
|
||||
// CHECK:STDOUT: %d.patt: %pattern_type.746 = wrapper_binding_pattern d, %d.param_patt [concrete = constants.%d.patt.2df]
|
||||
// CHECK:STDOUT: %d.patt: %pattern_type.746 = wrapper_binding_pattern d, %d.param_patt [concrete = constants.%d.patt]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.6b6 = out_param_pattern [concrete = constants.%return.param_patt.a9a]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32 [concrete = constants.%return.patt.e1b]
|
||||
// CHECK:STDOUT: } {
|
||||
@@ -148,7 +148,7 @@ fn AccessBaseIndirect(p: Derived*) -> i32* {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %AccessBase.decl: %AccessBase.type = fn_decl @AccessBase [concrete = constants.%AccessBase] {
|
||||
// CHECK:STDOUT: %d.param_patt: %pattern_type.746 = value_param_pattern [concrete = constants.%d.param_patt]
|
||||
// CHECK:STDOUT: %d.patt: %pattern_type.746 = wrapper_binding_pattern d, %d.param_patt [concrete = constants.%d.patt.2df]
|
||||
// CHECK:STDOUT: %d.patt: %pattern_type.746 = wrapper_binding_pattern d, %d.param_patt [concrete = constants.%d.patt]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.6b6 = out_param_pattern [concrete = constants.%return.param_patt.a9a]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32 [concrete = constants.%return.patt.e1b]
|
||||
// CHECK:STDOUT: } {
|
||||
@@ -199,24 +199,34 @@ fn AccessBaseIndirect(p: Derived*) -> i32* {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @Base {
|
||||
// CHECK:STDOUT: %.loc16: %Base.elem = field_decl a, element0 [concrete]
|
||||
// CHECK:STDOUT: %.loc17: %Base.elem = field_decl b, element1 [concrete]
|
||||
// CHECK:STDOUT: %.loc18: %Base.elem = field_decl c, element2 [concrete]
|
||||
// CHECK:STDOUT: %field_decl.loc16: %Base.elem = field_decl a, element0, %i32.loc16 in [concrete] {
|
||||
// CHECK:STDOUT: %i32.loc16: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %field_decl.loc17: %Base.elem = field_decl b, element1, %i32.loc17 in [concrete] {
|
||||
// CHECK:STDOUT: %i32.loc17: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %field_decl.loc18: %Base.elem = field_decl c, element2, %i32.loc18 in [concrete] {
|
||||
// CHECK:STDOUT: %i32.loc18: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness constants.%struct_type.a.b.c [concrete = constants.%complete_type.bae]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = constants.%Base
|
||||
// CHECK:STDOUT: .a = %.loc16
|
||||
// CHECK:STDOUT: .b = %.loc17
|
||||
// CHECK:STDOUT: .c = %.loc18
|
||||
// CHECK:STDOUT: .a = %field_decl.loc16
|
||||
// CHECK:STDOUT: .b = %field_decl.loc17
|
||||
// CHECK:STDOUT: .c = %field_decl.loc18
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @Derived {
|
||||
// CHECK:STDOUT: %Base.ref: type = name_ref Base, file.%Base.decl [concrete = constants.%Base]
|
||||
// CHECK:STDOUT: %.loc22: %Derived.elem.93c = base_decl %Base.ref, element0 [concrete]
|
||||
// CHECK:STDOUT: %.loc24: %Derived.elem.577 = field_decl d, element1 [concrete]
|
||||
// CHECK:STDOUT: %.loc25: %Derived.elem.577 = field_decl e, element2 [concrete]
|
||||
// CHECK:STDOUT: %field_decl.loc24: %Derived.elem.577 = field_decl d, element1, %i32.loc24 in [concrete] {
|
||||
// CHECK:STDOUT: %i32.loc24: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %field_decl.loc25: %Derived.elem.577 = field_decl e, element2, %i32.loc25 in [concrete] {
|
||||
// CHECK:STDOUT: %i32.loc25: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness constants.%struct_type.base.d.e.26c [concrete = constants.%complete_type.9b3]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
@@ -224,8 +234,8 @@ fn AccessBaseIndirect(p: Derived*) -> i32* {
|
||||
// CHECK:STDOUT: .Self = constants.%Derived
|
||||
// CHECK:STDOUT: .Base = <poisoned>
|
||||
// CHECK:STDOUT: .base = %.loc22
|
||||
// CHECK:STDOUT: .d = %.loc24
|
||||
// CHECK:STDOUT: .e = %.loc25
|
||||
// CHECK:STDOUT: .d = %field_decl.loc24
|
||||
// CHECK:STDOUT: .e = %field_decl.loc25
|
||||
// CHECK:STDOUT: extend %Base.ref
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -233,7 +243,7 @@ fn AccessBaseIndirect(p: Derived*) -> i32* {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %d.ref.loc29_10: %Derived = name_ref d, %d
|
||||
// CHECK:STDOUT: %Derived.ref.loc29: type = name_ref Derived, file.%Derived.decl [concrete = constants.%Derived]
|
||||
// CHECK:STDOUT: %d.ref.loc29_20: %Derived.elem.577 = name_ref d, @Derived.%.loc24 [concrete = @Derived.%.loc24]
|
||||
// CHECK:STDOUT: %d.ref.loc29_20: %Derived.elem.577 = name_ref d, @Derived.%field_decl.loc24 [concrete = @Derived.%field_decl.loc24]
|
||||
// CHECK:STDOUT: %.loc29_11.1: ref %i32 = class_element_access %d.ref.loc29_10, element1
|
||||
// CHECK:STDOUT: %.loc29_11.2: %i32 = acquire_value %.loc29_11.1
|
||||
// CHECK:STDOUT: %impl.elem0: %.737 = impl_witness_access constants.%Copy.impl_witness.b51, element0 [concrete = constants.%Int.as.Copy.impl.Op.4f6]
|
||||
@@ -248,7 +258,7 @@ fn AccessBaseIndirect(p: Derived*) -> i32* {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %d.ref: %Derived = name_ref d, %d
|
||||
// CHECK:STDOUT: %Base.ref: type = name_ref Base, file.%Base.decl [concrete = constants.%Base]
|
||||
// CHECK:STDOUT: %b.ref: %Base.elem = name_ref b, @Base.%.loc17 [concrete = @Base.%.loc17]
|
||||
// CHECK:STDOUT: %b.ref: %Base.elem = name_ref b, @Base.%field_decl.loc17 [concrete = @Base.%field_decl.loc17]
|
||||
// CHECK:STDOUT: %.loc33_11.1: %Base = as_compatible %d.ref
|
||||
// CHECK:STDOUT: %.loc33_11.2: ref %Base = class_element_access %.loc33_11.1, element0
|
||||
// CHECK:STDOUT: %.loc33_11.3: ref %Base = converted %d.ref, %.loc33_11.2
|
||||
@@ -266,7 +276,7 @@ fn AccessBaseIndirect(p: Derived*) -> i32* {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %p.ref: %ptr.64c = name_ref p, %p
|
||||
// CHECK:STDOUT: %Derived.ref.loc37: type = name_ref Derived, file.%Derived.decl [concrete = constants.%Derived]
|
||||
// CHECK:STDOUT: %d.ref: %Derived.elem.577 = name_ref d, @Derived.%.loc24 [concrete = @Derived.%.loc24]
|
||||
// CHECK:STDOUT: %d.ref: %Derived.elem.577 = name_ref d, @Derived.%field_decl.loc24 [concrete = @Derived.%field_decl.loc24]
|
||||
// CHECK:STDOUT: %.loc37_12.1: ref %Derived = deref %p.ref
|
||||
// CHECK:STDOUT: %.loc37_12.2: ref %i32 = class_element_access %.loc37_12.1, element1
|
||||
// CHECK:STDOUT: %addr: %ptr.d08 = addr_of %.loc37_12.2
|
||||
@@ -282,7 +292,7 @@ fn AccessBaseIndirect(p: Derived*) -> i32* {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %p.ref: %ptr.64c = name_ref p, %p
|
||||
// CHECK:STDOUT: %Base.ref: type = name_ref Base, file.%Base.decl [concrete = constants.%Base]
|
||||
// CHECK:STDOUT: %b.ref: %Base.elem = name_ref b, @Base.%.loc17 [concrete = @Base.%.loc17]
|
||||
// CHECK:STDOUT: %b.ref: %Base.elem = name_ref b, @Base.%field_decl.loc17 [concrete = @Base.%field_decl.loc17]
|
||||
// CHECK:STDOUT: %.loc41_12.1: ref %Derived = deref %p.ref
|
||||
// CHECK:STDOUT: %.loc41_12.2: ref %Base = as_compatible %.loc41_12.1
|
||||
// CHECK:STDOUT: %.loc41_12.3: ref %Base = class_element_access %.loc41_12.2, element0
|
||||
|
||||
+12
-8
@@ -131,15 +131,19 @@ fn Run() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @Class {
|
||||
// CHECK:STDOUT: %.loc16: %Class.elem = field_decl j, element0 [concrete]
|
||||
// CHECK:STDOUT: %.loc17: %Class.elem = field_decl k, element1 [concrete]
|
||||
// CHECK:STDOUT: %field_decl.loc16: %Class.elem = field_decl j, element0, %i32.loc16 in [concrete] {
|
||||
// CHECK:STDOUT: %i32.loc16: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %field_decl.loc17: %Class.elem = field_decl k, element1, %i32.loc17 in [concrete] {
|
||||
// CHECK:STDOUT: %i32.loc17: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness constants.%struct_type.j.k [concrete = constants.%complete_type.212]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = constants.%Class
|
||||
// CHECK:STDOUT: .j = %.loc16
|
||||
// CHECK:STDOUT: .k = %.loc17
|
||||
// CHECK:STDOUT: .j = %field_decl.loc16
|
||||
// CHECK:STDOUT: .k = %field_decl.loc17
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @Run() {
|
||||
@@ -160,7 +164,7 @@ fn Run() {
|
||||
// CHECK:STDOUT: %c.var_patt: %pattern_type.f15 = var_pattern %c.patt [concrete = constants.%c.var_patt]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %c.ref.loc22: ref %Class = name_ref c, %c
|
||||
// CHECK:STDOUT: %j.ref.loc22: %Class.elem = name_ref j, @Class.%.loc16 [concrete = @Class.%.loc16]
|
||||
// CHECK:STDOUT: %j.ref.loc22: %Class.elem = name_ref j, @Class.%field_decl.loc16 [concrete = @Class.%field_decl.loc16]
|
||||
// CHECK:STDOUT: %.loc22_4: ref %i32 = class_element_access %c.ref.loc22, element0
|
||||
// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8]
|
||||
// CHECK:STDOUT: %impl.elem0.loc22: %.b7a = impl_witness_access constants.%ImplicitAs.impl_witness.a2a, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e39]
|
||||
@@ -171,7 +175,7 @@ fn Run() {
|
||||
// CHECK:STDOUT: %.loc22_7: init %i32 = converted %int_1, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc22 [concrete = constants.%int_1.0c6]
|
||||
// CHECK:STDOUT: assign %.loc22_4, %.loc22_7
|
||||
// CHECK:STDOUT: %c.ref.loc23: ref %Class = name_ref c, %c
|
||||
// CHECK:STDOUT: %k.ref.loc23: %Class.elem = name_ref k, @Class.%.loc17 [concrete = @Class.%.loc17]
|
||||
// CHECK:STDOUT: %k.ref.loc23: %Class.elem = name_ref k, @Class.%field_decl.loc17 [concrete = @Class.%field_decl.loc17]
|
||||
// CHECK:STDOUT: %.loc23_4: ref %i32 = class_element_access %c.ref.loc23, element1
|
||||
// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc]
|
||||
// CHECK:STDOUT: %impl.elem0.loc23: %.b7a = impl_witness_access constants.%ImplicitAs.impl_witness.a2a, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e39]
|
||||
@@ -183,7 +187,7 @@ fn Run() {
|
||||
// CHECK:STDOUT: assign %.loc23_4, %.loc23_7
|
||||
// CHECK:STDOUT: %cj.var: ref %i32 = var_storage %cj.var_patt
|
||||
// CHECK:STDOUT: %c.ref.loc24: ref %Class = name_ref c, %c
|
||||
// CHECK:STDOUT: %j.ref.loc24: %Class.elem = name_ref j, @Class.%.loc16 [concrete = @Class.%.loc16]
|
||||
// CHECK:STDOUT: %j.ref.loc24: %Class.elem = name_ref j, @Class.%field_decl.loc16 [concrete = @Class.%field_decl.loc16]
|
||||
// CHECK:STDOUT: %.loc24_25.1: ref %i32 = class_element_access %c.ref.loc24, element0
|
||||
// CHECK:STDOUT: %.loc24_25.2: %i32 = acquire_value %.loc24_25.1
|
||||
// CHECK:STDOUT: %impl.elem0.loc24: %.737 = impl_witness_access constants.%Copy.impl_witness.b51, element0 [concrete = constants.%Int.as.Copy.impl.Op.4f6]
|
||||
@@ -200,7 +204,7 @@ fn Run() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %ck.var: ref %i32 = var_storage %ck.var_patt
|
||||
// CHECK:STDOUT: %c.ref.loc25: ref %Class = name_ref c, %c
|
||||
// CHECK:STDOUT: %k.ref.loc25: %Class.elem = name_ref k, @Class.%.loc17 [concrete = @Class.%.loc17]
|
||||
// CHECK:STDOUT: %k.ref.loc25: %Class.elem = name_ref k, @Class.%field_decl.loc17 [concrete = @Class.%field_decl.loc17]
|
||||
// CHECK:STDOUT: %.loc25_25.1: ref %i32 = class_element_access %c.ref.loc25, element1
|
||||
// CHECK:STDOUT: %.loc25_25.2: %i32 = acquire_value %.loc25_25.1
|
||||
// CHECK:STDOUT: %impl.elem0.loc25: %.737 = impl_witness_access constants.%Copy.impl_witness.b51, element0 [concrete = constants.%Int.as.Copy.impl.Op.4f6]
|
||||
|
||||
@@ -133,15 +133,19 @@ fn Test() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @Class {
|
||||
// CHECK:STDOUT: %.loc16: %Class.elem = field_decl j, element0 [concrete]
|
||||
// CHECK:STDOUT: %.loc17: %Class.elem = field_decl k, element1 [concrete]
|
||||
// CHECK:STDOUT: %field_decl.loc16: %Class.elem = field_decl j, element0, %i32.loc16 in [concrete] {
|
||||
// CHECK:STDOUT: %i32.loc16: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %field_decl.loc17: %Class.elem = field_decl k, element1, %i32.loc17 in [concrete] {
|
||||
// CHECK:STDOUT: %i32.loc17: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness constants.%struct_type.j.k [concrete = constants.%complete_type.212]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = constants.%Class
|
||||
// CHECK:STDOUT: .j = %.loc16
|
||||
// CHECK:STDOUT: .k = %.loc17
|
||||
// CHECK:STDOUT: .j = %field_decl.loc16
|
||||
// CHECK:STDOUT: .k = %field_decl.loc17
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @Test() {
|
||||
@@ -162,7 +166,7 @@ fn Test() {
|
||||
// CHECK:STDOUT: %cv.var_patt: %pattern_type.f15 = var_pattern %cv.patt [concrete = constants.%cv.var_patt]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %cv.ref.loc22: ref %Class = name_ref cv, %cv
|
||||
// CHECK:STDOUT: %j.ref.loc22: %Class.elem = name_ref j, @Class.%.loc16 [concrete = @Class.%.loc16]
|
||||
// CHECK:STDOUT: %j.ref.loc22: %Class.elem = name_ref j, @Class.%field_decl.loc16 [concrete = @Class.%field_decl.loc16]
|
||||
// CHECK:STDOUT: %.loc22_5: ref %i32 = class_element_access %cv.ref.loc22, element0
|
||||
// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8]
|
||||
// CHECK:STDOUT: %impl.elem0.loc22: %.b7a = impl_witness_access constants.%ImplicitAs.impl_witness.a2a, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e39]
|
||||
@@ -173,7 +177,7 @@ fn Test() {
|
||||
// CHECK:STDOUT: %.loc22_8: init %i32 = converted %int_1, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc22 [concrete = constants.%int_1.0c6]
|
||||
// CHECK:STDOUT: assign %.loc22_5, %.loc22_8
|
||||
// CHECK:STDOUT: %cv.ref.loc23: ref %Class = name_ref cv, %cv
|
||||
// CHECK:STDOUT: %k.ref.loc23: %Class.elem = name_ref k, @Class.%.loc17 [concrete = @Class.%.loc17]
|
||||
// CHECK:STDOUT: %k.ref.loc23: %Class.elem = name_ref k, @Class.%field_decl.loc17 [concrete = @Class.%field_decl.loc17]
|
||||
// CHECK:STDOUT: %.loc23_5: ref %i32 = class_element_access %cv.ref.loc23, element1
|
||||
// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc]
|
||||
// CHECK:STDOUT: %impl.elem0.loc23: %.b7a = impl_witness_access constants.%ImplicitAs.impl_witness.a2a, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e39]
|
||||
@@ -192,7 +196,7 @@ fn Test() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %cj.var: ref %i32 = var_storage %cj.var_patt
|
||||
// CHECK:STDOUT: %c.ref.loc25: %Class = name_ref c, %c
|
||||
// CHECK:STDOUT: %j.ref.loc25: %Class.elem = name_ref j, @Class.%.loc16 [concrete = @Class.%.loc16]
|
||||
// CHECK:STDOUT: %j.ref.loc25: %Class.elem = name_ref j, @Class.%field_decl.loc16 [concrete = @Class.%field_decl.loc16]
|
||||
// CHECK:STDOUT: %.loc25_25.1: ref %i32 = class_element_access %c.ref.loc25, element0
|
||||
// CHECK:STDOUT: %.loc25_25.2: %i32 = acquire_value %.loc25_25.1
|
||||
// CHECK:STDOUT: %impl.elem0.loc25: %.737 = impl_witness_access constants.%Copy.impl_witness.b51, element0 [concrete = constants.%Int.as.Copy.impl.Op.4f6]
|
||||
@@ -209,7 +213,7 @@ fn Test() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %ck.var: ref %i32 = var_storage %ck.var_patt
|
||||
// CHECK:STDOUT: %c.ref.loc26: %Class = name_ref c, %c
|
||||
// CHECK:STDOUT: %k.ref.loc26: %Class.elem = name_ref k, @Class.%.loc17 [concrete = @Class.%.loc17]
|
||||
// CHECK:STDOUT: %k.ref.loc26: %Class.elem = name_ref k, @Class.%field_decl.loc17 [concrete = @Class.%field_decl.loc17]
|
||||
// CHECK:STDOUT: %.loc26_25.1: ref %i32 = class_element_access %c.ref.loc26, element1
|
||||
// CHECK:STDOUT: %.loc26_25.2: %i32 = acquire_value %.loc26_25.1
|
||||
// CHECK:STDOUT: %impl.elem0.loc26: %.737 = impl_witness_access constants.%Copy.impl_witness.b51, element0 [concrete = constants.%Int.as.Copy.impl.Op.4f6]
|
||||
|
||||
@@ -133,7 +133,9 @@ var C: Class = {};
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @Class {
|
||||
// CHECK:STDOUT: %.loc5_12: %Class.elem = field_decl field, element0, initializer = inst6400010D [concrete]
|
||||
// CHECK:STDOUT: %field_decl: %Class.elem = field_decl field, element0, initializer = inst6400010B, %i32 in [concrete] {
|
||||
// CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %int_123: Core.IntLiteral = int_value 123 [concrete = constants.%int_123.fff]
|
||||
// CHECK:STDOUT: %impl.elem0: %.b7a = impl_witness_access constants.%ImplicitAs.impl_witness.a2a, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e39]
|
||||
// CHECK:STDOUT: %bound_method.loc5_20.1: <bound method> = bound_method %int_123, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound]
|
||||
@@ -147,7 +149,7 @@ var C: Class = {};
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = constants.%Class
|
||||
// CHECK:STDOUT: .field = %.loc5_12
|
||||
// CHECK:STDOUT: .field = %field_decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @__global_init() {
|
||||
|
||||
+33
-59
@@ -137,8 +137,6 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 {
|
||||
// CHECK:STDOUT: %C.generic: %C.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %C.1d0: type = class_type @C, @C(%T.67d) [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.944: <witness> = require_complete_type %T.67d [symbolic]
|
||||
// CHECK:STDOUT: %pattern_type.51d: type = pattern_type %T.67d [symbolic]
|
||||
// CHECK:STDOUT: %x.patt.719: %pattern_type.51d = ref_binding_pattern x [symbolic]
|
||||
// CHECK:STDOUT: %C.elem.4d5: type = unbound_element_type %C.1d0, %T.67d [symbolic]
|
||||
// CHECK:STDOUT: %struct_type.x.0c5: type = struct_type {.x: %T.67d} [symbolic]
|
||||
// CHECK:STDOUT: %complete_type.735: <witness> = complete_type_witness %struct_type.x.0c5 [symbolic]
|
||||
@@ -151,8 +149,6 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 {
|
||||
// CHECK:STDOUT: %C.3b7: type = class_type @C, @C(%i32) [concrete]
|
||||
// CHECK:STDOUT: %i32.builtin: type = int_type signed, %int_32 [concrete]
|
||||
// CHECK:STDOUT: %complete_type.f8a: <witness> = complete_type_witness %i32.builtin [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.6b6: type = pattern_type %i32 [concrete]
|
||||
// CHECK:STDOUT: %x.patt.29f: %pattern_type.6b6 = ref_binding_pattern x [concrete]
|
||||
// CHECK:STDOUT: %C.elem.29b: type = unbound_element_type %C.3b7, %i32 [concrete]
|
||||
// CHECK:STDOUT: %struct_type.x.a15: type = struct_type {.x: %i32} [concrete]
|
||||
// CHECK:STDOUT: %complete_type.0c6: <witness> = complete_type_witness %struct_type.x.a15 [concrete]
|
||||
@@ -160,6 +156,7 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 {
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type.e90 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.e90 = wrapper_binding_pattern a, %a.param_patt [concrete]
|
||||
// CHECK:STDOUT: %.795: Core.Form = init_form %i32 [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.6b6: type = pattern_type %i32 [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt.a9a: %pattern_type.6b6 = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt.e1b: %pattern_type.6b6 = return_slot_pattern %return.param_patt.a9a, %i32 [concrete]
|
||||
// CHECK:STDOUT: %Access.type: type = fn_type @Access [concrete]
|
||||
@@ -229,22 +226,22 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete: <witness> = require_complete_type %T.loc4_10.1 [symbolic = %require_complete (constants.%require_complete.944)]
|
||||
// CHECK:STDOUT: %pattern_type: type = pattern_type %T.loc4_10.1 [symbolic = %pattern_type (constants.%pattern_type.51d)]
|
||||
// CHECK:STDOUT: %x.patt: @C.%pattern_type (%pattern_type.51d) = ref_binding_pattern x [symbolic = %x.patt (constants.%x.patt.719)]
|
||||
// CHECK:STDOUT: %C: type = class_type @C, @C(%T.loc4_10.1) [symbolic = %C (constants.%C.1d0)]
|
||||
// CHECK:STDOUT: %C.elem: type = unbound_element_type %C, %T.loc4_10.1 [symbolic = %C.elem (constants.%C.elem.4d5)]
|
||||
// CHECK:STDOUT: %struct_type.x: type = struct_type {.x: @C.%T.loc4_10.1 (%T.67d)} [symbolic = %struct_type.x (constants.%struct_type.x.0c5)]
|
||||
// CHECK:STDOUT: %complete_type.loc6_1.2: <witness> = complete_type_witness %struct_type.x [symbolic = %complete_type.loc6_1.2 (constants.%complete_type.735)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class {
|
||||
// CHECK:STDOUT: %.loc5: @C.%C.elem (%C.elem.4d5) = field_decl x, element0 [concrete]
|
||||
// CHECK:STDOUT: %field_decl: @C.%C.elem (%C.elem.4d5) = field_decl x, element0, %T.ref in [concrete] {
|
||||
// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc4_10.2 [symbolic = %T.loc4_10.1 (constants.%T.67d)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %complete_type.loc6_1.1: <witness> = complete_type_witness constants.%struct_type.x.0c5 [symbolic = %complete_type.loc6_1.2 (constants.%complete_type.735)]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type.loc6_1.1
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = constants.%C.1d0
|
||||
// CHECK:STDOUT: .T = <poisoned>
|
||||
// CHECK:STDOUT: .x = %.loc5
|
||||
// CHECK:STDOUT: .x = %field_decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -269,7 +266,7 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 {
|
||||
// CHECK:STDOUT: %C: type = class_type @C, @C(constants.%i32) [concrete = constants.%C.3b7]
|
||||
// CHECK:STDOUT: %.loc13_13.1: %C.3b7 = as_compatible %a.ref
|
||||
// CHECK:STDOUT: %.loc13_13.2: %C.3b7 = converted %a.ref, %.loc13_13.1
|
||||
// CHECK:STDOUT: %x.ref: %C.elem.29b = name_ref x, @C.%.loc5 [concrete = @C.%.loc5]
|
||||
// CHECK:STDOUT: %x.ref: %C.elem.29b = name_ref x, @C.%field_decl [concrete = @C.%field_decl]
|
||||
// CHECK:STDOUT: %.loc13_23.1: ref %i32 = class_element_access %.loc13_13.2, element0
|
||||
// CHECK:STDOUT: %.loc13_23.2: %i32 = acquire_value %.loc13_23.1
|
||||
// CHECK:STDOUT: %impl.elem0: %.737 = impl_witness_access constants.%Copy.impl_witness.b51, element0 [concrete = constants.%Int.as.Copy.impl.Op.4f6]
|
||||
@@ -291,8 +288,6 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete => constants.%complete_type.f8a
|
||||
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.6b6
|
||||
// CHECK:STDOUT: %x.patt => constants.%x.patt.29f
|
||||
// CHECK:STDOUT: %C => constants.%C.3b7
|
||||
// CHECK:STDOUT: %C.elem => constants.%C.elem.29b
|
||||
// CHECK:STDOUT: %struct_type.x => constants.%struct_type.x.a15
|
||||
@@ -319,19 +314,16 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 {
|
||||
// CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete]
|
||||
// CHECK:STDOUT: %T.patt.d47: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %C.elem.4d5: type = unbound_element_type %C.1d0, %T.67d [symbolic]
|
||||
// CHECK:STDOUT: %pattern_type.51d: type = pattern_type %T.67d [symbolic]
|
||||
// CHECK:STDOUT: %x.patt.719: %pattern_type.51d = ref_binding_pattern x [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.944: <witness> = require_complete_type %T.67d [symbolic]
|
||||
// CHECK:STDOUT: %C.3b7: type = class_type @C, @C(%i32) [concrete]
|
||||
// CHECK:STDOUT: %struct_type.x.a15: type = struct_type {.x: %i32} [concrete]
|
||||
// CHECK:STDOUT: %complete_type.0c6: <witness> = complete_type_witness %struct_type.x.a15 [concrete]
|
||||
// CHECK:STDOUT: %C.elem.29b: type = unbound_element_type %C.3b7, %i32 [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.6b6: type = pattern_type %i32 [concrete]
|
||||
// CHECK:STDOUT: %x.patt.29f: %pattern_type.6b6 = ref_binding_pattern x [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.e90: type = pattern_type %Adapter [concrete]
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type.e90 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.e90 = wrapper_binding_pattern a, %a.param_patt [concrete]
|
||||
// CHECK:STDOUT: %.795: Core.Form = init_form %i32 [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.6b6: type = pattern_type %i32 [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt.a9a: %pattern_type.6b6 = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt.e1b: %pattern_type.6b6 = return_slot_pattern %return.param_patt.a9a, %i32 [concrete]
|
||||
// CHECK:STDOUT: %ImportedAccess.type: type = fn_type @ImportedAccess [concrete]
|
||||
@@ -360,12 +352,13 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Main.import_ref.7e3: <witness> = import_ref Main//adapt_specific_type, loc6_1, loaded [symbolic = @C.%complete_type (constants.%complete_type.735)]
|
||||
// CHECK:STDOUT: %Main.import_ref.189 = import_ref Main//adapt_specific_type, inst{{[0-9A-F]+}} [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.ba1: @C.%C.elem (%C.elem.4d5) = import_ref Main//adapt_specific_type, loc5_8, loaded [concrete = %.c54]
|
||||
// CHECK:STDOUT: %Main.import_ref.21b: @C.%C.elem (%C.elem.4d5) = import_ref Main//adapt_specific_type, loc5_8, loaded [concrete = %field_decl]
|
||||
// CHECK:STDOUT: %Main.import_ref.b3b: type = import_ref Main//adapt_specific_type, loc4_10, loaded [symbolic = @C.%T (constants.%T.67d)]
|
||||
// CHECK:STDOUT: %Main.import_ref.9e9: <witness> = import_ref Main//adapt_specific_type, loc10_1, loaded [concrete = constants.%complete_type.0c6]
|
||||
// CHECK:STDOUT: %Main.import_ref.58b = import_ref Main//adapt_specific_type, inst{{[0-9A-F]+}} [no loc], unloaded
|
||||
// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic]
|
||||
// CHECK:STDOUT: %.c54: @C.%C.elem (%C.elem.4d5) = field_decl x, element0 [concrete]
|
||||
// CHECK:STDOUT: %Main.import_ref.57f = import_ref Main//adapt_specific_type, loc5_10, unloaded
|
||||
// CHECK:STDOUT: %field_decl: @C.%C.elem (%C.elem.4d5) = field_decl x, element0, %Main.import_ref.57f in [concrete] {}
|
||||
// CHECK:STDOUT: %Core.Copy: type = import_ref Core//prelude/parts/copy, Copy, loaded [concrete = constants.%Copy.type]
|
||||
// CHECK:STDOUT: %Core.import_ref.cd6: @Int.as.Copy.impl.%Int.as.Copy.impl.Op.type (%Int.as.Copy.impl.Op.type.ac8) = import_ref Core//prelude/parts/int, loc{{\d+_\d+}}, loaded [symbolic = @Int.as.Copy.impl.%Int.as.Copy.impl.Op (constants.%Int.as.Copy.impl.Op.5e0)]
|
||||
// CHECK:STDOUT: %Copy.impl_witness_table.8d2 = impl_witness_table (%Core.import_ref.cd6), @Int.as.Copy.impl [concrete]
|
||||
@@ -410,8 +403,6 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete: <witness> = require_complete_type %T [symbolic = %require_complete (constants.%require_complete.944)]
|
||||
// CHECK:STDOUT: %pattern_type: type = pattern_type %T [symbolic = %pattern_type (constants.%pattern_type.51d)]
|
||||
// CHECK:STDOUT: %x.patt: @C.%pattern_type (%pattern_type.51d) = ref_binding_pattern x [symbolic = %x.patt (constants.%x.patt.719)]
|
||||
// CHECK:STDOUT: %C: type = class_type @C, @C(%T) [symbolic = %C (constants.%C.1d0)]
|
||||
// CHECK:STDOUT: %C.elem: type = unbound_element_type %C, %T [symbolic = %C.elem (constants.%C.elem.4d5)]
|
||||
// CHECK:STDOUT: %struct_type.x: type = struct_type {.x: @C.%T (%T.67d)} [symbolic = %struct_type.x (constants.%struct_type.x.0c5)]
|
||||
@@ -422,7 +413,7 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Main.import_ref.189
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.ba1
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.21b
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -434,7 +425,7 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 {
|
||||
// CHECK:STDOUT: %C: type = class_type @C, @C(constants.%i32) [concrete = constants.%C.3b7]
|
||||
// CHECK:STDOUT: %.loc7_13.1: %C.3b7 = as_compatible %a.ref
|
||||
// CHECK:STDOUT: %.loc7_13.2: %C.3b7 = converted %a.ref, %.loc7_13.1
|
||||
// CHECK:STDOUT: %x.ref: %C.elem.29b = name_ref x, imports.%Main.import_ref.ba1 [concrete = imports.%.c54]
|
||||
// CHECK:STDOUT: %x.ref: %C.elem.29b = name_ref x, imports.%Main.import_ref.21b [concrete = imports.%field_decl]
|
||||
// CHECK:STDOUT: %.loc7_23.1: ref %i32 = class_element_access %.loc7_13.2, element0
|
||||
// CHECK:STDOUT: %.loc7_23.2: %i32 = acquire_value %.loc7_23.1
|
||||
// CHECK:STDOUT: %impl.elem0: %.737 = impl_witness_access constants.%Copy.impl_witness.b51, element0 [concrete = constants.%Int.as.Copy.impl.Op.4f6]
|
||||
@@ -456,8 +447,6 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete => constants.%complete_type.f8a
|
||||
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.6b6
|
||||
// CHECK:STDOUT: %x.patt => constants.%x.patt.29f
|
||||
// CHECK:STDOUT: %C => constants.%C.3b7
|
||||
// CHECK:STDOUT: %C.elem => constants.%C.elem.29b
|
||||
// CHECK:STDOUT: %struct_type.x => constants.%struct_type.x.a15
|
||||
@@ -476,8 +465,6 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 {
|
||||
// CHECK:STDOUT: %C.generic: %C.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %C.1d0: type = class_type @C, @C(%T) [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.944: <witness> = require_complete_type %T [symbolic]
|
||||
// CHECK:STDOUT: %pattern_type.51d1c4.1: type = pattern_type %T [symbolic]
|
||||
// CHECK:STDOUT: %x.patt.719: %pattern_type.51d1c4.1 = ref_binding_pattern x [symbolic]
|
||||
// CHECK:STDOUT: %C.elem.4d5: type = unbound_element_type %C.1d0, %T [symbolic]
|
||||
// CHECK:STDOUT: %struct_type.x.0c5: type = struct_type {.x: %T} [symbolic]
|
||||
// CHECK:STDOUT: %complete_type.735: <witness> = complete_type_witness %struct_type.x.0c5 [symbolic]
|
||||
@@ -489,8 +476,6 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 {
|
||||
// CHECK:STDOUT: %C.3b7: type = class_type @C, @C(%i32) [concrete]
|
||||
// CHECK:STDOUT: %i32.builtin: type = int_type signed, %int_32 [concrete]
|
||||
// CHECK:STDOUT: %complete_type.f8a: <witness> = complete_type_witness %i32.builtin [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.6b6: type = pattern_type %i32 [concrete]
|
||||
// CHECK:STDOUT: %x.patt.29f: %pattern_type.6b6 = ref_binding_pattern x [concrete]
|
||||
// CHECK:STDOUT: %C.elem.29b: type = unbound_element_type %C.3b7, %i32 [concrete]
|
||||
// CHECK:STDOUT: %struct_type.x.a15: type = struct_type {.x: %i32} [concrete]
|
||||
// CHECK:STDOUT: %complete_type.0c6: <witness> = complete_type_witness %struct_type.x.a15 [concrete]
|
||||
@@ -498,6 +483,7 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 {
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type.e90 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.e90 = wrapper_binding_pattern a, %a.param_patt [concrete]
|
||||
// CHECK:STDOUT: %.795f: Core.Form = init_form %i32 [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.6b6: type = pattern_type %i32 [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt.a9a: %pattern_type.6b6 = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt.e1b: %pattern_type.6b6 = return_slot_pattern %return.param_patt.a9a, %i32 [concrete]
|
||||
// CHECK:STDOUT: %Access.type: type = fn_type @Access [concrete]
|
||||
@@ -557,22 +543,22 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete: <witness> = require_complete_type %T.loc4_10.1 [symbolic = %require_complete (constants.%require_complete.944)]
|
||||
// CHECK:STDOUT: %pattern_type: type = pattern_type %T.loc4_10.1 [symbolic = %pattern_type (constants.%pattern_type.51d1c4.1)]
|
||||
// CHECK:STDOUT: %x.patt: @C.%pattern_type (%pattern_type.51d1c4.1) = ref_binding_pattern x [symbolic = %x.patt (constants.%x.patt.719)]
|
||||
// CHECK:STDOUT: %C: type = class_type @C, @C(%T.loc4_10.1) [symbolic = %C (constants.%C.1d0)]
|
||||
// CHECK:STDOUT: %C.elem: type = unbound_element_type %C, %T.loc4_10.1 [symbolic = %C.elem (constants.%C.elem.4d5)]
|
||||
// CHECK:STDOUT: %struct_type.x: type = struct_type {.x: @C.%T.loc4_10.1 (%T)} [symbolic = %struct_type.x (constants.%struct_type.x.0c5)]
|
||||
// CHECK:STDOUT: %complete_type.loc6_1.2: <witness> = complete_type_witness %struct_type.x [symbolic = %complete_type.loc6_1.2 (constants.%complete_type.735)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class {
|
||||
// CHECK:STDOUT: %.loc5: @C.%C.elem (%C.elem.4d5) = field_decl x, element0 [concrete]
|
||||
// CHECK:STDOUT: %field_decl: @C.%C.elem (%C.elem.4d5) = field_decl x, element0, %T.ref in [concrete] {
|
||||
// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc4_10.2 [symbolic = %T.loc4_10.1 (constants.%T)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %complete_type.loc6_1.1: <witness> = complete_type_witness constants.%struct_type.x.0c5 [symbolic = %complete_type.loc6_1.2 (constants.%complete_type.735)]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type.loc6_1.1
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = constants.%C.1d0
|
||||
// CHECK:STDOUT: .T = <poisoned>
|
||||
// CHECK:STDOUT: .x = %.loc5
|
||||
// CHECK:STDOUT: .x = %field_decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -594,7 +580,7 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 {
|
||||
// CHECK:STDOUT: fn @Access(%a.param: %Adapter) -> out %return.param: %i32 {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %a.ref: %Adapter = name_ref a, %a
|
||||
// CHECK:STDOUT: %x.ref: %C.elem.29b = name_ref x, @C.%.loc5 [concrete = @C.%.loc5]
|
||||
// CHECK:STDOUT: %x.ref: %C.elem.29b = name_ref x, @C.%field_decl [concrete = @C.%field_decl]
|
||||
// CHECK:STDOUT: %.loc21_11.1: %C.3b7 = converted %a.ref, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: %.loc21_11.2: %i32 = class_element_access <error>, element0 [concrete = <error>]
|
||||
// CHECK:STDOUT: return <error>
|
||||
@@ -611,8 +597,6 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete => constants.%complete_type.f8a
|
||||
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.6b6
|
||||
// CHECK:STDOUT: %x.patt => constants.%x.patt.29f
|
||||
// CHECK:STDOUT: %C => constants.%C.3b7
|
||||
// CHECK:STDOUT: %C.elem => constants.%C.elem.29b
|
||||
// CHECK:STDOUT: %struct_type.x => constants.%struct_type.x.a15
|
||||
@@ -631,8 +615,6 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 {
|
||||
// CHECK:STDOUT: %C.generic: %C.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %C.1d0: type = class_type @C, @C(%T) [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.944: <witness> = require_complete_type %T [symbolic]
|
||||
// CHECK:STDOUT: %pattern_type.51d: type = pattern_type %T [symbolic]
|
||||
// CHECK:STDOUT: %x.patt.719: %pattern_type.51d = ref_binding_pattern x [symbolic]
|
||||
// CHECK:STDOUT: %C.elem.4d5: type = unbound_element_type %C.1d0, %T [symbolic]
|
||||
// CHECK:STDOUT: %struct_type.x.0c5: type = struct_type {.x: %T} [symbolic]
|
||||
// CHECK:STDOUT: %complete_type.735: <witness> = complete_type_witness %struct_type.x.0c5 [symbolic]
|
||||
@@ -644,8 +626,6 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 {
|
||||
// CHECK:STDOUT: %C.3b7: type = class_type @C, @C(%i32) [concrete]
|
||||
// CHECK:STDOUT: %i32.builtin: type = int_type signed, %int_32 [concrete]
|
||||
// CHECK:STDOUT: %complete_type.f8a: <witness> = complete_type_witness %i32.builtin [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.6b6: type = pattern_type %i32 [concrete]
|
||||
// CHECK:STDOUT: %x.patt.29f: %pattern_type.6b6 = ref_binding_pattern x [concrete]
|
||||
// CHECK:STDOUT: %C.elem.29b: type = unbound_element_type %C.3b7, %i32 [concrete]
|
||||
// CHECK:STDOUT: %struct_type.x.a15: type = struct_type {.x: %i32} [concrete]
|
||||
// CHECK:STDOUT: %complete_type.0c6: <witness> = complete_type_witness %struct_type.x.a15 [concrete]
|
||||
@@ -685,22 +665,22 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete: <witness> = require_complete_type %T.loc7_10.1 [symbolic = %require_complete (constants.%require_complete.944)]
|
||||
// CHECK:STDOUT: %pattern_type: type = pattern_type %T.loc7_10.1 [symbolic = %pattern_type (constants.%pattern_type.51d)]
|
||||
// CHECK:STDOUT: %x.patt: @C.%pattern_type (%pattern_type.51d) = ref_binding_pattern x [symbolic = %x.patt (constants.%x.patt.719)]
|
||||
// CHECK:STDOUT: %C: type = class_type @C, @C(%T.loc7_10.1) [symbolic = %C (constants.%C.1d0)]
|
||||
// CHECK:STDOUT: %C.elem: type = unbound_element_type %C, %T.loc7_10.1 [symbolic = %C.elem (constants.%C.elem.4d5)]
|
||||
// CHECK:STDOUT: %struct_type.x: type = struct_type {.x: @C.%T.loc7_10.1 (%T)} [symbolic = %struct_type.x (constants.%struct_type.x.0c5)]
|
||||
// CHECK:STDOUT: %complete_type.loc9_1.2: <witness> = complete_type_witness %struct_type.x [symbolic = %complete_type.loc9_1.2 (constants.%complete_type.735)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class {
|
||||
// CHECK:STDOUT: %.loc8: @C.%C.elem (%C.elem.4d5) = field_decl x, element0 [concrete]
|
||||
// CHECK:STDOUT: %field_decl: @C.%C.elem (%C.elem.4d5) = field_decl x, element0, %T.ref in [concrete] {
|
||||
// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc7_10.2 [symbolic = %T.loc7_10.1 (constants.%T)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %complete_type.loc9_1.1: <witness> = complete_type_witness constants.%struct_type.x.0c5 [symbolic = %complete_type.loc9_1.2 (constants.%complete_type.735)]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type.loc9_1.1
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = constants.%C.1d0
|
||||
// CHECK:STDOUT: .T = <poisoned>
|
||||
// CHECK:STDOUT: .x = %.loc8
|
||||
// CHECK:STDOUT: .x = %field_decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -729,8 +709,6 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete => constants.%complete_type.f8a
|
||||
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.6b6
|
||||
// CHECK:STDOUT: %x.patt => constants.%x.patt.29f
|
||||
// CHECK:STDOUT: %C => constants.%C.3b7
|
||||
// CHECK:STDOUT: %C.elem => constants.%C.elem.29b
|
||||
// CHECK:STDOUT: %struct_type.x => constants.%struct_type.x.a15
|
||||
@@ -754,19 +732,16 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 {
|
||||
// CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete]
|
||||
// CHECK:STDOUT: %T.patt: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %C.elem.4d5: type = unbound_element_type %C.1d0, %T [symbolic]
|
||||
// CHECK:STDOUT: %pattern_type.51d1c4.1: type = pattern_type %T [symbolic]
|
||||
// CHECK:STDOUT: %x.patt.719: %pattern_type.51d1c4.1 = ref_binding_pattern x [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.944: <witness> = require_complete_type %T [symbolic]
|
||||
// CHECK:STDOUT: %C.3b7: type = class_type @C, @C(%i32) [concrete]
|
||||
// CHECK:STDOUT: %struct_type.x.a15: type = struct_type {.x: %i32} [concrete]
|
||||
// CHECK:STDOUT: %complete_type.0c6: <witness> = complete_type_witness %struct_type.x.a15 [concrete]
|
||||
// CHECK:STDOUT: %C.elem.29b: type = unbound_element_type %C.3b7, %i32 [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.6b6: type = pattern_type %i32 [concrete]
|
||||
// CHECK:STDOUT: %x.patt.29f: %pattern_type.6b6 = ref_binding_pattern x [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.e90: type = pattern_type %Adapter [concrete]
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type.e90 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.e90 = wrapper_binding_pattern a, %a.param_patt [concrete]
|
||||
// CHECK:STDOUT: %.795f: Core.Form = init_form %i32 [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.6b6: type = pattern_type %i32 [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt.a9a: %pattern_type.6b6 = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt.e1b: %pattern_type.6b6 = return_slot_pattern %return.param_patt.a9a, %i32 [concrete]
|
||||
// CHECK:STDOUT: %ImportedAccess.type: type = fn_type @ImportedAccess [concrete]
|
||||
@@ -786,13 +761,14 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Main.import_ref.7e3: <witness> = import_ref Main//extend_adapt_specific_type_library, loc9_1, loaded [symbolic = @C.%complete_type (constants.%complete_type.735)]
|
||||
// CHECK:STDOUT: %Main.import_ref.189 = import_ref Main//extend_adapt_specific_type_library, inst{{[0-9A-F]+}} [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.ba1: @C.%C.elem (%C.elem.4d5) = import_ref Main//extend_adapt_specific_type_library, loc8_8, loaded [concrete = %.c54]
|
||||
// CHECK:STDOUT: %Main.import_ref.21b: @C.%C.elem (%C.elem.4d5) = import_ref Main//extend_adapt_specific_type_library, loc8_8, loaded [concrete = %field_decl]
|
||||
// CHECK:STDOUT: %Main.import_ref.b3b: type = import_ref Main//extend_adapt_specific_type_library, loc7_10, loaded [symbolic = @C.%T (constants.%T)]
|
||||
// CHECK:STDOUT: %Main.import_ref.9e9: <witness> = import_ref Main//extend_adapt_specific_type_library, loc13_1, loaded [concrete = constants.%complete_type.0c6]
|
||||
// CHECK:STDOUT: %Main.import_ref.58b = import_ref Main//extend_adapt_specific_type_library, inst{{[0-9A-F]+}} [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.6b2392.2: type = import_ref Main//extend_adapt_specific_type_library, loc12_21, loaded [concrete = constants.%C.3b7]
|
||||
// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic]
|
||||
// CHECK:STDOUT: %.c54: @C.%C.elem (%C.elem.4d5) = field_decl x, element0 [concrete]
|
||||
// CHECK:STDOUT: %Main.import_ref.57f = import_ref Main//extend_adapt_specific_type_library, loc8_10, unloaded
|
||||
// CHECK:STDOUT: %field_decl: @C.%C.elem (%C.elem.4d5) = field_decl x, element0, %Main.import_ref.57f in [concrete] {}
|
||||
// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.0ff = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -836,8 +812,6 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete: <witness> = require_complete_type %T [symbolic = %require_complete (constants.%require_complete.944)]
|
||||
// CHECK:STDOUT: %pattern_type: type = pattern_type %T [symbolic = %pattern_type (constants.%pattern_type.51d1c4.1)]
|
||||
// CHECK:STDOUT: %x.patt: @C.%pattern_type (%pattern_type.51d1c4.1) = ref_binding_pattern x [symbolic = %x.patt (constants.%x.patt.719)]
|
||||
// CHECK:STDOUT: %C: type = class_type @C, @C(%T) [symbolic = %C (constants.%C.1d0)]
|
||||
// CHECK:STDOUT: %C.elem: type = unbound_element_type %C, %T [symbolic = %C.elem (constants.%C.elem.4d5)]
|
||||
// CHECK:STDOUT: %struct_type.x: type = struct_type {.x: @C.%T (%T)} [symbolic = %struct_type.x (constants.%struct_type.x.0c5)]
|
||||
@@ -848,14 +822,14 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Main.import_ref.189
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.ba1
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.21b
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @ImportedAccess(%a.param: %Adapter) -> out %return.param: %i32 {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %a.ref: %Adapter = name_ref a, %a
|
||||
// CHECK:STDOUT: %x.ref: %C.elem.29b = name_ref x, imports.%Main.import_ref.ba1 [concrete = imports.%.c54]
|
||||
// CHECK:STDOUT: %x.ref: %C.elem.29b = name_ref x, imports.%Main.import_ref.21b [concrete = imports.%field_decl]
|
||||
// CHECK:STDOUT: %.loc15_11.1: %C.3b7 = converted %a.ref, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: %.loc15_11.2: %i32 = class_element_access <error>, element0 [concrete = <error>]
|
||||
// CHECK:STDOUT: return <error>
|
||||
@@ -872,8 +846,6 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete => constants.%complete_type.f8a
|
||||
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.6b6
|
||||
// CHECK:STDOUT: %x.patt => constants.%x.patt.29f
|
||||
// CHECK:STDOUT: %C => constants.%C.3b7
|
||||
// CHECK:STDOUT: %C.elem => constants.%C.elem.29b
|
||||
// CHECK:STDOUT: %struct_type.x => constants.%struct_type.x.a15
|
||||
@@ -1156,13 +1128,15 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @C {
|
||||
// CHECK:STDOUT: %.loc11: %C.elem = field_decl n, element0 [concrete]
|
||||
// CHECK:STDOUT: %field_decl: %C.elem = field_decl n, element0, %i32 in [concrete] {
|
||||
// CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness constants.%struct_type.n [concrete = constants.%complete_type.cdf]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = constants.%C
|
||||
// CHECK:STDOUT: .n = %.loc11
|
||||
// CHECK:STDOUT: .n = %field_decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @ImportedConvert(%a.param: %Adapter.0d1) -> out %return.param: %i32 {
|
||||
@@ -1185,7 +1159,7 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 {
|
||||
// CHECK:STDOUT: %C.ref.loc15: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %.loc15_13.1: %C = as_compatible %a.ref
|
||||
// CHECK:STDOUT: %.loc15_13.2: %C = converted %a.ref, %.loc15_13.1
|
||||
// CHECK:STDOUT: %n.ref: %C.elem = name_ref n, @C.%.loc11 [concrete = @C.%.loc11]
|
||||
// CHECK:STDOUT: %n.ref: %C.elem = name_ref n, @C.%field_decl [concrete = @C.%field_decl]
|
||||
// CHECK:STDOUT: %.loc15_18.1: ref %i32 = class_element_access %.loc15_13.2, element0
|
||||
// CHECK:STDOUT: %.loc15_18.2: %i32 = acquire_value %.loc15_18.1
|
||||
// CHECK:STDOUT: %impl.elem0: %.737 = impl_witness_access constants.%Copy.impl_witness.b51, element0 [concrete = constants.%Int.as.Copy.impl.Op.4f6]
|
||||
|
||||
+20
-30
@@ -101,8 +101,6 @@ fn H() {
|
||||
// CHECK:STDOUT: %Base.generic: %Base.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Base.798: type = class_type @Base, @Base(%T.67d) [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.944: <witness> = require_complete_type %T.67d [symbolic]
|
||||
// CHECK:STDOUT: %pattern_type.51d: type = pattern_type %T.67d [symbolic]
|
||||
// CHECK:STDOUT: %x.patt.719: %pattern_type.51d = ref_binding_pattern x [symbolic]
|
||||
// CHECK:STDOUT: %Base.elem.a3c: type = unbound_element_type %Base.798, %T.67d [symbolic]
|
||||
// CHECK:STDOUT: %struct_type.x.0c5: type = struct_type {.x: %T.67d} [symbolic]
|
||||
// CHECK:STDOUT: %complete_type.735: <witness> = complete_type_witness %struct_type.x.0c5 [symbolic]
|
||||
@@ -118,8 +116,6 @@ fn H() {
|
||||
// CHECK:STDOUT: %complete_type.620: <witness> = complete_type_witness %struct_type.y [concrete]
|
||||
// CHECK:STDOUT: %Derived: type = class_type @Derived [concrete]
|
||||
// CHECK:STDOUT: %Base.947: type = class_type @Base, @Base(%Param) [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.116: type = pattern_type %Param [concrete]
|
||||
// CHECK:STDOUT: %x.patt.6d5: %pattern_type.116 = ref_binding_pattern x [concrete]
|
||||
// CHECK:STDOUT: %Base.elem.3f2: type = unbound_element_type %Base.947, %Param [concrete]
|
||||
// CHECK:STDOUT: %struct_type.x.301: type = struct_type {.x: %Param} [concrete]
|
||||
// CHECK:STDOUT: %complete_type.38f: <witness> = complete_type_witness %struct_type.x.301 [concrete]
|
||||
@@ -201,33 +197,35 @@ fn H() {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete: <witness> = require_complete_type %T.loc4_18.1 [symbolic = %require_complete (constants.%require_complete.944)]
|
||||
// CHECK:STDOUT: %pattern_type: type = pattern_type %T.loc4_18.1 [symbolic = %pattern_type (constants.%pattern_type.51d)]
|
||||
// CHECK:STDOUT: %x.patt: @Base.%pattern_type (%pattern_type.51d) = ref_binding_pattern x [symbolic = %x.patt (constants.%x.patt.719)]
|
||||
// CHECK:STDOUT: %Base: type = class_type @Base, @Base(%T.loc4_18.1) [symbolic = %Base (constants.%Base.798)]
|
||||
// CHECK:STDOUT: %Base.elem: type = unbound_element_type %Base, %T.loc4_18.1 [symbolic = %Base.elem (constants.%Base.elem.a3c)]
|
||||
// CHECK:STDOUT: %struct_type.x: type = struct_type {.x: @Base.%T.loc4_18.1 (%T.67d)} [symbolic = %struct_type.x (constants.%struct_type.x.0c5)]
|
||||
// CHECK:STDOUT: %complete_type.loc6_1.2: <witness> = complete_type_witness %struct_type.x [symbolic = %complete_type.loc6_1.2 (constants.%complete_type.735)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class {
|
||||
// CHECK:STDOUT: %.loc5: @Base.%Base.elem (%Base.elem.a3c) = field_decl x, element0 [concrete]
|
||||
// CHECK:STDOUT: %field_decl: @Base.%Base.elem (%Base.elem.a3c) = field_decl x, element0, %T.ref in [concrete] {
|
||||
// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc4_18.2 [symbolic = %T.loc4_18.1 (constants.%T.67d)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %complete_type.loc6_1.1: <witness> = complete_type_witness constants.%struct_type.x.0c5 [symbolic = %complete_type.loc6_1.2 (constants.%complete_type.735)]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type.loc6_1.1
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = constants.%Base.798
|
||||
// CHECK:STDOUT: .T = <poisoned>
|
||||
// CHECK:STDOUT: .x = %.loc5
|
||||
// CHECK:STDOUT: .x = %field_decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @Param {
|
||||
// CHECK:STDOUT: %.loc9: %Param.elem = field_decl y, element0 [concrete]
|
||||
// CHECK:STDOUT: %field_decl: %Param.elem = field_decl y, element0, %i32 in [concrete] {
|
||||
// CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness constants.%struct_type.y [concrete = constants.%complete_type.620]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = constants.%Param
|
||||
// CHECK:STDOUT: .y = %.loc9
|
||||
// CHECK:STDOUT: .y = %field_decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @Derived {
|
||||
@@ -250,12 +248,12 @@ fn H() {
|
||||
// CHECK:STDOUT: fn @DoubleFieldAccess(%d.param: %Derived) -> out %return.param: %i32 {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %d.ref: %Derived = name_ref d, %d
|
||||
// CHECK:STDOUT: %x.ref: %Base.elem.3f2 = name_ref x, @Base.%.loc5 [concrete = @Base.%.loc5]
|
||||
// CHECK:STDOUT: %x.ref: %Base.elem.3f2 = name_ref x, @Base.%field_decl [concrete = @Base.%field_decl]
|
||||
// CHECK:STDOUT: %.loc17_11.1: %Base.947 = as_compatible %d.ref
|
||||
// CHECK:STDOUT: %.loc17_11.2: ref %Base.947 = class_element_access %.loc17_11.1, element0
|
||||
// CHECK:STDOUT: %.loc17_11.3: ref %Base.947 = converted %d.ref, %.loc17_11.2
|
||||
// CHECK:STDOUT: %.loc17_11.4: ref %Param = class_element_access %.loc17_11.3, element0
|
||||
// CHECK:STDOUT: %y.ref: %Param.elem = name_ref y, @Param.%.loc9 [concrete = @Param.%.loc9]
|
||||
// CHECK:STDOUT: %y.ref: %Param.elem = name_ref y, @Param.%field_decl [concrete = @Param.%field_decl]
|
||||
// CHECK:STDOUT: %.loc17_13.1: ref %i32 = class_element_access %.loc17_11.4, element0
|
||||
// CHECK:STDOUT: %.loc17_13.2: %i32 = acquire_value %.loc17_13.1
|
||||
// CHECK:STDOUT: %impl.elem0: %.737 = impl_witness_access constants.%Copy.impl_witness.b51, element0 [concrete = constants.%Int.as.Copy.impl.Op.4f6]
|
||||
@@ -277,8 +275,6 @@ fn H() {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete => constants.%complete_type.620
|
||||
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.116
|
||||
// CHECK:STDOUT: %x.patt => constants.%x.patt.6d5
|
||||
// CHECK:STDOUT: %Base => constants.%Base.947
|
||||
// CHECK:STDOUT: %Base.elem => constants.%Base.elem.3f2
|
||||
// CHECK:STDOUT: %struct_type.x => constants.%struct_type.x.301
|
||||
@@ -304,15 +300,11 @@ fn H() {
|
||||
// CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete]
|
||||
// CHECK:STDOUT: %T.patt.d47: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %Base.elem.a3c: type = unbound_element_type %Base.798, %T.67d [symbolic]
|
||||
// CHECK:STDOUT: %pattern_type.51d: type = pattern_type %T.67d [symbolic]
|
||||
// CHECK:STDOUT: %x.patt.719: %pattern_type.51d = ref_binding_pattern x [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.944: <witness> = require_complete_type %T.67d [symbolic]
|
||||
// CHECK:STDOUT: %Base.947: type = class_type @Base, @Base(%Param) [concrete]
|
||||
// CHECK:STDOUT: %struct_type.x.301: type = struct_type {.x: %Param} [concrete]
|
||||
// CHECK:STDOUT: %complete_type.38f: <witness> = complete_type_witness %struct_type.x.301 [concrete]
|
||||
// CHECK:STDOUT: %Base.elem.3f2: type = unbound_element_type %Base.947, %Param [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.116: type = pattern_type %Param [concrete]
|
||||
// CHECK:STDOUT: %x.patt.6d5: %pattern_type.116 = ref_binding_pattern x [concrete]
|
||||
// CHECK:STDOUT: %struct_type.base.a1b: type = struct_type {.base: %Base.947} [concrete]
|
||||
// CHECK:STDOUT: %complete_type.90c: <witness> = complete_type_witness %struct_type.base.a1b [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.746: type = pattern_type %Derived [concrete]
|
||||
@@ -350,18 +342,20 @@ fn H() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Main.import_ref.cb0: <witness> = import_ref Main//extend_generic_base, loc10_1, loaded [concrete = constants.%complete_type.620]
|
||||
// CHECK:STDOUT: %Main.import_ref.61b = import_ref Main//extend_generic_base, inst{{[0-9A-F]+}} [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.573: %Param.elem = import_ref Main//extend_generic_base, loc9_8, loaded [concrete = %.8bf]
|
||||
// CHECK:STDOUT: %Main.import_ref.a22: %Param.elem = import_ref Main//extend_generic_base, loc9_8, loaded [concrete = %field_decl.864]
|
||||
// CHECK:STDOUT: %Main.import_ref.7e3: <witness> = import_ref Main//extend_generic_base, loc6_1, loaded [symbolic = @Base.%complete_type (constants.%complete_type.735)]
|
||||
// CHECK:STDOUT: %Main.import_ref.821 = import_ref Main//extend_generic_base, inst{{[0-9A-F]+}} [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.da1: @Base.%Base.elem (%Base.elem.a3c) = import_ref Main//extend_generic_base, loc5_8, loaded [concrete = %.866]
|
||||
// CHECK:STDOUT: %Main.import_ref.be5: @Base.%Base.elem (%Base.elem.a3c) = import_ref Main//extend_generic_base, loc5_8, loaded [concrete = %field_decl.2df]
|
||||
// CHECK:STDOUT: %Main.import_ref.b3b: type = import_ref Main//extend_generic_base, loc4_18, loaded [symbolic = @Base.%T (constants.%T.67d)]
|
||||
// CHECK:STDOUT: %Main.import_ref.58d: <witness> = import_ref Main//extend_generic_base, loc14_1, loaded [concrete = constants.%complete_type.90c]
|
||||
// CHECK:STDOUT: %Main.import_ref.87c = import_ref Main//extend_generic_base, inst{{[0-9A-F]+}} [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.4a4 = import_ref Main//extend_generic_base, loc13_27, unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.c669b4.2: type = import_ref Main//extend_generic_base, loc13_26, loaded [concrete = constants.%Base.947]
|
||||
// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic]
|
||||
// CHECK:STDOUT: %.866: @Base.%Base.elem (%Base.elem.a3c) = field_decl x, element0 [concrete]
|
||||
// CHECK:STDOUT: %.8bf: %Param.elem = field_decl y, element0 [concrete]
|
||||
// CHECK:STDOUT: %Main.import_ref.57f = import_ref Main//extend_generic_base, loc5_10, unloaded
|
||||
// CHECK:STDOUT: %field_decl.2df: @Base.%Base.elem (%Base.elem.a3c) = field_decl x, element0, %Main.import_ref.57f in [concrete] {}
|
||||
// CHECK:STDOUT: %Main.import_ref.69c = import_ref Main//extend_generic_base, loc9_10, unloaded
|
||||
// CHECK:STDOUT: %field_decl.864: %Param.elem = field_decl y, element0, %Main.import_ref.69c in [concrete] {}
|
||||
// CHECK:STDOUT: %Core.Copy: type = import_ref Core//prelude/parts/copy, Copy, loaded [concrete = constants.%Copy.type]
|
||||
// CHECK:STDOUT: %Core.import_ref.cd6: @Int.as.Copy.impl.%Int.as.Copy.impl.Op.type (%Int.as.Copy.impl.Op.type.ac8) = import_ref Core//prelude/parts/int, loc{{\d+_\d+}}, loaded [symbolic = @Int.as.Copy.impl.%Int.as.Copy.impl.Op (constants.%Int.as.Copy.impl.Op.5e0)]
|
||||
// CHECK:STDOUT: %Copy.impl_witness_table.8d2 = impl_witness_table (%Core.import_ref.cd6), @Int.as.Copy.impl [concrete]
|
||||
@@ -409,7 +403,7 @@ fn H() {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Main.import_ref.61b
|
||||
// CHECK:STDOUT: .y = imports.%Main.import_ref.573
|
||||
// CHECK:STDOUT: .y = imports.%Main.import_ref.a22
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: generic class @Base(imports.%Main.import_ref.b3b: type) [from "extend_generic_base.carbon"] {
|
||||
@@ -418,8 +412,6 @@ fn H() {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete: <witness> = require_complete_type %T [symbolic = %require_complete (constants.%require_complete.944)]
|
||||
// CHECK:STDOUT: %pattern_type: type = pattern_type %T [symbolic = %pattern_type (constants.%pattern_type.51d)]
|
||||
// CHECK:STDOUT: %x.patt: @Base.%pattern_type (%pattern_type.51d) = ref_binding_pattern x [symbolic = %x.patt (constants.%x.patt.719)]
|
||||
// CHECK:STDOUT: %Base: type = class_type @Base, @Base(%T) [symbolic = %Base (constants.%Base.798)]
|
||||
// CHECK:STDOUT: %Base.elem: type = unbound_element_type %Base, %T [symbolic = %Base.elem (constants.%Base.elem.a3c)]
|
||||
// CHECK:STDOUT: %struct_type.x: type = struct_type {.x: @Base.%T (%T.67d)} [symbolic = %struct_type.x (constants.%struct_type.x.0c5)]
|
||||
@@ -430,19 +422,19 @@ fn H() {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Main.import_ref.821
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.da1
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.be5
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @ImportedDoubleFieldAccess(%d.param: %Derived) -> out %return.param: %i32 {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %d.ref: %Derived = name_ref d, %d
|
||||
// CHECK:STDOUT: %x.ref: %Base.elem.3f2 = name_ref x, imports.%Main.import_ref.da1 [concrete = imports.%.866]
|
||||
// CHECK:STDOUT: %x.ref: %Base.elem.3f2 = name_ref x, imports.%Main.import_ref.be5 [concrete = imports.%field_decl.2df]
|
||||
// CHECK:STDOUT: %.loc7_11.1: %Base.947 = as_compatible %d.ref
|
||||
// CHECK:STDOUT: %.loc7_11.2: ref %Base.947 = class_element_access %.loc7_11.1, element0
|
||||
// CHECK:STDOUT: %.loc7_11.3: ref %Base.947 = converted %d.ref, %.loc7_11.2
|
||||
// CHECK:STDOUT: %.loc7_11.4: ref %Param = class_element_access %.loc7_11.3, element0
|
||||
// CHECK:STDOUT: %y.ref: %Param.elem = name_ref y, imports.%Main.import_ref.573 [concrete = imports.%.8bf]
|
||||
// CHECK:STDOUT: %y.ref: %Param.elem = name_ref y, imports.%Main.import_ref.a22 [concrete = imports.%field_decl.864]
|
||||
// CHECK:STDOUT: %.loc7_13.1: ref %i32 = class_element_access %.loc7_11.4, element0
|
||||
// CHECK:STDOUT: %.loc7_13.2: %i32 = acquire_value %.loc7_13.1
|
||||
// CHECK:STDOUT: %impl.elem0: %.737 = impl_witness_access constants.%Copy.impl_witness.b51, element0 [concrete = constants.%Int.as.Copy.impl.Op.4f6]
|
||||
@@ -464,8 +456,6 @@ fn H() {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete => constants.%complete_type.620
|
||||
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.116
|
||||
// CHECK:STDOUT: %x.patt => constants.%x.patt.6d5
|
||||
// CHECK:STDOUT: %Base => constants.%Base.947
|
||||
// CHECK:STDOUT: %Base.elem => constants.%Base.elem.3f2
|
||||
// CHECK:STDOUT: %struct_type.x => constants.%struct_type.x.301
|
||||
|
||||
+13
-14
@@ -63,7 +63,6 @@ class Declaration(T: type);
|
||||
// CHECK:STDOUT: %Class.GetValue.type: type = fn_type @Class.GetValue, @Class(%T.f84) [symbolic]
|
||||
// CHECK:STDOUT: %Class.GetValue: %Class.GetValue.type = struct_value () [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.d83: <witness> = require_complete_type %T.as_type [symbolic]
|
||||
// CHECK:STDOUT: %k.patt: %pattern_type.2c66b4.2 = ref_binding_pattern k [symbolic]
|
||||
// CHECK:STDOUT: %Class.elem: type = unbound_element_type %Class, %T.as_type [symbolic]
|
||||
// CHECK:STDOUT: %struct_type.k: type = struct_type {.k: %T.as_type} [symbolic]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %struct_type.k [symbolic]
|
||||
@@ -128,13 +127,11 @@ class Declaration(T: type);
|
||||
// CHECK:STDOUT: %Class.GetAddr: @Class.%Class.GetAddr.type (%Class.GetAddr.type) = struct_value () [symbolic = %Class.GetAddr (constants.%Class.GetAddr)]
|
||||
// CHECK:STDOUT: %Class.GetValue.type: type = fn_type @Class.GetValue, @Class(%T.loc5_14.1) [symbolic = %Class.GetValue.type (constants.%Class.GetValue.type)]
|
||||
// CHECK:STDOUT: %Class.GetValue: @Class.%Class.GetValue.type (%Class.GetValue.type) = struct_value () [symbolic = %Class.GetValue (constants.%Class.GetValue)]
|
||||
// CHECK:STDOUT: %T.as_type: type = facet_access_type %T.loc5_14.1 [symbolic = %T.as_type (constants.%T.as_type)]
|
||||
// CHECK:STDOUT: %require_complete: <witness> = require_complete_type %T.as_type [symbolic = %require_complete (constants.%require_complete.d83)]
|
||||
// CHECK:STDOUT: %pattern_type: type = pattern_type %T.as_type [symbolic = %pattern_type (constants.%pattern_type.2c66b4.2)]
|
||||
// CHECK:STDOUT: %k.patt: @Class.%pattern_type (%pattern_type.2c66b4.2) = ref_binding_pattern k [symbolic = %k.patt (constants.%k.patt)]
|
||||
// CHECK:STDOUT: %T.as_type.loc14_10.2: type = facet_access_type %T.loc5_14.1 [symbolic = %T.as_type.loc14_10.2 (constants.%T.as_type)]
|
||||
// CHECK:STDOUT: %require_complete: <witness> = require_complete_type %T.as_type.loc14_10.2 [symbolic = %require_complete (constants.%require_complete.d83)]
|
||||
// CHECK:STDOUT: %Class: type = class_type @Class, @Class(%T.loc5_14.1) [symbolic = %Class (constants.%Class)]
|
||||
// CHECK:STDOUT: %Class.elem: type = unbound_element_type %Class, %T.as_type [symbolic = %Class.elem (constants.%Class.elem)]
|
||||
// CHECK:STDOUT: %struct_type.k: type = struct_type {.k: @Class.%T.as_type (%T.as_type)} [symbolic = %struct_type.k (constants.%struct_type.k)]
|
||||
// CHECK:STDOUT: %Class.elem: type = unbound_element_type %Class, %T.as_type.loc14_10.2 [symbolic = %Class.elem (constants.%Class.elem)]
|
||||
// CHECK:STDOUT: %struct_type.k: type = struct_type {.k: @Class.%T.as_type.loc14_10.2 (%T.as_type)} [symbolic = %struct_type.k (constants.%struct_type.k)]
|
||||
// CHECK:STDOUT: %complete_type.loc15_1.2: <witness> = complete_type_witness %struct_type.k [symbolic = %complete_type.loc15_1.2 (constants.%complete_type)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class {
|
||||
@@ -177,7 +174,11 @@ class Declaration(T: type);
|
||||
// CHECK:STDOUT: %return.param: ref @Class.GetValue.%T.as_type.loc10_24.1 (%T.as_type) = out_param call_param1
|
||||
// CHECK:STDOUT: %return: ref @Class.GetValue.%T.as_type.loc10_24.1 (%T.as_type) = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.loc14: @Class.%Class.elem (%Class.elem) = field_decl k, element0 [concrete]
|
||||
// CHECK:STDOUT: %field_decl: @Class.%Class.elem (%Class.elem) = field_decl k, element0, %.loc14 in [concrete] {
|
||||
// CHECK:STDOUT: %T.ref: %Copy.type = name_ref T, %T.loc5_14.2 [symbolic = %T.loc5_14.1 (constants.%T.f84)]
|
||||
// CHECK:STDOUT: %T.as_type.loc14_10.1: type = facet_access_type %T.ref [symbolic = %T.as_type.loc14_10.2 (constants.%T.as_type)]
|
||||
// CHECK:STDOUT: %.loc14: type = converted %T.ref, %T.as_type.loc14_10.1 [symbolic = %T.as_type.loc14_10.2 (constants.%T.as_type)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %complete_type.loc15_1.1: <witness> = complete_type_witness constants.%struct_type.k [symbolic = %complete_type.loc15_1.2 (constants.%complete_type)]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type.loc15_1.1
|
||||
// CHECK:STDOUT:
|
||||
@@ -186,7 +187,7 @@ class Declaration(T: type);
|
||||
// CHECK:STDOUT: .T = <poisoned>
|
||||
// CHECK:STDOUT: .GetAddr = %Class.GetAddr.decl
|
||||
// CHECK:STDOUT: .GetValue = %Class.GetValue.decl
|
||||
// CHECK:STDOUT: .k = %.loc14
|
||||
// CHECK:STDOUT: .k = %field_decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -225,7 +226,7 @@ class Declaration(T: type);
|
||||
// CHECK:STDOUT: fn(%self.param: ref @Class.GetAddr.%Class (%Class)) -> out %return.param: @Class.GetAddr.%ptr.loc6_28.1 (%ptr.215) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %self.ref: ref @Class.GetAddr.%Class (%Class) = name_ref self, %self
|
||||
// CHECK:STDOUT: %k.ref: @Class.GetAddr.%Class.elem (%Class.elem) = name_ref k, @Class.%.loc14 [concrete = @Class.%.loc14]
|
||||
// CHECK:STDOUT: %k.ref: @Class.GetAddr.%Class.elem (%Class.elem) = name_ref k, @Class.%field_decl [concrete = @Class.%field_decl]
|
||||
// CHECK:STDOUT: %.loc7_17: ref @Class.GetAddr.%T.as_type.loc6_28.1 (%T.as_type) = class_element_access %self.ref, element0
|
||||
// CHECK:STDOUT: %addr: @Class.GetAddr.%ptr.loc6_28.1 (%ptr.215) = addr_of %.loc7_17
|
||||
// CHECK:STDOUT: %impl.elem0.loc7_12.1: @Class.GetAddr.%.loc7_12.4 (%.45d) = impl_witness_access constants.%Copy.lookup_impl_witness.cf6, element0 [symbolic = %impl.elem0.loc7_12.2 (constants.%impl.elem0.c5d)]
|
||||
@@ -266,7 +267,7 @@ class Declaration(T: type);
|
||||
// CHECK:STDOUT: fn(%self.param: @Class.GetValue.%Class (%Class)) -> out %return.param: @Class.GetValue.%T.as_type.loc10_24.1 (%T.as_type) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %self.ref: @Class.GetValue.%Class (%Class) = name_ref self, %self
|
||||
// CHECK:STDOUT: %k.ref: @Class.GetValue.%Class.elem (%Class.elem) = name_ref k, @Class.%.loc14 [concrete = @Class.%.loc14]
|
||||
// CHECK:STDOUT: %k.ref: @Class.GetValue.%Class.elem (%Class.elem) = name_ref k, @Class.%field_decl [concrete = @Class.%field_decl]
|
||||
// CHECK:STDOUT: %.loc11_16.1: ref @Class.GetValue.%T.as_type.loc10_24.1 (%T.as_type) = class_element_access %self.ref, element0
|
||||
// CHECK:STDOUT: %.loc11_16.2: @Class.GetValue.%T.as_type.loc10_24.1 (%T.as_type) = acquire_value %.loc11_16.1
|
||||
// CHECK:STDOUT: %impl.elem0.loc11_16.1: @Class.GetValue.%.loc11_16.5 (%.c29) = impl_witness_access constants.%Copy.lookup_impl_witness.d9c, element0 [symbolic = %impl.elem0.loc11_16.2 (constants.%impl.elem0.bd2)]
|
||||
@@ -290,10 +291,8 @@ class Declaration(T: type);
|
||||
// CHECK:STDOUT: %Class.GetAddr => constants.%Class.GetAddr
|
||||
// CHECK:STDOUT: %Class.GetValue.type => constants.%Class.GetValue.type
|
||||
// CHECK:STDOUT: %Class.GetValue => constants.%Class.GetValue
|
||||
// CHECK:STDOUT: %T.as_type => constants.%T.as_type
|
||||
// CHECK:STDOUT: %T.as_type.loc14_10.2 => constants.%T.as_type
|
||||
// CHECK:STDOUT: %require_complete => constants.%require_complete.d83
|
||||
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.2c66b4.2
|
||||
// CHECK:STDOUT: %k.patt => constants.%k.patt
|
||||
// CHECK:STDOUT: %Class => constants.%Class
|
||||
// CHECK:STDOUT: %Class.elem => constants.%Class.elem
|
||||
// CHECK:STDOUT: %struct_type.k => constants.%struct_type.k
|
||||
|
||||
@@ -65,19 +65,25 @@ fn F(a: A(0)*) {
|
||||
// CHECK:STDOUT: %A.elem.5cd: type = unbound_element_type %A.6bc, %B [symbolic]
|
||||
// CHECK:STDOUT: %ImplicitAs.type.0ff: type = generic_interface_type @ImplicitAs [concrete]
|
||||
// CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.0ff = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %ImplicitAs.type.7cb: type = facet_type <@ImplicitAs, @ImplicitAs(Core.IntLiteral)> [concrete]
|
||||
// CHECK:STDOUT: %To: Core.IntLiteral = symbolic_binding To, 0 [symbolic]
|
||||
// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.e74: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic]
|
||||
// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.845: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.e74 = struct_value () [symbolic]
|
||||
// CHECK:STDOUT: %From: Core.IntLiteral = symbolic_binding From, 0 [symbolic]
|
||||
// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.type.48d: type = fn_type @Int.as.ImplicitAs.impl.Convert, @Int.as.ImplicitAs.impl(%From) [symbolic]
|
||||
// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.0f9: %Int.as.ImplicitAs.impl.Convert.type.48d = struct_value () [symbolic]
|
||||
// CHECK:STDOUT: %ImplicitAs.impl_witness.590: <witness> = impl_witness imports.%ImplicitAs.impl_witness_table.204, @Int.as.ImplicitAs.impl(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.type.683: type = fn_type @Int.as.ImplicitAs.impl.Convert, @Int.as.ImplicitAs.impl(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.69e: %Int.as.ImplicitAs.impl.Convert.type.683 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %ImplicitAs.facet.8de: %ImplicitAs.type.7cb = facet_value %i32, (%ImplicitAs.impl_witness.590) [concrete]
|
||||
// CHECK:STDOUT: %ImplicitAs.WithSelf.Convert.type.177: type = fn_type @ImplicitAs.WithSelf.Convert, @ImplicitAs.WithSelf(Core.IntLiteral, %ImplicitAs.facet.8de) [concrete]
|
||||
// CHECK:STDOUT: %.e3f: type = fn_type_with_self_type %ImplicitAs.WithSelf.Convert.type.177, %ImplicitAs.facet.8de [concrete]
|
||||
// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.bound.c18: <bound method> = bound_method %N.37f, %Int.as.ImplicitAs.impl.Convert.69e [symbolic]
|
||||
// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.specific_fn: <specific function> = specific_function %Int.as.ImplicitAs.impl.Convert.69e, @Int.as.ImplicitAs.impl.Convert(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %bound_method.7c3: <bound method> = bound_method %N.37f, %Int.as.ImplicitAs.impl.Convert.specific_fn [symbolic]
|
||||
// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.call: init Core.IntLiteral = call %bound_method.7c3(%N.37f) [symbolic]
|
||||
// CHECK:STDOUT: %iN.builtin.9da: type = int_type signed, %Int.as.ImplicitAs.impl.Convert.call [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.468: <witness> = require_complete_type %iN.builtin.9da [symbolic]
|
||||
// CHECK:STDOUT: %pattern_type.075: type = pattern_type %iN.builtin.9da [symbolic]
|
||||
// CHECK:STDOUT: %n.patt: %pattern_type.075 = ref_binding_pattern n [symbolic]
|
||||
// CHECK:STDOUT: %A.elem.81f: type = unbound_element_type %A.6bc, %iN.builtin.9da [symbolic]
|
||||
// CHECK:STDOUT: %struct_type.base.n: type = struct_type {.base: %B, .n: %iN.builtin.9da} [symbolic]
|
||||
// CHECK:STDOUT: %complete_type.877: <witness> = complete_type_witness %struct_type.base.n [symbolic]
|
||||
@@ -121,6 +127,8 @@ fn F(a: A(0)*) {
|
||||
// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.0ff = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic]
|
||||
// CHECK:STDOUT: %Core.import_ref.edf: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.e74) = import_ref Core//prelude/parts/int, loc{{\d+_\d+}}, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.845)]
|
||||
// CHECK:STDOUT: %ImplicitAs.impl_witness_table.1aa = impl_witness_table (%Core.import_ref.edf), @Core.IntLiteral.as.ImplicitAs.impl [concrete]
|
||||
// CHECK:STDOUT: %Core.import_ref.32e: @Int.as.ImplicitAs.impl.%Int.as.ImplicitAs.impl.Convert.type (%Int.as.ImplicitAs.impl.Convert.type.48d) = import_ref Core//prelude/parts/int, loc{{\d+_\d+}}, loaded [symbolic = @Int.as.ImplicitAs.impl.%Int.as.ImplicitAs.impl.Convert (constants.%Int.as.ImplicitAs.impl.Convert.0f9)]
|
||||
// CHECK:STDOUT: %ImplicitAs.impl_witness_table.204 = impl_witness_table (%Core.import_ref.32e), @Int.as.ImplicitAs.impl [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -199,12 +207,10 @@ fn F(a: A(0)*) {
|
||||
// CHECK:STDOUT: %A: type = class_type @A, @A(%N.loc6_10.1) [symbolic = %A (constants.%A.6bc)]
|
||||
// CHECK:STDOUT: %A.elem.loc7: type = unbound_element_type %A, constants.%B [symbolic = %A.elem.loc7 (constants.%A.elem.5cd)]
|
||||
// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.bound: <bound method> = bound_method %N.loc6_10.1, constants.%Int.as.ImplicitAs.impl.Convert.69e [symbolic = %Int.as.ImplicitAs.impl.Convert.bound (constants.%Int.as.ImplicitAs.impl.Convert.bound.c18)]
|
||||
// CHECK:STDOUT: %bound_method: <bound method> = bound_method %N.loc6_10.1, constants.%Int.as.ImplicitAs.impl.Convert.specific_fn [symbolic = %bound_method (constants.%bound_method.7c3)]
|
||||
// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.call: init Core.IntLiteral = call %bound_method(%N.loc6_10.1) [symbolic = %Int.as.ImplicitAs.impl.Convert.call (constants.%Int.as.ImplicitAs.impl.Convert.call)]
|
||||
// CHECK:STDOUT: %iN.builtin: type = int_type signed, %Int.as.ImplicitAs.impl.Convert.call [symbolic = %iN.builtin (constants.%iN.builtin.9da)]
|
||||
// CHECK:STDOUT: %bound_method.loc9_14.3: <bound method> = bound_method %N.loc6_10.1, constants.%Int.as.ImplicitAs.impl.Convert.specific_fn [symbolic = %bound_method.loc9_14.3 (constants.%bound_method.7c3)]
|
||||
// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.call.loc9_14.2: init Core.IntLiteral = call %bound_method.loc9_14.3(%N.loc6_10.1) [symbolic = %Int.as.ImplicitAs.impl.Convert.call.loc9_14.2 (constants.%Int.as.ImplicitAs.impl.Convert.call)]
|
||||
// CHECK:STDOUT: %iN.builtin: type = int_type signed, %Int.as.ImplicitAs.impl.Convert.call.loc9_14.2 [symbolic = %iN.builtin (constants.%iN.builtin.9da)]
|
||||
// CHECK:STDOUT: %require_complete: <witness> = require_complete_type %iN.builtin [symbolic = %require_complete (constants.%require_complete.468)]
|
||||
// CHECK:STDOUT: %pattern_type: type = pattern_type %iN.builtin [symbolic = %pattern_type (constants.%pattern_type.075)]
|
||||
// CHECK:STDOUT: %n.patt: @A.%pattern_type (%pattern_type.075) = ref_binding_pattern n [symbolic = %n.patt (constants.%n.patt)]
|
||||
// CHECK:STDOUT: %A.elem.loc9: type = unbound_element_type %A, %iN.builtin [symbolic = %A.elem.loc9 (constants.%A.elem.81f)]
|
||||
// CHECK:STDOUT: %struct_type.base.n: type = struct_type {.base: %B, .n: @A.%iN.builtin (%iN.builtin.9da)} [symbolic = %struct_type.base.n (constants.%struct_type.base.n)]
|
||||
// CHECK:STDOUT: %complete_type.loc10_1.2: <witness> = complete_type_witness %struct_type.base.n [symbolic = %complete_type.loc10_1.2 (constants.%complete_type.877)]
|
||||
@@ -212,7 +218,20 @@ fn F(a: A(0)*) {
|
||||
// CHECK:STDOUT: class {
|
||||
// CHECK:STDOUT: %B.ref: type = name_ref B, file.%B.decl [concrete = constants.%B]
|
||||
// CHECK:STDOUT: %.loc7: @A.%A.elem.loc7 (%A.elem.5cd) = base_decl %B.ref, element0 [concrete]
|
||||
// CHECK:STDOUT: %.loc9: @A.%A.elem.loc9 (%A.elem.81f) = field_decl n, element1 [concrete]
|
||||
// CHECK:STDOUT: %field_decl: @A.%A.elem.loc9 (%A.elem.81f) = field_decl n, element1, %.loc9_15.2 in [concrete] {
|
||||
// CHECK:STDOUT: %Int.ref: %Int.type.9c0 = name_ref Int, file.%Int.decl [concrete = constants.%Int.c4a]
|
||||
// CHECK:STDOUT: %N.ref: %i32 = name_ref N, %N.loc6_10.2 [symbolic = %N.loc6_10.1 (constants.%N.37f)]
|
||||
// CHECK:STDOUT: %impl.elem0: %.e3f = impl_witness_access constants.%ImplicitAs.impl_witness.590, element0 [concrete = constants.%Int.as.ImplicitAs.impl.Convert.69e]
|
||||
// CHECK:STDOUT: %bound_method.loc9_14.1: <bound method> = bound_method %N.ref, %impl.elem0 [symbolic = %Int.as.ImplicitAs.impl.Convert.bound (constants.%Int.as.ImplicitAs.impl.Convert.bound.c18)]
|
||||
// CHECK:STDOUT: %specific_fn: <specific function> = specific_function %impl.elem0, @Int.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Int.as.ImplicitAs.impl.Convert.specific_fn]
|
||||
// CHECK:STDOUT: %bound_method.loc9_14.2: <bound method> = bound_method %N.ref, %specific_fn [symbolic = %bound_method.loc9_14.3 (constants.%bound_method.7c3)]
|
||||
// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.call.loc9_14.1: init Core.IntLiteral = call %bound_method.loc9_14.2(%N.ref) [symbolic = %Int.as.ImplicitAs.impl.Convert.call.loc9_14.2 (constants.%Int.as.ImplicitAs.impl.Convert.call)]
|
||||
// CHECK:STDOUT: %.loc9_14.1: Core.IntLiteral = value_of_initializer %Int.as.ImplicitAs.impl.Convert.call.loc9_14.1 [symbolic = %Int.as.ImplicitAs.impl.Convert.call.loc9_14.2 (constants.%Int.as.ImplicitAs.impl.Convert.call)]
|
||||
// CHECK:STDOUT: %.loc9_14.2: Core.IntLiteral = converted %N.ref, %.loc9_14.1 [symbolic = %Int.as.ImplicitAs.impl.Convert.call.loc9_14.2 (constants.%Int.as.ImplicitAs.impl.Convert.call)]
|
||||
// CHECK:STDOUT: %Int.call: init type = call %Int.ref(%.loc9_14.2) [symbolic = %iN.builtin (constants.%iN.builtin.9da)]
|
||||
// CHECK:STDOUT: %.loc9_15.1: type = value_of_initializer %Int.call [symbolic = %iN.builtin (constants.%iN.builtin.9da)]
|
||||
// CHECK:STDOUT: %.loc9_15.2: type = converted %Int.call, %.loc9_15.1 [symbolic = %iN.builtin (constants.%iN.builtin.9da)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %complete_type.loc10_1.1: <witness> = complete_type_witness constants.%struct_type.base.n [symbolic = %complete_type.loc10_1.2 (constants.%complete_type.877)]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type.loc10_1.1
|
||||
// CHECK:STDOUT:
|
||||
@@ -222,7 +241,7 @@ fn F(a: A(0)*) {
|
||||
// CHECK:STDOUT: .base = %.loc7
|
||||
// CHECK:STDOUT: .Int = <poisoned>
|
||||
// CHECK:STDOUT: .N = <poisoned>
|
||||
// CHECK:STDOUT: .n = %.loc9
|
||||
// CHECK:STDOUT: .n = %field_decl
|
||||
// CHECK:STDOUT: extend %B.ref
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
@@ -260,12 +279,10 @@ fn F(a: A(0)*) {
|
||||
// CHECK:STDOUT: %A => constants.%A.32a
|
||||
// CHECK:STDOUT: %A.elem.loc7 => constants.%A.elem.dc2
|
||||
// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.bound => constants.%Int.as.ImplicitAs.impl.Convert.bound.319
|
||||
// CHECK:STDOUT: %bound_method => constants.%bound_method.df0
|
||||
// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.call => constants.%int_0.5c6
|
||||
// CHECK:STDOUT: %bound_method.loc9_14.3 => constants.%bound_method.df0
|
||||
// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.call.loc9_14.2 => constants.%int_0.5c6
|
||||
// CHECK:STDOUT: %iN.builtin => <error>
|
||||
// CHECK:STDOUT: %require_complete => <error>
|
||||
// CHECK:STDOUT: %pattern_type => <error>
|
||||
// CHECK:STDOUT: %n.patt => <error>
|
||||
// CHECK:STDOUT: %A.elem.loc9 => <error>
|
||||
// CHECK:STDOUT: %struct_type.base.n => <error>
|
||||
// CHECK:STDOUT: %complete_type.loc10_1.2 => <error>
|
||||
|
||||
+7
-18
@@ -45,8 +45,6 @@ fn H(generic U: Core.Copy, c: Class(U)) -> U {
|
||||
// CHECK:STDOUT: %Class.generic: %Class.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Class.7bc: type = class_type @Class, @Class(%T.67d) [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.944: <witness> = require_complete_type %T.67d [symbolic]
|
||||
// CHECK:STDOUT: %pattern_type.51d: type = pattern_type %T.67d [symbolic]
|
||||
// CHECK:STDOUT: %x.patt.719: %pattern_type.51d = ref_binding_pattern x [symbolic]
|
||||
// CHECK:STDOUT: %Class.elem.959: type = unbound_element_type %Class.7bc, %T.67d [symbolic]
|
||||
// CHECK:STDOUT: %struct_type.x.0c5: type = struct_type {.x: %T.67d} [symbolic]
|
||||
// CHECK:STDOUT: %complete_type.735: <witness> = complete_type_witness %struct_type.x.0c5 [symbolic]
|
||||
@@ -67,7 +65,6 @@ fn H(generic U: Core.Copy, c: Class(U)) -> U {
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %i32.builtin: type = int_type signed, %int_32 [concrete]
|
||||
// CHECK:STDOUT: %complete_type.f8a: <witness> = complete_type_witness %i32.builtin [concrete]
|
||||
// CHECK:STDOUT: %x.patt.29f: %pattern_type.6b6 = ref_binding_pattern x [concrete]
|
||||
// CHECK:STDOUT: %Class.elem.344: type = unbound_element_type %Class.1b7, %i32 [concrete]
|
||||
// CHECK:STDOUT: %struct_type.x.a15: type = struct_type {.x: %i32} [concrete]
|
||||
// CHECK:STDOUT: %complete_type.0c6: <witness> = complete_type_witness %struct_type.x.a15 [concrete]
|
||||
@@ -101,7 +98,6 @@ fn H(generic U: Core.Copy, c: Class(U)) -> U {
|
||||
// CHECK:STDOUT: %return.patt.f449d7.1: %pattern_type.2c66b4.2 = return_slot_pattern %return.param_patt.bf4475.2, %T.as_type [symbolic]
|
||||
// CHECK:STDOUT: %G.type: type = fn_type @G [concrete]
|
||||
// CHECK:STDOUT: %G: %G.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %x.patt.f3eeb3.1: %pattern_type.2c66b4.2 = ref_binding_pattern x [symbolic]
|
||||
// CHECK:STDOUT: %Class.elem.14b853.1: type = unbound_element_type %Class.c74ef3.1, %T.as_type [symbolic]
|
||||
// CHECK:STDOUT: %struct_type.x.ac1e9e.1: type = struct_type {.x: %T.as_type} [symbolic]
|
||||
// CHECK:STDOUT: %complete_type.b8dd1a.1: <witness> = complete_type_witness %struct_type.x.ac1e9e.1 [symbolic]
|
||||
@@ -120,7 +116,6 @@ fn H(generic U: Core.Copy, c: Class(U)) -> U {
|
||||
// CHECK:STDOUT: %H.type: type = fn_type @H [concrete]
|
||||
// CHECK:STDOUT: %H: %H.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %require_complete.d83f06.2: <witness> = require_complete_type %U.as_type.c1c [symbolic]
|
||||
// CHECK:STDOUT: %x.patt.f3eeb3.2: %pattern_type.2c66b4.3 = ref_binding_pattern x [symbolic]
|
||||
// CHECK:STDOUT: %Class.elem.14b853.2: type = unbound_element_type %Class.c74ef3.2, %U.as_type.c1c [symbolic]
|
||||
// CHECK:STDOUT: %struct_type.x.ac1e9e.2: type = struct_type {.x: %U.as_type.c1c} [symbolic]
|
||||
// CHECK:STDOUT: %complete_type.b8dd1a.2: <witness> = complete_type_witness %struct_type.x.ac1e9e.2 [symbolic]
|
||||
@@ -239,29 +234,29 @@ fn H(generic U: Core.Copy, c: Class(U)) -> U {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete: <witness> = require_complete_type %T.loc5_14.1 [symbolic = %require_complete (constants.%require_complete.944)]
|
||||
// CHECK:STDOUT: %pattern_type: type = pattern_type %T.loc5_14.1 [symbolic = %pattern_type (constants.%pattern_type.51d)]
|
||||
// CHECK:STDOUT: %x.patt: @Class.%pattern_type (%pattern_type.51d) = ref_binding_pattern x [symbolic = %x.patt (constants.%x.patt.719)]
|
||||
// CHECK:STDOUT: %Class: type = class_type @Class, @Class(%T.loc5_14.1) [symbolic = %Class (constants.%Class.7bc)]
|
||||
// CHECK:STDOUT: %Class.elem: type = unbound_element_type %Class, %T.loc5_14.1 [symbolic = %Class.elem (constants.%Class.elem.959)]
|
||||
// CHECK:STDOUT: %struct_type.x: type = struct_type {.x: @Class.%T.loc5_14.1 (%T.67d)} [symbolic = %struct_type.x (constants.%struct_type.x.0c5)]
|
||||
// CHECK:STDOUT: %complete_type.loc7_1.2: <witness> = complete_type_witness %struct_type.x [symbolic = %complete_type.loc7_1.2 (constants.%complete_type.735)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class {
|
||||
// CHECK:STDOUT: %.loc6: @Class.%Class.elem (%Class.elem.959) = field_decl x, element0 [concrete]
|
||||
// CHECK:STDOUT: %field_decl: @Class.%Class.elem (%Class.elem.959) = field_decl x, element0, %T.ref in [concrete] {
|
||||
// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc5_14.2 [symbolic = %T.loc5_14.1 (constants.%T.67d)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %complete_type.loc7_1.1: <witness> = complete_type_witness constants.%struct_type.x.0c5 [symbolic = %complete_type.loc7_1.2 (constants.%complete_type.735)]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type.loc7_1.1
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = constants.%Class.7bc
|
||||
// CHECK:STDOUT: .T = <poisoned>
|
||||
// CHECK:STDOUT: .x = %.loc6
|
||||
// CHECK:STDOUT: .x = %field_decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @F(%c.param: %Class.1b7) -> out %return.param: %i32 {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %c.ref: %Class.1b7 = name_ref c, %c
|
||||
// CHECK:STDOUT: %x.ref: %Class.elem.344 = name_ref x, @Class.%.loc6 [concrete = @Class.%.loc6]
|
||||
// CHECK:STDOUT: %x.ref: %Class.elem.344 = name_ref x, @Class.%field_decl [concrete = @Class.%field_decl]
|
||||
// CHECK:STDOUT: %.loc10_11.1: ref %i32 = class_element_access %c.ref, element0
|
||||
// CHECK:STDOUT: %.loc10_11.2: %i32 = acquire_value %.loc10_11.1
|
||||
// CHECK:STDOUT: %impl.elem0: %.737 = impl_witness_access constants.%Copy.impl_witness.b51, element0 [concrete = constants.%Int.as.Copy.impl.Op.4f6]
|
||||
@@ -298,7 +293,7 @@ fn H(generic U: Core.Copy, c: Class(U)) -> U {
|
||||
// CHECK:STDOUT: fn(%c.param: @G.%Class.loc13_38.1 (%Class.c74ef3.1)) -> out %return.param: @G.%T.as_type.loc13_38.1 (%T.as_type) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %c.ref: @G.%Class.loc13_38.1 (%Class.c74ef3.1) = name_ref c, %c
|
||||
// CHECK:STDOUT: %x.ref: @G.%Class.elem (%Class.elem.14b853.1) = name_ref x, @Class.%.loc6 [concrete = @Class.%.loc6]
|
||||
// CHECK:STDOUT: %x.ref: @G.%Class.elem (%Class.elem.14b853.1) = name_ref x, @Class.%field_decl [concrete = @Class.%field_decl]
|
||||
// CHECK:STDOUT: %.loc14_11.1: ref @G.%T.as_type.loc13_38.1 (%T.as_type) = class_element_access %c.ref, element0
|
||||
// CHECK:STDOUT: %.loc14_11.2: @G.%T.as_type.loc13_38.1 (%T.as_type) = acquire_value %.loc14_11.1
|
||||
// CHECK:STDOUT: %impl.elem0.loc14_11.1: @G.%.loc14_11.5 (%.c29330.1) = impl_witness_access constants.%Copy.lookup_impl_witness.d9c332.1, element0 [symbolic = %impl.elem0.loc14_11.2 (constants.%impl.elem0.bd2456.1)]
|
||||
@@ -339,7 +334,7 @@ fn H(generic U: Core.Copy, c: Class(U)) -> U {
|
||||
// CHECK:STDOUT: fn(%c.param: @H.%Class.loc17_38.1 (%Class.c74ef3.2)) -> out %return.param: @H.%U.as_type.loc17_38.1 (%U.as_type.c1c) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %c.ref: @H.%Class.loc17_38.1 (%Class.c74ef3.2) = name_ref c, %c
|
||||
// CHECK:STDOUT: %x.ref: @H.%Class.elem (%Class.elem.14b853.2) = name_ref x, @Class.%.loc6 [concrete = @Class.%.loc6]
|
||||
// CHECK:STDOUT: %x.ref: @H.%Class.elem (%Class.elem.14b853.2) = name_ref x, @Class.%field_decl [concrete = @Class.%field_decl]
|
||||
// CHECK:STDOUT: %.loc18_11.1: ref @H.%U.as_type.loc17_38.1 (%U.as_type.c1c) = class_element_access %c.ref, element0
|
||||
// CHECK:STDOUT: %.loc18_11.2: @H.%U.as_type.loc17_38.1 (%U.as_type.c1c) = acquire_value %.loc18_11.1
|
||||
// CHECK:STDOUT: %impl.elem0.loc18_11.1: @H.%.loc18_11.5 (%.c29330.2) = impl_witness_access constants.%Copy.lookup_impl_witness.d9c332.2, element0 [symbolic = %impl.elem0.loc18_11.2 (constants.%impl.elem0.bd2456.2)]
|
||||
@@ -365,8 +360,6 @@ fn H(generic U: Core.Copy, c: Class(U)) -> U {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete => constants.%complete_type.f8a
|
||||
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.6b6
|
||||
// CHECK:STDOUT: %x.patt => constants.%x.patt.29f
|
||||
// CHECK:STDOUT: %Class => constants.%Class.1b7
|
||||
// CHECK:STDOUT: %Class.elem => constants.%Class.elem.344
|
||||
// CHECK:STDOUT: %struct_type.x => constants.%struct_type.x.a15
|
||||
@@ -379,8 +372,6 @@ fn H(generic U: Core.Copy, c: Class(U)) -> U {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete => constants.%require_complete.d83f06.1
|
||||
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.2c66b4.2
|
||||
// CHECK:STDOUT: %x.patt => constants.%x.patt.f3eeb3.1
|
||||
// CHECK:STDOUT: %Class => constants.%Class.c74ef3.1
|
||||
// CHECK:STDOUT: %Class.elem => constants.%Class.elem.14b853.1
|
||||
// CHECK:STDOUT: %struct_type.x => constants.%struct_type.x.ac1e9e.1
|
||||
@@ -407,8 +398,6 @@ fn H(generic U: Core.Copy, c: Class(U)) -> U {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete => constants.%require_complete.d83f06.2
|
||||
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.2c66b4.3
|
||||
// CHECK:STDOUT: %x.patt => constants.%x.patt.f3eeb3.2
|
||||
// CHECK:STDOUT: %Class => constants.%Class.c74ef3.2
|
||||
// CHECK:STDOUT: %Class.elem => constants.%Class.elem.14b853.2
|
||||
// CHECK:STDOUT: %struct_type.x => constants.%struct_type.x.ac1e9e.2
|
||||
|
||||
+21
-18
@@ -210,7 +210,9 @@ class Class(U: type) {
|
||||
// CHECK:STDOUT: %CompleteClass.F: @CompleteClass.%CompleteClass.F.type (%CompleteClass.F.type) = struct_value () [symbolic = %CompleteClass.F (constants.%CompleteClass.F)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class {
|
||||
// CHECK:STDOUT: %.loc7: @CompleteClass.%CompleteClass.elem (%CompleteClass.elem) = field_decl n, element0 [concrete]
|
||||
// CHECK:STDOUT: %field_decl: @CompleteClass.%CompleteClass.elem (%CompleteClass.elem) = field_decl n, element0, %i32 in [concrete] {
|
||||
// CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %CompleteClass.F.decl: @CompleteClass.%CompleteClass.F.type (%CompleteClass.F.type) = fn_decl @CompleteClass.F [symbolic = @CompleteClass.%CompleteClass.F (constants.%CompleteClass.F)] {
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.6b6 = out_param_pattern [concrete = constants.%return.param_patt.a9a]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32 [concrete = constants.%return.patt.e1b]
|
||||
@@ -225,7 +227,7 @@ class Class(U: type) {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = constants.%CompleteClass.bae
|
||||
// CHECK:STDOUT: .n = %.loc7
|
||||
// CHECK:STDOUT: .n = %field_decl
|
||||
// CHECK:STDOUT: .F = %CompleteClass.F.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
@@ -290,8 +292,6 @@ class Class(U: type) {
|
||||
// CHECK:STDOUT: %Class.generic: %Class.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Class: type = class_type @Class, @Class(%T) [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.944: <witness> = require_complete_type %T [symbolic]
|
||||
// CHECK:STDOUT: %pattern_type.51d1c4.2: type = pattern_type %T [symbolic]
|
||||
// CHECK:STDOUT: %x.patt: %pattern_type.51d1c4.2 = ref_binding_pattern x [symbolic]
|
||||
// CHECK:STDOUT: %Class.elem: type = unbound_element_type %Class, %T [symbolic]
|
||||
// CHECK:STDOUT: %struct_type.x: type = struct_type {.x: %T} [symbolic]
|
||||
// CHECK:STDOUT: %complete_type.735: <witness> = complete_type_witness %struct_type.x [symbolic]
|
||||
@@ -346,7 +346,7 @@ class Class(U: type) {
|
||||
// CHECK:STDOUT: %Main.import_ref.b3bc94.2: type = import_ref Main//foo, loc6_22, loaded [symbolic = @CompleteClass.%T (constants.%T)]
|
||||
// CHECK:STDOUT: %Main.import_ref.0aa: <witness> = import_ref Main//foo, loc9_1, loaded [concrete = constants.%complete_type.cdf]
|
||||
// CHECK:STDOUT: %Main.import_ref.5db = import_ref Main//foo, inst{{[0-9A-F]+}} [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.29d = import_ref Main//foo, loc7_8, unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.bfc = import_ref Main//foo, loc7_8, unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.a02 = import_ref Main//foo, loc8_17, unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.b3bc94.3: type = import_ref Main//foo, loc6_22, loaded [symbolic = @CompleteClass.%T (constants.%T)]
|
||||
// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic]
|
||||
@@ -391,22 +391,22 @@ class Class(U: type) {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete: <witness> = require_complete_type %T.1 [symbolic = %require_complete (constants.%require_complete.944)]
|
||||
// CHECK:STDOUT: %pattern_type: type = pattern_type %T.1 [symbolic = %pattern_type (constants.%pattern_type.51d1c4.2)]
|
||||
// CHECK:STDOUT: %x.patt: @Class.%pattern_type (%pattern_type.51d1c4.2) = ref_binding_pattern x [symbolic = %x.patt (constants.%x.patt)]
|
||||
// CHECK:STDOUT: %Class: type = class_type @Class, @Class(%T.1) [symbolic = %Class (constants.%Class)]
|
||||
// CHECK:STDOUT: %Class.elem: type = unbound_element_type %Class, %T.1 [symbolic = %Class.elem (constants.%Class.elem)]
|
||||
// CHECK:STDOUT: %struct_type.x: type = struct_type {.x: @Class.%T.1 (%T)} [symbolic = %struct_type.x (constants.%struct_type.x)]
|
||||
// CHECK:STDOUT: %complete_type.loc6_1.2: <witness> = complete_type_witness %struct_type.x [symbolic = %complete_type.loc6_1.2 (constants.%complete_type.735)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class {
|
||||
// CHECK:STDOUT: %.loc5: @Class.%Class.elem (%Class.elem) = field_decl x, element0 [concrete]
|
||||
// CHECK:STDOUT: %field_decl: @Class.%Class.elem (%Class.elem) = field_decl x, element0, %T.ref in [concrete] {
|
||||
// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc4 [symbolic = %T.1 (constants.%T)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %complete_type.loc6_1.1: <witness> = complete_type_witness constants.%struct_type.x [symbolic = %complete_type.loc6_1.2 (constants.%complete_type.735)]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type.loc6_1.1
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = constants.%Class
|
||||
// CHECK:STDOUT: .T = <poisoned>
|
||||
// CHECK:STDOUT: .x = %.loc5
|
||||
// CHECK:STDOUT: .x = %field_decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -425,7 +425,7 @@ class Class(U: type) {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Main.import_ref.5db
|
||||
// CHECK:STDOUT: .n = imports.%Main.import_ref.29d
|
||||
// CHECK:STDOUT: .n = imports.%Main.import_ref.bfc
|
||||
// CHECK:STDOUT: .F = imports.%Main.import_ref.a02
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
@@ -551,11 +551,12 @@ class Class(U: type) {
|
||||
// CHECK:STDOUT: %Main.import_ref.b3bc94.1: type = import_ref Main//foo, loc6_22, loaded [symbolic = @CompleteClass.%T (constants.%T.67d)]
|
||||
// CHECK:STDOUT: %Main.import_ref.0aa: <witness> = import_ref Main//foo, loc9_1, loaded [concrete = constants.%complete_type.cdf]
|
||||
// CHECK:STDOUT: %Main.import_ref.5db = import_ref Main//foo, inst{{[0-9A-F]+}} [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.111: @CompleteClass.%CompleteClass.elem (%CompleteClass.elem.c1f) = import_ref Main//foo, loc7_8, loaded [concrete = %.5a2]
|
||||
// CHECK:STDOUT: %Main.import_ref.082: @CompleteClass.%CompleteClass.elem (%CompleteClass.elem.c1f) = import_ref Main//foo, loc7_8, loaded [concrete = %field_decl]
|
||||
// CHECK:STDOUT: %Main.import_ref.895: @CompleteClass.%CompleteClass.F.type (%CompleteClass.F.type.4ea) = import_ref Main//foo, loc8_17, loaded [symbolic = @CompleteClass.%CompleteClass.F (constants.%CompleteClass.F.c7a)]
|
||||
// CHECK:STDOUT: %Main.import_ref.b3bc94.2: type = import_ref Main//foo, loc6_22, loaded [symbolic = @CompleteClass.%T (constants.%T.67d)]
|
||||
// CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type]
|
||||
// CHECK:STDOUT: %.5a2: @CompleteClass.%CompleteClass.elem (%CompleteClass.elem.c1f) = field_decl n, element0 [concrete]
|
||||
// CHECK:STDOUT: %Main.import_ref.69c = import_ref Main//foo, loc7_10, unloaded
|
||||
// CHECK:STDOUT: %field_decl: @CompleteClass.%CompleteClass.elem (%CompleteClass.elem.c1f) = field_decl n, element0, %Main.import_ref.69c in [concrete] {}
|
||||
// CHECK:STDOUT: %Core.Copy: type = import_ref Core//prelude/parts/copy, Copy, loaded [concrete = constants.%Copy.type]
|
||||
// CHECK:STDOUT: %Core.import_ref.cd6: @Int.as.Copy.impl.%Int.as.Copy.impl.Op.type (%Int.as.Copy.impl.Op.type.ac8) = import_ref Core//prelude/parts/int, loc{{\d+_\d+}}, loaded [symbolic = @Int.as.Copy.impl.%Int.as.Copy.impl.Op (constants.%Int.as.Copy.impl.Op.5e0)]
|
||||
// CHECK:STDOUT: %Copy.impl_witness_table.8d2 = impl_witness_table (%Core.import_ref.cd6), @Int.as.Copy.impl [concrete]
|
||||
@@ -607,7 +608,7 @@ class Class(U: type) {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Main.import_ref.5db
|
||||
// CHECK:STDOUT: .n = imports.%Main.import_ref.111
|
||||
// CHECK:STDOUT: .n = imports.%Main.import_ref.082
|
||||
// CHECK:STDOUT: .F = imports.%Main.import_ref.895
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
@@ -682,7 +683,7 @@ class Class(U: type) {
|
||||
// CHECK:STDOUT: %v.var_patt: %pattern_type.97d = var_pattern %v.patt [concrete = constants.%v.var_patt]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %v.ref: ref %CompleteClass.d55 = name_ref v, %v
|
||||
// CHECK:STDOUT: %n.ref: %CompleteClass.elem.2cc = name_ref n, imports.%Main.import_ref.111 [concrete = imports.%.5a2]
|
||||
// CHECK:STDOUT: %n.ref: %CompleteClass.elem.2cc = name_ref n, imports.%Main.import_ref.082 [concrete = imports.%field_decl]
|
||||
// CHECK:STDOUT: %.loc12_11.1: ref %i32 = class_element_access %v.ref, element0
|
||||
// CHECK:STDOUT: %.loc12_11.2: %i32 = acquire_value %.loc12_11.1
|
||||
// CHECK:STDOUT: %impl.elem0: %.737 = impl_witness_access constants.%Copy.impl_witness.b51, element0 [concrete = constants.%Int.as.Copy.impl.Op.4f6]
|
||||
@@ -780,7 +781,7 @@ class Class(U: type) {
|
||||
// CHECK:STDOUT: %Main.import_ref.b3bc94.1: type = import_ref Main//foo, loc6_22, loaded [symbolic = @CompleteClass.%T (constants.%T)]
|
||||
// CHECK:STDOUT: %Main.import_ref.0aa: <witness> = import_ref Main//foo, loc9_1, loaded [concrete = constants.%complete_type.cdf]
|
||||
// CHECK:STDOUT: %Main.import_ref.5db = import_ref Main//foo, inst{{[0-9A-F]+}} [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.29d = import_ref Main//foo, loc7_8, unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.bfc = import_ref Main//foo, loc7_8, unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.a02 = import_ref Main//foo, loc8_17, unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.b3bc94.2: type = import_ref Main//foo, loc6_22, loaded [symbolic = @CompleteClass.%T (constants.%T)]
|
||||
// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic]
|
||||
@@ -816,7 +817,7 @@ class Class(U: type) {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Main.import_ref.5db
|
||||
// CHECK:STDOUT: .n = imports.%Main.import_ref.29d
|
||||
// CHECK:STDOUT: .n = imports.%Main.import_ref.bfc
|
||||
// CHECK:STDOUT: .F = imports.%Main.import_ref.a02
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
@@ -969,14 +970,16 @@ class Class(U: type) {
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class {
|
||||
// CHECK:STDOUT: %.loc17: <error> = field_decl x, element0 [concrete]
|
||||
// CHECK:STDOUT: %field_decl: <error> = field_decl x, element0, <error> in [concrete] {
|
||||
// CHECK:STDOUT: %T.ref: <error> = name_ref T, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = constants.%Class.7bcfd6.2
|
||||
// CHECK:STDOUT: .T = <poisoned>
|
||||
// CHECK:STDOUT: .x = %.loc17
|
||||
// CHECK:STDOUT: .x = %field_decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
+2
-2
@@ -279,7 +279,7 @@ fn InitFromAdaptedSpecific(x: i32) -> i32 {
|
||||
// CHECK:STDOUT: %v.var_patt.loc10_3.1: @InitFromStructGeneric.%pattern_type.loc10 (%pattern_type.0b6) = var_pattern %v.patt.loc10_8.1 [symbolic = %v.var_patt.loc10_3.2 (constants.%v.var_patt.8cf)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %v.ref: ref @InitFromStructGeneric.%Class.loc10_17.2 (%Class.55b) = name_ref v, %v
|
||||
// CHECK:STDOUT: %k.ref: @InitFromStructGeneric.%Class.elem (%Class.elem.b97) = name_ref k, @Class.%.loc5 [concrete = @Class.%.loc5]
|
||||
// CHECK:STDOUT: %k.ref: @InitFromStructGeneric.%Class.elem (%Class.elem.b97) = name_ref k, @Class.%field_decl [concrete = @Class.%field_decl]
|
||||
// CHECK:STDOUT: %.loc11_11.1: ref @InitFromStructGeneric.%T.as_type.loc9_66.1 (%T.as_type.74b) = class_element_access %v.ref, element0
|
||||
// CHECK:STDOUT: %.loc11_11.2: @InitFromStructGeneric.%T.as_type.loc9_66.1 (%T.as_type.74b) = acquire_value %.loc11_11.1
|
||||
// CHECK:STDOUT: %impl.elem0.loc11: @InitFromStructGeneric.%.loc10_27.3 (%.018) = impl_witness_access constants.%Copy.lookup_impl_witness.4df, element0 [symbolic = %impl.elem0.loc10_27.2 (constants.%impl.elem0.170)]
|
||||
@@ -333,7 +333,7 @@ fn InitFromAdaptedSpecific(x: i32) -> i32 {
|
||||
// CHECK:STDOUT: %v.var_patt: %pattern_type.82c = var_pattern %v.patt [concrete = constants.%v.var_patt.68c]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %v.ref: ref %Class.a32 = name_ref v, %v
|
||||
// CHECK:STDOUT: %k.ref: %Class.elem.8f3 = name_ref k, @Class.%.loc5 [concrete = @Class.%.loc5]
|
||||
// CHECK:STDOUT: %k.ref: %Class.elem.8f3 = name_ref k, @Class.%field_decl [concrete = @Class.%field_decl]
|
||||
// CHECK:STDOUT: %.loc16_11.1: ref %i32 = class_element_access %v.ref, element0
|
||||
// CHECK:STDOUT: %.loc16_11.2: %i32 = acquire_value %.loc16_11.1
|
||||
// CHECK:STDOUT: %impl.elem0.loc16: %.737 = impl_witness_access constants.%Copy.impl_witness.b51, element0 [concrete = constants.%Int.as.Copy.impl.Op.4f6]
|
||||
|
||||
+6
-12
@@ -74,7 +74,6 @@ fn StaticMemberFunctionCall(generic T: type) -> Class(T) {
|
||||
// CHECK:STDOUT: %T.as_type: type = facet_access_type %T.f84 [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.d83: <witness> = require_complete_type %T.as_type [symbolic]
|
||||
// CHECK:STDOUT: %pattern_type.2c66b4.2: type = pattern_type %T.as_type [symbolic]
|
||||
// CHECK:STDOUT: %x.patt.f3e: %pattern_type.2c66b4.2 = ref_binding_pattern x [symbolic]
|
||||
// CHECK:STDOUT: %Class.elem.1ee: type = unbound_element_type %Class.575, %T.as_type [symbolic]
|
||||
// CHECK:STDOUT: %pattern_type.e18: type = pattern_type %Class.575 [symbolic]
|
||||
// CHECK:STDOUT: %self.param_patt.aaa: %pattern_type.e18 = value_param_pattern [symbolic]
|
||||
@@ -127,7 +126,6 @@ fn StaticMemberFunctionCall(generic T: type) -> Class(T) {
|
||||
// CHECK:STDOUT: %pattern_type.6b6: type = pattern_type %i32 [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt.a9a: %pattern_type.6b6 = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt.e1b: %pattern_type.6b6 = return_slot_pattern %return.param_patt.a9a, %i32 [concrete]
|
||||
// CHECK:STDOUT: %x.patt.29f: %pattern_type.6b6 = ref_binding_pattern x [concrete]
|
||||
// CHECK:STDOUT: %Class.elem.d3c: type = unbound_element_type %Class.e86, %i32 [concrete]
|
||||
// CHECK:STDOUT: %Class.Get.type.45c: type = fn_type @Class.Get, @Class(%Copy.facet.1e1) [concrete]
|
||||
// CHECK:STDOUT: %Class.Get.28a: %Class.Get.type.45c = struct_value () [concrete]
|
||||
@@ -181,7 +179,7 @@ fn StaticMemberFunctionCall(generic T: type) -> Class(T) {
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = constants.%Class.575
|
||||
// CHECK:STDOUT: .T = <poisoned>
|
||||
// CHECK:STDOUT: .x = %.loc5
|
||||
// CHECK:STDOUT: .x = %field_decl
|
||||
// CHECK:STDOUT: .Get = %Class.Get.decl
|
||||
// CHECK:STDOUT: .GetAddr = %Class.GetAddr.decl
|
||||
// CHECK:STDOUT: }
|
||||
@@ -203,7 +201,7 @@ fn StaticMemberFunctionCall(generic T: type) -> Class(T) {
|
||||
// CHECK:STDOUT: fn(%self.param: @Class.Get.%Class (%Class.575)) -> out %return.param: @Class.Get.%T.as_type.loc7_19.1 (%T.as_type) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %self.ref: @Class.Get.%Class (%Class.575) = name_ref self, %self
|
||||
// CHECK:STDOUT: %x.ref: @Class.Get.%Class.elem (%Class.elem.1ee) = name_ref x, @Class.%.loc5 [concrete = @Class.%.loc5]
|
||||
// CHECK:STDOUT: %x.ref: @Class.Get.%Class.elem (%Class.elem.1ee) = name_ref x, @Class.%field_decl [concrete = @Class.%field_decl]
|
||||
// CHECK:STDOUT: %.loc9_16.1: ref @Class.Get.%T.as_type.loc7_19.1 (%T.as_type) = class_element_access %self.ref, element0
|
||||
// CHECK:STDOUT: %.loc9_16.2: @Class.Get.%T.as_type.loc7_19.1 (%T.as_type) = acquire_value %.loc9_16.1
|
||||
// CHECK:STDOUT: %impl.elem0.loc9_16.1: @Class.Get.%.loc9_16.5 (%.c29) = impl_witness_access constants.%Copy.lookup_impl_witness.d9c, element0 [symbolic = %impl.elem0.loc9_16.2 (constants.%impl.elem0.bd2)]
|
||||
@@ -235,7 +233,7 @@ fn StaticMemberFunctionCall(generic T: type) -> Class(T) {
|
||||
// CHECK:STDOUT: fn(%self.param: ref @Class.GetAddr.%Class (%Class.575)) -> out %return.param: @Class.GetAddr.%ptr.loc13_28.1 (%ptr.215) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %self.ref: ref @Class.GetAddr.%Class (%Class.575) = name_ref self, %self
|
||||
// CHECK:STDOUT: %x.ref: @Class.GetAddr.%Class.elem (%Class.elem.1ee) = name_ref x, @Class.%.loc5 [concrete = @Class.%.loc5]
|
||||
// CHECK:STDOUT: %x.ref: @Class.GetAddr.%Class.elem (%Class.elem.1ee) = name_ref x, @Class.%field_decl [concrete = @Class.%field_decl]
|
||||
// CHECK:STDOUT: %.loc15_17: ref @Class.GetAddr.%T.as_type.loc13_28.1 (%T.as_type) = class_element_access %self.ref, element0
|
||||
// CHECK:STDOUT: %addr: @Class.GetAddr.%ptr.loc13_28.1 (%ptr.215) = addr_of %.loc15_17
|
||||
// CHECK:STDOUT: %impl.elem0.loc15_12.1: @Class.GetAddr.%.loc15_12.4 (%.45d) = impl_witness_access constants.%Copy.lookup_impl_witness.cf6, element0 [symbolic = %impl.elem0.loc15_12.2 (constants.%impl.elem0.c5d)]
|
||||
@@ -254,7 +252,7 @@ fn StaticMemberFunctionCall(generic T: type) -> Class(T) {
|
||||
// CHECK:STDOUT: fn @DirectFieldAccess(%x.param: %Class.e86) -> out %return.param: %i32 {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %x.ref.loc22_10: %Class.e86 = name_ref x, %x
|
||||
// CHECK:STDOUT: %x.ref.loc22_11: %Class.elem.d3c = name_ref x, @Class.%.loc5 [concrete = @Class.%.loc5]
|
||||
// CHECK:STDOUT: %x.ref.loc22_11: %Class.elem.d3c = name_ref x, @Class.%field_decl [concrete = @Class.%field_decl]
|
||||
// CHECK:STDOUT: %.loc22_11.1: ref %i32 = class_element_access %x.ref.loc22_10, element0
|
||||
// CHECK:STDOUT: %.loc22_11.2: %i32 = acquire_value %.loc22_11.1
|
||||
// CHECK:STDOUT: %impl.elem0: %.737 = impl_witness_access constants.%Copy.impl_witness.b51, element0 [concrete = constants.%Int.as.Copy.impl.Op.4f6]
|
||||
@@ -304,10 +302,8 @@ fn StaticMemberFunctionCall(generic T: type) -> Class(T) {
|
||||
// CHECK:STDOUT: %T.loc4_14.1 => constants.%T.f84
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %T.as_type => constants.%T.as_type
|
||||
// CHECK:STDOUT: %T.as_type.loc5_10.2 => constants.%T.as_type
|
||||
// CHECK:STDOUT: %require_complete => constants.%require_complete.d83
|
||||
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.2c66b4.2
|
||||
// CHECK:STDOUT: %x.patt => constants.%x.patt.f3e
|
||||
// CHECK:STDOUT: %Class => constants.%Class.575
|
||||
// CHECK:STDOUT: %Class.elem => constants.%Class.elem.1ee
|
||||
// CHECK:STDOUT: %Class.Get.type => constants.%Class.Get.type.0dd
|
||||
@@ -350,10 +346,8 @@ fn StaticMemberFunctionCall(generic T: type) -> Class(T) {
|
||||
// CHECK:STDOUT: %T.loc4_14.1 => constants.%Copy.facet.1e1
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %T.as_type => constants.%i32
|
||||
// CHECK:STDOUT: %T.as_type.loc5_10.2 => constants.%i32
|
||||
// CHECK:STDOUT: %require_complete => constants.%complete_type.f8a
|
||||
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.6b6
|
||||
// CHECK:STDOUT: %x.patt => constants.%x.patt.29f
|
||||
// CHECK:STDOUT: %Class => constants.%Class.e86
|
||||
// CHECK:STDOUT: %Class.elem => constants.%Class.elem.d3c
|
||||
// CHECK:STDOUT: %Class.Get.type => constants.%Class.Get.type.45c
|
||||
|
||||
+23
-20
@@ -61,7 +61,7 @@ class C(T: Core.Copy) {
|
||||
// CHECK:STDOUT: %T.as_type: type = facet_access_type %T.f84 [symbolic]
|
||||
// CHECK:STDOUT: %pattern_type.2c66b4.2: type = pattern_type %T.as_type [symbolic]
|
||||
// CHECK:STDOUT: %n.param_patt: %pattern_type.2c66b4.2 = value_param_pattern [symbolic]
|
||||
// CHECK:STDOUT: %n.patt.364: %pattern_type.2c66b4.2 = wrapper_binding_pattern n, %n.param_patt [symbolic]
|
||||
// CHECK:STDOUT: %n.patt: %pattern_type.2c66b4.2 = wrapper_binding_pattern n, %n.param_patt [symbolic]
|
||||
// CHECK:STDOUT: %.1ce700.2: Core.Form = init_form %T.as_type [symbolic]
|
||||
// CHECK:STDOUT: %return.param_patt.bf4475.2: %pattern_type.2c66b4.2 = out_param_pattern [symbolic]
|
||||
// CHECK:STDOUT: %return.patt.f44: %pattern_type.2c66b4.2 = return_slot_pattern %return.param_patt.bf4475.2, %T.as_type [symbolic]
|
||||
@@ -73,7 +73,6 @@ class C(T: Core.Copy) {
|
||||
// CHECK:STDOUT: %Class.G.type: type = fn_type @Class.G, @Class(%T.f84) [symbolic]
|
||||
// CHECK:STDOUT: %Class.G: %Class.G.type = struct_value () [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.d83: <witness> = require_complete_type %T.as_type [symbolic]
|
||||
// CHECK:STDOUT: %n.patt.4d3: %pattern_type.2c66b4.2 = ref_binding_pattern n [symbolic]
|
||||
// CHECK:STDOUT: %Class.elem: type = unbound_element_type %Class, %T.as_type [symbolic]
|
||||
// CHECK:STDOUT: %struct_type.n: type = struct_type {.n: %T.as_type} [symbolic]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %struct_type.n [symbolic]
|
||||
@@ -116,19 +115,17 @@ class C(T: Core.Copy) {
|
||||
// CHECK:STDOUT: %Class.F: @Class.%Class.F.type (%Class.F.type) = struct_value () [symbolic = %Class.F (constants.%Class.F)]
|
||||
// CHECK:STDOUT: %Class.G.type: type = fn_type @Class.G, @Class(%T.loc5_14.1) [symbolic = %Class.G.type (constants.%Class.G.type)]
|
||||
// CHECK:STDOUT: %Class.G: @Class.%Class.G.type (%Class.G.type) = struct_value () [symbolic = %Class.G (constants.%Class.G)]
|
||||
// CHECK:STDOUT: %T.as_type: type = facet_access_type %T.loc5_14.1 [symbolic = %T.as_type (constants.%T.as_type)]
|
||||
// CHECK:STDOUT: %require_complete: <witness> = require_complete_type %T.as_type [symbolic = %require_complete (constants.%require_complete.d83)]
|
||||
// CHECK:STDOUT: %pattern_type: type = pattern_type %T.as_type [symbolic = %pattern_type (constants.%pattern_type.2c66b4.2)]
|
||||
// CHECK:STDOUT: %n.patt: @Class.%pattern_type (%pattern_type.2c66b4.2) = ref_binding_pattern n [symbolic = %n.patt (constants.%n.patt.4d3)]
|
||||
// CHECK:STDOUT: %T.as_type.loc14_10.2: type = facet_access_type %T.loc5_14.1 [symbolic = %T.as_type.loc14_10.2 (constants.%T.as_type)]
|
||||
// CHECK:STDOUT: %require_complete: <witness> = require_complete_type %T.as_type.loc14_10.2 [symbolic = %require_complete (constants.%require_complete.d83)]
|
||||
// CHECK:STDOUT: %Class: type = class_type @Class, @Class(%T.loc5_14.1) [symbolic = %Class (constants.%Class)]
|
||||
// CHECK:STDOUT: %Class.elem: type = unbound_element_type %Class, %T.as_type [symbolic = %Class.elem (constants.%Class.elem)]
|
||||
// CHECK:STDOUT: %struct_type.n: type = struct_type {.n: @Class.%T.as_type (%T.as_type)} [symbolic = %struct_type.n (constants.%struct_type.n)]
|
||||
// CHECK:STDOUT: %Class.elem: type = unbound_element_type %Class, %T.as_type.loc14_10.2 [symbolic = %Class.elem (constants.%Class.elem)]
|
||||
// CHECK:STDOUT: %struct_type.n: type = struct_type {.n: @Class.%T.as_type.loc14_10.2 (%T.as_type)} [symbolic = %struct_type.n (constants.%struct_type.n)]
|
||||
// CHECK:STDOUT: %complete_type.loc15_1.2: <witness> = complete_type_witness %struct_type.n [symbolic = %complete_type.loc15_1.2 (constants.%complete_type)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class {
|
||||
// CHECK:STDOUT: %Class.F.decl: @Class.%Class.F.type (%Class.F.type) = fn_decl @Class.F [symbolic = @Class.%Class.F (constants.%Class.F)] {
|
||||
// CHECK:STDOUT: %n.param_patt.loc6_9.1: @Class.F.%pattern_type (%pattern_type.2c66b4.2) = value_param_pattern [symbolic = %n.param_patt.loc6_9.2 (constants.%n.param_patt)]
|
||||
// CHECK:STDOUT: %n.patt.loc6_9.1: @Class.F.%pattern_type (%pattern_type.2c66b4.2) = wrapper_binding_pattern n, %n.param_patt.loc6_9.1 [symbolic = %n.patt.loc6_9.2 (constants.%n.patt.364)]
|
||||
// CHECK:STDOUT: %n.patt.loc6_9.1: @Class.F.%pattern_type (%pattern_type.2c66b4.2) = wrapper_binding_pattern n, %n.param_patt.loc6_9.1 [symbolic = %n.patt.loc6_9.2 (constants.%n.patt)]
|
||||
// CHECK:STDOUT: %return.param_patt.loc6_17.1: @Class.F.%pattern_type (%pattern_type.2c66b4.2) = out_param_pattern [symbolic = %return.param_patt.loc6_17.2 (constants.%return.param_patt.bf4475.2)]
|
||||
// CHECK:STDOUT: %return.patt.loc6_14.1: @Class.F.%pattern_type (%pattern_type.2c66b4.2) = return_slot_pattern %return.param_patt.loc6_17.1, %.loc6_17.3 [symbolic = %return.patt.loc6_14.2 (constants.%return.patt.f44)]
|
||||
// CHECK:STDOUT: } {
|
||||
@@ -165,7 +162,11 @@ class C(T: Core.Copy) {
|
||||
// CHECK:STDOUT: %return.param: ref @Class.G.%T.as_type.loc10_17.1 (%T.as_type) = out_param call_param1
|
||||
// CHECK:STDOUT: %return: ref @Class.G.%T.as_type.loc10_17.1 (%T.as_type) = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.loc14: @Class.%Class.elem (%Class.elem) = field_decl n, element0 [concrete]
|
||||
// CHECK:STDOUT: %field_decl: @Class.%Class.elem (%Class.elem) = field_decl n, element0, %.loc14 in [concrete] {
|
||||
// CHECK:STDOUT: %T.ref: %Copy.type = name_ref T, %T.loc5_14.2 [symbolic = %T.loc5_14.1 (constants.%T.f84)]
|
||||
// CHECK:STDOUT: %T.as_type.loc14_10.1: type = facet_access_type %T.ref [symbolic = %T.as_type.loc14_10.2 (constants.%T.as_type)]
|
||||
// CHECK:STDOUT: %.loc14: type = converted %T.ref, %T.as_type.loc14_10.1 [symbolic = %T.as_type.loc14_10.2 (constants.%T.as_type)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %complete_type.loc15_1.1: <witness> = complete_type_witness constants.%struct_type.n [symbolic = %complete_type.loc15_1.2 (constants.%complete_type)]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type.loc15_1.1
|
||||
// CHECK:STDOUT:
|
||||
@@ -174,7 +175,7 @@ class C(T: Core.Copy) {
|
||||
// CHECK:STDOUT: .T = <poisoned>
|
||||
// CHECK:STDOUT: .F = %Class.F.decl
|
||||
// CHECK:STDOUT: .G = %Class.G.decl
|
||||
// CHECK:STDOUT: .n = %.loc14
|
||||
// CHECK:STDOUT: .n = %field_decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -183,7 +184,7 @@ class C(T: Core.Copy) {
|
||||
// CHECK:STDOUT: %T.as_type.loc6_11.1: type = facet_access_type %T [symbolic = %T.as_type.loc6_11.1 (constants.%T.as_type)]
|
||||
// CHECK:STDOUT: %pattern_type: type = pattern_type %T.as_type.loc6_11.1 [symbolic = %pattern_type (constants.%pattern_type.2c66b4.2)]
|
||||
// CHECK:STDOUT: %n.param_patt.loc6_9.2: @Class.F.%pattern_type (%pattern_type.2c66b4.2) = value_param_pattern [symbolic = %n.param_patt.loc6_9.2 (constants.%n.param_patt)]
|
||||
// CHECK:STDOUT: %n.patt.loc6_9.2: @Class.F.%pattern_type (%pattern_type.2c66b4.2) = wrapper_binding_pattern n, %n.param_patt.loc6_9.2 [symbolic = %n.patt.loc6_9.2 (constants.%n.patt.364)]
|
||||
// CHECK:STDOUT: %n.patt.loc6_9.2: @Class.F.%pattern_type (%pattern_type.2c66b4.2) = wrapper_binding_pattern n, %n.param_patt.loc6_9.2 [symbolic = %n.patt.loc6_9.2 (constants.%n.patt)]
|
||||
// CHECK:STDOUT: %.loc6_17.2: Core.Form = init_form %T.as_type.loc6_11.1 [symbolic = %.loc6_17.2 (constants.%.1ce700.2)]
|
||||
// CHECK:STDOUT: %return.param_patt.loc6_17.2: @Class.F.%pattern_type (%pattern_type.2c66b4.2) = out_param_pattern [symbolic = %return.param_patt.loc6_17.2 (constants.%return.param_patt.bf4475.2)]
|
||||
// CHECK:STDOUT: %return.patt.loc6_14.2: @Class.F.%pattern_type (%pattern_type.2c66b4.2) = return_slot_pattern %return.param_patt.loc6_17.2, %T.as_type.loc6_11.1 [symbolic = %return.patt.loc6_14.2 (constants.%return.patt.f44)]
|
||||
@@ -236,7 +237,7 @@ class C(T: Core.Copy) {
|
||||
// CHECK:STDOUT: fn(%self.param: @Class.G.%Class (%Class)) -> out %return.param: @Class.G.%T.as_type.loc10_17.1 (%T.as_type) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %self.ref: @Class.G.%Class (%Class) = name_ref self, %self
|
||||
// CHECK:STDOUT: %n.ref: @Class.G.%Class.elem (%Class.elem) = name_ref n, @Class.%.loc14 [concrete = @Class.%.loc14]
|
||||
// CHECK:STDOUT: %n.ref: @Class.G.%Class.elem (%Class.elem) = name_ref n, @Class.%field_decl [concrete = @Class.%field_decl]
|
||||
// CHECK:STDOUT: %.loc11_16.1: ref @Class.G.%T.as_type.loc10_17.1 (%T.as_type) = class_element_access %self.ref, element0
|
||||
// CHECK:STDOUT: %.loc11_16.2: @Class.G.%T.as_type.loc10_17.1 (%T.as_type) = acquire_value %.loc11_16.1
|
||||
// CHECK:STDOUT: %impl.elem0.loc11_16.1: @Class.G.%.loc11_16.5 (%.c29) = impl_witness_access constants.%Copy.lookup_impl_witness.d9c, element0 [symbolic = %impl.elem0.loc11_16.2 (constants.%impl.elem0.bd2)]
|
||||
@@ -260,10 +261,8 @@ class C(T: Core.Copy) {
|
||||
// CHECK:STDOUT: %Class.F => constants.%Class.F
|
||||
// CHECK:STDOUT: %Class.G.type => constants.%Class.G.type
|
||||
// CHECK:STDOUT: %Class.G => constants.%Class.G
|
||||
// CHECK:STDOUT: %T.as_type => constants.%T.as_type
|
||||
// CHECK:STDOUT: %T.as_type.loc14_10.2 => constants.%T.as_type
|
||||
// CHECK:STDOUT: %require_complete => constants.%require_complete.d83
|
||||
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.2c66b4.2
|
||||
// CHECK:STDOUT: %n.patt => constants.%n.patt.4d3
|
||||
// CHECK:STDOUT: %Class => constants.%Class
|
||||
// CHECK:STDOUT: %Class.elem => constants.%Class.elem
|
||||
// CHECK:STDOUT: %struct_type.n => constants.%struct_type.n
|
||||
@@ -275,7 +274,7 @@ class C(T: Core.Copy) {
|
||||
// CHECK:STDOUT: %T.as_type.loc6_11.1 => constants.%T.as_type
|
||||
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.2c66b4.2
|
||||
// CHECK:STDOUT: %n.param_patt.loc6_9.2 => constants.%n.param_patt
|
||||
// CHECK:STDOUT: %n.patt.loc6_9.2 => constants.%n.patt.364
|
||||
// CHECK:STDOUT: %n.patt.loc6_9.2 => constants.%n.patt
|
||||
// CHECK:STDOUT: %.loc6_17.2 => constants.%.1ce700.2
|
||||
// CHECK:STDOUT: %return.param_patt.loc6_17.2 => constants.%return.param_patt.bf4475.2
|
||||
// CHECK:STDOUT: %return.patt.loc6_14.2 => constants.%return.patt.f44
|
||||
@@ -309,6 +308,7 @@ class C(T: Core.Copy) {
|
||||
// CHECK:STDOUT: %C.F.type: type = fn_type @C.F, @C(%T) [symbolic]
|
||||
// CHECK:STDOUT: %C.F: %C.F.type = struct_value () [symbolic]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
||||
// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %C.elem: type = unbound_element_type %C, %empty_struct_type [symbolic]
|
||||
// CHECK:STDOUT: %struct_type.data: type = struct_type {.data: %empty_struct_type} [concrete]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %struct_type.data [concrete]
|
||||
@@ -348,14 +348,17 @@ class C(T: Core.Copy) {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class {
|
||||
// CHECK:STDOUT: %C.F.decl: @C.%C.F.type (%C.F.type) = fn_decl @C.F [symbolic = @C.%C.F (constants.%C.F)] {} {}
|
||||
// CHECK:STDOUT: %.loc13: @C.%C.elem (%C.elem) = field_decl data, element0 [concrete]
|
||||
// CHECK:STDOUT: %field_decl: @C.%C.elem (%C.elem) = field_decl data, element0, %.loc13_14.2 in [concrete] {
|
||||
// CHECK:STDOUT: %.loc13_14.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct]
|
||||
// CHECK:STDOUT: %.loc13_14.2: type = converted %.loc13_14.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness constants.%struct_type.data [concrete = constants.%complete_type]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = constants.%C
|
||||
// CHECK:STDOUT: .F = %C.F.decl
|
||||
// CHECK:STDOUT: .data = %.loc13
|
||||
// CHECK:STDOUT: .data = %field_decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -367,7 +370,7 @@ class C(T: Core.Copy) {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn() {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %data.ref: @C.F.%C.elem (%C.elem) = name_ref data, @C.%.loc13 [concrete = @C.%.loc13]
|
||||
// CHECK:STDOUT: %data.ref: @C.F.%C.elem (%C.elem) = name_ref data, @C.%field_decl [concrete = @C.%field_decl]
|
||||
// CHECK:STDOUT: return
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
@@ -121,7 +121,7 @@ fn AccessMissingConcrete(x: Derived(i32)) -> i32 {
|
||||
// CHECK:STDOUT: fn(%x.param: @AccessDerived.%Derived.loc13_44.1 (%Derived.e87)) -> out %return.param: @AccessDerived.%T.as_type.loc13_44.1 (%T.as_type) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %x.ref: @AccessDerived.%Derived.loc13_44.1 (%Derived.e87) = name_ref x, %x
|
||||
// CHECK:STDOUT: %d.ref: @AccessDerived.%Derived.elem (%Derived.elem.eb3) = name_ref d, @Derived.%.loc10 [concrete = @Derived.%.loc10]
|
||||
// CHECK:STDOUT: %d.ref: @AccessDerived.%Derived.elem (%Derived.elem.eb3) = name_ref d, @Derived.%field_decl [concrete = @Derived.%field_decl]
|
||||
// CHECK:STDOUT: %.loc15_11.1: ref @AccessDerived.%T.as_type.loc13_44.1 (%T.as_type) = class_element_access %x.ref, element1
|
||||
// CHECK:STDOUT: %.loc15_11.2: @AccessDerived.%T.as_type.loc13_44.1 (%T.as_type) = acquire_value %.loc15_11.1
|
||||
// CHECK:STDOUT: %impl.elem0.loc15_11.1: @AccessDerived.%.loc15_11.5 (%.c29) = impl_witness_access constants.%Copy.lookup_impl_witness.d9c, element0 [symbolic = %impl.elem0.loc15_11.2 (constants.%impl.elem0.bd2)]
|
||||
@@ -154,7 +154,7 @@ fn AccessMissingConcrete(x: Derived(i32)) -> i32 {
|
||||
// CHECK:STDOUT: fn(%x.param: @AccessBase.%Derived.loc19_41.1 (%Derived.e87)) -> out %return.param: @AccessBase.%T.as_type.loc19_41.1 (%T.as_type) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %x.ref: @AccessBase.%Derived.loc19_41.1 (%Derived.e87) = name_ref x, %x
|
||||
// CHECK:STDOUT: %b.ref: @AccessBase.%Base.elem (%Base.elem.209) = name_ref b, @Base.%.loc5 [concrete = @Base.%.loc5]
|
||||
// CHECK:STDOUT: %b.ref: @AccessBase.%Base.elem (%Base.elem.209) = name_ref b, @Base.%field_decl [concrete = @Base.%field_decl]
|
||||
// CHECK:STDOUT: %.loc21_11.1: @AccessBase.%Base (%Base.146) = as_compatible %x.ref
|
||||
// CHECK:STDOUT: %.loc21_11.2: ref @AccessBase.%Base (%Base.146) = class_element_access %.loc21_11.1, element0
|
||||
// CHECK:STDOUT: %.loc21_11.3: ref @AccessBase.%Base (%Base.146) = converted %x.ref, %.loc21_11.2
|
||||
|
||||
@@ -128,7 +128,7 @@ fn Generic(unused T: ()).WrongType() {}
|
||||
// CHECK:STDOUT: %T.as_type: type = facet_access_type %T.f84 [symbolic]
|
||||
// CHECK:STDOUT: %pattern_type.2c66b4.2: type = pattern_type %T.as_type [symbolic]
|
||||
// CHECK:STDOUT: %n.param_patt: %pattern_type.2c66b4.2 = value_param_pattern [symbolic]
|
||||
// CHECK:STDOUT: %n.patt.364: %pattern_type.2c66b4.2 = wrapper_binding_pattern n, %n.param_patt [symbolic]
|
||||
// CHECK:STDOUT: %n.patt: %pattern_type.2c66b4.2 = wrapper_binding_pattern n, %n.param_patt [symbolic]
|
||||
// CHECK:STDOUT: %.1ce700.2: Core.Form = init_form %T.as_type [symbolic]
|
||||
// CHECK:STDOUT: %return.param_patt.bf4475.2: %pattern_type.2c66b4.2 = out_param_pattern [symbolic]
|
||||
// CHECK:STDOUT: %return.patt.f44: %pattern_type.2c66b4.2 = return_slot_pattern %return.param_patt.bf4475.2, %T.as_type [symbolic]
|
||||
@@ -140,7 +140,6 @@ fn Generic(unused T: ()).WrongType() {}
|
||||
// CHECK:STDOUT: %Class.G.type: type = fn_type @Class.G, @Class(%T.f84) [symbolic]
|
||||
// CHECK:STDOUT: %Class.G: %Class.G.type = struct_value () [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.d83: <witness> = require_complete_type %T.as_type [symbolic]
|
||||
// CHECK:STDOUT: %n.patt.4d3: %pattern_type.2c66b4.2 = ref_binding_pattern n [symbolic]
|
||||
// CHECK:STDOUT: %Class.elem: type = unbound_element_type %Class, %T.as_type [symbolic]
|
||||
// CHECK:STDOUT: %struct_type.n: type = struct_type {.n: %T.as_type} [symbolic]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %struct_type.n [symbolic]
|
||||
@@ -174,7 +173,7 @@ fn Generic(unused T: ()).WrongType() {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Class.F.decl: %Class.F.type = fn_decl @Class.F [symbolic = constants.%Class.F] {
|
||||
// CHECK:STDOUT: %n.param_patt.loc11: @Class.F.%pattern_type (%pattern_type.2c66b4.2) = value_param_pattern [symbolic = %n.param_patt.loc6 (constants.%n.param_patt)]
|
||||
// CHECK:STDOUT: %n.patt.loc11: @Class.F.%pattern_type (%pattern_type.2c66b4.2) = wrapper_binding_pattern n, %n.param_patt.loc11 [symbolic = %n.patt.loc6 (constants.%n.patt.364)]
|
||||
// CHECK:STDOUT: %n.patt.loc11: @Class.F.%pattern_type (%pattern_type.2c66b4.2) = wrapper_binding_pattern n, %n.param_patt.loc11 [symbolic = %n.patt.loc6 (constants.%n.patt)]
|
||||
// CHECK:STDOUT: %return.param_patt.loc11: @Class.F.%pattern_type (%pattern_type.2c66b4.2) = out_param_pattern [symbolic = %return.param_patt.loc6 (constants.%return.param_patt.bf4475.2)]
|
||||
// CHECK:STDOUT: %return.patt.loc11: @Class.F.%pattern_type (%pattern_type.2c66b4.2) = return_slot_pattern %return.param_patt.loc11, %.loc11_35.2 [symbolic = %return.patt.loc6 (constants.%return.patt.f44)]
|
||||
// CHECK:STDOUT: } {
|
||||
@@ -234,19 +233,17 @@ fn Generic(unused T: ()).WrongType() {}
|
||||
// CHECK:STDOUT: %Class.F: @Class.%Class.F.type (%Class.F.type) = struct_value () [symbolic = %Class.F (constants.%Class.F)]
|
||||
// CHECK:STDOUT: %Class.G.type: type = fn_type @Class.G, @Class(%T.loc5_14.1) [symbolic = %Class.G.type (constants.%Class.G.type)]
|
||||
// CHECK:STDOUT: %Class.G: @Class.%Class.G.type (%Class.G.type) = struct_value () [symbolic = %Class.G (constants.%Class.G)]
|
||||
// CHECK:STDOUT: %T.as_type: type = facet_access_type %T.loc5_14.1 [symbolic = %T.as_type (constants.%T.as_type)]
|
||||
// CHECK:STDOUT: %require_complete: <witness> = require_complete_type %T.as_type [symbolic = %require_complete (constants.%require_complete.d83)]
|
||||
// CHECK:STDOUT: %pattern_type: type = pattern_type %T.as_type [symbolic = %pattern_type (constants.%pattern_type.2c66b4.2)]
|
||||
// CHECK:STDOUT: %n.patt: @Class.%pattern_type (%pattern_type.2c66b4.2) = ref_binding_pattern n [symbolic = %n.patt (constants.%n.patt.4d3)]
|
||||
// CHECK:STDOUT: %T.as_type.loc8_10.2: type = facet_access_type %T.loc5_14.1 [symbolic = %T.as_type.loc8_10.2 (constants.%T.as_type)]
|
||||
// CHECK:STDOUT: %require_complete: <witness> = require_complete_type %T.as_type.loc8_10.2 [symbolic = %require_complete (constants.%require_complete.d83)]
|
||||
// CHECK:STDOUT: %Class: type = class_type @Class, @Class(%T.loc5_14.1) [symbolic = %Class (constants.%Class)]
|
||||
// CHECK:STDOUT: %Class.elem: type = unbound_element_type %Class, %T.as_type [symbolic = %Class.elem (constants.%Class.elem)]
|
||||
// CHECK:STDOUT: %struct_type.n: type = struct_type {.n: @Class.%T.as_type (%T.as_type)} [symbolic = %struct_type.n (constants.%struct_type.n)]
|
||||
// CHECK:STDOUT: %Class.elem: type = unbound_element_type %Class, %T.as_type.loc8_10.2 [symbolic = %Class.elem (constants.%Class.elem)]
|
||||
// CHECK:STDOUT: %struct_type.n: type = struct_type {.n: @Class.%T.as_type.loc8_10.2 (%T.as_type)} [symbolic = %struct_type.n (constants.%struct_type.n)]
|
||||
// CHECK:STDOUT: %complete_type.loc9_1.2: <witness> = complete_type_witness %struct_type.n [symbolic = %complete_type.loc9_1.2 (constants.%complete_type)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class {
|
||||
// CHECK:STDOUT: %Class.F.decl: @Class.%Class.F.type (%Class.F.type) = fn_decl @Class.F [symbolic = @Class.%Class.F (constants.%Class.F)] {
|
||||
// CHECK:STDOUT: %n.param_patt.loc11: @Class.F.%pattern_type (%pattern_type.2c66b4.2) = value_param_pattern [symbolic = %n.param_patt.loc6 (constants.%n.param_patt)]
|
||||
// CHECK:STDOUT: %n.patt.loc11: @Class.F.%pattern_type (%pattern_type.2c66b4.2) = wrapper_binding_pattern n, %n.param_patt.loc11 [symbolic = %n.patt.loc6 (constants.%n.patt.364)]
|
||||
// CHECK:STDOUT: %n.patt.loc11: @Class.F.%pattern_type (%pattern_type.2c66b4.2) = wrapper_binding_pattern n, %n.param_patt.loc11 [symbolic = %n.patt.loc6 (constants.%n.patt)]
|
||||
// CHECK:STDOUT: %return.param_patt.loc11: @Class.F.%pattern_type (%pattern_type.2c66b4.2) = out_param_pattern [symbolic = %return.param_patt.loc6 (constants.%return.param_patt.bf4475.2)]
|
||||
// CHECK:STDOUT: %return.patt.loc11: @Class.F.%pattern_type (%pattern_type.2c66b4.2) = return_slot_pattern %return.param_patt.loc11, %.loc11_35.2 [symbolic = %return.patt.loc6 (constants.%return.patt.f44)]
|
||||
// CHECK:STDOUT: } {
|
||||
@@ -283,7 +280,11 @@ fn Generic(unused T: ()).WrongType() {}
|
||||
// CHECK:STDOUT: %return.param.loc7: ref @Class.G.%T.as_type.loc7_17.1 (%T.as_type) = out_param call_param1
|
||||
// CHECK:STDOUT: %return.loc7: ref @Class.G.%T.as_type.loc7_17.1 (%T.as_type) = return_slot %return.param.loc7
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.loc8: @Class.%Class.elem (%Class.elem) = field_decl n, element0 [concrete]
|
||||
// CHECK:STDOUT: %field_decl: @Class.%Class.elem (%Class.elem) = field_decl n, element0, %.loc8 in [concrete] {
|
||||
// CHECK:STDOUT: %T.ref: %Copy.type = name_ref T, %T.loc5_14.2 [symbolic = %T.loc5_14.1 (constants.%T.f84)]
|
||||
// CHECK:STDOUT: %T.as_type.loc8_10.1: type = facet_access_type %T.ref [symbolic = %T.as_type.loc8_10.2 (constants.%T.as_type)]
|
||||
// CHECK:STDOUT: %.loc8: type = converted %T.ref, %T.as_type.loc8_10.1 [symbolic = %T.as_type.loc8_10.2 (constants.%T.as_type)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %complete_type.loc9_1.1: <witness> = complete_type_witness constants.%struct_type.n [symbolic = %complete_type.loc9_1.2 (constants.%complete_type)]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type.loc9_1.1
|
||||
// CHECK:STDOUT:
|
||||
@@ -292,7 +293,7 @@ fn Generic(unused T: ()).WrongType() {}
|
||||
// CHECK:STDOUT: .T = <poisoned>
|
||||
// CHECK:STDOUT: .F = %Class.F.decl
|
||||
// CHECK:STDOUT: .G = %Class.G.decl
|
||||
// CHECK:STDOUT: .n = %.loc8
|
||||
// CHECK:STDOUT: .n = %field_decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -301,7 +302,7 @@ fn Generic(unused T: ()).WrongType() {}
|
||||
// CHECK:STDOUT: %T.as_type.loc6_11.1: type = facet_access_type %T.loc6 [symbolic = %T.as_type.loc6_11.1 (constants.%T.as_type)]
|
||||
// CHECK:STDOUT: %pattern_type: type = pattern_type %T.as_type.loc6_11.1 [symbolic = %pattern_type (constants.%pattern_type.2c66b4.2)]
|
||||
// CHECK:STDOUT: %n.param_patt.loc6: @Class.F.%pattern_type (%pattern_type.2c66b4.2) = value_param_pattern [symbolic = %n.param_patt.loc6 (constants.%n.param_patt)]
|
||||
// CHECK:STDOUT: %n.patt.loc6: @Class.F.%pattern_type (%pattern_type.2c66b4.2) = wrapper_binding_pattern n, %n.param_patt.loc6 [symbolic = %n.patt.loc6 (constants.%n.patt.364)]
|
||||
// CHECK:STDOUT: %n.patt.loc6: @Class.F.%pattern_type (%pattern_type.2c66b4.2) = wrapper_binding_pattern n, %n.param_patt.loc6 [symbolic = %n.patt.loc6 (constants.%n.patt)]
|
||||
// CHECK:STDOUT: %.loc6_17.1: Core.Form = init_form %T.as_type.loc6_11.1 [symbolic = %.loc6_17.1 (constants.%.1ce700.2)]
|
||||
// CHECK:STDOUT: %return.param_patt.loc6: @Class.F.%pattern_type (%pattern_type.2c66b4.2) = out_param_pattern [symbolic = %return.param_patt.loc6 (constants.%return.param_patt.bf4475.2)]
|
||||
// CHECK:STDOUT: %return.patt.loc6: @Class.F.%pattern_type (%pattern_type.2c66b4.2) = return_slot_pattern %return.param_patt.loc6, %T.as_type.loc6_11.1 [symbolic = %return.patt.loc6 (constants.%return.patt.f44)]
|
||||
@@ -354,7 +355,7 @@ fn Generic(unused T: ()).WrongType() {}
|
||||
// CHECK:STDOUT: fn(%self.param.loc15: @Class.G.%Class (%Class)) -> out %return.param.loc15: @Class.G.%T.as_type.loc7_17.1 (%T.as_type) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %self.ref: @Class.G.%Class (%Class) = name_ref self, %self.loc15
|
||||
// CHECK:STDOUT: %n.ref: @Class.G.%Class.elem (%Class.elem) = name_ref n, @Class.%.loc8 [concrete = @Class.%.loc8]
|
||||
// CHECK:STDOUT: %n.ref: @Class.G.%Class.elem (%Class.elem) = name_ref n, @Class.%field_decl [concrete = @Class.%field_decl]
|
||||
// CHECK:STDOUT: %.loc16_14.1: ref @Class.G.%T.as_type.loc7_17.1 (%T.as_type) = class_element_access %self.ref, element0
|
||||
// CHECK:STDOUT: %.loc16_14.2: @Class.G.%T.as_type.loc7_17.1 (%T.as_type) = acquire_value %.loc16_14.1
|
||||
// CHECK:STDOUT: %impl.elem0.loc16_14.1: @Class.G.%.loc16_14.5 (%.c29) = impl_witness_access constants.%Copy.lookup_impl_witness.d9c, element0 [symbolic = %impl.elem0.loc16_14.2 (constants.%impl.elem0.bd2)]
|
||||
@@ -378,10 +379,8 @@ fn Generic(unused T: ()).WrongType() {}
|
||||
// CHECK:STDOUT: %Class.F => constants.%Class.F
|
||||
// CHECK:STDOUT: %Class.G.type => constants.%Class.G.type
|
||||
// CHECK:STDOUT: %Class.G => constants.%Class.G
|
||||
// CHECK:STDOUT: %T.as_type => constants.%T.as_type
|
||||
// CHECK:STDOUT: %T.as_type.loc8_10.2 => constants.%T.as_type
|
||||
// CHECK:STDOUT: %require_complete => constants.%require_complete.d83
|
||||
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.2c66b4.2
|
||||
// CHECK:STDOUT: %n.patt => constants.%n.patt.4d3
|
||||
// CHECK:STDOUT: %Class => constants.%Class
|
||||
// CHECK:STDOUT: %Class.elem => constants.%Class.elem
|
||||
// CHECK:STDOUT: %struct_type.n => constants.%struct_type.n
|
||||
@@ -393,7 +392,7 @@ fn Generic(unused T: ()).WrongType() {}
|
||||
// CHECK:STDOUT: %T.as_type.loc6_11.1 => constants.%T.as_type
|
||||
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.2c66b4.2
|
||||
// CHECK:STDOUT: %n.param_patt.loc6 => constants.%n.param_patt
|
||||
// CHECK:STDOUT: %n.patt.loc6 => constants.%n.patt.364
|
||||
// CHECK:STDOUT: %n.patt.loc6 => constants.%n.patt
|
||||
// CHECK:STDOUT: %.loc6_17.1 => constants.%.1ce700.2
|
||||
// CHECK:STDOUT: %return.param_patt.loc6 => constants.%return.param_patt.bf4475.2
|
||||
// CHECK:STDOUT: %return.patt.loc6 => constants.%return.patt.f44
|
||||
|
||||
+13
-17
@@ -74,7 +74,6 @@ fn Test() -> i32 {
|
||||
// CHECK:STDOUT: %T.as_type: type = facet_access_type %T.f84 [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.d83: <witness> = require_complete_type %T.as_type [symbolic]
|
||||
// CHECK:STDOUT: %pattern_type.2c66b4.2: type = pattern_type %T.as_type [symbolic]
|
||||
// CHECK:STDOUT: %n.patt.872: %pattern_type.2c66b4.2 = ref_binding_pattern n [symbolic]
|
||||
// CHECK:STDOUT: %Inner.elem.51d: type = unbound_element_type %Inner.06b, %T.as_type [symbolic]
|
||||
// CHECK:STDOUT: %struct_type.n.797: type = struct_type {.n: %T.as_type} [symbolic]
|
||||
// CHECK:STDOUT: %complete_type.22c: <witness> = complete_type_witness %struct_type.n.797 [symbolic]
|
||||
@@ -117,7 +116,6 @@ fn Test() -> i32 {
|
||||
// CHECK:STDOUT: %Inner.84a: type = class_type @Inner, @Inner(%Copy.facet.1e1) [concrete]
|
||||
// CHECK:STDOUT: %Outer.F.type.791: type = fn_type @Outer.F, @Outer(%Copy.facet.1e1) [concrete]
|
||||
// CHECK:STDOUT: %Outer.F.728: %Outer.F.type.791 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %n.patt.e55: %pattern_type.6b6 = ref_binding_pattern n [concrete]
|
||||
// CHECK:STDOUT: %Inner.elem.a49: type = unbound_element_type %Inner.84a, %i32 [concrete]
|
||||
// CHECK:STDOUT: %struct_type.n.9ed: type = struct_type {.n: %i32} [concrete]
|
||||
// CHECK:STDOUT: %complete_type.cdf: <witness> = complete_type_witness %struct_type.n.9ed [concrete]
|
||||
@@ -250,24 +248,26 @@ fn Test() -> i32 {
|
||||
// CHECK:STDOUT: generic class @Inner(@Outer.%T.loc4_14.2: %Copy.type) {
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %T: %Copy.type = symbolic_binding T, 0 [symbolic = %T (constants.%T.f84)]
|
||||
// CHECK:STDOUT: %T.as_type: type = facet_access_type %T [symbolic = %T.as_type (constants.%T.as_type)]
|
||||
// CHECK:STDOUT: %require_complete: <witness> = require_complete_type %T.as_type [symbolic = %require_complete (constants.%require_complete.d83)]
|
||||
// CHECK:STDOUT: %pattern_type: type = pattern_type %T.as_type [symbolic = %pattern_type (constants.%pattern_type.2c66b4.2)]
|
||||
// CHECK:STDOUT: %n.patt: @Inner.%pattern_type (%pattern_type.2c66b4.2) = ref_binding_pattern n [symbolic = %n.patt (constants.%n.patt.872)]
|
||||
// CHECK:STDOUT: %T.as_type.loc6_12.2: type = facet_access_type %T [symbolic = %T.as_type.loc6_12.2 (constants.%T.as_type)]
|
||||
// CHECK:STDOUT: %require_complete: <witness> = require_complete_type %T.as_type.loc6_12.2 [symbolic = %require_complete (constants.%require_complete.d83)]
|
||||
// CHECK:STDOUT: %Inner: type = class_type @Inner, @Inner(%T) [symbolic = %Inner (constants.%Inner.06b)]
|
||||
// CHECK:STDOUT: %Inner.elem: type = unbound_element_type %Inner, %T.as_type [symbolic = %Inner.elem (constants.%Inner.elem.51d)]
|
||||
// CHECK:STDOUT: %struct_type.n: type = struct_type {.n: @Inner.%T.as_type (%T.as_type)} [symbolic = %struct_type.n (constants.%struct_type.n.797)]
|
||||
// CHECK:STDOUT: %Inner.elem: type = unbound_element_type %Inner, %T.as_type.loc6_12.2 [symbolic = %Inner.elem (constants.%Inner.elem.51d)]
|
||||
// CHECK:STDOUT: %struct_type.n: type = struct_type {.n: @Inner.%T.as_type.loc6_12.2 (%T.as_type)} [symbolic = %struct_type.n (constants.%struct_type.n.797)]
|
||||
// CHECK:STDOUT: %complete_type.loc7_3.2: <witness> = complete_type_witness %struct_type.n [symbolic = %complete_type.loc7_3.2 (constants.%complete_type.22c)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class {
|
||||
// CHECK:STDOUT: %.loc6: @Inner.%Inner.elem (%Inner.elem.51d) = field_decl n, element0 [concrete]
|
||||
// CHECK:STDOUT: %field_decl: @Inner.%Inner.elem (%Inner.elem.51d) = field_decl n, element0, %.loc6 in [concrete] {
|
||||
// CHECK:STDOUT: %T.ref: %Copy.type = name_ref T, @Outer.%T.loc4_14.2 [symbolic = %T (constants.%T.f84)]
|
||||
// CHECK:STDOUT: %T.as_type.loc6_12.1: type = facet_access_type %T.ref [symbolic = %T.as_type.loc6_12.2 (constants.%T.as_type)]
|
||||
// CHECK:STDOUT: %.loc6: type = converted %T.ref, %T.as_type.loc6_12.1 [symbolic = %T.as_type.loc6_12.2 (constants.%T.as_type)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %complete_type.loc7_3.1: <witness> = complete_type_witness constants.%struct_type.n.797 [symbolic = %complete_type.loc7_3.2 (constants.%complete_type.22c)]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type.loc7_3.1
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = constants.%Inner.06b
|
||||
// CHECK:STDOUT: .T = <poisoned>
|
||||
// CHECK:STDOUT: .n = %.loc6
|
||||
// CHECK:STDOUT: .n = %field_decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -353,7 +353,7 @@ fn Test() -> i32 {
|
||||
// CHECK:STDOUT: %c.var_patt: %pattern_type.4f49 = var_pattern %c.patt [concrete = constants.%c.var_patt]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %c.ref: ref %Inner.84a = name_ref c, %c
|
||||
// CHECK:STDOUT: %n.ref: %Inner.elem.a49 = name_ref n, @Inner.%.loc6 [concrete = @Inner.%.loc6]
|
||||
// CHECK:STDOUT: %n.ref: %Inner.elem.a49 = name_ref n, @Inner.%field_decl [concrete = @Inner.%field_decl]
|
||||
// CHECK:STDOUT: %.loc14_11.1: ref %i32 = class_element_access %c.ref, element0
|
||||
// CHECK:STDOUT: %.loc14_11.2: %i32 = acquire_value %.loc14_11.1
|
||||
// CHECK:STDOUT: %impl.elem0.loc14: %.737 = impl_witness_access constants.%Copy.impl_witness.b51, element0 [concrete = constants.%Int.as.Copy.impl.Op.4f6]
|
||||
@@ -396,10 +396,8 @@ fn Test() -> i32 {
|
||||
// CHECK:STDOUT: specific @Inner(constants.%T.f84) {
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %T => constants.%T.f84
|
||||
// CHECK:STDOUT: %T.as_type => constants.%T.as_type
|
||||
// CHECK:STDOUT: %T.as_type.loc6_12.2 => constants.%T.as_type
|
||||
// CHECK:STDOUT: %require_complete => constants.%require_complete.d83
|
||||
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.2c66b4.2
|
||||
// CHECK:STDOUT: %n.patt => constants.%n.patt.872
|
||||
// CHECK:STDOUT: %Inner => constants.%Inner.06b
|
||||
// CHECK:STDOUT: %Inner.elem => constants.%Inner.elem.51d
|
||||
// CHECK:STDOUT: %struct_type.n => constants.%struct_type.n.797
|
||||
@@ -432,10 +430,8 @@ fn Test() -> i32 {
|
||||
// CHECK:STDOUT: specific @Inner(constants.%Copy.facet.1e1) {
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %T => constants.%Copy.facet.1e1
|
||||
// CHECK:STDOUT: %T.as_type => constants.%i32
|
||||
// CHECK:STDOUT: %T.as_type.loc6_12.2 => constants.%i32
|
||||
// CHECK:STDOUT: %require_complete => constants.%complete_type.f8a
|
||||
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.6b6
|
||||
// CHECK:STDOUT: %n.patt => constants.%n.patt.e55
|
||||
// CHECK:STDOUT: %Inner => constants.%Inner.84a
|
||||
// CHECK:STDOUT: %Inner.elem => constants.%Inner.elem.a49
|
||||
// CHECK:STDOUT: %struct_type.n => constants.%struct_type.n.9ed
|
||||
|
||||
+8
-4
@@ -646,15 +646,19 @@ var g: E({.a = 1, .b = 2}) = {} as E({.a = 3, .b = 4} as D);
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @D {
|
||||
// CHECK:STDOUT: %.loc5: %D.elem = field_decl a, element0 [concrete]
|
||||
// CHECK:STDOUT: %.loc6: %D.elem = field_decl b, element1 [concrete]
|
||||
// CHECK:STDOUT: %field_decl.loc5: %D.elem = field_decl a, element0, %i32.loc5 in [concrete] {
|
||||
// CHECK:STDOUT: %i32.loc5: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %field_decl.loc6: %D.elem = field_decl b, element1, %i32.loc6 in [concrete] {
|
||||
// CHECK:STDOUT: %i32.loc6: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness constants.%struct_type.a.b.b4c [concrete = constants.%complete_type.7b9]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = constants.%D
|
||||
// CHECK:STDOUT: .a = %.loc5
|
||||
// CHECK:STDOUT: .b = %.loc6
|
||||
// CHECK:STDOUT: .a = %field_decl.loc5
|
||||
// CHECK:STDOUT: .b = %field_decl.loc6
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: generic class @E(%F.loc9_10.2: %D) {
|
||||
|
||||
+9
-6
@@ -115,13 +115,15 @@ fn Run() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @Field {
|
||||
// CHECK:STDOUT: %.loc8: %Field.elem = field_decl x, element0 [concrete]
|
||||
// CHECK:STDOUT: %field_decl: %Field.elem = field_decl x, element0, %i32 in [concrete] {
|
||||
// CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness constants.%struct_type.x [concrete = constants.%complete_type.0c6]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = constants.%Field
|
||||
// CHECK:STDOUT: .x = %.loc8
|
||||
// CHECK:STDOUT: .x = %field_decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @ForwardDeclared {
|
||||
@@ -271,11 +273,12 @@ fn Run() {
|
||||
// CHECK:STDOUT: %Main.import_ref.777 = import_ref Main//a, inst{{[0-9A-F]+}} [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.9e9: <witness> = import_ref Main//a, loc9_1, loaded [concrete = constants.%complete_type.0c6]
|
||||
// CHECK:STDOUT: %Main.import_ref.4ae = import_ref Main//a, inst{{[0-9A-F]+}} [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.5c1: %Field.elem = import_ref Main//a, loc8_8, loaded [concrete = %.860]
|
||||
// CHECK:STDOUT: %Main.import_ref.3ec: %Field.elem = import_ref Main//a, loc8_8, loaded [concrete = %field_decl]
|
||||
// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.0ff = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic]
|
||||
// CHECK:STDOUT: %Core.import_ref.edf: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.e74) = import_ref Core//prelude/parts/int, loc{{\d+_\d+}}, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.845)]
|
||||
// CHECK:STDOUT: %ImplicitAs.impl_witness_table.1aa = impl_witness_table (%Core.import_ref.edf), @Core.IntLiteral.as.ImplicitAs.impl [concrete]
|
||||
// CHECK:STDOUT: %.860: %Field.elem = field_decl x, element0 [concrete]
|
||||
// CHECK:STDOUT: %Main.import_ref.69c = import_ref Main//a, loc8_10, unloaded
|
||||
// CHECK:STDOUT: %field_decl: %Field.elem = field_decl x, element0, %Main.import_ref.69c in [concrete] {}
|
||||
// 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.fbb203.1 = import_ref Main//a, inst{{[0-9A-F]+}} [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.bc9: %ForwardDeclared.F.type = import_ref Main//a, loc14_13, loaded [concrete = constants.%ForwardDeclared.F]
|
||||
@@ -319,7 +322,7 @@ fn Run() {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Main.import_ref.4ae
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.5c1
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.3ec
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @ForwardDeclared.1 [from "a.carbon"] {
|
||||
@@ -376,7 +379,7 @@ fn Run() {
|
||||
// CHECK:STDOUT: %b.var_patt: %pattern_type.f17 = var_pattern %b.patt [concrete = constants.%b.var_patt]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %b.ref: ref %Field = name_ref b, %b
|
||||
// CHECK:STDOUT: %x.ref: %Field.elem = name_ref x, imports.%Main.import_ref.5c1 [concrete = imports.%.860]
|
||||
// CHECK:STDOUT: %x.ref: %Field.elem = name_ref x, imports.%Main.import_ref.3ec [concrete = imports.%field_decl]
|
||||
// CHECK:STDOUT: %.loc10_4: ref %i32 = class_element_access %b.ref, element0
|
||||
// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc]
|
||||
// CHECK:STDOUT: %impl.elem0.loc10: %.b7a = impl_witness_access constants.%ImplicitAs.impl_witness.a2a, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e39]
|
||||
|
||||
@@ -57,14 +57,17 @@ fn Run() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @Cycle {
|
||||
// CHECK:STDOUT: %.loc5: %Cycle.elem = field_decl a, element0 [concrete]
|
||||
// CHECK:STDOUT: %field_decl: %Cycle.elem = field_decl a, element0, %ptr in [concrete] {
|
||||
// CHECK:STDOUT: %Cycle.ref: type = name_ref Cycle, file.%Cycle.decl [concrete = constants.%Cycle]
|
||||
// CHECK:STDOUT: %ptr: type = ptr_type %Cycle.ref [concrete = constants.%ptr]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness constants.%struct_type.a [concrete = constants.%complete_type]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = constants.%Cycle
|
||||
// CHECK:STDOUT: .Cycle = <poisoned>
|
||||
// CHECK:STDOUT: .a = %.loc5
|
||||
// CHECK:STDOUT: .a = %field_decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: --- b.carbon
|
||||
@@ -104,7 +107,7 @@ fn Run() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Main.import_ref.8f0: <witness> = import_ref Main//a, loc6_1, loaded [concrete = constants.%complete_type.de4]
|
||||
// CHECK:STDOUT: %Main.import_ref.3b0 = import_ref Main//a, inst{{[0-9A-F]+}} [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.40b = import_ref Main//a, loc5_8, unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.ec9 = import_ref Main//a, loc5_8, unloaded
|
||||
// CHECK:STDOUT: %Core.DefaultOrUnformed: type = import_ref Core//prelude/parts/default, DefaultOrUnformed, loaded [concrete = constants.%DefaultOrUnformed.type]
|
||||
// CHECK:STDOUT: %Core.import_ref.cc8: @T.as.DefaultOrUnformed.impl.%T.as.DefaultOrUnformed.impl.Op.type (%T.as.DefaultOrUnformed.impl.Op.type.150) = import_ref Core//prelude/parts/default, loc{{\d+_\d+}}, loaded [symbolic = @T.as.DefaultOrUnformed.impl.%T.as.DefaultOrUnformed.impl.Op (constants.%T.as.DefaultOrUnformed.impl.Op.53a)]
|
||||
// CHECK:STDOUT: %DefaultOrUnformed.impl_witness_table.856 = impl_witness_table (%Core.import_ref.cc8), @T.as.DefaultOrUnformed.impl [concrete]
|
||||
@@ -127,7 +130,7 @@ fn Run() {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Main.import_ref.3b0
|
||||
// CHECK:STDOUT: .a = imports.%Main.import_ref.40b
|
||||
// CHECK:STDOUT: .a = imports.%Main.import_ref.ec9
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @Run() {
|
||||
|
||||
+11
-6
@@ -92,14 +92,18 @@ fn Run() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @Cycle {
|
||||
// CHECK:STDOUT: %.loc10: %Cycle.elem = field_decl c, element0 [concrete]
|
||||
// CHECK:STDOUT: %field_decl: %Cycle.elem = field_decl c, element0, %struct_type.b in [concrete] {
|
||||
// CHECK:STDOUT: %Cycle.ref: type = name_ref Cycle, file.%Cycle.decl.loc4 [concrete = constants.%Cycle]
|
||||
// CHECK:STDOUT: %ptr: type = ptr_type %Cycle.ref [concrete = constants.%ptr]
|
||||
// CHECK:STDOUT: %struct_type.b: type = struct_type {.b: %ptr} [concrete = constants.%struct_type.b]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness constants.%struct_type.c [concrete = constants.%complete_type.663]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = constants.%Cycle
|
||||
// CHECK:STDOUT: .Cycle = <poisoned>
|
||||
// CHECK:STDOUT: .c = %.loc10
|
||||
// CHECK:STDOUT: .c = %field_decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @__global_init() {
|
||||
@@ -152,9 +156,10 @@ fn Run() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Main.import_ref.281: <witness> = import_ref Main//a, loc11_1, loaded [concrete = constants.%complete_type.663]
|
||||
// CHECK:STDOUT: %Main.import_ref.3b0 = import_ref Main//a, inst{{[0-9A-F]+}} [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.697: %Cycle.elem = import_ref Main//a, loc10_8, loaded [concrete = %.ec0]
|
||||
// CHECK:STDOUT: %Main.import_ref.169: %Cycle.elem = import_ref Main//a, loc10_8, loaded [concrete = %field_decl]
|
||||
// CHECK:STDOUT: %a.var: ref %struct_type.b = var_storage constants.%a.var_patt [concrete]
|
||||
// CHECK:STDOUT: %.ec0: %Cycle.elem = field_decl c, element0 [concrete]
|
||||
// CHECK:STDOUT: %Main.import_ref.fd6 = import_ref Main//a, loc10_21, unloaded
|
||||
// CHECK:STDOUT: %field_decl: %Cycle.elem = field_decl c, element0, %Main.import_ref.fd6 in [concrete] {}
|
||||
// CHECK:STDOUT: %Core.Copy: type = import_ref Core//prelude/parts/copy, Copy, loaded [concrete = constants.%Copy.type]
|
||||
// CHECK:STDOUT: %Core.import_ref.e5f: @ptr.as.Copy.impl.%ptr.as.Copy.impl.Op.type (%ptr.as.Copy.impl.Op.type.ff5) = import_ref Core//prelude/parts/copy, loc{{\d+_\d+}}, loaded [symbolic = @ptr.as.Copy.impl.%ptr.as.Copy.impl.Op (constants.%ptr.as.Copy.impl.Op.ce9)]
|
||||
// CHECK:STDOUT: %Copy.impl_witness_table.fb0 = impl_witness_table (%Core.import_ref.e5f), @ptr.as.Copy.impl [concrete]
|
||||
@@ -177,7 +182,7 @@ fn Run() {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Main.import_ref.3b0
|
||||
// CHECK:STDOUT: .c = imports.%Main.import_ref.697
|
||||
// CHECK:STDOUT: .c = imports.%Main.import_ref.169
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @Run() {
|
||||
@@ -188,7 +193,7 @@ fn Run() {
|
||||
// CHECK:STDOUT: %.loc7_12.1: ref %ptr.5cd = struct_access %a.ref.loc7_11, element0 [concrete = constants.%.4d3]
|
||||
// CHECK:STDOUT: %.loc7_12.2: %ptr.5cd = acquire_value %.loc7_12.1
|
||||
// CHECK:STDOUT: %.loc7_10: ref %Cycle = deref %.loc7_12.2
|
||||
// CHECK:STDOUT: %c.ref: %Cycle.elem = name_ref c, imports.%Main.import_ref.697 [concrete = imports.%.ec0]
|
||||
// CHECK:STDOUT: %c.ref: %Cycle.elem = name_ref c, imports.%Main.import_ref.169 [concrete = imports.%field_decl]
|
||||
// CHECK:STDOUT: %.loc7_15: ref %struct_type.b = class_element_access %.loc7_10, element0
|
||||
// CHECK:STDOUT: %.loc7_17.1: ref %ptr.5cd = struct_access %.loc7_15, element0
|
||||
// CHECK:STDOUT: %.loc7_17.2: %ptr.5cd = acquire_value %.loc7_17.1
|
||||
|
||||
+16
-10
@@ -102,7 +102,7 @@ class Derived {
|
||||
// CHECK:STDOUT: %int_7.690: %i32 = int_value 7 [concrete]
|
||||
// CHECK:STDOUT: %Derived.val: %Derived = struct_value (%Base.val, %int_7.690) [concrete]
|
||||
// CHECK:STDOUT: %d.param_patt: %pattern_type.4fd = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %d.patt.cd7: %pattern_type.4fd = wrapper_binding_pattern d, %d.param_patt [concrete]
|
||||
// CHECK:STDOUT: %d.patt: %pattern_type.4fd = wrapper_binding_pattern d, %d.param_patt [concrete]
|
||||
// CHECK:STDOUT: %tuple.type.24b: type = tuple_type (type, type) [concrete]
|
||||
// CHECK:STDOUT: %tuple.b59: %tuple.type.24b = tuple_value (%i32, %i32) [concrete]
|
||||
// CHECK:STDOUT: %tuple.type.e55: type = tuple_type (%i32, %i32) [concrete]
|
||||
@@ -163,7 +163,7 @@ class Derived {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Access.decl: %Access.type = fn_decl @Access [concrete = constants.%Access] {
|
||||
// CHECK:STDOUT: %d.param_patt: %pattern_type.4fd = value_param_pattern [concrete = constants.%d.param_patt]
|
||||
// CHECK:STDOUT: %d.patt: %pattern_type.4fd = wrapper_binding_pattern d, %d.param_patt [concrete = constants.%d.patt.cd7]
|
||||
// CHECK:STDOUT: %d.patt: %pattern_type.4fd = wrapper_binding_pattern d, %d.param_patt [concrete = constants.%d.patt]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.394 = out_param_pattern [concrete = constants.%return.param_patt.a90]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.394 = return_slot_pattern %return.param_patt, %.loc17_35.2 [concrete = constants.%return.patt.2ed]
|
||||
// CHECK:STDOUT: } {
|
||||
@@ -181,19 +181,23 @@ class Derived {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @Base {
|
||||
// CHECK:STDOUT: %.loc4: %Base.elem = field_decl b, element0 [concrete]
|
||||
// CHECK:STDOUT: %field_decl: %Base.elem = field_decl b, element0, %i32 in [concrete] {
|
||||
// CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness constants.%struct_type.b.0bf [concrete = constants.%complete_type.330]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = constants.%Base
|
||||
// CHECK:STDOUT: .b = %.loc4
|
||||
// CHECK:STDOUT: .b = %field_decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @Derived {
|
||||
// CHECK:STDOUT: %Base.ref: type = name_ref Base, file.%Base.decl [concrete = constants.%Base]
|
||||
// CHECK:STDOUT: %.loc8: %Derived.elem.e51 = base_decl %Base.ref, element0 [concrete]
|
||||
// CHECK:STDOUT: %.loc10: %Derived.elem.a2d = field_decl d, element1 [concrete]
|
||||
// CHECK:STDOUT: %field_decl: %Derived.elem.a2d = field_decl d, element1, %i32 in [concrete] {
|
||||
// CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness constants.%struct_type.base.d.90a [concrete = constants.%complete_type.2d7]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
@@ -201,7 +205,7 @@ class Derived {
|
||||
// CHECK:STDOUT: .Self = constants.%Derived
|
||||
// CHECK:STDOUT: .Base = <poisoned>
|
||||
// CHECK:STDOUT: .base = %.loc8
|
||||
// CHECK:STDOUT: .d = %.loc10
|
||||
// CHECK:STDOUT: .d = %field_decl
|
||||
// CHECK:STDOUT: extend %Base.ref
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -239,14 +243,14 @@ class Derived {
|
||||
// CHECK:STDOUT: fn @Access(%d.param: %Derived) -> out %return.param: %tuple.type.e55 {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %d.ref.loc18_11: %Derived = name_ref d, %d
|
||||
// CHECK:STDOUT: %d.ref.loc18_12: %Derived.elem.a2d = name_ref d, @Derived.%.loc10 [concrete = @Derived.%.loc10]
|
||||
// CHECK:STDOUT: %d.ref.loc18_12: %Derived.elem.a2d = name_ref d, @Derived.%field_decl [concrete = @Derived.%field_decl]
|
||||
// CHECK:STDOUT: %.loc18_12.1: ref %i32 = class_element_access %d.ref.loc18_11, element1
|
||||
// CHECK:STDOUT: %.loc18_12.2: %i32 = acquire_value %.loc18_12.1
|
||||
// CHECK:STDOUT: %d.ref.loc18_16: %Derived = name_ref d, %d
|
||||
// CHECK:STDOUT: %base.ref: %Derived.elem.e51 = name_ref base, @Derived.%.loc8 [concrete = @Derived.%.loc8]
|
||||
// CHECK:STDOUT: %.loc18_17.1: ref %Base = class_element_access %d.ref.loc18_16, element0
|
||||
// CHECK:STDOUT: %.loc18_17.2: %Base = acquire_value %.loc18_17.1
|
||||
// CHECK:STDOUT: %b.ref: %Base.elem = name_ref b, @Base.%.loc4 [concrete = @Base.%.loc4]
|
||||
// CHECK:STDOUT: %b.ref: %Base.elem = name_ref b, @Base.%field_decl [concrete = @Base.%field_decl]
|
||||
// CHECK:STDOUT: %.loc18_22.1: ref %i32 = class_element_access %.loc18_17.2, element0
|
||||
// CHECK:STDOUT: %.loc18_22.2: %i32 = acquire_value %.loc18_22.1
|
||||
// CHECK:STDOUT: %.loc18_24.1: %tuple.type.e55 = tuple_literal (%.loc18_12.2, %.loc18_22.2)
|
||||
@@ -314,14 +318,16 @@ class Derived {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @Derived {
|
||||
// CHECK:STDOUT: %.loc7: %Derived.elem = field_decl d, element0 [concrete]
|
||||
// CHECK:STDOUT: %field_decl: %Derived.elem = field_decl d, element0, %i32 in [concrete] {
|
||||
// CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Base.ref: type = name_ref Base, file.%Base.decl [concrete = constants.%Base]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness constants.%struct_type.d [concrete = constants.%complete_type.5d0]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = constants.%Derived
|
||||
// CHECK:STDOUT: .d = %.loc7
|
||||
// CHECK:STDOUT: .d = %field_decl
|
||||
// CHECK:STDOUT: .Base = <poisoned>
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
+21
-11
@@ -113,24 +113,34 @@ fn Access(p: Derived*) -> i32* {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @Base {
|
||||
// CHECK:STDOUT: %.loc16: %Base.elem = field_decl a, element0 [concrete]
|
||||
// CHECK:STDOUT: %.loc17: %Base.elem = field_decl b, element1 [concrete]
|
||||
// CHECK:STDOUT: %.loc18: %Base.elem = field_decl c, element2 [concrete]
|
||||
// CHECK:STDOUT: %field_decl.loc16: %Base.elem = field_decl a, element0, %i32.loc16 in [concrete] {
|
||||
// CHECK:STDOUT: %i32.loc16: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %field_decl.loc17: %Base.elem = field_decl b, element1, %i32.loc17 in [concrete] {
|
||||
// CHECK:STDOUT: %i32.loc17: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %field_decl.loc18: %Base.elem = field_decl c, element2, %i32.loc18 in [concrete] {
|
||||
// CHECK:STDOUT: %i32.loc18: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness constants.%struct_type.a.b.c [concrete = constants.%complete_type.bae]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = constants.%Base
|
||||
// CHECK:STDOUT: .a = %.loc16
|
||||
// CHECK:STDOUT: .b = %.loc17
|
||||
// CHECK:STDOUT: .c = %.loc18
|
||||
// CHECK:STDOUT: .a = %field_decl.loc16
|
||||
// CHECK:STDOUT: .b = %field_decl.loc17
|
||||
// CHECK:STDOUT: .c = %field_decl.loc18
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @Derived {
|
||||
// CHECK:STDOUT: %Base.ref: type = name_ref Base, file.%Base.decl [concrete = constants.%Base]
|
||||
// CHECK:STDOUT: %.loc22: %Derived.elem.93c = base_decl %Base.ref, element0 [concrete]
|
||||
// CHECK:STDOUT: %.loc24: %Derived.elem.577 = field_decl d, element1 [concrete]
|
||||
// CHECK:STDOUT: %.loc25: %Derived.elem.577 = field_decl e, element2 [concrete]
|
||||
// CHECK:STDOUT: %field_decl.loc24: %Derived.elem.577 = field_decl d, element1, %i32.loc24 in [concrete] {
|
||||
// CHECK:STDOUT: %i32.loc24: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %field_decl.loc25: %Derived.elem.577 = field_decl e, element2, %i32.loc25 in [concrete] {
|
||||
// CHECK:STDOUT: %i32.loc25: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness constants.%struct_type.base.d.e.26c [concrete = constants.%complete_type.9b3]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
@@ -138,8 +148,8 @@ fn Access(p: Derived*) -> i32* {
|
||||
// CHECK:STDOUT: .Self = constants.%Derived
|
||||
// CHECK:STDOUT: .Base = <poisoned>
|
||||
// CHECK:STDOUT: .base = %.loc22
|
||||
// CHECK:STDOUT: .d = %.loc24
|
||||
// CHECK:STDOUT: .e = %.loc25
|
||||
// CHECK:STDOUT: .d = %field_decl.loc24
|
||||
// CHECK:STDOUT: .e = %field_decl.loc25
|
||||
// CHECK:STDOUT: .c = <poisoned>
|
||||
// CHECK:STDOUT: extend %Base.ref
|
||||
// CHECK:STDOUT: }
|
||||
@@ -148,7 +158,7 @@ fn Access(p: Derived*) -> i32* {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %p.ref: %ptr.64c = name_ref p, %p
|
||||
// CHECK:STDOUT: %.loc29_12: ref %Derived = deref %p.ref
|
||||
// CHECK:STDOUT: %c.ref: %Base.elem = name_ref c, @Base.%.loc18 [concrete = @Base.%.loc18]
|
||||
// CHECK:STDOUT: %c.ref: %Base.elem = name_ref c, @Base.%field_decl.loc18 [concrete = @Base.%field_decl.loc18]
|
||||
// CHECK:STDOUT: %.loc29_15.1: ref %Base = as_compatible %.loc29_12
|
||||
// CHECK:STDOUT: %.loc29_15.2: ref %Base = class_element_access %.loc29_15.1, element0
|
||||
// CHECK:STDOUT: %.loc29_15.3: ref %Base = converted %.loc29_12, %.loc29_15.2
|
||||
|
||||
@@ -121,7 +121,9 @@ fn Call(p: Derived*) {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @Base {
|
||||
// CHECK:STDOUT: %.loc16: %Base.elem = field_decl a, element0 [concrete]
|
||||
// CHECK:STDOUT: %field_decl: %Base.elem = field_decl a, element0, %i32 in [concrete] {
|
||||
// CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Base.F.decl: %Base.F.type = fn_decl @Base.F [concrete = constants.%Base.F] {
|
||||
// CHECK:STDOUT: %self.param_patt: %pattern_type.912 = ref_param_pattern [concrete = constants.%self.param_patt.21c]
|
||||
// CHECK:STDOUT: %self.patt: %pattern_type.912 = wrapper_binding_pattern self, %self.param_patt [concrete = constants.%self.patt.26b]
|
||||
@@ -135,7 +137,7 @@ fn Call(p: Derived*) {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = constants.%Base
|
||||
// CHECK:STDOUT: .a = %.loc16
|
||||
// CHECK:STDOUT: .a = %field_decl
|
||||
// CHECK:STDOUT: .F = %Base.F.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -156,7 +158,7 @@ fn Call(p: Derived*) {
|
||||
// CHECK:STDOUT: fn @Base.F(%self.param.loc21: ref %Base) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %self.ref: ref %Base = name_ref self, %self.loc21
|
||||
// CHECK:STDOUT: %a.ref: %Base.elem = name_ref a, @Base.%.loc16 [concrete = @Base.%.loc16]
|
||||
// CHECK:STDOUT: %a.ref: %Base.elem = name_ref a, @Base.%field_decl [concrete = @Base.%field_decl]
|
||||
// CHECK:STDOUT: %.loc22_7: ref %i32 = class_element_access %self.ref, element0
|
||||
// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8]
|
||||
// CHECK:STDOUT: %impl.elem0: %.b7a = impl_witness_access constants.%ImplicitAs.impl_witness.a2a, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e39]
|
||||
|
||||
+15
-10
@@ -102,8 +102,12 @@ fn Run() {
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%Base [concrete = constants.%Base]
|
||||
// CHECK:STDOUT: %self: %Base = wrapper_binding self, %self.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.loc8: %Base.elem = field_decl x, element0 [concrete]
|
||||
// CHECK:STDOUT: %.loc9: %Base.elem = field_decl unused_y, element1 [concrete]
|
||||
// CHECK:STDOUT: %field_decl.loc8: %Base.elem = field_decl x, element0, %i32.loc8 in [concrete] {
|
||||
// CHECK:STDOUT: %i32.loc8: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %field_decl.loc9: %Base.elem = field_decl unused_y, element1, %i32.loc9 in [concrete] {
|
||||
// CHECK:STDOUT: %i32.loc9: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness constants.%struct_type.x.unused_y [concrete = constants.%complete_type.6c3]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
@@ -111,8 +115,8 @@ fn Run() {
|
||||
// CHECK:STDOUT: .Self = constants.%Base
|
||||
// CHECK:STDOUT: .F = %Base.F.decl
|
||||
// CHECK:STDOUT: .Unused = %Base.Unused.decl
|
||||
// CHECK:STDOUT: .x = %.loc8
|
||||
// CHECK:STDOUT: .unused_y = %.loc9
|
||||
// CHECK:STDOUT: .x = %field_decl.loc8
|
||||
// CHECK:STDOUT: .unused_y = %field_decl.loc9
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @Child {
|
||||
@@ -204,8 +208,8 @@ fn Run() {
|
||||
// CHECK:STDOUT: %Main.import_ref.d68 = import_ref Main//a, inst{{[0-9A-F]+}} [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.bc9: %Base.F.type = import_ref Main//a, loc5_13, loaded [concrete = constants.%Base.F]
|
||||
// CHECK:STDOUT: %Main.import_ref.077 = import_ref Main//a, loc6_18, unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.230: %Base.elem = import_ref Main//a, loc8_8, loaded [concrete = %.11f]
|
||||
// CHECK:STDOUT: %Main.import_ref.9f4 = import_ref Main//a, loc9_15, unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.dea: %Base.elem = import_ref Main//a, loc8_8, loaded [concrete = %field_decl]
|
||||
// CHECK:STDOUT: %Main.import_ref.bf9 = import_ref Main//a, loc9_15, unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.60e: <witness> = import_ref Main//a, loc14_1, loaded [concrete = constants.%complete_type.c02]
|
||||
// CHECK:STDOUT: %Main.import_ref.6e8 = import_ref Main//a, inst{{[0-9A-F]+}} [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.bd6 = import_ref Main//a, loc13_20, unloaded
|
||||
@@ -213,7 +217,8 @@ fn Run() {
|
||||
// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.0ff = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic]
|
||||
// CHECK:STDOUT: %Core.import_ref.edf: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.e74) = import_ref Core//prelude/parts/int, loc{{\d+_\d+}}, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.845)]
|
||||
// CHECK:STDOUT: %ImplicitAs.impl_witness_table.1aa = impl_witness_table (%Core.import_ref.edf), @Core.IntLiteral.as.ImplicitAs.impl [concrete]
|
||||
// CHECK:STDOUT: %.11f: %Base.elem = field_decl x, element0 [concrete]
|
||||
// CHECK:STDOUT: %Main.import_ref.69c = import_ref Main//a, loc8_10, unloaded
|
||||
// CHECK:STDOUT: %field_decl: %Base.elem = field_decl x, element0, %Main.import_ref.69c in [concrete] {}
|
||||
// CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -247,8 +252,8 @@ fn Run() {
|
||||
// CHECK:STDOUT: .Self = imports.%Main.import_ref.d68
|
||||
// CHECK:STDOUT: .F = imports.%Main.import_ref.bc9
|
||||
// CHECK:STDOUT: .Unused = imports.%Main.import_ref.077
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.230
|
||||
// CHECK:STDOUT: .unused_y = imports.%Main.import_ref.9f4
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.dea
|
||||
// CHECK:STDOUT: .unused_y = imports.%Main.import_ref.bf9
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @Run() {
|
||||
@@ -288,7 +293,7 @@ fn Run() {
|
||||
// CHECK:STDOUT: %a.var_patt: %pattern_type.860 = var_pattern %a.patt [concrete = constants.%a.var_patt]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %a.ref.loc8: ref %Child = name_ref a, %a
|
||||
// CHECK:STDOUT: %x.ref: %Base.elem = name_ref x, imports.%Main.import_ref.230 [concrete = imports.%.11f]
|
||||
// CHECK:STDOUT: %x.ref: %Base.elem = name_ref x, imports.%Main.import_ref.dea [concrete = imports.%field_decl]
|
||||
// CHECK:STDOUT: %.loc8_4.1: ref %Base = as_compatible %a.ref.loc8
|
||||
// CHECK:STDOUT: %.loc8_4.2: ref %Base = class_element_access %.loc8_4.1, element0
|
||||
// CHECK:STDOUT: %.loc8_4.3: ref %Base = converted %a.ref.loc8, %.loc8_4.2
|
||||
|
||||
@@ -170,13 +170,15 @@ fn Call(p: Derived*) -> i32 {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @Base {
|
||||
// CHECK:STDOUT: %.loc16: %Base.elem = field_decl a, element0 [concrete]
|
||||
// CHECK:STDOUT: %field_decl: %Base.elem = field_decl a, element0, %i32 in [concrete] {
|
||||
// CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness constants.%struct_type.a [concrete = constants.%complete_type.388]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = constants.%Base
|
||||
// CHECK:STDOUT: .a = %.loc16
|
||||
// CHECK:STDOUT: .a = %field_decl
|
||||
// CHECK:STDOUT: .Base = <poisoned>
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -220,7 +222,7 @@ fn Call(p: Derived*) -> i32 {
|
||||
// CHECK:STDOUT: fn @Derived.SelfBase(%self.param.loc26: %Base) -> out %return.param.loc26: %i32 {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %self.ref: %Base = name_ref self, %self.loc26
|
||||
// CHECK:STDOUT: %a.ref: %Base.elem = name_ref a, @Base.%.loc16 [concrete = @Base.%.loc16]
|
||||
// CHECK:STDOUT: %a.ref: %Base.elem = name_ref a, @Base.%field_decl [concrete = @Base.%field_decl]
|
||||
// CHECK:STDOUT: %.loc27_14.1: ref %i32 = class_element_access %self.ref, element0
|
||||
// CHECK:STDOUT: %.loc27_14.2: %i32 = acquire_value %.loc27_14.1
|
||||
// CHECK:STDOUT: %impl.elem0: %.737 = impl_witness_access constants.%Copy.impl_witness.b51, element0 [concrete = constants.%Int.as.Copy.impl.Op.4f6]
|
||||
@@ -234,7 +236,7 @@ fn Call(p: Derived*) -> i32 {
|
||||
// CHECK:STDOUT: fn @Derived.RefSelfBase(%self.param.loc30: ref %Base) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %self.ref: ref %Base = name_ref self, %self.loc30
|
||||
// CHECK:STDOUT: %a.ref: %Base.elem = name_ref a, @Base.%.loc16 [concrete = @Base.%.loc16]
|
||||
// CHECK:STDOUT: %a.ref: %Base.elem = name_ref a, @Base.%field_decl [concrete = @Base.%field_decl]
|
||||
// CHECK:STDOUT: %.loc31_7: ref %i32 = class_element_access %self.ref, element0
|
||||
// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8]
|
||||
// CHECK:STDOUT: %impl.elem0: %.b7a = impl_witness_access constants.%ImplicitAs.impl_witness.a2a, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e39]
|
||||
|
||||
+15
-10
@@ -42,9 +42,9 @@ fn MakeReorder(n: i32, next: Class*) -> Class {
|
||||
// CHECK:STDOUT: %struct_type.n.next: type = struct_type {.n: %i32, .next: %ptr.7ee} [concrete]
|
||||
// CHECK:STDOUT: %complete_type.dc3: <witness> = complete_type_witness %struct_type.n.next [concrete]
|
||||
// CHECK:STDOUT: %n.param_patt: %pattern_type.6b6 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %n.patt.ae8: %pattern_type.6b6 = wrapper_binding_pattern n, %n.param_patt [concrete]
|
||||
// CHECK:STDOUT: %n.patt: %pattern_type.6b6 = wrapper_binding_pattern n, %n.param_patt [concrete]
|
||||
// CHECK:STDOUT: %next.param_patt: %pattern_type.8c5 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %next.patt.b38: %pattern_type.8c5 = wrapper_binding_pattern next, %next.param_patt [concrete]
|
||||
// CHECK:STDOUT: %next.patt: %pattern_type.8c5 = wrapper_binding_pattern next, %next.param_patt [concrete]
|
||||
// CHECK:STDOUT: %.d76: Core.Form = init_form %Class [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.f15: type = pattern_type %Class [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt.86e: %pattern_type.f15 = out_param_pattern [concrete]
|
||||
@@ -102,9 +102,9 @@ fn MakeReorder(n: i32, next: Class*) -> Class {
|
||||
// CHECK:STDOUT: %Class.decl: type = class_decl @Class [concrete = constants.%Class] {} {}
|
||||
// CHECK:STDOUT: %Make.decl: %Make.type = fn_decl @Make [concrete = constants.%Make] {
|
||||
// CHECK:STDOUT: %n.param_patt: %pattern_type.6b6 = value_param_pattern [concrete = constants.%n.param_patt]
|
||||
// CHECK:STDOUT: %n.patt: %pattern_type.6b6 = wrapper_binding_pattern n, %n.param_patt [concrete = constants.%n.patt.ae8]
|
||||
// CHECK:STDOUT: %n.patt: %pattern_type.6b6 = wrapper_binding_pattern n, %n.param_patt [concrete = constants.%n.patt]
|
||||
// CHECK:STDOUT: %next.param_patt: %pattern_type.8c5 = value_param_pattern [concrete = constants.%next.param_patt]
|
||||
// CHECK:STDOUT: %next.patt: %pattern_type.8c5 = wrapper_binding_pattern next, %next.param_patt [concrete = constants.%next.patt.b38]
|
||||
// CHECK:STDOUT: %next.patt: %pattern_type.8c5 = wrapper_binding_pattern next, %next.param_patt [concrete = constants.%next.patt]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.f15 = out_param_pattern [concrete = constants.%return.param_patt.86e]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.f15 = return_slot_pattern %return.param_patt, %Class.ref.loc20_34 [concrete = constants.%return.patt.0b7]
|
||||
// CHECK:STDOUT: } {
|
||||
@@ -124,9 +124,9 @@ fn MakeReorder(n: i32, next: Class*) -> Class {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %MakeReorder.decl: %MakeReorder.type = fn_decl @MakeReorder [concrete = constants.%MakeReorder] {
|
||||
// CHECK:STDOUT: %n.param_patt: %pattern_type.6b6 = value_param_pattern [concrete = constants.%n.param_patt]
|
||||
// CHECK:STDOUT: %n.patt: %pattern_type.6b6 = wrapper_binding_pattern n, %n.param_patt [concrete = constants.%n.patt.ae8]
|
||||
// CHECK:STDOUT: %n.patt: %pattern_type.6b6 = wrapper_binding_pattern n, %n.param_patt [concrete = constants.%n.patt]
|
||||
// CHECK:STDOUT: %next.param_patt: %pattern_type.8c5 = value_param_pattern [concrete = constants.%next.param_patt]
|
||||
// CHECK:STDOUT: %next.patt: %pattern_type.8c5 = wrapper_binding_pattern next, %next.param_patt [concrete = constants.%next.patt.b38]
|
||||
// CHECK:STDOUT: %next.patt: %pattern_type.8c5 = wrapper_binding_pattern next, %next.param_patt [concrete = constants.%next.patt]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.f15 = out_param_pattern [concrete = constants.%return.param_patt.86e]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.f15 = return_slot_pattern %return.param_patt, %Class.ref.loc24_41 [concrete = constants.%return.patt.0b7]
|
||||
// CHECK:STDOUT: } {
|
||||
@@ -147,16 +147,21 @@ fn MakeReorder(n: i32, next: Class*) -> Class {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @Class {
|
||||
// CHECK:STDOUT: %.loc16: %Class.elem.b98 = field_decl n, element0 [concrete]
|
||||
// CHECK:STDOUT: %.loc17: %Class.elem.8da = field_decl next, element1 [concrete]
|
||||
// CHECK:STDOUT: %field_decl.loc16: %Class.elem.b98 = field_decl n, element0, %i32 in [concrete] {
|
||||
// CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %field_decl.loc17: %Class.elem.8da = field_decl next, element1, %ptr in [concrete] {
|
||||
// CHECK:STDOUT: %Class.ref: type = name_ref Class, file.%Class.decl [concrete = constants.%Class]
|
||||
// CHECK:STDOUT: %ptr: type = ptr_type %Class.ref [concrete = constants.%ptr.7ee]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness constants.%struct_type.n.next [concrete = constants.%complete_type.dc3]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = constants.%Class
|
||||
// CHECK:STDOUT: .n = %.loc16
|
||||
// CHECK:STDOUT: .n = %field_decl.loc16
|
||||
// CHECK:STDOUT: .Class = <poisoned>
|
||||
// CHECK:STDOUT: .next = %.loc17
|
||||
// CHECK:STDOUT: .next = %field_decl.loc17
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @Make(%n.param: %i32, %next.param: %ptr.7ee) -> out %return.param: %Class {
|
||||
|
||||
+1
-1
@@ -114,7 +114,7 @@ fn G() -> i32 {
|
||||
// CHECK:STDOUT: %.loc20_26.9: init %Class to %.loc20_26.3 = class_init (%.loc20_26.5, %.loc20_26.8) [concrete = constants.%Class.val]
|
||||
// CHECK:STDOUT: %.loc20_28.1: init %Class = converted %.loc20_26.1, %.loc20_26.9 [concrete = constants.%Class.val]
|
||||
// CHECK:STDOUT: %.loc20_28.2: ref %Class = temporary %.loc20_26.3, %.loc20_28.1 [concrete = constants.%.0e3]
|
||||
// CHECK:STDOUT: %a.ref: %Class.elem = name_ref a, @Class.%.loc14 [concrete = @Class.%.loc14]
|
||||
// CHECK:STDOUT: %a.ref: %Class.elem = name_ref a, @Class.%field_decl.loc14 [concrete = @Class.%field_decl.loc14]
|
||||
// CHECK:STDOUT: %.loc20_37.1: ref %i32 = class_element_access %.loc20_28.2, element0 [concrete = constants.%.d44]
|
||||
// CHECK:STDOUT: %.loc20_37.2: %i32 = acquire_value %.loc20_37.1
|
||||
// CHECK:STDOUT: %impl.elem0.loc20_37: %.737 = impl_witness_access constants.%Copy.impl_witness.b51, element0 [concrete = constants.%Int.as.Copy.impl.Op.4f6]
|
||||
|
||||
+16
-8
@@ -98,28 +98,36 @@ fn MakeOuter() -> Outer {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @Inner {
|
||||
// CHECK:STDOUT: %.loc16: %Inner.elem = field_decl a, element0 [concrete]
|
||||
// CHECK:STDOUT: %.loc17: %Inner.elem = field_decl b, element1 [concrete]
|
||||
// CHECK:STDOUT: %field_decl.loc16: %Inner.elem = field_decl a, element0, %i32.loc16 in [concrete] {
|
||||
// CHECK:STDOUT: %i32.loc16: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %field_decl.loc17: %Inner.elem = field_decl b, element1, %i32.loc17 in [concrete] {
|
||||
// CHECK:STDOUT: %i32.loc17: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness constants.%struct_type.a.b [concrete = constants.%complete_type.7b9]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = constants.%Inner
|
||||
// CHECK:STDOUT: .a = %.loc16
|
||||
// CHECK:STDOUT: .b = %.loc17
|
||||
// CHECK:STDOUT: .a = %field_decl.loc16
|
||||
// CHECK:STDOUT: .b = %field_decl.loc17
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @Outer {
|
||||
// CHECK:STDOUT: %.loc23: %Outer.elem = field_decl c, element0 [concrete]
|
||||
// CHECK:STDOUT: %.loc24: %Outer.elem = field_decl d, element1 [concrete]
|
||||
// CHECK:STDOUT: %field_decl.loc23: %Outer.elem = field_decl c, element0, %Inner.ref.loc23 in [concrete] {
|
||||
// CHECK:STDOUT: %Inner.ref.loc23: type = name_ref Inner, file.%Inner.decl [concrete = constants.%Inner]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %field_decl.loc24: %Outer.elem = field_decl d, element1, %Inner.ref.loc24 in [concrete] {
|
||||
// CHECK:STDOUT: %Inner.ref.loc24: type = name_ref Inner, file.%Inner.decl [concrete = constants.%Inner]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness constants.%struct_type.c.d.899 [concrete = constants.%complete_type.890]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = constants.%Outer
|
||||
// CHECK:STDOUT: .Inner = <poisoned>
|
||||
// CHECK:STDOUT: .c = %.loc23
|
||||
// CHECK:STDOUT: .d = %.loc24
|
||||
// CHECK:STDOUT: .c = %field_decl.loc23
|
||||
// CHECK:STDOUT: .d = %field_decl.loc24
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @MakeInner() -> out %return.param: %Inner;
|
||||
|
||||
+5
-3
@@ -149,14 +149,16 @@ class A {
|
||||
// CHECK:STDOUT: %return.param: ref %B = out_param call_param0
|
||||
// CHECK:STDOUT: %return: ref %B = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.loc23: %B.elem = field_decl n, element0 [concrete]
|
||||
// CHECK:STDOUT: %field_decl: %B.elem = field_decl n, element0, %i32 in [concrete] {
|
||||
// CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness constants.%struct_type.n.9ed [concrete = constants.%complete_type.cdf]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = constants.%B
|
||||
// CHECK:STDOUT: .Make = %B.Make.decl
|
||||
// CHECK:STDOUT: .n = %.loc23
|
||||
// CHECK:STDOUT: .n = %field_decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @A.F() -> out %return.param: %i32 {
|
||||
@@ -167,7 +169,7 @@ class A {
|
||||
// CHECK:STDOUT: %.loc26_19.1: ref %B = temporary_storage
|
||||
// CHECK:STDOUT: %B.Make.call: init %B to %.loc26_19.1 = call %Make.ref()
|
||||
// CHECK:STDOUT: %.loc26_19.2: ref %B = temporary %.loc26_19.1, %B.Make.call
|
||||
// CHECK:STDOUT: %n.ref: %B.elem = name_ref n, @B.%.loc23 [concrete = @B.%.loc23]
|
||||
// CHECK:STDOUT: %n.ref: %B.elem = name_ref n, @B.%field_decl [concrete = @B.%field_decl]
|
||||
// CHECK:STDOUT: %.loc26_20.1: ref %i32 = class_element_access %.loc26_19.2, element0
|
||||
// CHECK:STDOUT: %.loc26_20.2: %i32 = acquire_value %.loc26_20.1
|
||||
// CHECK:STDOUT: %impl.elem0: %.737 = impl_witness_access constants.%Copy.impl_witness.b51, element0 [concrete = constants.%Int.as.Copy.impl.Op.4f6]
|
||||
|
||||
@@ -193,7 +193,9 @@ fn CallViaAlias(p: Point) -> i32 {
|
||||
// CHECK:STDOUT: %return.param: ref %i32 = out_param call_param2
|
||||
// CHECK:STDOUT: %return: ref %i32 = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.loc7: %Point.elem = field_decl x, element0 [concrete]
|
||||
// CHECK:STDOUT: %field_decl: %Point.elem = field_decl x, element0, %i32 in [concrete] {
|
||||
// CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness constants.%struct_type.x [concrete = constants.%complete_type.0c6]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
@@ -202,13 +204,13 @@ fn CallViaAlias(p: Point) -> i32 {
|
||||
// CHECK:STDOUT: .Get = %Point.Get.decl
|
||||
// CHECK:STDOUT: .Point = <poisoned>
|
||||
// CHECK:STDOUT: .First = %Point.First.decl
|
||||
// CHECK:STDOUT: .x = %.loc7
|
||||
// CHECK:STDOUT: .x = %field_decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @Point.Get(%self.param: %Point) -> out %return.param: %i32 {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %self.ref: %Point = name_ref self, %self
|
||||
// CHECK:STDOUT: %x.ref: %Point.elem = name_ref x, @Point.%.loc7 [concrete = @Point.%.loc7]
|
||||
// CHECK:STDOUT: %x.ref: %Point.elem = name_ref x, @Point.%field_decl [concrete = @Point.%field_decl]
|
||||
// CHECK:STDOUT: %.loc4_36.1: ref %i32 = class_element_access %self.ref, element0
|
||||
// CHECK:STDOUT: %.loc4_36.2: %i32 = acquire_value %.loc4_36.1
|
||||
// CHECK:STDOUT: %impl.elem0: %.737 = impl_witness_access constants.%Copy.impl_witness.b51, element0 [concrete = constants.%Int.as.Copy.impl.Op.4f6]
|
||||
@@ -222,7 +224,7 @@ fn CallViaAlias(p: Point) -> i32 {
|
||||
// CHECK:STDOUT: fn @Point.First(%self.param: %Point, %other.param: %Point) -> out %return.param: %i32 {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %self.ref: %Point = name_ref self, %self
|
||||
// CHECK:STDOUT: %x.ref: %Point.elem = name_ref x, @Point.%.loc7 [concrete = @Point.%.loc7]
|
||||
// CHECK:STDOUT: %x.ref: %Point.elem = name_ref x, @Point.%field_decl [concrete = @Point.%field_decl]
|
||||
// CHECK:STDOUT: %.loc5_59.1: ref %i32 = class_element_access %self.ref, element0
|
||||
// CHECK:STDOUT: %.loc5_59.2: %i32 = acquire_value %.loc5_59.1
|
||||
// CHECK:STDOUT: %impl.elem0: %.737 = impl_witness_access constants.%Copy.impl_witness.b51, element0 [concrete = constants.%Int.as.Copy.impl.Op.4f6]
|
||||
|
||||
@@ -33,7 +33,6 @@ fn Class(T: type).F(unused self, unused n: T) {}
|
||||
// CHECK:STDOUT: %Class: type = class_type @Class, @Class(%T) [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.944: <witness> = require_complete_type %T [symbolic]
|
||||
// CHECK:STDOUT: %pattern_type.51d: type = pattern_type %T [symbolic]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.51d = ref_binding_pattern a [symbolic]
|
||||
// CHECK:STDOUT: %Class.elem: type = unbound_element_type %Class, %T [symbolic]
|
||||
// CHECK:STDOUT: %pattern_type.36e: type = pattern_type %Class [symbolic]
|
||||
// CHECK:STDOUT: %self.param_patt: %pattern_type.36e = value_param_pattern [symbolic]
|
||||
@@ -98,8 +97,6 @@ fn Class(T: type).F(unused self, unused n: T) {}
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete: <witness> = require_complete_type %T.loc15_14.1 [symbolic = %require_complete (constants.%require_complete.944)]
|
||||
// CHECK:STDOUT: %pattern_type: type = pattern_type %T.loc15_14.1 [symbolic = %pattern_type (constants.%pattern_type.51d)]
|
||||
// CHECK:STDOUT: %a.patt: @Class.%pattern_type (%pattern_type.51d) = ref_binding_pattern a [symbolic = %a.patt (constants.%a.patt)]
|
||||
// CHECK:STDOUT: %Class: type = class_type @Class, @Class(%T.loc15_14.1) [symbolic = %Class (constants.%Class)]
|
||||
// CHECK:STDOUT: %Class.elem: type = unbound_element_type %Class, %T.loc15_14.1 [symbolic = %Class.elem (constants.%Class.elem)]
|
||||
// CHECK:STDOUT: %Class.F.type: type = fn_type @Class.F, @Class(%T.loc15_14.1) [symbolic = %Class.F.type (constants.%Class.F.type)]
|
||||
@@ -108,7 +105,9 @@ fn Class(T: type).F(unused self, unused n: T) {}
|
||||
// CHECK:STDOUT: %complete_type.loc18_1.2: <witness> = complete_type_witness %struct_type.a [symbolic = %complete_type.loc18_1.2 (constants.%complete_type)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class {
|
||||
// CHECK:STDOUT: %.loc16: @Class.%Class.elem (%Class.elem) = field_decl a, element0 [concrete]
|
||||
// CHECK:STDOUT: %field_decl: @Class.%Class.elem (%Class.elem) = field_decl a, element0, %T.ref in [concrete] {
|
||||
// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc15_14.2 [symbolic = %T.loc15_14.1 (constants.%T)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Class.F.decl: @Class.%Class.F.type (%Class.F.type) = fn_decl @Class.F [symbolic = @Class.%Class.F (constants.%Class.F)] {
|
||||
// CHECK:STDOUT: %self.param_patt.loc20: @Class.F.%pattern_type.loc17_8 (%pattern_type.36e) = value_param_pattern [symbolic = %self.param_patt.loc17 (constants.%self.param_patt)]
|
||||
// CHECK:STDOUT: %self.patt.loc20: @Class.F.%pattern_type.loc17_8 (%pattern_type.36e) = wrapper_binding_pattern self, %self.param_patt.loc20 [symbolic = %self.patt.loc17 (constants.%self.patt)]
|
||||
@@ -131,7 +130,7 @@ fn Class(T: type).F(unused self, unused n: T) {}
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = constants.%Class
|
||||
// CHECK:STDOUT: .T = <poisoned>
|
||||
// CHECK:STDOUT: .a = %.loc16
|
||||
// CHECK:STDOUT: .a = %field_decl
|
||||
// CHECK:STDOUT: .F = %Class.F.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
@@ -162,8 +161,6 @@ fn Class(T: type).F(unused self, unused n: T) {}
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete => constants.%require_complete.944
|
||||
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.51d
|
||||
// CHECK:STDOUT: %a.patt => constants.%a.patt
|
||||
// CHECK:STDOUT: %Class => constants.%Class
|
||||
// CHECK:STDOUT: %Class.elem => constants.%Class.elem
|
||||
// CHECK:STDOUT: %Class.F.type => constants.%Class.F.type
|
||||
|
||||
+5
-3
@@ -358,7 +358,9 @@ fn CallGOnInitializingExpr() -> i32 {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %F.ref: %Class.F.type = name_ref F, %Class.F.decl [concrete = constants.%Class.F]
|
||||
// CHECK:STDOUT: %A: %Class.F.type = alias_binding A, %F.ref [concrete = constants.%Class.F]
|
||||
// CHECK:STDOUT: %.loc21: %Class.elem = field_decl k, element0 [concrete]
|
||||
// CHECK:STDOUT: %field_decl: %Class.elem = field_decl k, element0, %i32 in [concrete] {
|
||||
// CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness constants.%struct_type.k.e7c [concrete = constants.%complete_type.d82]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
@@ -367,13 +369,13 @@ fn CallGOnInitializingExpr() -> i32 {
|
||||
// CHECK:STDOUT: .F = %Class.F.decl
|
||||
// CHECK:STDOUT: .G = %Class.G.decl
|
||||
// CHECK:STDOUT: .A = %A
|
||||
// CHECK:STDOUT: .k = %.loc21
|
||||
// CHECK:STDOUT: .k = %field_decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @Class.F(%self.param.loc24: %Class) -> out %return.param.loc24: %i32 {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %self.ref: %Class = name_ref self, %self.loc24
|
||||
// CHECK:STDOUT: %k.ref: %Class.elem = name_ref k, @Class.%.loc21 [concrete = @Class.%.loc21]
|
||||
// CHECK:STDOUT: %k.ref: %Class.elem = name_ref k, @Class.%field_decl [concrete = @Class.%field_decl]
|
||||
// CHECK:STDOUT: %.loc25_14.1: ref %i32 = class_element_access %self.ref, element0
|
||||
// CHECK:STDOUT: %.loc25_14.2: %i32 = acquire_value %.loc25_14.1
|
||||
// CHECK:STDOUT: %impl.elem0: %.737 = impl_witness_access constants.%Copy.impl_witness.b51, element0 [concrete = constants.%Int.as.Copy.impl.Op.4f6]
|
||||
|
||||
+40
-22
@@ -176,9 +176,18 @@ fn F(a: Outer*) {
|
||||
// CHECK:STDOUT: %Outer.F.decl: %Outer.F.type = fn_decl @Outer.F [concrete = constants.%Outer.F] {} {}
|
||||
// CHECK:STDOUT: %Inner.decl: type = class_decl @Inner [concrete = constants.%Inner] {} {}
|
||||
// CHECK:STDOUT: %Outer.H.decl: %Outer.H.type = fn_decl @Outer.H [concrete = constants.%Outer.H] {} {}
|
||||
// CHECK:STDOUT: %.loc40: %Outer.elem.3ef = field_decl po, element0 [concrete]
|
||||
// CHECK:STDOUT: %.loc41: %Outer.elem.3ef = field_decl qo, element1 [concrete]
|
||||
// CHECK:STDOUT: %.loc42: %Outer.elem.fe3 = field_decl pi, element2 [concrete]
|
||||
// CHECK:STDOUT: %field_decl.loc40: %Outer.elem.3ef = field_decl po, element0, %ptr.loc40 in [concrete] {
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%Outer [concrete = constants.%Outer]
|
||||
// CHECK:STDOUT: %ptr.loc40: type = ptr_type %Self.ref [concrete = constants.%ptr.286]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %field_decl.loc41: %Outer.elem.3ef = field_decl qo, element1, %ptr.loc41 in [concrete] {
|
||||
// CHECK:STDOUT: %Outer.ref: type = name_ref Outer, file.%Outer.decl [concrete = constants.%Outer]
|
||||
// CHECK:STDOUT: %ptr.loc41: type = ptr_type %Outer.ref [concrete = constants.%ptr.286]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %field_decl.loc42: %Outer.elem.fe3 = field_decl pi, element2, %ptr.loc42 in [concrete] {
|
||||
// CHECK:STDOUT: %Inner.ref: type = name_ref Inner, %Inner.decl [concrete = constants.%Inner]
|
||||
// CHECK:STDOUT: %ptr.loc42: type = ptr_type %Inner.ref [concrete = constants.%ptr.001]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness constants.%struct_type.po.qo.pi [concrete = constants.%complete_type.a2f]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
@@ -188,26 +197,35 @@ fn F(a: Outer*) {
|
||||
// CHECK:STDOUT: .Inner = %Inner.decl
|
||||
// CHECK:STDOUT: .Outer = <poisoned>
|
||||
// CHECK:STDOUT: .H = %Outer.H.decl
|
||||
// CHECK:STDOUT: .po = %.loc40
|
||||
// CHECK:STDOUT: .qo = %.loc41
|
||||
// CHECK:STDOUT: .pi = %.loc42
|
||||
// CHECK:STDOUT: .po = %field_decl.loc40
|
||||
// CHECK:STDOUT: .qo = %field_decl.loc41
|
||||
// CHECK:STDOUT: .pi = %field_decl.loc42
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @Inner {
|
||||
// CHECK:STDOUT: %.loc23: %Inner.elem.df9 = field_decl pi, element0 [concrete]
|
||||
// CHECK:STDOUT: %.loc24: %Inner.elem.2a2 = field_decl po, element1 [concrete]
|
||||
// CHECK:STDOUT: %.loc25: %Inner.elem.df9 = field_decl qi, element2 [concrete]
|
||||
// CHECK:STDOUT: %field_decl.loc23: %Inner.elem.df9 = field_decl pi, element0, %ptr.loc23 in [concrete] {
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%Inner [concrete = constants.%Inner]
|
||||
// CHECK:STDOUT: %ptr.loc23: type = ptr_type %Self.ref [concrete = constants.%ptr.001]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %field_decl.loc24: %Inner.elem.2a2 = field_decl po, element1, %ptr.loc24 in [concrete] {
|
||||
// CHECK:STDOUT: %Outer.ref: type = name_ref Outer, file.%Outer.decl [concrete = constants.%Outer]
|
||||
// CHECK:STDOUT: %ptr.loc24: type = ptr_type %Outer.ref [concrete = constants.%ptr.286]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %field_decl.loc25: %Inner.elem.df9 = field_decl qi, element2, %ptr.loc25 in [concrete] {
|
||||
// CHECK:STDOUT: %Inner.ref: type = name_ref Inner, @Outer.%Inner.decl [concrete = constants.%Inner]
|
||||
// CHECK:STDOUT: %ptr.loc25: type = ptr_type %Inner.ref [concrete = constants.%ptr.001]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Inner.G.decl: %Inner.G.type = fn_decl @Inner.G [concrete = constants.%Inner.G] {} {}
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness constants.%struct_type.pi.po.qi [concrete = constants.%complete_type.cab]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = constants.%Inner
|
||||
// CHECK:STDOUT: .pi = %.loc23
|
||||
// CHECK:STDOUT: .pi = %field_decl.loc23
|
||||
// CHECK:STDOUT: .Outer = <poisoned>
|
||||
// CHECK:STDOUT: .po = %.loc24
|
||||
// CHECK:STDOUT: .po = %field_decl.loc24
|
||||
// CHECK:STDOUT: .Inner = <poisoned>
|
||||
// CHECK:STDOUT: .qi = %.loc25
|
||||
// CHECK:STDOUT: .qi = %field_decl.loc25
|
||||
// CHECK:STDOUT: .G = %Inner.G.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -356,7 +374,7 @@ fn F(a: Outer*) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %a.ref.loc46: %ptr.286 = name_ref a, %a
|
||||
// CHECK:STDOUT: %.loc46_26: ref %Outer = deref %a.ref.loc46
|
||||
// CHECK:STDOUT: %pi.ref.loc46: %Outer.elem.fe3 = name_ref pi, @Outer.%.loc42 [concrete = @Outer.%.loc42]
|
||||
// CHECK:STDOUT: %pi.ref.loc46: %Outer.elem.fe3 = name_ref pi, @Outer.%field_decl.loc42 [concrete = @Outer.%field_decl.loc42]
|
||||
// CHECK:STDOUT: %.loc46_29.1: ref %ptr.001 = class_element_access %.loc46_26, element2
|
||||
// CHECK:STDOUT: %.loc46_29.2: %ptr.001 = acquire_value %.loc46_29.1
|
||||
// CHECK:STDOUT: %.loc46_21: type = splice_block %ptr.loc46 [concrete = constants.%ptr.001] {
|
||||
@@ -370,7 +388,7 @@ fn F(a: Outer*) {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %a.ref.loc48_3: %ptr.286 = name_ref a, %a
|
||||
// CHECK:STDOUT: %.loc48_4.1: ref %Outer = deref %a.ref.loc48_3
|
||||
// CHECK:STDOUT: %po.ref.loc48: %Outer.elem.3ef = name_ref po, @Outer.%.loc40 [concrete = @Outer.%.loc40]
|
||||
// CHECK:STDOUT: %po.ref.loc48: %Outer.elem.3ef = name_ref po, @Outer.%field_decl.loc40 [concrete = @Outer.%field_decl.loc40]
|
||||
// CHECK:STDOUT: %.loc48_4.2: ref %ptr.286 = class_element_access %.loc48_4.1, element0
|
||||
// CHECK:STDOUT: %a.ref.loc48_11: %ptr.286 = name_ref a, %a
|
||||
// CHECK:STDOUT: %impl.elem0.loc48: %.c11 = impl_witness_access constants.%Copy.impl_witness.d13, element0 [concrete = constants.%ptr.as.Copy.impl.Op.629]
|
||||
@@ -381,7 +399,7 @@ fn F(a: Outer*) {
|
||||
// CHECK:STDOUT: assign %.loc48_4.2, %ptr.as.Copy.impl.Op.call.loc48
|
||||
// CHECK:STDOUT: %a.ref.loc49_3: %ptr.286 = name_ref a, %a
|
||||
// CHECK:STDOUT: %.loc49_4.1: ref %Outer = deref %a.ref.loc49_3
|
||||
// CHECK:STDOUT: %qo.ref: %Outer.elem.3ef = name_ref qo, @Outer.%.loc41 [concrete = @Outer.%.loc41]
|
||||
// CHECK:STDOUT: %qo.ref: %Outer.elem.3ef = name_ref qo, @Outer.%field_decl.loc41 [concrete = @Outer.%field_decl.loc41]
|
||||
// CHECK:STDOUT: %.loc49_4.2: ref %ptr.286 = class_element_access %.loc49_4.1, element1
|
||||
// CHECK:STDOUT: %a.ref.loc49_11: %ptr.286 = name_ref a, %a
|
||||
// CHECK:STDOUT: %impl.elem0.loc49: %.c11 = impl_witness_access constants.%Copy.impl_witness.d13, element0 [concrete = constants.%ptr.as.Copy.impl.Op.629]
|
||||
@@ -392,11 +410,11 @@ fn F(a: Outer*) {
|
||||
// CHECK:STDOUT: assign %.loc49_4.2, %ptr.as.Copy.impl.Op.call.loc49
|
||||
// CHECK:STDOUT: %a.ref.loc50_3: %ptr.286 = name_ref a, %a
|
||||
// CHECK:STDOUT: %.loc50_4.1: ref %Outer = deref %a.ref.loc50_3
|
||||
// CHECK:STDOUT: %pi.ref.loc50_4: %Outer.elem.fe3 = name_ref pi, @Outer.%.loc42 [concrete = @Outer.%.loc42]
|
||||
// CHECK:STDOUT: %pi.ref.loc50_4: %Outer.elem.fe3 = name_ref pi, @Outer.%field_decl.loc42 [concrete = @Outer.%field_decl.loc42]
|
||||
// CHECK:STDOUT: %.loc50_4.2: ref %ptr.001 = class_element_access %.loc50_4.1, element2
|
||||
// CHECK:STDOUT: %a.ref.loc50_11: %ptr.286 = name_ref a, %a
|
||||
// CHECK:STDOUT: %.loc50_12.1: ref %Outer = deref %a.ref.loc50_11
|
||||
// CHECK:STDOUT: %pi.ref.loc50_12: %Outer.elem.fe3 = name_ref pi, @Outer.%.loc42 [concrete = @Outer.%.loc42]
|
||||
// CHECK:STDOUT: %pi.ref.loc50_12: %Outer.elem.fe3 = name_ref pi, @Outer.%field_decl.loc42 [concrete = @Outer.%field_decl.loc42]
|
||||
// CHECK:STDOUT: %.loc50_12.2: ref %ptr.001 = class_element_access %.loc50_12.1, element2
|
||||
// CHECK:STDOUT: %.loc50_12.3: %ptr.001 = acquire_value %.loc50_12.2
|
||||
// CHECK:STDOUT: %impl.elem0.loc50: %.6b7 = impl_witness_access constants.%Copy.impl_witness.f7d, element0 [concrete = constants.%ptr.as.Copy.impl.Op.b47]
|
||||
@@ -407,7 +425,7 @@ fn F(a: Outer*) {
|
||||
// CHECK:STDOUT: assign %.loc50_4.2, %ptr.as.Copy.impl.Op.call.loc50
|
||||
// CHECK:STDOUT: %b.ref.loc51: %ptr.001 = name_ref b, %b
|
||||
// CHECK:STDOUT: %.loc51_4.1: ref %Inner = deref %b.ref.loc51
|
||||
// CHECK:STDOUT: %po.ref.loc51: %Inner.elem.2a2 = name_ref po, @Inner.%.loc24 [concrete = @Inner.%.loc24]
|
||||
// CHECK:STDOUT: %po.ref.loc51: %Inner.elem.2a2 = name_ref po, @Inner.%field_decl.loc24 [concrete = @Inner.%field_decl.loc24]
|
||||
// CHECK:STDOUT: %.loc51_4.2: ref %ptr.286 = class_element_access %.loc51_4.1, element1
|
||||
// CHECK:STDOUT: %a.ref.loc51: %ptr.286 = name_ref a, %a
|
||||
// CHECK:STDOUT: %impl.elem0.loc51: %.c11 = impl_witness_access constants.%Copy.impl_witness.d13, element0 [concrete = constants.%ptr.as.Copy.impl.Op.629]
|
||||
@@ -418,11 +436,11 @@ fn F(a: Outer*) {
|
||||
// CHECK:STDOUT: assign %.loc51_4.2, %ptr.as.Copy.impl.Op.call.loc51
|
||||
// CHECK:STDOUT: %b.ref.loc52: %ptr.001 = name_ref b, %b
|
||||
// CHECK:STDOUT: %.loc52_4.1: ref %Inner = deref %b.ref.loc52
|
||||
// CHECK:STDOUT: %pi.ref.loc52_4: %Inner.elem.df9 = name_ref pi, @Inner.%.loc23 [concrete = @Inner.%.loc23]
|
||||
// CHECK:STDOUT: %pi.ref.loc52_4: %Inner.elem.df9 = name_ref pi, @Inner.%field_decl.loc23 [concrete = @Inner.%field_decl.loc23]
|
||||
// CHECK:STDOUT: %.loc52_4.2: ref %ptr.001 = class_element_access %.loc52_4.1, element0
|
||||
// CHECK:STDOUT: %a.ref.loc52: %ptr.286 = name_ref a, %a
|
||||
// CHECK:STDOUT: %.loc52_12.1: ref %Outer = deref %a.ref.loc52
|
||||
// CHECK:STDOUT: %pi.ref.loc52_12: %Outer.elem.fe3 = name_ref pi, @Outer.%.loc42 [concrete = @Outer.%.loc42]
|
||||
// CHECK:STDOUT: %pi.ref.loc52_12: %Outer.elem.fe3 = name_ref pi, @Outer.%field_decl.loc42 [concrete = @Outer.%field_decl.loc42]
|
||||
// CHECK:STDOUT: %.loc52_12.2: ref %ptr.001 = class_element_access %.loc52_12.1, element2
|
||||
// CHECK:STDOUT: %.loc52_12.3: %ptr.001 = acquire_value %.loc52_12.2
|
||||
// CHECK:STDOUT: %impl.elem0.loc52: %.6b7 = impl_witness_access constants.%Copy.impl_witness.f7d, element0 [concrete = constants.%ptr.as.Copy.impl.Op.b47]
|
||||
@@ -433,11 +451,11 @@ fn F(a: Outer*) {
|
||||
// CHECK:STDOUT: assign %.loc52_4.2, %ptr.as.Copy.impl.Op.call.loc52
|
||||
// CHECK:STDOUT: %b.ref.loc53: %ptr.001 = name_ref b, %b
|
||||
// CHECK:STDOUT: %.loc53_4.1: ref %Inner = deref %b.ref.loc53
|
||||
// CHECK:STDOUT: %qi.ref: %Inner.elem.df9 = name_ref qi, @Inner.%.loc25 [concrete = @Inner.%.loc25]
|
||||
// CHECK:STDOUT: %qi.ref: %Inner.elem.df9 = name_ref qi, @Inner.%field_decl.loc25 [concrete = @Inner.%field_decl.loc25]
|
||||
// CHECK:STDOUT: %.loc53_4.2: ref %ptr.001 = class_element_access %.loc53_4.1, element2
|
||||
// CHECK:STDOUT: %a.ref.loc53: %ptr.286 = name_ref a, %a
|
||||
// CHECK:STDOUT: %.loc53_12.1: ref %Outer = deref %a.ref.loc53
|
||||
// CHECK:STDOUT: %pi.ref.loc53: %Outer.elem.fe3 = name_ref pi, @Outer.%.loc42 [concrete = @Outer.%.loc42]
|
||||
// CHECK:STDOUT: %pi.ref.loc53: %Outer.elem.fe3 = name_ref pi, @Outer.%field_decl.loc42 [concrete = @Outer.%field_decl.loc42]
|
||||
// CHECK:STDOUT: %.loc53_12.2: ref %ptr.001 = class_element_access %.loc53_12.1, element2
|
||||
// CHECK:STDOUT: %.loc53_12.3: %ptr.001 = acquire_value %.loc53_12.2
|
||||
// CHECK:STDOUT: %impl.elem0.loc53: %.6b7 = impl_witness_access constants.%Copy.impl_witness.f7d, element0 [concrete = constants.%ptr.as.Copy.impl.Op.b47]
|
||||
|
||||
+5
-3
@@ -149,19 +149,21 @@ fn G(o: Outer) {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @Inner {
|
||||
// CHECK:STDOUT: %.loc17: %Inner.elem = field_decl n, element0 [concrete]
|
||||
// CHECK:STDOUT: %field_decl: %Inner.elem = field_decl n, element0, %i32 in [concrete] {
|
||||
// CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness constants.%struct_type.n [concrete = constants.%complete_type.cdf]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = constants.%Inner
|
||||
// CHECK:STDOUT: .n = %.loc17
|
||||
// CHECK:STDOUT: .n = %field_decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @F(%oi.param: %Inner) -> out %return.param: %i32 {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %oi.ref: %Inner = name_ref oi, %oi
|
||||
// CHECK:STDOUT: %n.ref: %Inner.elem = name_ref n, @Inner.%.loc17 [concrete = @Inner.%.loc17]
|
||||
// CHECK:STDOUT: %n.ref: %Inner.elem = name_ref n, @Inner.%field_decl [concrete = @Inner.%field_decl]
|
||||
// CHECK:STDOUT: %.loc22_12.1: ref %i32 = class_element_access %oi.ref, element0
|
||||
// CHECK:STDOUT: %.loc22_12.2: %i32 = acquire_value %.loc22_12.1
|
||||
// CHECK:STDOUT: %impl.elem0: %.737 = impl_witness_access constants.%Copy.impl_witness.b51, element0 [concrete = constants.%Int.as.Copy.impl.Op.4f6]
|
||||
|
||||
+28
-20
@@ -86,8 +86,8 @@ class A {
|
||||
// CHECK:STDOUT: %struct_type.a.a92: type = struct_type {.a: %i32} [concrete]
|
||||
// CHECK:STDOUT: %complete_type.388: <witness> = complete_type_witness %struct_type.a.a92 [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.9ef: type = pattern_type %A [concrete]
|
||||
// CHECK:STDOUT: %a.patt.17c: %pattern_type.9ef = ref_binding_pattern a [concrete]
|
||||
// CHECK:STDOUT: %a.var_patt: %pattern_type.9ef = var_pattern %a.patt.17c [concrete]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.9ef = ref_binding_pattern a [concrete]
|
||||
// CHECK:STDOUT: %a.var_patt: %pattern_type.9ef = var_pattern %a.patt [concrete]
|
||||
// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete]
|
||||
// CHECK:STDOUT: %struct_type.a.a6c: type = struct_type {.a: Core.IntLiteral} [concrete]
|
||||
// CHECK:STDOUT: %struct.48c: %struct_type.a.a6c = struct_value (%int_1.5b8) [concrete]
|
||||
@@ -109,8 +109,8 @@ class A {
|
||||
// CHECK:STDOUT: %int_1.0c6: %i32 = int_value 1 [concrete]
|
||||
// CHECK:STDOUT: %A.val: %A = struct_value (%int_1.0c6) [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.e78: type = pattern_type %B [concrete]
|
||||
// CHECK:STDOUT: %b.patt.245: %pattern_type.e78 = ref_binding_pattern b [concrete]
|
||||
// CHECK:STDOUT: %b.var_patt: %pattern_type.e78 = var_pattern %b.patt.245 [concrete]
|
||||
// CHECK:STDOUT: %b.patt: %pattern_type.e78 = ref_binding_pattern b [concrete]
|
||||
// CHECK:STDOUT: %b.var_patt: %pattern_type.e78 = var_pattern %b.patt [concrete]
|
||||
// CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [concrete]
|
||||
// CHECK:STDOUT: %struct_type.b.a15: type = struct_type {.b: Core.IntLiteral} [concrete]
|
||||
// CHECK:STDOUT: %struct.26f: %struct_type.b.a15 = struct_value (%int_2.ecc) [concrete]
|
||||
@@ -119,8 +119,8 @@ class A {
|
||||
// CHECK:STDOUT: %int_2.295: %i32 = int_value 2 [concrete]
|
||||
// CHECK:STDOUT: %B.val: %B = struct_value (%int_2.295) [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.ca8: type = pattern_type %C [concrete]
|
||||
// CHECK:STDOUT: %c.patt.a75: %pattern_type.ca8 = ref_binding_pattern c [concrete]
|
||||
// CHECK:STDOUT: %c.var_patt: %pattern_type.ca8 = var_pattern %c.patt.a75 [concrete]
|
||||
// CHECK:STDOUT: %c.patt: %pattern_type.ca8 = ref_binding_pattern c [concrete]
|
||||
// CHECK:STDOUT: %c.var_patt: %pattern_type.ca8 = var_pattern %c.patt [concrete]
|
||||
// CHECK:STDOUT: %int_3.1ba: Core.IntLiteral = int_value 3 [concrete]
|
||||
// CHECK:STDOUT: %struct_type.c.5b8: type = struct_type {.c: Core.IntLiteral} [concrete]
|
||||
// CHECK:STDOUT: %struct.d98: %struct_type.c.5b8 = struct_value (%int_3.1ba) [concrete]
|
||||
@@ -129,8 +129,8 @@ class A {
|
||||
// CHECK:STDOUT: %int_3.410: %i32 = int_value 3 [concrete]
|
||||
// CHECK:STDOUT: %C.val: %C = struct_value (%int_3.410) [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.a0b: type = pattern_type %D [concrete]
|
||||
// CHECK:STDOUT: %d.patt.60f: %pattern_type.a0b = ref_binding_pattern d [concrete]
|
||||
// CHECK:STDOUT: %d.var_patt: %pattern_type.a0b = var_pattern %d.patt.60f [concrete]
|
||||
// CHECK:STDOUT: %d.patt: %pattern_type.a0b = ref_binding_pattern d [concrete]
|
||||
// CHECK:STDOUT: %d.var_patt: %pattern_type.a0b = var_pattern %d.patt [concrete]
|
||||
// CHECK:STDOUT: %int_4.0c1: Core.IntLiteral = int_value 4 [concrete]
|
||||
// CHECK:STDOUT: %struct_type.d.3ea: type = struct_type {.d: Core.IntLiteral} [concrete]
|
||||
// CHECK:STDOUT: %struct.5a9: %struct_type.d.3ea = struct_value (%int_4.0c1) [concrete]
|
||||
@@ -177,7 +177,9 @@ class A {
|
||||
// CHECK:STDOUT: %B.decl: type = class_decl @B [concrete = constants.%B] {} {}
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {}
|
||||
// CHECK:STDOUT: %A.AF.decl: %A.AF.type = fn_decl @A.AF [concrete = constants.%A.AF] {} {}
|
||||
// CHECK:STDOUT: %.loc50: %A.elem = field_decl a, element0 [concrete]
|
||||
// CHECK:STDOUT: %field_decl: %A.elem = field_decl a, element0, %i32 in [concrete] {
|
||||
// CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness constants.%struct_type.a.a92 [concrete = constants.%complete_type.388]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
@@ -185,14 +187,16 @@ class A {
|
||||
// CHECK:STDOUT: .Self = constants.%A
|
||||
// CHECK:STDOUT: .B = %B.decl
|
||||
// CHECK:STDOUT: .AF = %A.AF.decl
|
||||
// CHECK:STDOUT: .a = %.loc50
|
||||
// CHECK:STDOUT: .a = %field_decl
|
||||
// CHECK:STDOUT: .A = <poisoned>
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @B {
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {}
|
||||
// CHECK:STDOUT: %B.BF.decl: %B.BF.type = fn_decl @B.BF [concrete = constants.%B.BF] {} {}
|
||||
// CHECK:STDOUT: %.loc20: %B.elem = field_decl b, element0 [concrete]
|
||||
// CHECK:STDOUT: %field_decl: %B.elem = field_decl b, element0, %i32 in [concrete] {
|
||||
// CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness constants.%struct_type.b.0bf [concrete = constants.%complete_type.330]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
@@ -200,7 +204,7 @@ class A {
|
||||
// CHECK:STDOUT: .Self = constants.%B
|
||||
// CHECK:STDOUT: .C = %C.decl
|
||||
// CHECK:STDOUT: .BF = %B.BF.decl
|
||||
// CHECK:STDOUT: .b = %.loc20
|
||||
// CHECK:STDOUT: .b = %field_decl
|
||||
// CHECK:STDOUT: .A = <poisoned>
|
||||
// CHECK:STDOUT: .B = <poisoned>
|
||||
// CHECK:STDOUT: .AF = <poisoned>
|
||||
@@ -210,7 +214,9 @@ class A {
|
||||
// CHECK:STDOUT: %D.decl: type = class_decl @D [concrete = constants.%D] {} {}
|
||||
// CHECK:STDOUT: %D.DF.decl: %D.DF.type = fn_decl @D.DF [concrete = constants.%D.DF] {} {}
|
||||
// CHECK:STDOUT: %C.CF.decl: %C.CF.type = fn_decl @C.CF [concrete = constants.%C.CF] {} {}
|
||||
// CHECK:STDOUT: %.loc46: %C.elem = field_decl c, element0 [concrete]
|
||||
// CHECK:STDOUT: %field_decl: %C.elem = field_decl c, element0, %i32 in [concrete] {
|
||||
// CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness constants.%struct_type.c.73d [concrete = constants.%complete_type.8f8]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
@@ -218,7 +224,7 @@ class A {
|
||||
// CHECK:STDOUT: .Self = constants.%C
|
||||
// CHECK:STDOUT: .D = %D.decl
|
||||
// CHECK:STDOUT: .CF = %C.CF.decl
|
||||
// CHECK:STDOUT: .c = %.loc46
|
||||
// CHECK:STDOUT: .c = %field_decl
|
||||
// CHECK:STDOUT: .A = <poisoned>
|
||||
// CHECK:STDOUT: .B = <poisoned>
|
||||
// CHECK:STDOUT: .C = <poisoned>
|
||||
@@ -229,7 +235,9 @@ class A {
|
||||
// CHECK:STDOUT: class @D {
|
||||
// CHECK:STDOUT: %D.F.decl: %D.F.type = fn_decl @D.F [concrete = constants.%D.F] {} {}
|
||||
// CHECK:STDOUT: %D.DF.decl: %D.DF.type = fn_decl @D.DF [concrete = constants.%D.DF] {} {}
|
||||
// CHECK:STDOUT: %.loc28: %D.elem = field_decl d, element0 [concrete]
|
||||
// CHECK:STDOUT: %field_decl: %D.elem = field_decl d, element0, %i32 in [concrete] {
|
||||
// CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness constants.%struct_type.d.bde [concrete = constants.%complete_type.5d0]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
@@ -237,7 +245,7 @@ class A {
|
||||
// CHECK:STDOUT: .Self = constants.%D
|
||||
// CHECK:STDOUT: .F = %D.F.decl
|
||||
// CHECK:STDOUT: .DF = %D.DF.decl
|
||||
// CHECK:STDOUT: .d = %.loc28
|
||||
// CHECK:STDOUT: .d = %field_decl
|
||||
// CHECK:STDOUT: .A = <poisoned>
|
||||
// CHECK:STDOUT: .B = <poisoned>
|
||||
// CHECK:STDOUT: .C = <poisoned>
|
||||
@@ -270,7 +278,7 @@ class A {
|
||||
// CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [concrete = constants.%A]
|
||||
// CHECK:STDOUT: %a: ref %A = wrapper_binding a, %a.var
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.9ef = ref_binding_pattern a [concrete = constants.%a.patt.17c]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.9ef = ref_binding_pattern a [concrete = constants.%a.patt]
|
||||
// CHECK:STDOUT: %a.var_patt: %pattern_type.9ef = var_pattern %a.patt [concrete = constants.%a.var_patt]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %b.var: ref %B = var_storage %b.var_patt
|
||||
@@ -290,7 +298,7 @@ class A {
|
||||
// CHECK:STDOUT: %B.ref: type = name_ref B, @A.%B.decl [concrete = constants.%B]
|
||||
// CHECK:STDOUT: %b: ref %B = wrapper_binding b, %b.var
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %b.patt: %pattern_type.e78 = ref_binding_pattern b [concrete = constants.%b.patt.245]
|
||||
// CHECK:STDOUT: %b.patt: %pattern_type.e78 = ref_binding_pattern b [concrete = constants.%b.patt]
|
||||
// CHECK:STDOUT: %b.var_patt: %pattern_type.e78 = var_pattern %b.patt [concrete = constants.%b.var_patt]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %c.var: ref %C = var_storage %c.var_patt
|
||||
@@ -310,7 +318,7 @@ class A {
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, @B.%C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %c: ref %C = wrapper_binding c, %c.var
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %c.patt: %pattern_type.ca8 = ref_binding_pattern c [concrete = constants.%c.patt.a75]
|
||||
// CHECK:STDOUT: %c.patt: %pattern_type.ca8 = ref_binding_pattern c [concrete = constants.%c.patt]
|
||||
// CHECK:STDOUT: %c.var_patt: %pattern_type.ca8 = var_pattern %c.patt [concrete = constants.%c.var_patt]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %d.var: ref %D = var_storage %d.var_patt
|
||||
@@ -330,7 +338,7 @@ class A {
|
||||
// CHECK:STDOUT: %D.ref: type = name_ref D, @C.%D.decl [concrete = constants.%D]
|
||||
// CHECK:STDOUT: %d: ref %D = wrapper_binding d, %d.var
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %d.patt: %pattern_type.a0b = ref_binding_pattern d [concrete = constants.%d.patt.60f]
|
||||
// CHECK:STDOUT: %d.patt: %pattern_type.a0b = ref_binding_pattern d [concrete = constants.%d.patt]
|
||||
// CHECK:STDOUT: %d.var_patt: %pattern_type.a0b = var_pattern %d.patt [concrete = constants.%d.var_patt]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %AF.ref: %A.AF.type = name_ref AF, @A.%A.AF.decl [concrete = constants.%A.AF]
|
||||
|
||||
+6
-4
@@ -163,7 +163,9 @@ fn Class.G(self, r#self: i32) -> (i32, i32) {
|
||||
// CHECK:STDOUT: %return.param.loc17: ref %tuple.type.e55 = out_param call_param2
|
||||
// CHECK:STDOUT: %return.loc17: ref %tuple.type.e55 = return_slot %return.param.loc17
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.loc18: %Class.elem = field_decl n, element0 [concrete]
|
||||
// CHECK:STDOUT: %field_decl: %Class.elem = field_decl n, element0, %i32 in [concrete] {
|
||||
// CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness constants.%struct_type.n [concrete = constants.%complete_type.cdf]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
@@ -171,13 +173,13 @@ fn Class.G(self, r#self: i32) -> (i32, i32) {
|
||||
// CHECK:STDOUT: .Self = constants.%Class
|
||||
// CHECK:STDOUT: .F = %Class.F.decl
|
||||
// CHECK:STDOUT: .G = %Class.G.decl
|
||||
// CHECK:STDOUT: .n = %.loc18
|
||||
// CHECK:STDOUT: .n = %field_decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @Class.F(%self.param.loc21_16: ref %Class, %self.param.loc21_28: %i32) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %self.ref.loc22_3: ref %Class = name_ref self, %self.loc21_16
|
||||
// CHECK:STDOUT: %n.ref: %Class.elem = name_ref n, @Class.%.loc18 [concrete = @Class.%.loc18]
|
||||
// CHECK:STDOUT: %n.ref: %Class.elem = name_ref n, @Class.%field_decl [concrete = @Class.%field_decl]
|
||||
// CHECK:STDOUT: %.loc22: ref %i32 = class_element_access %self.ref.loc22_3, element0
|
||||
// CHECK:STDOUT: %self.ref.loc22_12: %i32 = name_ref r#self, %self.loc21_28
|
||||
// CHECK:STDOUT: %impl.elem0: %.737 = impl_witness_access constants.%Copy.impl_witness.b51, element0 [concrete = constants.%Int.as.Copy.impl.Op.4f6]
|
||||
@@ -192,7 +194,7 @@ fn Class.G(self, r#self: i32) -> (i32, i32) {
|
||||
// CHECK:STDOUT: fn @Class.G(%self.param.loc25_12: %Class, %self.param.loc25_24: %i32) -> out %return.param.loc25: %tuple.type.e55 {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %self.ref.loc26_11: %Class = name_ref self, %self.loc25_12
|
||||
// CHECK:STDOUT: %n.ref: %Class.elem = name_ref n, @Class.%.loc18 [concrete = @Class.%.loc18]
|
||||
// CHECK:STDOUT: %n.ref: %Class.elem = name_ref n, @Class.%field_decl [concrete = @Class.%field_decl]
|
||||
// CHECK:STDOUT: %.loc26_15.1: ref %i32 = class_element_access %self.ref.loc26_11, element0
|
||||
// CHECK:STDOUT: %.loc26_15.2: %i32 = acquire_value %.loc26_15.1
|
||||
// CHECK:STDOUT: %self.ref.loc26_19: %i32 = name_ref r#self, %self.loc25_24
|
||||
|
||||
+6
-4
@@ -209,7 +209,9 @@ class Class {
|
||||
// CHECK:STDOUT: %return.param.loc7: ref %i32 = out_param call_param1
|
||||
// CHECK:STDOUT: %return.loc7: ref %i32 = return_slot %return.param.loc7
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.loc9: %Class.elem = field_decl n, element0 [concrete]
|
||||
// CHECK:STDOUT: %field_decl: %Class.elem = field_decl n, element0, %i32 in [concrete] {
|
||||
// CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness constants.%struct_type.n [concrete = constants.%complete_type.cdf]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
@@ -217,13 +219,13 @@ class Class {
|
||||
// CHECK:STDOUT: .Self = constants.%Class
|
||||
// CHECK:STDOUT: .F = %Class.F.decl
|
||||
// CHECK:STDOUT: .G = %Class.G.decl
|
||||
// CHECK:STDOUT: .n = %.loc9
|
||||
// CHECK:STDOUT: .n = %field_decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @Class.F(%self.param.loc13: %Class) -> out %return.param.loc13: %i32 {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %self.ref: %Class = name_ref self, %self.loc13
|
||||
// CHECK:STDOUT: %n.ref: %Class.elem = name_ref n, @Class.%.loc9 [concrete = @Class.%.loc9]
|
||||
// CHECK:STDOUT: %n.ref: %Class.elem = name_ref n, @Class.%field_decl [concrete = @Class.%field_decl]
|
||||
// CHECK:STDOUT: %.loc14_14.1: ref %i32 = class_element_access %self.ref, element0
|
||||
// CHECK:STDOUT: %.loc14_14.2: %i32 = acquire_value %.loc14_14.1
|
||||
// CHECK:STDOUT: %impl.elem0: %.737 = impl_witness_access constants.%Copy.impl_witness.b51, element0 [concrete = constants.%Int.as.Copy.impl.Op.4f6]
|
||||
@@ -237,7 +239,7 @@ class Class {
|
||||
// CHECK:STDOUT: fn @Class.G(%self.param.loc17: ref %Class) -> out %return.param.loc17: %i32 {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %self.ref: ref %Class = name_ref self, %self.loc17
|
||||
// CHECK:STDOUT: %n.ref: %Class.elem = name_ref n, @Class.%.loc9 [concrete = @Class.%.loc9]
|
||||
// CHECK:STDOUT: %n.ref: %Class.elem = name_ref n, @Class.%field_decl [concrete = @Class.%field_decl]
|
||||
// CHECK:STDOUT: %.loc18_14.1: ref %i32 = class_element_access %self.ref, element0
|
||||
// CHECK:STDOUT: %.loc18_14.2: %i32 = acquire_value %.loc18_14.1
|
||||
// CHECK:STDOUT: %impl.elem0: %.737 = impl_witness_access constants.%Copy.impl_witness.b51, element0 [concrete = constants.%Int.as.Copy.impl.Op.4f6]
|
||||
|
||||
+6
-3
@@ -139,7 +139,10 @@ fn Class.F(self) -> i32 {
|
||||
// CHECK:STDOUT: %return.param: ref %Class = out_param call_param0
|
||||
// CHECK:STDOUT: %return: ref %Class = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.loc22: %Class.elem = field_decl p, element0 [concrete]
|
||||
// CHECK:STDOUT: %field_decl: %Class.elem = field_decl p, element0, %ptr in [concrete] {
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%Class [concrete = constants.%Class]
|
||||
// CHECK:STDOUT: %ptr: type = ptr_type %Self.ref [concrete = constants.%ptr.7ee]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness constants.%struct_type.p [concrete = constants.%complete_type.126]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
@@ -147,13 +150,13 @@ fn Class.F(self) -> i32 {
|
||||
// CHECK:STDOUT: .Self = constants.%Class
|
||||
// CHECK:STDOUT: .F = %Class.F.decl
|
||||
// CHECK:STDOUT: .Make = %Class.Make.decl
|
||||
// CHECK:STDOUT: .p = %.loc22
|
||||
// CHECK:STDOUT: .p = %field_decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @Class.F(%self.param.loc25: %Class) -> out %return.param.loc25: %i32 {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %self.ref: %Class = name_ref self, %self.loc25
|
||||
// CHECK:STDOUT: %p.ref: %Class.elem = name_ref p, @Class.%.loc22 [concrete = @Class.%.loc22]
|
||||
// CHECK:STDOUT: %p.ref: %Class.elem = name_ref p, @Class.%field_decl [concrete = @Class.%field_decl]
|
||||
// CHECK:STDOUT: %.loc26_16.1: ref %ptr.7ee = class_element_access %self.ref, element0
|
||||
// CHECK:STDOUT: %.loc26_16.2: %ptr.7ee = acquire_value %.loc26_16.1
|
||||
// CHECK:STDOUT: %.loc26_11.1: ref %Class = deref %.loc26_16.2
|
||||
|
||||
+6
-3
@@ -1235,7 +1235,10 @@ fn Base.F(ref self: Base) {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @Base {
|
||||
// CHECK:STDOUT: %.loc5: %Base.elem = field_decl a, element0 [concrete]
|
||||
// CHECK:STDOUT: %field_decl: %Base.elem = field_decl a, element0, %.loc5_11.2 in [concrete] {
|
||||
// CHECK:STDOUT: %.loc5_11.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple]
|
||||
// CHECK:STDOUT: %.loc5_11.2: type = converted %.loc5_11.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Base.F.decl: %Base.F.type.48cdab.1 = fn_decl @Base.F.loc7 [concrete = constants.%Base.F.bd5be1.1] {
|
||||
// CHECK:STDOUT: %self.param_patt: %pattern_type.912 = ref_param_pattern [concrete = constants.%self.param_patt]
|
||||
// CHECK:STDOUT: %self.patt: %pattern_type.912 = wrapper_binding_pattern self, %self.param_patt [concrete = constants.%self.patt]
|
||||
@@ -1249,7 +1252,7 @@ fn Base.F(ref self: Base) {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = constants.%Base
|
||||
// CHECK:STDOUT: .a = %.loc5
|
||||
// CHECK:STDOUT: .a = %field_decl
|
||||
// CHECK:STDOUT: .F = %Base.F.decl
|
||||
// CHECK:STDOUT: .Base = <poisoned>
|
||||
// CHECK:STDOUT: }
|
||||
@@ -1259,7 +1262,7 @@ fn Base.F(ref self: Base) {
|
||||
// CHECK:STDOUT: fn @Base.F.loc17(%self.param: ref %Base) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %self.ref: ref %Base = name_ref self, %self
|
||||
// CHECK:STDOUT: %a.ref: %Base.elem = name_ref a, @Base.%.loc5 [concrete = @Base.%.loc5]
|
||||
// CHECK:STDOUT: %a.ref: %Base.elem = name_ref a, @Base.%field_decl [concrete = @Base.%field_decl]
|
||||
// CHECK:STDOUT: %.loc18_7: ref %empty_tuple.type = class_element_access %self.ref, element0
|
||||
// CHECK:STDOUT: %.loc18_13.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple]
|
||||
// CHECK:STDOUT: %.loc18_13.2: init %empty_tuple.type = tuple_init () [concrete = constants.%empty_tuple]
|
||||
|
||||
@@ -696,7 +696,7 @@ fn G() {
|
||||
// CHECK:STDOUT: %a.param: <error> = value_param call_param1
|
||||
// CHECK:STDOUT: %.1: <error> = splice_block <error> [concrete = <error>] {
|
||||
// CHECK:STDOUT: %T.ref.loc21_50: %Class = name_ref T, %T.loc21_7.2 [symbolic = %T.loc21_7.1 (constants.%T.f25)]
|
||||
// CHECK:STDOUT: %t.ref: %Class.elem = name_ref t, @Class.%.loc5 [concrete = @Class.%.loc5]
|
||||
// CHECK:STDOUT: %t.ref: %Class.elem = name_ref t, @Class.%field_decl [concrete = @Class.%field_decl]
|
||||
// CHECK:STDOUT: %.loc21_51.2: ref type = class_element_access %T.ref.loc21_50, element0 [symbolic = %.loc21_51.1 (constants.%.9dd)]
|
||||
// CHECK:STDOUT: %.loc21_51.3: type = acquire_value %.loc21_51.2
|
||||
// CHECK:STDOUT: }
|
||||
@@ -716,13 +716,15 @@ fn G() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @Class {
|
||||
// CHECK:STDOUT: %.loc5: %Class.elem = field_decl t, element0 [concrete]
|
||||
// CHECK:STDOUT: %field_decl: %Class.elem = field_decl t, element0, %.loc5 in [concrete] {
|
||||
// CHECK:STDOUT: %.loc5: type = type_literal type [concrete = type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness constants.%struct_type.t [concrete = constants.%complete_type.509]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = constants.%Class
|
||||
// CHECK:STDOUT: .t = %.loc5
|
||||
// CHECK:STDOUT: .t = %field_decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: generic class @HoldsType(%T.loc8_18.2: %Class) {
|
||||
|
||||
+2
-2
@@ -142,7 +142,7 @@ fn F(T: Z) {
|
||||
// CHECK:STDOUT: fn @F(%c.param: %C) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %c.ref: %C = name_ref c, %c
|
||||
// CHECK:STDOUT: %i.ref: %C.elem = name_ref i, @C.%.loc6 [concrete = @C.%.loc6]
|
||||
// CHECK:STDOUT: %i.ref: %C.elem = name_ref i, @C.%field_decl [concrete = @C.%field_decl]
|
||||
// CHECK:STDOUT: %.loc13_22.1: ref %I.type = class_element_access %c.ref, element0
|
||||
// CHECK:STDOUT: %.loc13_22.2: %I.type = acquire_value %.loc13_22.1
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type]
|
||||
@@ -167,7 +167,7 @@ fn F(T: Z) {
|
||||
// CHECK:STDOUT: fn @F(%c.param: %C) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %c.ref: %C = name_ref c, %c
|
||||
// CHECK:STDOUT: %ij.ref: %C.elem = name_ref ij, @C.%.loc7 [concrete = @C.%.loc7]
|
||||
// CHECK:STDOUT: %ij.ref: %C.elem = name_ref ij, @C.%field_decl [concrete = @C.%field_decl]
|
||||
// CHECK:STDOUT: %.loc21_22.1: ref %facet_type = class_element_access %c.ref, element0
|
||||
// CHECK:STDOUT: %.loc21_22.2: %facet_type = acquire_value %.loc21_22.1
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type]
|
||||
|
||||
+31
-48
@@ -132,9 +132,7 @@ fn Read(generic y: Core.IntLiteral) {
|
||||
// CHECK:STDOUT: %return.patt.427: %pattern_type.b38 = return_slot_pattern %return.param_patt.4bb, %Optional.5ec [symbolic]
|
||||
// CHECK:STDOUT: %IntRange.as.Iterate.impl.Next.type: type = fn_type @IntRange.as.Iterate.impl.Next, @IntRange.as.Iterate.impl(%N) [symbolic]
|
||||
// CHECK:STDOUT: %IntRange.as.Iterate.impl.Next: %IntRange.as.Iterate.impl.Next.type = struct_value () [symbolic]
|
||||
// CHECK:STDOUT: %start.patt.477: %pattern_type.142cb7.1 = ref_binding_pattern start [symbolic]
|
||||
// CHECK:STDOUT: %IntRange.elem.bed: type = unbound_element_type %IntRange.2c4, %Int.67af24.1 [symbolic]
|
||||
// CHECK:STDOUT: %end.patt.535: %pattern_type.142cb7.1 = ref_binding_pattern end [symbolic]
|
||||
// CHECK:STDOUT: %struct_type.start.end.d4d: type = struct_type {.start: %Int.67af24.1, .end: %Int.67af24.1} [symbolic]
|
||||
// CHECK:STDOUT: %complete_type.aa1: <witness> = complete_type_witness %struct_type.start.end.d4d [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.5d9: <witness> = require_complete_type %IntRange.2c4 [symbolic]
|
||||
@@ -207,9 +205,7 @@ fn Read(generic y: Core.IntLiteral) {
|
||||
// CHECK:STDOUT: %complete_type.f8a: <witness> = complete_type_witness %i32.builtin [concrete]
|
||||
// CHECK:STDOUT: %IntRange.Make.type.d27: type = fn_type @IntRange.Make, @IntRange(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %IntRange.Make.9ef: %IntRange.Make.type.d27 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %start.patt.c23: %pattern_type.6b6 = ref_binding_pattern start [concrete]
|
||||
// CHECK:STDOUT: %IntRange.elem.6b1: type = unbound_element_type %IntRange.bbd, %i32 [concrete]
|
||||
// CHECK:STDOUT: %end.patt.46f: %pattern_type.6b6 = ref_binding_pattern end [concrete]
|
||||
// CHECK:STDOUT: %struct_type.start.end.e93: type = struct_type {.start: %i32, .end: %i32} [concrete]
|
||||
// CHECK:STDOUT: %complete_type.ec7: <witness> = complete_type_witness %struct_type.start.end.e93 [concrete]
|
||||
// CHECK:STDOUT: %int_0.5c6: Core.IntLiteral = int_value 0 [concrete]
|
||||
@@ -297,7 +293,7 @@ fn Read(generic y: Core.IntLiteral) {
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %.loc4: type = splice_block %IntLiteral.ref [concrete = Core.IntLiteral] {
|
||||
// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.197]
|
||||
// CHECK:STDOUT: %Core.ref: <namespace> = name_ref Core, imports.%Core [concrete = imports.%Core]
|
||||
// CHECK:STDOUT: %Core.ref.loc4: <namespace> = name_ref Core, imports.%Core [concrete = imports.%Core]
|
||||
// CHECK:STDOUT: %IntLiteral.ref: type = name_ref IntLiteral, imports.%Core.IntLiteral [concrete = Core.IntLiteral]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %N.loc4_17.2: Core.IntLiteral = symbolic_binding N, 0 [symbolic = %N.loc4_17.1 (constants.%N)]
|
||||
@@ -417,14 +413,11 @@ fn Read(generic y: Core.IntLiteral) {
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %IntRange.Make.type: type = fn_type @IntRange.Make, @IntRange(%N.loc4_17.1) [symbolic = %IntRange.Make.type (constants.%IntRange.Make.type.522)]
|
||||
// CHECK:STDOUT: %IntRange.Make: @IntRange.%IntRange.Make.type (%IntRange.Make.type.522) = struct_value () [symbolic = %IntRange.Make (constants.%IntRange.Make.8ef)]
|
||||
// CHECK:STDOUT: %Int: type = class_type @Int, @Int(%N.loc4_17.1) [symbolic = %Int (constants.%Int.67af24.1)]
|
||||
// CHECK:STDOUT: %require_complete: <witness> = require_complete_type %Int [symbolic = %require_complete (constants.%require_complete.4dfb92.1)]
|
||||
// CHECK:STDOUT: %pattern_type: type = pattern_type %Int [symbolic = %pattern_type (constants.%pattern_type.142cb7.1)]
|
||||
// CHECK:STDOUT: %start.patt: @IntRange.%pattern_type (%pattern_type.142cb7.1) = ref_binding_pattern start [symbolic = %start.patt (constants.%start.patt.477)]
|
||||
// CHECK:STDOUT: %Int.loc22_32.2: type = class_type @Int, @Int(%N.loc4_17.1) [symbolic = %Int.loc22_32.2 (constants.%Int.67af24.1)]
|
||||
// CHECK:STDOUT: %require_complete: <witness> = require_complete_type %Int.loc22_32.2 [symbolic = %require_complete (constants.%require_complete.4dfb92.1)]
|
||||
// CHECK:STDOUT: %IntRange: type = class_type @IntRange, @IntRange(%N.loc4_17.1) [symbolic = %IntRange (constants.%IntRange.2c4)]
|
||||
// CHECK:STDOUT: %IntRange.elem: type = unbound_element_type %IntRange, %Int [symbolic = %IntRange.elem (constants.%IntRange.elem.bed)]
|
||||
// CHECK:STDOUT: %end.patt: @IntRange.%pattern_type (%pattern_type.142cb7.1) = ref_binding_pattern end [symbolic = %end.patt (constants.%end.patt.535)]
|
||||
// CHECK:STDOUT: %struct_type.start.end: type = struct_type {.start: @IntRange.%Int (%Int.67af24.1), .end: @IntRange.%Int (%Int.67af24.1)} [symbolic = %struct_type.start.end (constants.%struct_type.start.end.d4d)]
|
||||
// CHECK:STDOUT: %IntRange.elem: type = unbound_element_type %IntRange, %Int.loc22_32.2 [symbolic = %IntRange.elem (constants.%IntRange.elem.bed)]
|
||||
// CHECK:STDOUT: %struct_type.start.end: type = struct_type {.start: @IntRange.%Int.loc22_32.2 (%Int.67af24.1), .end: @IntRange.%Int.loc22_32.2 (%Int.67af24.1)} [symbolic = %struct_type.start.end (constants.%struct_type.start.end.d4d)]
|
||||
// CHECK:STDOUT: %complete_type.loc24_1.2: <witness> = complete_type_witness %struct_type.start.end [symbolic = %complete_type.loc24_1.2 (constants.%complete_type.aa1)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class {
|
||||
@@ -499,8 +492,18 @@ fn Read(generic y: Core.IntLiteral) {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.loc9: <witness> = impl_self_witness @IntRange.as.Iterate.impl.%Self.ref, @Iterate [symbolic = @IntRange.as.Iterate.impl.%.loc9_87 (constants.%.84c)]
|
||||
// CHECK:STDOUT: %.loc22: @IntRange.%IntRange.elem (%IntRange.elem.bed) = field_decl start, element0 [concrete]
|
||||
// CHECK:STDOUT: %.loc23: @IntRange.%IntRange.elem (%IntRange.elem.bed) = field_decl end, element1 [concrete]
|
||||
// CHECK:STDOUT: %field_decl.loc22: @IntRange.%IntRange.elem (%IntRange.elem.bed) = field_decl start, element0, %Int.loc22_32.1 in [concrete] {
|
||||
// CHECK:STDOUT: %Core.ref.loc22: <namespace> = name_ref Core, imports.%Core [concrete = imports.%Core]
|
||||
// CHECK:STDOUT: %Int.ref.loc22: %Int.type = name_ref Int, imports.%Core.Int [concrete = constants.%Int.generic]
|
||||
// CHECK:STDOUT: %N.ref.loc22: Core.IntLiteral = name_ref N, %N.loc4_17.2 [symbolic = %N.loc4_17.1 (constants.%N)]
|
||||
// CHECK:STDOUT: %Int.loc22_32.1: type = class_type @Int, @Int(constants.%N) [symbolic = %Int.loc22_32.2 (constants.%Int.67af24.1)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %field_decl.loc23: @IntRange.%IntRange.elem (%IntRange.elem.bed) = field_decl end, element1, %Int.loc23 in [concrete] {
|
||||
// CHECK:STDOUT: %Core.ref.loc23: <namespace> = name_ref Core, imports.%Core [concrete = imports.%Core]
|
||||
// CHECK:STDOUT: %Int.ref.loc23: %Int.type = name_ref Int, imports.%Core.Int [concrete = constants.%Int.generic]
|
||||
// CHECK:STDOUT: %N.ref.loc23: Core.IntLiteral = name_ref N, %N.loc4_17.2 [symbolic = %N.loc4_17.1 (constants.%N)]
|
||||
// CHECK:STDOUT: %Int.loc23: type = class_type @Int, @Int(constants.%N) [symbolic = %Int.loc22_32.2 (constants.%Int.67af24.1)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %complete_type.loc24_1.1: <witness> = complete_type_witness constants.%struct_type.start.end.d4d [symbolic = %complete_type.loc24_1.2 (constants.%complete_type.aa1)]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type.loc24_1.1
|
||||
// CHECK:STDOUT:
|
||||
@@ -508,8 +511,8 @@ fn Read(generic y: Core.IntLiteral) {
|
||||
// CHECK:STDOUT: .Self = constants.%IntRange.2c4
|
||||
// CHECK:STDOUT: .N = <poisoned>
|
||||
// CHECK:STDOUT: .Make = %IntRange.Make.decl
|
||||
// CHECK:STDOUT: .start [private] = %.loc22
|
||||
// CHECK:STDOUT: .end [private] = %.loc23
|
||||
// CHECK:STDOUT: .start [private] = %field_decl.loc22
|
||||
// CHECK:STDOUT: .end [private] = %field_decl.loc23
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -599,7 +602,7 @@ fn Read(generic y: Core.IntLiteral) {
|
||||
// CHECK:STDOUT: fn(%self.param: @IntRange.as.Iterate.impl.NewCursor.%IntRange (%IntRange.2c4)) -> out %return.param: @IntRange.as.Iterate.impl.NewCursor.%Int.loc10_37.1 (%Int.67af24.1) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %self.ref: @IntRange.as.Iterate.impl.NewCursor.%IntRange (%IntRange.2c4) = name_ref self, %self
|
||||
// CHECK:STDOUT: %start.ref: @IntRange.as.Iterate.impl.NewCursor.%IntRange.elem (%IntRange.elem.bed) = name_ref start, @IntRange.%.loc22 [concrete = @IntRange.%.loc22]
|
||||
// CHECK:STDOUT: %start.ref: @IntRange.as.Iterate.impl.NewCursor.%IntRange.elem (%IntRange.elem.bed) = name_ref start, @IntRange.%field_decl.loc22 [concrete = @IntRange.%field_decl.loc22]
|
||||
// CHECK:STDOUT: %.loc10_52.1: ref @IntRange.as.Iterate.impl.NewCursor.%Int.loc10_37.1 (%Int.67af24.1) = class_element_access %self.ref, element0
|
||||
// CHECK:STDOUT: %.loc10_52.2: @IntRange.as.Iterate.impl.NewCursor.%Int.loc10_37.1 (%Int.67af24.1) = acquire_value %.loc10_52.1
|
||||
// CHECK:STDOUT: %impl.elem0.loc10_52.1: @IntRange.as.Iterate.impl.NewCursor.%.loc10_52.6 (%.c60) = impl_witness_access constants.%Copy.lookup_impl_witness.df6, element0 [symbolic = %impl.elem0.loc10_52.2 (constants.%impl.elem0.284)]
|
||||
@@ -713,7 +716,7 @@ fn Read(generic y: Core.IntLiteral) {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %value.ref.loc13: ref @IntRange.as.Iterate.impl.Next.%Int.loc11_37.1 (%Int.67af24.1) = name_ref value, %value
|
||||
// CHECK:STDOUT: %self.ref: @IntRange.as.Iterate.impl.Next.%IntRange (%IntRange.2c4) = name_ref self, %self
|
||||
// CHECK:STDOUT: %end.ref: @IntRange.as.Iterate.impl.Next.%IntRange.elem (%IntRange.elem.bed) = name_ref end, @IntRange.%.loc23 [concrete = @IntRange.%.loc23]
|
||||
// CHECK:STDOUT: %end.ref: @IntRange.as.Iterate.impl.Next.%IntRange.elem (%IntRange.elem.bed) = name_ref end, @IntRange.%field_decl.loc23 [concrete = @IntRange.%field_decl.loc23]
|
||||
// CHECK:STDOUT: %.loc13_23.1: ref @IntRange.as.Iterate.impl.Next.%Int.loc11_37.1 (%Int.67af24.1) = class_element_access %self.ref, element1
|
||||
// CHECK:STDOUT: %.loc13_23.2: @IntRange.as.Iterate.impl.Next.%Int.loc11_37.1 (%Int.67af24.1) = acquire_value %.loc13_23.1
|
||||
// CHECK:STDOUT: %OrderedWith.type.loc13_17.1: type = facet_type <@OrderedWith, @OrderedWith(constants.%Int.67af24.1)> [symbolic = %OrderedWith.type.loc13_17.2 (constants.%OrderedWith.type.6f8)]
|
||||
@@ -829,13 +832,10 @@ fn Read(generic y: Core.IntLiteral) {
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %IntRange.Make.type => constants.%IntRange.Make.type.522
|
||||
// CHECK:STDOUT: %IntRange.Make => constants.%IntRange.Make.8ef
|
||||
// CHECK:STDOUT: %Int => constants.%Int.67af24.1
|
||||
// CHECK:STDOUT: %Int.loc22_32.2 => constants.%Int.67af24.1
|
||||
// CHECK:STDOUT: %require_complete => constants.%require_complete.4dfb92.1
|
||||
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.142cb7.1
|
||||
// CHECK:STDOUT: %start.patt => constants.%start.patt.477
|
||||
// CHECK:STDOUT: %IntRange => constants.%IntRange.2c4
|
||||
// CHECK:STDOUT: %IntRange.elem => constants.%IntRange.elem.bed
|
||||
// CHECK:STDOUT: %end.patt => constants.%end.patt.535
|
||||
// CHECK:STDOUT: %struct_type.start.end => constants.%struct_type.start.end.d4d
|
||||
// CHECK:STDOUT: %complete_type.loc24_1.2 => constants.%complete_type.aa1
|
||||
// CHECK:STDOUT: }
|
||||
@@ -919,13 +919,10 @@ fn Read(generic y: Core.IntLiteral) {
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %IntRange.Make.type => constants.%IntRange.Make.type.d27
|
||||
// CHECK:STDOUT: %IntRange.Make => constants.%IntRange.Make.9ef
|
||||
// CHECK:STDOUT: %Int => constants.%i32
|
||||
// CHECK:STDOUT: %Int.loc22_32.2 => constants.%i32
|
||||
// CHECK:STDOUT: %require_complete => constants.%complete_type.f8a
|
||||
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.6b6
|
||||
// CHECK:STDOUT: %start.patt => constants.%start.patt.c23
|
||||
// CHECK:STDOUT: %IntRange => constants.%IntRange.bbd
|
||||
// CHECK:STDOUT: %IntRange.elem => constants.%IntRange.elem.6b1
|
||||
// CHECK:STDOUT: %end.patt => constants.%end.patt.46f
|
||||
// CHECK:STDOUT: %struct_type.start.end => constants.%struct_type.start.end.e93
|
||||
// CHECK:STDOUT: %complete_type.loc24_1.2 => constants.%complete_type.ec7
|
||||
// CHECK:STDOUT: }
|
||||
@@ -976,10 +973,7 @@ fn Read(generic y: Core.IntLiteral) {
|
||||
// CHECK:STDOUT: %struct_type.start.end.d4d: type = struct_type {.start: %Int.67af24.1, .end: %Int.67af24.1} [symbolic]
|
||||
// CHECK:STDOUT: %complete_type.aa1: <witness> = complete_type_witness %struct_type.start.end.d4d [symbolic]
|
||||
// CHECK:STDOUT: %IntRange.2c4: type = class_type @IntRange, @IntRange(%N) [symbolic]
|
||||
// CHECK:STDOUT: %pattern_type.142cb7.1: type = pattern_type %Int.67af24.1 [symbolic]
|
||||
// CHECK:STDOUT: %end.patt.535: %pattern_type.142cb7.1 = ref_binding_pattern end [symbolic]
|
||||
// CHECK:STDOUT: %IntRange.elem.bed: type = unbound_element_type %IntRange.2c4, %Int.67af24.1 [symbolic]
|
||||
// CHECK:STDOUT: %start.patt.477: %pattern_type.142cb7.1 = ref_binding_pattern start [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.4dfb92.1: <witness> = require_complete_type %Int.67af24.1 [symbolic]
|
||||
// CHECK:STDOUT: %IntRange.Make.type.522: type = fn_type @IntRange.Make, @IntRange(%N) [symbolic]
|
||||
// CHECK:STDOUT: %IntRange.Make.8ef: %IntRange.Make.type.522 = struct_value () [symbolic]
|
||||
@@ -987,10 +981,11 @@ fn Read(generic y: Core.IntLiteral) {
|
||||
// CHECK:STDOUT: %return.param_patt.262: %pattern_type.1ea = out_param_pattern [symbolic]
|
||||
// CHECK:STDOUT: %return.patt.ca9: %pattern_type.1ea = return_slot_pattern %return.param_patt.262, invalid [symbolic]
|
||||
// CHECK:STDOUT: %.5c3: Core.Form = init_form %IntRange.2c4 [symbolic]
|
||||
// CHECK:STDOUT: %pattern_type.142cb7.1: type = pattern_type %Int.67af24.1 [symbolic]
|
||||
// CHECK:STDOUT: %end.param_patt.8ab: %pattern_type.142cb7.1 = value_param_pattern [symbolic]
|
||||
// CHECK:STDOUT: %end.patt.5d9: %pattern_type.142cb7.1 = wrapper_binding_pattern end, %end.param_patt.8ab [symbolic]
|
||||
// CHECK:STDOUT: %start.param_patt: %pattern_type.142cb7.1 = value_param_pattern [symbolic]
|
||||
// CHECK:STDOUT: %start.patt.f48: %pattern_type.142cb7.1 = wrapper_binding_pattern start, %start.param_patt [symbolic]
|
||||
// CHECK:STDOUT: %start.patt: %pattern_type.142cb7.1 = wrapper_binding_pattern start, %start.param_patt [symbolic]
|
||||
// CHECK:STDOUT: %Copy.type: type = facet_type <@Copy> [concrete]
|
||||
// CHECK:STDOUT: %Copy.lookup_impl_witness.df6: <witness> = lookup_impl_witness %Int.67af24.1, @Copy [symbolic]
|
||||
// CHECK:STDOUT: %Copy.facet: %Copy.type = facet_value %Int.67af24.1, (%Copy.lookup_impl_witness.df6) [symbolic]
|
||||
@@ -1007,10 +1002,7 @@ fn Read(generic y: Core.IntLiteral) {
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %i32.builtin: type = int_type signed, %int_32 [concrete]
|
||||
// CHECK:STDOUT: %complete_type.f8a: <witness> = complete_type_witness %i32.builtin [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.6b6: type = pattern_type %i32 [concrete]
|
||||
// CHECK:STDOUT: %start.patt.c23: %pattern_type.6b6 = ref_binding_pattern start [concrete]
|
||||
// CHECK:STDOUT: %IntRange.elem.6b1: type = unbound_element_type %IntRange.bbd, %i32 [concrete]
|
||||
// CHECK:STDOUT: %end.patt.46f: %pattern_type.6b6 = ref_binding_pattern end [concrete]
|
||||
// CHECK:STDOUT: %struct_type.start.end.e93: type = struct_type {.start: %i32, .end: %i32} [concrete]
|
||||
// CHECK:STDOUT: %complete_type.ec7: <witness> = complete_type_witness %struct_type.start.end.e93 [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.0f3: type = pattern_type %IntRange.bbd [concrete]
|
||||
@@ -1054,8 +1046,8 @@ fn Read(generic y: Core.IntLiteral) {
|
||||
// CHECK:STDOUT: %Main.import_ref.e06: <witness> = import_ref Main//lib, loc24_1, loaded [symbolic = @IntRange.%complete_type (constants.%complete_type.aa1)]
|
||||
// CHECK:STDOUT: %Main.import_ref.663 = import_ref Main//lib, inst{{[0-9A-F]+}} [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.ac1 = import_ref Main//lib, loc5_57, unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.d41 = import_ref Main//lib, loc22_20, unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.60f = import_ref Main//lib, loc23_18, unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.a12 = import_ref Main//lib, loc22_20, unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.b83 = import_ref Main//lib, loc23_18, unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.6b552a.2: Core.IntLiteral = import_ref Main//lib, loc4_17, loaded [symbolic = @IntRange.%N (constants.%N)]
|
||||
// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.0ff = import_ref Core//prelude/operators/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic]
|
||||
// CHECK:STDOUT: %Core.import_ref.edf: @Core.IntLiteral.as.ImplicitAs.impl.0e9.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.e74) = import_ref Core//prelude/types/int, loc{{\d+_\d+}}, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.0e9.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.845)]
|
||||
@@ -1093,11 +1085,8 @@ fn Read(generic y: Core.IntLiteral) {
|
||||
// CHECK:STDOUT: %IntRange.Make: @IntRange.%IntRange.Make.type (%IntRange.Make.type.522) = struct_value () [symbolic = %IntRange.Make (constants.%IntRange.Make.8ef)]
|
||||
// CHECK:STDOUT: %Int: type = class_type @Int, @Int(%N) [symbolic = %Int (constants.%Int.67af24.1)]
|
||||
// CHECK:STDOUT: %require_complete: <witness> = require_complete_type %Int [symbolic = %require_complete (constants.%require_complete.4dfb92.1)]
|
||||
// CHECK:STDOUT: %pattern_type: type = pattern_type %Int [symbolic = %pattern_type (constants.%pattern_type.142cb7.1)]
|
||||
// CHECK:STDOUT: %start.patt: @IntRange.%pattern_type (%pattern_type.142cb7.1) = ref_binding_pattern start [symbolic = %start.patt (constants.%start.patt.477)]
|
||||
// CHECK:STDOUT: %IntRange: type = class_type @IntRange, @IntRange(%N) [symbolic = %IntRange (constants.%IntRange.2c4)]
|
||||
// CHECK:STDOUT: %IntRange.elem: type = unbound_element_type %IntRange, %Int [symbolic = %IntRange.elem (constants.%IntRange.elem.bed)]
|
||||
// CHECK:STDOUT: %end.patt: @IntRange.%pattern_type (%pattern_type.142cb7.1) = ref_binding_pattern end [symbolic = %end.patt (constants.%end.patt.535)]
|
||||
// CHECK:STDOUT: %struct_type.start.end: type = struct_type {.start: @IntRange.%Int (%Int.67af24.1), .end: @IntRange.%Int (%Int.67af24.1)} [symbolic = %struct_type.start.end (constants.%struct_type.start.end.d4d)]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %struct_type.start.end [symbolic = %complete_type (constants.%complete_type.aa1)]
|
||||
// CHECK:STDOUT:
|
||||
@@ -1107,8 +1096,8 @@ fn Read(generic y: Core.IntLiteral) {
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Main.import_ref.663
|
||||
// CHECK:STDOUT: .Make = imports.%Main.import_ref.ac1
|
||||
// CHECK:STDOUT: .start [private] = imports.%Main.import_ref.d41
|
||||
// CHECK:STDOUT: .end [private] = imports.%Main.import_ref.60f
|
||||
// CHECK:STDOUT: .start [private] = imports.%Main.import_ref.a12
|
||||
// CHECK:STDOUT: .end [private] = imports.%Main.import_ref.b83
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -1157,7 +1146,7 @@ fn Read(generic y: Core.IntLiteral) {
|
||||
// CHECK:STDOUT: %Int: type = class_type @Int, @Int(%N) [symbolic = %Int (constants.%Int.67af24.1)]
|
||||
// CHECK:STDOUT: %pattern_type.1: type = pattern_type %Int [symbolic = %pattern_type.1 (constants.%pattern_type.142cb7.1)]
|
||||
// CHECK:STDOUT: %start.param_patt: @IntRange.Make.%pattern_type.1 (%pattern_type.142cb7.1) = value_param_pattern [symbolic = %start.param_patt (constants.%start.param_patt)]
|
||||
// CHECK:STDOUT: %start.patt: @IntRange.Make.%pattern_type.1 (%pattern_type.142cb7.1) = wrapper_binding_pattern start, %start.param_patt [symbolic = %start.patt (constants.%start.patt.f48)]
|
||||
// CHECK:STDOUT: %start.patt: @IntRange.Make.%pattern_type.1 (%pattern_type.142cb7.1) = wrapper_binding_pattern start, %start.param_patt [symbolic = %start.patt (constants.%start.patt)]
|
||||
// CHECK:STDOUT: %end.param_patt: @IntRange.Make.%pattern_type.1 (%pattern_type.142cb7.1) = value_param_pattern [symbolic = %end.param_patt (constants.%end.param_patt.8ab)]
|
||||
// CHECK:STDOUT: %end.patt: @IntRange.Make.%pattern_type.1 (%pattern_type.142cb7.1) = wrapper_binding_pattern end, %end.param_patt [symbolic = %end.patt (constants.%end.patt.5d9)]
|
||||
// CHECK:STDOUT: %IntRange: type = class_type @IntRange, @IntRange(%N) [symbolic = %IntRange (constants.%IntRange.2c4)]
|
||||
@@ -1214,11 +1203,8 @@ fn Read(generic y: Core.IntLiteral) {
|
||||
// CHECK:STDOUT: %IntRange.Make => constants.%IntRange.Make.8ef
|
||||
// CHECK:STDOUT: %Int => constants.%Int.67af24.1
|
||||
// CHECK:STDOUT: %require_complete => constants.%require_complete.4dfb92.1
|
||||
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.142cb7.1
|
||||
// CHECK:STDOUT: %start.patt => constants.%start.patt.477
|
||||
// CHECK:STDOUT: %IntRange => constants.%IntRange.2c4
|
||||
// CHECK:STDOUT: %IntRange.elem => constants.%IntRange.elem.bed
|
||||
// CHECK:STDOUT: %end.patt => constants.%end.patt.535
|
||||
// CHECK:STDOUT: %struct_type.start.end => constants.%struct_type.start.end.d4d
|
||||
// CHECK:STDOUT: %complete_type => constants.%complete_type.aa1
|
||||
// CHECK:STDOUT: }
|
||||
@@ -1228,7 +1214,7 @@ fn Read(generic y: Core.IntLiteral) {
|
||||
// CHECK:STDOUT: %Int => constants.%Int.67af24.1
|
||||
// CHECK:STDOUT: %pattern_type.1 => constants.%pattern_type.142cb7.1
|
||||
// CHECK:STDOUT: %start.param_patt => constants.%start.param_patt
|
||||
// CHECK:STDOUT: %start.patt => constants.%start.patt.f48
|
||||
// CHECK:STDOUT: %start.patt => constants.%start.patt
|
||||
// CHECK:STDOUT: %end.param_patt => constants.%end.param_patt.8ab
|
||||
// CHECK:STDOUT: %end.patt => constants.%end.patt.5d9
|
||||
// CHECK:STDOUT: %IntRange => constants.%IntRange.2c4
|
||||
@@ -1247,11 +1233,8 @@ fn Read(generic y: Core.IntLiteral) {
|
||||
// CHECK:STDOUT: %IntRange.Make => constants.%IntRange.Make.9ef
|
||||
// CHECK:STDOUT: %Int => constants.%i32
|
||||
// CHECK:STDOUT: %require_complete => constants.%complete_type.f8a
|
||||
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.6b6
|
||||
// CHECK:STDOUT: %start.patt => constants.%start.patt.c23
|
||||
// CHECK:STDOUT: %IntRange => constants.%IntRange.bbd
|
||||
// CHECK:STDOUT: %IntRange.elem => constants.%IntRange.elem.6b1
|
||||
// CHECK:STDOUT: %end.patt => constants.%end.patt.46f
|
||||
// CHECK:STDOUT: %struct_type.start.end => constants.%struct_type.start.end.e93
|
||||
// CHECK:STDOUT: %complete_type => constants.%complete_type.ec7
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
@@ -162,13 +162,17 @@ fn G() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @C {
|
||||
// CHECK:STDOUT: %.loc19: %C.elem = field_decl arr, element0 [concrete]
|
||||
// CHECK:STDOUT: %field_decl: %C.elem = field_decl arr, element0, %array_type in [concrete] {
|
||||
// CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %int_100: Core.IntLiteral = int_value 100 [concrete = constants.%int_100]
|
||||
// CHECK:STDOUT: %array_type: type = array_type %int_100, %i32 [concrete = constants.%array_type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness constants.%struct_type.arr.fdc [concrete = constants.%complete_type.18e]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = constants.%C
|
||||
// CHECK:STDOUT: .arr = %.loc19
|
||||
// CHECK:STDOUT: .arr = %field_decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: generic fn @Wrap.Make(@Wrap.%T.loc15_13.2: type) {
|
||||
|
||||
+4
-10
@@ -93,8 +93,6 @@ fn G(p: B*) { F(B, p); }
|
||||
// CHECK:STDOUT: %A.generic: %A.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %A.47a: type = class_type @A, @A(%T) [symbolic]
|
||||
// CHECK:STDOUT: %require_complete: <witness> = require_complete_type %T [symbolic]
|
||||
// CHECK:STDOUT: %pattern_type.51d: type = pattern_type %T [symbolic]
|
||||
// CHECK:STDOUT: %v.patt.a77: %pattern_type.51d = ref_binding_pattern v [symbolic]
|
||||
// CHECK:STDOUT: %A.elem.d41: type = unbound_element_type %A.47a, %T [symbolic]
|
||||
// CHECK:STDOUT: %struct_type.v.a4d: type = struct_type {.v: %T} [symbolic]
|
||||
// CHECK:STDOUT: %complete_type.136: <witness> = complete_type_witness %struct_type.v.a4d [symbolic]
|
||||
@@ -104,8 +102,6 @@ fn G(p: B*) { F(B, p); }
|
||||
// CHECK:STDOUT: %x.patt: %pattern_type.b3e = wrapper_binding_pattern x, %x.param_patt [concrete]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [concrete]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.e39: type = pattern_type %B [concrete]
|
||||
// CHECK:STDOUT: %v.patt.f3a: %pattern_type.e39 = ref_binding_pattern v [concrete]
|
||||
// CHECK:STDOUT: %A.elem.483: type = unbound_element_type %A.d32, %B [concrete]
|
||||
// CHECK:STDOUT: %struct_type.v.410: type = struct_type {.v: %B} [concrete]
|
||||
// CHECK:STDOUT: %complete_type.a68: <witness> = complete_type_witness %struct_type.v.410 [concrete]
|
||||
@@ -167,22 +163,22 @@ fn G(p: B*) { F(B, p); }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete: <witness> = require_complete_type %T.loc6_10.1 [symbolic = %require_complete (constants.%require_complete)]
|
||||
// CHECK:STDOUT: %pattern_type: type = pattern_type %T.loc6_10.1 [symbolic = %pattern_type (constants.%pattern_type.51d)]
|
||||
// CHECK:STDOUT: %v.patt: @A.%pattern_type (%pattern_type.51d) = ref_binding_pattern v [symbolic = %v.patt (constants.%v.patt.a77)]
|
||||
// CHECK:STDOUT: %A: type = class_type @A, @A(%T.loc6_10.1) [symbolic = %A (constants.%A.47a)]
|
||||
// CHECK:STDOUT: %A.elem: type = unbound_element_type %A, %T.loc6_10.1 [symbolic = %A.elem (constants.%A.elem.d41)]
|
||||
// CHECK:STDOUT: %struct_type.v: type = struct_type {.v: @A.%T.loc6_10.1 (%T)} [symbolic = %struct_type.v (constants.%struct_type.v.a4d)]
|
||||
// CHECK:STDOUT: %complete_type.loc8_1.2: <witness> = complete_type_witness %struct_type.v [symbolic = %complete_type.loc8_1.2 (constants.%complete_type.136)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class {
|
||||
// CHECK:STDOUT: %.loc7: @A.%A.elem (%A.elem.d41) = field_decl v, element0 [concrete]
|
||||
// CHECK:STDOUT: %field_decl: @A.%A.elem (%A.elem.d41) = field_decl v, element0, %T.ref in [concrete] {
|
||||
// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc6_10.2 [symbolic = %T.loc6_10.1 (constants.%T)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %complete_type.loc8_1.1: <witness> = complete_type_witness constants.%struct_type.v.a4d [symbolic = %complete_type.loc8_1.2 (constants.%complete_type.136)]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type.loc8_1.1
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = constants.%A.47a
|
||||
// CHECK:STDOUT: .T = <poisoned>
|
||||
// CHECK:STDOUT: .v = %.loc7
|
||||
// CHECK:STDOUT: .v = %field_decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -202,8 +198,6 @@ fn G(p: B*) { F(B, p); }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete => <error>
|
||||
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.e39
|
||||
// CHECK:STDOUT: %v.patt => constants.%v.patt.f3a
|
||||
// CHECK:STDOUT: %A => constants.%A.d32
|
||||
// CHECK:STDOUT: %A.elem => constants.%A.elem.483
|
||||
// CHECK:STDOUT: %struct_type.v => constants.%struct_type.v.410
|
||||
|
||||
+4
-10
@@ -62,8 +62,6 @@ class C(C: type) {
|
||||
// CHECK:STDOUT: %C.generic: %C.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %C.c79: type = class_type @C, @C(%T) [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.944: <witness> = require_complete_type %T [symbolic]
|
||||
// CHECK:STDOUT: %pattern_type.51d1c4.1: type = pattern_type %T [symbolic]
|
||||
// CHECK:STDOUT: %x.patt.45e: %pattern_type.51d1c4.1 = ref_binding_pattern x [symbolic]
|
||||
// CHECK:STDOUT: %C.elem.7e2: type = unbound_element_type %C.c79, %T [symbolic]
|
||||
// CHECK:STDOUT: %struct_type.x.0c5: type = struct_type {.x: %T} [symbolic]
|
||||
// CHECK:STDOUT: %complete_type.735: <witness> = complete_type_witness %struct_type.x.0c5 [symbolic]
|
||||
@@ -74,8 +72,6 @@ class C(C: type) {
|
||||
// CHECK:STDOUT: %C.8eb: type = class_type @C, @C(%i32) [concrete]
|
||||
// CHECK:STDOUT: %i32.builtin: type = int_type signed, %int_32 [concrete]
|
||||
// CHECK:STDOUT: %complete_type.f8a: <witness> = complete_type_witness %i32.builtin [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.6b6: type = pattern_type %i32 [concrete]
|
||||
// CHECK:STDOUT: %x.patt.211: %pattern_type.6b6 = ref_binding_pattern x [concrete]
|
||||
// CHECK:STDOUT: %C.elem.14f: type = unbound_element_type %C.8eb, %i32 [concrete]
|
||||
// CHECK:STDOUT: %struct_type.x.a15: type = struct_type {.x: %i32} [concrete]
|
||||
// CHECK:STDOUT: %complete_type.0c6: <witness> = complete_type_witness %struct_type.x.a15 [concrete]
|
||||
@@ -137,22 +133,22 @@ class C(C: type) {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete: <witness> = require_complete_type %T.loc5_12.1 [symbolic = %require_complete (constants.%require_complete.944)]
|
||||
// CHECK:STDOUT: %pattern_type: type = pattern_type %T.loc5_12.1 [symbolic = %pattern_type (constants.%pattern_type.51d1c4.1)]
|
||||
// CHECK:STDOUT: %x.patt: @C.%pattern_type (%pattern_type.51d1c4.1) = ref_binding_pattern x [symbolic = %x.patt (constants.%x.patt.45e)]
|
||||
// CHECK:STDOUT: %C: type = class_type @C, @C(%T.loc5_12.1) [symbolic = %C (constants.%C.c79)]
|
||||
// CHECK:STDOUT: %C.elem: type = unbound_element_type %C, %T.loc5_12.1 [symbolic = %C.elem (constants.%C.elem.7e2)]
|
||||
// CHECK:STDOUT: %struct_type.x: type = struct_type {.x: @C.%T.loc5_12.1 (%T)} [symbolic = %struct_type.x (constants.%struct_type.x.0c5)]
|
||||
// CHECK:STDOUT: %complete_type.loc7_3.2: <witness> = complete_type_witness %struct_type.x [symbolic = %complete_type.loc7_3.2 (constants.%complete_type.735)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class {
|
||||
// CHECK:STDOUT: %.loc6: @C.%C.elem (%C.elem.7e2) = field_decl x, element0 [concrete]
|
||||
// CHECK:STDOUT: %field_decl: @C.%C.elem (%C.elem.7e2) = field_decl x, element0, %T.ref in [concrete] {
|
||||
// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc5_12.2 [symbolic = %T.loc5_12.1 (constants.%T)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %complete_type.loc7_3.1: <witness> = complete_type_witness constants.%struct_type.x.0c5 [symbolic = %complete_type.loc7_3.2 (constants.%complete_type.735)]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type.loc7_3.1
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = constants.%C.c79
|
||||
// CHECK:STDOUT: .T = <poisoned>
|
||||
// CHECK:STDOUT: .x = %.loc6
|
||||
// CHECK:STDOUT: .x = %field_decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -224,8 +220,6 @@ class C(C: type) {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete => constants.%complete_type.f8a
|
||||
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.6b6
|
||||
// CHECK:STDOUT: %x.patt => constants.%x.patt.211
|
||||
// CHECK:STDOUT: %C => constants.%C.8eb
|
||||
// CHECK:STDOUT: %C.elem => constants.%C.elem.14f
|
||||
// CHECK:STDOUT: %struct_type.x => constants.%struct_type.x.a15
|
||||
|
||||
+23
-23
@@ -135,7 +135,7 @@ fn G(d: D) -> i32 {
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [concrete]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %require_complete.944: <witness> = require_complete_type %T.67db0b.1 [template]
|
||||
// CHECK:STDOUT: %n.patt.c48: %pattern_type.6b6 = value_binding_pattern n [concrete]
|
||||
// CHECK:STDOUT: %n.patt: %pattern_type.6b6 = value_binding_pattern n [concrete]
|
||||
// CHECK:STDOUT: %.b3e: %T.67db0b.1 = splice_inst @F.%.loc6_17.4 [template]
|
||||
// CHECK:STDOUT: %.432: @F.%.loc6_17.7 (@F.%.loc6_17.7) = splice_inst @F.%.loc6_17.6 [template]
|
||||
// CHECK:STDOUT: %.43a: %i32 = splice_inst @F.%.loc6_17.9 [template]
|
||||
@@ -163,15 +163,15 @@ fn G(d: D) -> i32 {
|
||||
// CHECK:STDOUT: %inst.as_compatible.d98: <instruction> = inst_value [concrete] {
|
||||
// CHECK:STDOUT: %.f8c: %C = as_compatible @F.%x.ref
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %inst.splice_block.351: <instruction> = inst_value [concrete] {
|
||||
// CHECK:STDOUT: %.5f2: %i32 = splice_block %.1e9 {
|
||||
// CHECK:STDOUT: %n.ref: %C.elem = name_ref n, @C.%.loc12 [concrete = @C.%.loc12]
|
||||
// CHECK:STDOUT: %inst.splice_block.1c3: <instruction> = inst_value [concrete] {
|
||||
// CHECK:STDOUT: %.ba1: %i32 = splice_block %.1e9 {
|
||||
// CHECK:STDOUT: %n.ref: %C.elem = name_ref n, @C.%field_decl [concrete = @C.%field_decl]
|
||||
// CHECK:STDOUT: %.a48: ref %i32 = class_element_access %.f8c, element0
|
||||
// CHECK:STDOUT: %.1e9: %i32 = acquire_value %.a48
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %inst.splice_block.f4f: <instruction> = inst_value [concrete] {
|
||||
// CHECK:STDOUT: %.ea2: %i32 = splice_block %.5f2 {}
|
||||
// CHECK:STDOUT: %inst.splice_block.4ec: <instruction> = inst_value [concrete] {
|
||||
// CHECK:STDOUT: %.0b7: %i32 = splice_block %.ba1 {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %complete_type.08f: <witness> = complete_type_witness %struct_type.m.n [concrete]
|
||||
// CHECK:STDOUT: %inst.as_compatible.bba: <instruction> = inst_value [concrete] {
|
||||
@@ -239,7 +239,7 @@ fn G(d: D) -> i32 {
|
||||
// CHECK:STDOUT: %i32.loc6: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %n: %i32 = wrapper_binding n, %.loc6_17.3
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %n.patt: %pattern_type.6b6 = value_binding_pattern n [concrete = constants.%n.patt.c48]
|
||||
// CHECK:STDOUT: %n.patt: %pattern_type.6b6 = value_binding_pattern n [concrete = constants.%n.patt]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %n.ref: %i32 = name_ref n, %n
|
||||
// CHECK:STDOUT: %impl.elem0: %.737 = impl_witness_access constants.%Copy.impl_witness.b51, element0 [concrete = constants.%Int.as.Copy.impl.Op.4f6]
|
||||
@@ -270,10 +270,10 @@ fn G(d: D) -> i32 {
|
||||
// CHECK:STDOUT: %require_complete => constants.%complete_type.cdf
|
||||
// CHECK:STDOUT: %.loc6_17.4 => constants.%inst.as_compatible.d98
|
||||
// CHECK:STDOUT: %.loc6_17.5 => invalid
|
||||
// CHECK:STDOUT: %.loc6_17.6 => constants.%inst.splice_block.351
|
||||
// CHECK:STDOUT: %.loc6_17.6 => constants.%inst.splice_block.1c3
|
||||
// CHECK:STDOUT: %.loc6_17.7 => constants.%i32
|
||||
// CHECK:STDOUT: %.loc6_17.8 => invalid
|
||||
// CHECK:STDOUT: %.loc6_17.9 => constants.%inst.splice_block.f4f
|
||||
// CHECK:STDOUT: %.loc6_17.9 => constants.%inst.splice_block.4ec
|
||||
// CHECK:STDOUT: %.loc6_17.10 => invalid
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -318,7 +318,7 @@ fn G(d: D) -> i32 {
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %require_complete.944: <witness> = require_complete_type %T [template]
|
||||
// CHECK:STDOUT: %.b3e: %T = splice_inst @F.%.loc10_11.3 [template]
|
||||
// CHECK:STDOUT: %.1a3: @F.%.loc10_11.6 (@F.%.loc10_11.6) = splice_inst @F.%.loc10_11.5 [template]
|
||||
// CHECK:STDOUT: %.244: @F.%.loc10_11.6 (@F.%.loc10_11.6) = splice_inst @F.%.loc10_11.5 [template]
|
||||
// CHECK:STDOUT: %Dest: type = symbolic_binding Dest, 0 [symbolic]
|
||||
// CHECK:STDOUT: %ImplicitAs.type.3aa: type = facet_type <@ImplicitAs, @ImplicitAs(%Dest)> [symbolic]
|
||||
// CHECK:STDOUT: %Self.294: %ImplicitAs.type.3aa = symbolic_binding Self, 1 [symbolic]
|
||||
@@ -326,9 +326,9 @@ fn G(d: D) -> i32 {
|
||||
// CHECK:STDOUT: %ImplicitAs.WithSelf.Convert.945: %ImplicitAs.WithSelf.Convert.type.97e = struct_value () [symbolic]
|
||||
// CHECK:STDOUT: %ImplicitAs.assoc_type.e23: type = assoc_entity_type @ImplicitAs, @ImplicitAs(%i32) [concrete]
|
||||
// CHECK:STDOUT: %assoc0.368: %ImplicitAs.assoc_type.e23 = assoc_entity element0, imports.%Core.import_ref.cb2 [concrete]
|
||||
// CHECK:STDOUT: %.d1c: @F.%.loc10_17.6 (@F.%.loc10_17.6) = splice_inst @F.%.loc10_17.5 [template]
|
||||
// CHECK:STDOUT: %.521: @F.%.loc10_17.9 (@F.%.loc10_17.9) = splice_inst @F.%.loc10_17.8 [template]
|
||||
// CHECK:STDOUT: %.eec: %i32 = splice_inst @F.%.loc10_17.11 [template]
|
||||
// CHECK:STDOUT: %.841: @F.%.loc10_17.6 (@F.%.loc10_17.6) = splice_inst @F.%.loc10_17.5 [template]
|
||||
// CHECK:STDOUT: %.cbd: @F.%.loc10_17.9 (@F.%.loc10_17.9) = splice_inst @F.%.loc10_17.8 [template]
|
||||
// CHECK:STDOUT: %.c63: %i32 = splice_inst @F.%.loc10_17.11 [template]
|
||||
// CHECK:STDOUT: %D: type = class_type @D [concrete]
|
||||
// CHECK:STDOUT: %struct_type.base.085: type = struct_type {.base: %C} [concrete]
|
||||
// CHECK:STDOUT: %complete_type.756: <witness> = complete_type_witness %struct_type.base.085 [concrete]
|
||||
@@ -391,27 +391,27 @@ fn G(d: D) -> i32 {
|
||||
// CHECK:STDOUT: %.loc10_11.4: @F.%T.loc9_16.1 (%T) = splice_inst %.loc10_11.3 [template = %.loc10_11.4 (constants.%.b3e)]
|
||||
// CHECK:STDOUT: %.loc10_11.5: <instruction> = compound_member_access_action %.loc10_11.1, %n.ref [template]
|
||||
// CHECK:STDOUT: %.loc10_11.6: type = type_of_inst %.loc10_11.5 [template]
|
||||
// CHECK:STDOUT: %.loc10_11.7: @F.%.loc10_11.6 (@F.%.loc10_11.6) = splice_inst %.loc10_11.5 [template = %.loc10_11.7 (constants.%.1a3)]
|
||||
// CHECK:STDOUT: %.loc10_11.7: @F.%.loc10_11.6 (@F.%.loc10_11.6) = splice_inst %.loc10_11.5 [template = %.loc10_11.7 (constants.%.244)]
|
||||
// CHECK:STDOUT: %.loc10_17.5: <instruction> = compound_member_access_action %.loc10_11.2, constants.%assoc0.368 [template]
|
||||
// CHECK:STDOUT: %.loc10_17.6: type = type_of_inst %.loc10_17.5 [template]
|
||||
// CHECK:STDOUT: %.loc10_17.7: @F.%.loc10_17.6 (@F.%.loc10_17.6) = splice_inst %.loc10_17.5 [template = %.loc10_17.7 (constants.%.d1c)]
|
||||
// CHECK:STDOUT: %.loc10_17.7: @F.%.loc10_17.6 (@F.%.loc10_17.6) = splice_inst %.loc10_17.5 [template = %.loc10_17.7 (constants.%.841)]
|
||||
// CHECK:STDOUT: %.loc10_17.8: <instruction> = call_action (%.loc10_17.1), true [template]
|
||||
// CHECK:STDOUT: %.loc10_17.9: type = type_of_inst %.loc10_17.8 [template]
|
||||
// CHECK:STDOUT: %.loc10_17.10: @F.%.loc10_17.9 (@F.%.loc10_17.9) = splice_inst %.loc10_17.8 [template = %.loc10_17.10 (constants.%.521)]
|
||||
// CHECK:STDOUT: %.loc10_17.10: @F.%.loc10_17.9 (@F.%.loc10_17.9) = splice_inst %.loc10_17.8 [template = %.loc10_17.10 (constants.%.cbd)]
|
||||
// CHECK:STDOUT: %.loc10_17.11: <instruction> = convert_to_category_action %.loc10_17.3, element10 [template]
|
||||
// CHECK:STDOUT: %.loc10_17.12: %i32 = splice_inst %.loc10_17.11 [template = %.loc10_17.12 (constants.%.eec)]
|
||||
// CHECK:STDOUT: %.loc10_17.12: %i32 = splice_inst %.loc10_17.11 [template = %.loc10_17.12 (constants.%.c63)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn(%x.param: @F.%T.loc9_16.1 (%T)) -> out %return.param: %i32 {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %x.ref: @F.%T.loc9_16.1 (%T) = name_ref x, %x
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %n.ref: %C.elem = name_ref n, @C.%.loc5 [concrete = @C.%.loc5]
|
||||
// CHECK:STDOUT: %n.ref: %C.elem = name_ref n, @C.%field_decl [concrete = @C.%field_decl]
|
||||
// CHECK:STDOUT: %.loc10_11.1: @F.%T.loc9_16.1 (%T) = splice_inst %.loc10_11.3 [template = %.loc10_11.4 (constants.%.b3e)]
|
||||
// CHECK:STDOUT: %.loc10_11.2: @F.%.loc10_11.6 (@F.%.loc10_11.6) = splice_inst %.loc10_11.5 [template = %.loc10_11.7 (constants.%.1a3)]
|
||||
// CHECK:STDOUT: %.loc10_17.1: @F.%.loc10_17.6 (@F.%.loc10_17.6) = splice_inst %.loc10_17.5 [template = %.loc10_17.7 (constants.%.d1c)]
|
||||
// CHECK:STDOUT: %.loc10_17.2: @F.%.loc10_17.9 (@F.%.loc10_17.9) = splice_inst %.loc10_17.8 [template = %.loc10_17.10 (constants.%.521)]
|
||||
// CHECK:STDOUT: %.loc10_17.3: %i32 = converted %.loc10_11.2, %.loc10_17.2 [template = %.loc10_17.10 (constants.%.521)]
|
||||
// CHECK:STDOUT: %.loc10_17.4: %i32 = splice_inst %.loc10_17.11 [template = %.loc10_17.12 (constants.%.eec)]
|
||||
// CHECK:STDOUT: %.loc10_11.2: @F.%.loc10_11.6 (@F.%.loc10_11.6) = splice_inst %.loc10_11.5 [template = %.loc10_11.7 (constants.%.244)]
|
||||
// CHECK:STDOUT: %.loc10_17.1: @F.%.loc10_17.6 (@F.%.loc10_17.6) = splice_inst %.loc10_17.5 [template = %.loc10_17.7 (constants.%.841)]
|
||||
// CHECK:STDOUT: %.loc10_17.2: @F.%.loc10_17.9 (@F.%.loc10_17.9) = splice_inst %.loc10_17.8 [template = %.loc10_17.10 (constants.%.cbd)]
|
||||
// CHECK:STDOUT: %.loc10_17.3: %i32 = converted %.loc10_11.2, %.loc10_17.2 [template = %.loc10_17.10 (constants.%.cbd)]
|
||||
// CHECK:STDOUT: %.loc10_17.4: %i32 = splice_inst %.loc10_17.11 [template = %.loc10_17.12 (constants.%.c63)]
|
||||
// CHECK:STDOUT: return %.loc10_17.4
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
@@ -183,13 +183,15 @@ fn F(template c: C) {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @C {
|
||||
// CHECK:STDOUT: %.loc5: %C.elem = field_decl n, element0 [concrete]
|
||||
// CHECK:STDOUT: %field_decl: %C.elem = field_decl n, element0, %i32 in [concrete] {
|
||||
// CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness constants.%struct_type.n [concrete = constants.%complete_type.cdf]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = constants.%C
|
||||
// CHECK:STDOUT: .n = %.loc5
|
||||
// CHECK:STDOUT: .n = %field_decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: generic fn @F(%c.loc11_16.2: %C) {
|
||||
|
||||
@@ -259,13 +259,15 @@ class X(U: type) {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @Param {
|
||||
// CHECK:STDOUT: %.loc9: %Param.elem = field_decl x, element0 [concrete]
|
||||
// CHECK:STDOUT: %field_decl: %Param.elem = field_decl x, element0, %i32 in [concrete] {
|
||||
// CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness constants.%struct_type.x.a15 [concrete = constants.%complete_type.0c6]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = constants.%Param
|
||||
// CHECK:STDOUT: .x = %.loc9
|
||||
// CHECK:STDOUT: .x = %field_decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @C {
|
||||
@@ -323,7 +325,7 @@ class X(U: type) {
|
||||
// CHECK:STDOUT: %.loc21_27.1: ref %Param = temporary_storage
|
||||
// CHECK:STDOUT: %C.as.HasF.impl.F.call.loc21: init %Param to %.loc21_27.1 = call %impl.elem0.loc21()
|
||||
// CHECK:STDOUT: %.loc21_27.2: ref %Param = temporary %.loc21_27.1, %C.as.HasF.impl.F.call.loc21
|
||||
// CHECK:STDOUT: %x.ref.loc21: %Param.elem = name_ref x, @Param.%.loc9 [concrete = @Param.%.loc9]
|
||||
// CHECK:STDOUT: %x.ref.loc21: %Param.elem = name_ref x, @Param.%field_decl [concrete = @Param.%field_decl]
|
||||
// CHECK:STDOUT: %.loc21_28.1: ref %i32 = class_element_access %.loc21_27.2, element0
|
||||
// CHECK:STDOUT: %.loc21_28.2: %i32 = acquire_value %.loc21_28.1
|
||||
// CHECK:STDOUT: %i32.loc21: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
@@ -339,7 +341,7 @@ class X(U: type) {
|
||||
// CHECK:STDOUT: %.loc22_27.1: ref %Param = temporary_storage
|
||||
// CHECK:STDOUT: %C.as.HasF.impl.F.call.loc22: init %Param to %.loc22_27.1 = call %impl.elem0.loc22_24()
|
||||
// CHECK:STDOUT: %.loc22_27.2: ref %Param = temporary %.loc22_27.1, %C.as.HasF.impl.F.call.loc22
|
||||
// CHECK:STDOUT: %x.ref.loc22: %Param.elem = name_ref x, @Param.%.loc9 [concrete = @Param.%.loc9]
|
||||
// CHECK:STDOUT: %x.ref.loc22: %Param.elem = name_ref x, @Param.%field_decl [concrete = @Param.%field_decl]
|
||||
// CHECK:STDOUT: %.loc22_28.1: ref %i32 = class_element_access %.loc22_27.2, element0
|
||||
// CHECK:STDOUT: %.loc22_28.2: %i32 = acquire_value %.loc22_28.1
|
||||
// CHECK:STDOUT: %impl.elem0.loc22_28: %.737 = impl_witness_access constants.%Copy.impl_witness.b51, element0 [concrete = constants.%Int.as.Copy.impl.Op.4f6]
|
||||
|
||||
+1
-1
@@ -242,7 +242,7 @@ fn TestSpecific(a: A({})*) -> {}* {
|
||||
// CHECK:STDOUT: fn(%self.param: ref @A.as.I.impl.F.%A (%A.47a1de.2)) -> out %return.param: @A.as.I.impl.F.%ptr.loc13_22.1 (%ptr.e8f8f9.2) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %self.ref: ref @A.as.I.impl.F.%A (%A.47a1de.2) = name_ref self, %self
|
||||
// CHECK:STDOUT: %n.ref: @A.as.I.impl.F.%A.elem (%A.elem.d41ac1.2) = name_ref n, @A.%.loc4 [concrete = @A.%.loc4]
|
||||
// CHECK:STDOUT: %n.ref: @A.as.I.impl.F.%A.elem (%A.elem.d41ac1.2) = name_ref n, @A.%field_decl [concrete = @A.%field_decl]
|
||||
// CHECK:STDOUT: %.loc14_17: ref @A.as.I.impl.F.%V (%V.67d) = class_element_access %self.ref, element0
|
||||
// CHECK:STDOUT: %addr: @A.as.I.impl.F.%ptr.loc13_22.1 (%ptr.e8f8f9.2) = addr_of %.loc14_17
|
||||
// CHECK:STDOUT: %impl.elem0.loc14_12.1: @A.as.I.impl.F.%.loc14_12.4 (%.be5) = impl_witness_access constants.%Copy.lookup_impl_witness.1da, element0 [symbolic = %impl.elem0.loc14_12.2 (constants.%impl.elem0.484)]
|
||||
|
||||
@@ -199,7 +199,7 @@ fn UseZ() -> Cpp.A.Z {
|
||||
// CHECK:STDOUT: %.loc10_12.1: ref %X = temporary_storage
|
||||
// CHECK:STDOUT: %F.call: init %X to %.loc10_12.1 = call %F.ref()
|
||||
// CHECK:STDOUT: %.loc10_12.2: ref %X = temporary %.loc10_12.1, %F.call
|
||||
// CHECK:STDOUT: %x.ref: %X.elem = name_ref x, @X.%.1 [concrete = @X.%.1]
|
||||
// CHECK:STDOUT: %x.ref: %X.elem = name_ref x, @X.%field_decl [concrete = @X.%field_decl]
|
||||
// CHECK:STDOUT: %.loc10_13.1: ref %i32 = class_element_access %.loc10_12.2, element0
|
||||
// CHECK:STDOUT: %.loc10_13.2: %i32 = acquire_value %.loc10_13.1
|
||||
// CHECK:STDOUT: %impl.elem0: %.737 = impl_witness_access constants.%Copy.impl_witness.b51, element0 [concrete = constants.%Int.as.Copy.impl.Op.4f6]
|
||||
@@ -319,7 +319,7 @@ fn UseZ() -> Cpp.A.Z {
|
||||
// CHECK:STDOUT: %ax.var_patt: %pattern_type.88a = var_pattern %ax.patt [concrete = constants.%ax.var_patt]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %ax.ref.loc10_11: ref %X = name_ref ax, %ax
|
||||
// CHECK:STDOUT: %x.ref: %X.elem = name_ref x, @X.%.1 [concrete = @X.%.1]
|
||||
// CHECK:STDOUT: %x.ref: %X.elem = name_ref x, @X.%field_decl [concrete = @X.%field_decl]
|
||||
// CHECK:STDOUT: %.loc10_13.1: ref %i32 = class_element_access %ax.ref.loc10_11, element0
|
||||
// CHECK:STDOUT: %ax.ref.loc10_17: ref %X = name_ref ax, %ax
|
||||
// CHECK:STDOUT: %g.ref: %X.g.cpp_overload_set.type = name_ref g, imports.%X.g.cpp_overload_set.value [concrete = constants.%X.g.cpp_overload_set.value]
|
||||
@@ -411,7 +411,7 @@ fn UseZ() -> Cpp.A.Z {
|
||||
// CHECK:STDOUT: %.loc9_12.1: ref %Y.90c = temporary_storage
|
||||
// CHECK:STDOUT: %G.call: init %Y.90c to %.loc9_12.1 = call %G.ref()
|
||||
// CHECK:STDOUT: %.loc9_12.2: ref %Y.90c = temporary %.loc9_12.1, %G.call
|
||||
// CHECK:STDOUT: %y.ref: %Y.elem.ab3 = name_ref y, @Y.1.%.1 [concrete = @Y.1.%.1]
|
||||
// CHECK:STDOUT: %y.ref: %Y.elem.ab3 = name_ref y, @Y.1.%field_decl [concrete = @Y.1.%field_decl]
|
||||
// CHECK:STDOUT: %.loc9_13.1: ref %i32 = class_element_access %.loc9_12.2, element0
|
||||
// CHECK:STDOUT: %.loc9_13.2: %i32 = acquire_value %.loc9_13.1
|
||||
// CHECK:STDOUT: %impl.elem0: %.737 = impl_witness_access constants.%Copy.impl_witness.b51, element0 [concrete = constants.%Int.as.Copy.impl.Op.4f6]
|
||||
@@ -430,7 +430,7 @@ fn UseZ() -> Cpp.A.Z {
|
||||
// CHECK:STDOUT: %.loc15_12.1: ref %Y.e8d = temporary_storage
|
||||
// CHECK:STDOUT: %H.call: init %Y.e8d to %.loc15_12.1 = call %H.ref()
|
||||
// CHECK:STDOUT: %.loc15_12.2: ref %Y.e8d = temporary %.loc15_12.1, %H.call
|
||||
// CHECK:STDOUT: %y.ref: %Y.elem.9a6 = name_ref y, @Y.2.%.1 [concrete = @Y.2.%.1]
|
||||
// CHECK:STDOUT: %y.ref: %Y.elem.9a6 = name_ref y, @Y.2.%field_decl [concrete = @Y.2.%field_decl]
|
||||
// CHECK:STDOUT: %.loc15_13.1: ref %Z = class_element_access %.loc15_12.2, element0
|
||||
// CHECK:STDOUT: %.loc15_13.2: %Z = acquire_value %.loc15_13.1
|
||||
// CHECK:STDOUT: <elided>
|
||||
|
||||
@@ -1646,7 +1646,7 @@ fn Call(var instance: Cpp.PublicPrivate) {
|
||||
// CHECK:STDOUT: fn @F(%s.param: %NonFunctionMemberPublic) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %s.ref: %NonFunctionMemberPublic = name_ref s, %s
|
||||
// CHECK:STDOUT: %instance_data.ref: %NonFunctionMemberPublic.elem = name_ref instance_data, @NonFunctionMemberPublic.%.1 [concrete = @NonFunctionMemberPublic.%.1]
|
||||
// CHECK:STDOUT: %instance_data.ref: %NonFunctionMemberPublic.elem = name_ref instance_data, @NonFunctionMemberPublic.%field_decl [concrete = @NonFunctionMemberPublic.%field_decl]
|
||||
// CHECK:STDOUT: %.loc8_36.1: ref %i32 = class_element_access %s.ref, element0
|
||||
// CHECK:STDOUT: %.loc8_36.2: %i32 = acquire_value %.loc8_36.1
|
||||
// CHECK:STDOUT: %i32.loc8: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
@@ -1691,7 +1691,7 @@ fn Call(var instance: Cpp.PublicPrivate) {
|
||||
// CHECK:STDOUT: fn @F(%d.param: %Derived) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %d.ref: %Derived = name_ref d, %d
|
||||
// CHECK:STDOUT: %instance_data.ref: %NonFunctionMemberPublic.elem = name_ref instance_data, @NonFunctionMemberPublic.%.1 [concrete = @NonFunctionMemberPublic.%.1]
|
||||
// CHECK:STDOUT: %instance_data.ref: %NonFunctionMemberPublic.elem = name_ref instance_data, @NonFunctionMemberPublic.%field_decl [concrete = @NonFunctionMemberPublic.%field_decl]
|
||||
// CHECK:STDOUT: %.loc12_36.1: %NonFunctionMemberPublic = as_compatible %d.ref
|
||||
// CHECK:STDOUT: %.loc12_36.2: ref %NonFunctionMemberPublic = class_element_access %.loc12_36.1, element0
|
||||
// CHECK:STDOUT: %.loc12_36.3: ref %NonFunctionMemberPublic = converted %d.ref, %.loc12_36.2
|
||||
@@ -1759,7 +1759,7 @@ fn Call(var instance: Cpp.PublicPrivate) {
|
||||
// CHECK:STDOUT: fn @Derived.F(%self.param: %Derived) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %self.ref: %Derived = name_ref self, %self
|
||||
// CHECK:STDOUT: %instance_data.ref: %NonFunctionMemberProtected.elem = name_ref instance_data, @NonFunctionMemberProtected.%.1 [concrete = @NonFunctionMemberProtected.%.1]
|
||||
// CHECK:STDOUT: %instance_data.ref: %NonFunctionMemberProtected.elem = name_ref instance_data, @NonFunctionMemberProtected.%field_decl [concrete = @NonFunctionMemberProtected.%field_decl]
|
||||
// CHECK:STDOUT: %.loc10_41.1: %NonFunctionMemberProtected = as_compatible %self.ref
|
||||
// CHECK:STDOUT: %.loc10_41.2: ref %NonFunctionMemberProtected = class_element_access %.loc10_41.1, element0
|
||||
// CHECK:STDOUT: %.loc10_41.3: ref %NonFunctionMemberProtected = converted %self.ref, %.loc10_41.2
|
||||
|
||||
@@ -662,7 +662,7 @@ class V {
|
||||
// CHECK:STDOUT: fn @AccessDirect(%d.param: %FieldDerived) -> out %return.param: %i32 {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %d.ref: %FieldDerived = name_ref d, %d
|
||||
// CHECK:STDOUT: %a.ref: %FieldBase.elem = name_ref a, @FieldBase.%.1 [concrete = @FieldBase.%.1]
|
||||
// CHECK:STDOUT: %a.ref: %FieldBase.elem = name_ref a, @FieldBase.%field_decl.1 [concrete = @FieldBase.%field_decl.1]
|
||||
// CHECK:STDOUT: %.loc8_11.1: %FieldBase = as_compatible %d.ref
|
||||
// CHECK:STDOUT: %.loc8_11.2: ref %FieldBase = class_element_access %.loc8_11.1, element0
|
||||
// CHECK:STDOUT: %.loc8_11.3: ref %FieldBase = converted %d.ref, %.loc8_11.2
|
||||
@@ -681,7 +681,7 @@ class V {
|
||||
// CHECK:STDOUT: %d.ref: %FieldDerived = name_ref d, %d
|
||||
// CHECK:STDOUT: %Cpp.ref.loc14: <namespace> = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp]
|
||||
// CHECK:STDOUT: %FieldBase.ref: type = name_ref FieldBase, imports.%FieldBase.decl [concrete = constants.%FieldBase]
|
||||
// CHECK:STDOUT: %b.ref: %FieldBase.elem = name_ref b, @FieldBase.%.2 [concrete = @FieldBase.%.2]
|
||||
// CHECK:STDOUT: %b.ref: %FieldBase.elem = name_ref b, @FieldBase.%field_decl.2 [concrete = @FieldBase.%field_decl.2]
|
||||
// CHECK:STDOUT: %.loc14_11.1: %FieldBase = as_compatible %d.ref
|
||||
// CHECK:STDOUT: %.loc14_11.2: ref %FieldBase = class_element_access %.loc14_11.1, element0
|
||||
// CHECK:STDOUT: %.loc14_11.3: ref %FieldBase = converted %d.ref, %.loc14_11.2
|
||||
|
||||
@@ -474,7 +474,7 @@ fn GenericUse(p2: Generic(Cpp.Class1)) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %bar.ref: %ptr.ec1 = name_ref bar, %bar
|
||||
// CHECK:STDOUT: %.loc8_47.1: ref %DataMemberBar = deref %bar.ref
|
||||
// CHECK:STDOUT: %foo.ref: %DataMemberBar.elem = name_ref foo, @DataMemberBar.%.1 [concrete = @DataMemberBar.%.1]
|
||||
// CHECK:STDOUT: %foo.ref: %DataMemberBar.elem = name_ref foo, @DataMemberBar.%field_decl [concrete = @DataMemberBar.%field_decl]
|
||||
// CHECK:STDOUT: %.loc8_47.2: ref %ptr.ec1 = class_element_access %.loc8_47.1, element0
|
||||
// CHECK:STDOUT: %.loc8_47.3: %ptr.ec1 = acquire_value %.loc8_47.2
|
||||
// CHECK:STDOUT: %.loc8_40: type = splice_block %ptr.loc8 [concrete = constants.%ptr.ec1] {
|
||||
|
||||
+10
-10
@@ -257,20 +257,20 @@ fn Test(m: Cpp.UnsupportedMembers*) {
|
||||
// CHECK:STDOUT: fn @F(%s.param: %Struct) -> out %return.param: %tuple.type.ccd {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %s.ref.loc8_11: %Struct = name_ref s, %s
|
||||
// CHECK:STDOUT: %a.ref: %Struct.elem.da9 = name_ref a, @Struct.%.1 [concrete = @Struct.%.1]
|
||||
// CHECK:STDOUT: %a.ref: %Struct.elem.da9 = name_ref a, @Struct.%field_decl.1 [concrete = @Struct.%field_decl.1]
|
||||
// CHECK:STDOUT: %.loc8_12.1: ref %i32 = class_element_access %s.ref.loc8_11, element0
|
||||
// CHECK:STDOUT: %.loc8_12.2: %i32 = acquire_value %.loc8_12.1
|
||||
// CHECK:STDOUT: %s.ref.loc8_16: %Struct = name_ref s, %s
|
||||
// CHECK:STDOUT: %b.ref: %Struct.elem.da9 = name_ref b, @Struct.%.2 [concrete = @Struct.%.2]
|
||||
// CHECK:STDOUT: %b.ref: %Struct.elem.da9 = name_ref b, @Struct.%field_decl.2 [concrete = @Struct.%field_decl.2]
|
||||
// CHECK:STDOUT: %.loc8_17.1: ref %i32 = class_element_access %s.ref.loc8_16, element1
|
||||
// CHECK:STDOUT: %.loc8_17.2: %i32 = acquire_value %.loc8_17.1
|
||||
// CHECK:STDOUT: %s.ref.loc8_22: %Struct = name_ref s, %s
|
||||
// CHECK:STDOUT: %p.ref: %Struct.elem.905 = name_ref p, @Struct.%.3 [concrete = @Struct.%.3]
|
||||
// CHECK:STDOUT: %p.ref: %Struct.elem.905 = name_ref p, @Struct.%field_decl.3 [concrete = @Struct.%field_decl.3]
|
||||
// CHECK:STDOUT: %.loc8_23.1: ref %ptr.d08 = class_element_access %s.ref.loc8_22, element2
|
||||
// CHECK:STDOUT: %.loc8_23.2: %ptr.d08 = acquire_value %.loc8_23.1
|
||||
// CHECK:STDOUT: %.loc8_21.1: ref %i32 = deref %.loc8_23.2
|
||||
// CHECK:STDOUT: %s.ref.loc8_28: %Struct = name_ref s, %s
|
||||
// CHECK:STDOUT: %q.ref: %Struct.elem.a19 = name_ref q, @Struct.%.5 [concrete = @Struct.%.5]
|
||||
// CHECK:STDOUT: %q.ref: %Struct.elem.a19 = name_ref q, @Struct.%field_decl.4 [concrete = @Struct.%field_decl.4]
|
||||
// CHECK:STDOUT: %.loc8_29.1: ref %Optional.5b3 = class_element_access %s.ref.loc8_28, element3
|
||||
// CHECK:STDOUT: %.loc8_29.2: %Optional.5b3 = acquire_value %.loc8_29.1
|
||||
// CHECK:STDOUT: %.loc8_31: %Optional.Get.type.76f = specific_constant imports.%Core.import_ref.497, @Optional(constants.%OptionalStorage.facet) [concrete = constants.%Optional.Get.d19]
|
||||
@@ -283,7 +283,7 @@ fn Test(m: Cpp.UnsupportedMembers*) {
|
||||
// CHECK:STDOUT: %.loc8_36.2: %ptr.d08 = converted %Optional.Get.call, %.loc8_36.1
|
||||
// CHECK:STDOUT: %.loc8_27.1: ref %i32 = deref %.loc8_36.2
|
||||
// CHECK:STDOUT: %s.ref.loc8_40: %Struct = name_ref s, %s
|
||||
// CHECK:STDOUT: %r.ref: %Struct.elem.6a0 = name_ref r, @Struct.%.6 [concrete = @Struct.%.6]
|
||||
// CHECK:STDOUT: %r.ref: %Struct.elem.6a0 = name_ref r, @Struct.%field_decl.5 [concrete = @Struct.%field_decl.5]
|
||||
// CHECK:STDOUT: %.loc8_41.1: ref %const.e2a = class_element_access %s.ref.loc8_40, element4
|
||||
// CHECK:STDOUT: %.loc8_41.2: %const.e2a = acquire_value %.loc8_41.1
|
||||
// CHECK:STDOUT: %.loc8_39.1: ref %i32 = deref %.loc8_41.2
|
||||
@@ -361,7 +361,7 @@ fn Test(m: Cpp.UnsupportedMembers*) {
|
||||
// CHECK:STDOUT: fn @F(%u.param: %Union) -> out %return.param: %i32 {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %u.ref: %Union = name_ref u, %u
|
||||
// CHECK:STDOUT: %a.ref: %Union.elem.291 = name_ref a, @Union.%.1 [concrete = @Union.%.1]
|
||||
// CHECK:STDOUT: %a.ref: %Union.elem.291 = name_ref a, @Union.%field_decl.1 [concrete = @Union.%field_decl.1]
|
||||
// CHECK:STDOUT: %.loc8_11.1: ref %i32 = class_element_access %u.ref, element0
|
||||
// CHECK:STDOUT: %.loc8_11.2: %i32 = acquire_value %.loc8_11.1
|
||||
// CHECK:STDOUT: %impl.elem0: %.737 = impl_witness_access constants.%Copy.impl_witness.b51, element0 [concrete = constants.%Int.as.Copy.impl.Op.4f6]
|
||||
@@ -375,7 +375,7 @@ fn Test(m: Cpp.UnsupportedMembers*) {
|
||||
// CHECK:STDOUT: fn @G(%u.param: %Union) -> out %return.param: %i32 {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %u.ref: %Union = name_ref u, %u
|
||||
// CHECK:STDOUT: %b.ref: %Union.elem.291 = name_ref b, @Union.%.2 [concrete = @Union.%.2]
|
||||
// CHECK:STDOUT: %b.ref: %Union.elem.291 = name_ref b, @Union.%field_decl.2 [concrete = @Union.%field_decl.2]
|
||||
// CHECK:STDOUT: %.loc14_11.1: ref %i32 = class_element_access %u.ref, element1
|
||||
// CHECK:STDOUT: %.loc14_11.2: %i32 = acquire_value %.loc14_11.1
|
||||
// CHECK:STDOUT: %impl.elem0: %.737 = impl_witness_access constants.%Copy.impl_witness.b51, element0 [concrete = constants.%Int.as.Copy.impl.Op.4f6]
|
||||
@@ -389,7 +389,7 @@ fn Test(m: Cpp.UnsupportedMembers*) {
|
||||
// CHECK:STDOUT: fn @H(%u.param: %Union) -> out %return.param: %i32 {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %u.ref: %Union = name_ref u, %u
|
||||
// CHECK:STDOUT: %p.ref: %Union.elem.d1f = name_ref p, @Union.%.3 [concrete = @Union.%.3]
|
||||
// CHECK:STDOUT: %p.ref: %Union.elem.d1f = name_ref p, @Union.%field_decl.3 [concrete = @Union.%field_decl.3]
|
||||
// CHECK:STDOUT: %.loc20_12.1: ref %ptr.d08 = class_element_access %u.ref, element2
|
||||
// CHECK:STDOUT: %.loc20_12.2: %ptr.d08 = acquire_value %.loc20_12.1
|
||||
// CHECK:STDOUT: %.loc20_10.1: ref %i32 = deref %.loc20_12.2
|
||||
@@ -432,7 +432,7 @@ fn Test(m: Cpp.UnsupportedMembers*) {
|
||||
// CHECK:STDOUT: fn @F(%s.param: %BitfieldStruct) -> out %return.param: %i32 {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %s.ref: %BitfieldStruct = name_ref s, %s
|
||||
// CHECK:STDOUT: %a.ref: %BitfieldStruct.elem = name_ref a, @BitfieldStruct.%.1 [concrete = @BitfieldStruct.%.1]
|
||||
// CHECK:STDOUT: %a.ref: %BitfieldStruct.elem = name_ref a, @BitfieldStruct.%field_decl [concrete = @BitfieldStruct.%field_decl]
|
||||
// CHECK:STDOUT: %.loc8_11.1: ref %i32 = class_element_access %s.ref, element0
|
||||
// CHECK:STDOUT: %.loc8_11.2: %i32 = acquire_value %.loc8_11.1
|
||||
// CHECK:STDOUT: %impl.elem0: %.737 = impl_witness_access constants.%Copy.impl_witness.b51, element0 [concrete = constants.%Int.as.Copy.impl.Op.4f6]
|
||||
@@ -446,7 +446,7 @@ fn Test(m: Cpp.UnsupportedMembers*) {
|
||||
// CHECK:STDOUT: fn @G(%s.param: %BitfieldUnion) -> out %return.param: %i32 {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %s.ref: %BitfieldUnion = name_ref s, %s
|
||||
// CHECK:STDOUT: %c.ref: %BitfieldUnion.elem = name_ref c, @BitfieldUnion.%.1 [concrete = @BitfieldUnion.%.1]
|
||||
// CHECK:STDOUT: %c.ref: %BitfieldUnion.elem = name_ref c, @BitfieldUnion.%field_decl [concrete = @BitfieldUnion.%field_decl]
|
||||
// CHECK:STDOUT: %.loc14_11.1: ref %i32 = class_element_access %s.ref, element0
|
||||
// CHECK:STDOUT: %.loc14_11.2: %i32 = acquire_value %.loc14_11.1
|
||||
// CHECK:STDOUT: %impl.elem0: %.737 = impl_witness_access constants.%Copy.impl_witness.b51, element0 [concrete = constants.%Int.as.Copy.impl.Op.4f6]
|
||||
|
||||
@@ -213,7 +213,7 @@ fn G() {
|
||||
// CHECK:STDOUT: %bound_method.loc9: <bound method> = bound_method %x.ref.loc9, %f.ref
|
||||
// CHECK:STDOUT: %f__carbon_thunk.call: init %empty_tuple.type = call imports.%f__carbon_thunk.decl(%x.ref.loc9)
|
||||
// CHECK:STDOUT: %x.ref.loc10: %A.614 = name_ref x, %x
|
||||
// CHECK:STDOUT: %n.ref: %A.elem.708 = name_ref n, @A.1.%.2 [concrete = @A.1.%.2]
|
||||
// CHECK:STDOUT: %n.ref: %A.elem.708 = name_ref n, @A.1.%field_decl [concrete = @A.1.%field_decl]
|
||||
// CHECK:STDOUT: %.loc10_11.1: ref %i32 = class_element_access %x.ref.loc10, element1
|
||||
// CHECK:STDOUT: %.loc10_11.2: %i32 = acquire_value %.loc10_11.1
|
||||
// CHECK:STDOUT: %impl.elem0: %.737 = impl_witness_access constants.%Copy.impl_witness.b51, element0 [concrete = constants.%Int.as.Copy.impl.Op.4f6]
|
||||
@@ -339,11 +339,11 @@ fn G() {
|
||||
// CHECK:STDOUT: %B.type: type = generic_class_type @B [concrete]
|
||||
// CHECK:STDOUT: %B.generic: %B.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %B.60e: type = class_type @B, @B(%T) [symbolic]
|
||||
// CHECK:STDOUT: %.ae6: @B.%.loc12_17.2 (@B.%.loc12_17.2) = splice_inst @B.%.loc12_17.1 [template]
|
||||
// CHECK:STDOUT: %.535: type = splice_inst @B.%.loc12_17.4 [template]
|
||||
// CHECK:STDOUT: %A.type: type = cpp_type_template_type A [concrete]
|
||||
// CHECK:STDOUT: %A.template: %A.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %.ae6: @B.%.loc12_17.4 (@B.%.loc12_17.4) = splice_inst @B.%.loc12_17.3 [template]
|
||||
// CHECK:STDOUT: %.535: type = splice_inst @B.%.loc12_17.6 [template]
|
||||
// CHECK:STDOUT: %require_complete.01e: <witness> = require_complete_type %.535 [template]
|
||||
// CHECK:STDOUT: %pattern_type.281: type = pattern_type %.535 [template]
|
||||
// CHECK:STDOUT: %a.patt.438: %pattern_type.281 = ref_binding_pattern a [template]
|
||||
// CHECK:STDOUT: %B.elem.7af: type = unbound_element_type %B.60e, %.535 [template]
|
||||
// CHECK:STDOUT: %struct_type.a.be9: type = struct_type {.a: %.535} [template]
|
||||
// CHECK:STDOUT: %complete_type.7ab: <witness> = complete_type_witness %struct_type.a.be9 [template]
|
||||
@@ -365,8 +365,6 @@ fn G() {
|
||||
// CHECK:STDOUT: %A.elem: type = unbound_element_type %A, %i32 [concrete]
|
||||
// CHECK:STDOUT: %.ae8: type = custom_layout_type {size=4, align=4, .t@0: %i32} [concrete]
|
||||
// CHECK:STDOUT: %complete_type.ece: <witness> = complete_type_witness %.ae8 [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.b78: type = pattern_type %A [concrete]
|
||||
// CHECK:STDOUT: %a.patt.fbf: %pattern_type.b78 = ref_binding_pattern a [concrete]
|
||||
// CHECK:STDOUT: %B.elem.1e0: type = unbound_element_type %B.bd8, %A [concrete]
|
||||
// CHECK:STDOUT: %struct_type.a.b63: type = struct_type {.a: %A} [concrete]
|
||||
// CHECK:STDOUT: %complete_type.594: <witness> = complete_type_witness %struct_type.a.b63 [concrete]
|
||||
@@ -388,6 +386,11 @@ fn G() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
// CHECK:STDOUT: %Cpp: <namespace> = namespace file.%Cpp.import_cpp, [concrete] {
|
||||
// CHECK:STDOUT: .A = %A.template
|
||||
// CHECK:STDOUT: import Cpp//...
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %A.template: %A.type = struct_value () [concrete = constants.%A.template]
|
||||
// CHECK:STDOUT: %A.decl: type = class_decl @A [concrete = constants.%A] {} {}
|
||||
// CHECK:STDOUT: %Core.import_ref.edf: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.e74) = import_ref Core//prelude/parts/int, loc{{\d+_\d+}}, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.845)]
|
||||
// CHECK:STDOUT: %ImplicitAs.impl_witness_table.1aa = impl_witness_table (%Core.import_ref.edf), @Core.IntLiteral.as.ImplicitAs.impl [concrete]
|
||||
@@ -422,37 +425,41 @@ fn G() {
|
||||
// CHECK:STDOUT: %T.loc11_10.1: type = symbolic_binding T, 0 [symbolic = %T.loc11_10.1 (constants.%T)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %.loc12_17.1: <instruction> = call_template_action clang_decl_id4C000002, (%T.loc11_10.1) [template]
|
||||
// CHECK:STDOUT: %.loc12_17.2: type = type_of_inst %.loc12_17.1 [template]
|
||||
// CHECK:STDOUT: %.loc12_17.3: @B.%.loc12_17.2 (@B.%.loc12_17.2) = splice_inst %.loc12_17.1 [template = %.loc12_17.3 (constants.%.ae6)]
|
||||
// CHECK:STDOUT: %.loc12_17.4: <instruction> = convert_to_value_action <unexpected>.inst{{[0-9A-F]+}}.loc12_17, type [template]
|
||||
// CHECK:STDOUT: %.loc12_17.5: type = splice_inst %.loc12_17.4 [template = %.loc12_17.5 (constants.%.535)]
|
||||
// CHECK:STDOUT: %require_complete: <witness> = require_complete_type %.loc12_17.5 [template = %require_complete (constants.%require_complete.01e)]
|
||||
// CHECK:STDOUT: %pattern_type: type = pattern_type %.loc12_17.5 [template = %pattern_type (constants.%pattern_type.281)]
|
||||
// CHECK:STDOUT: %a.patt: @B.%pattern_type (%pattern_type.281) = ref_binding_pattern a [template = %a.patt (constants.%a.patt.438)]
|
||||
// CHECK:STDOUT: %.loc12_17.3: <instruction> = call_template_action clang_decl_id4C000002, (%T.loc11_10.1) [template]
|
||||
// CHECK:STDOUT: %.loc12_17.4: type = type_of_inst %.loc12_17.3 [template]
|
||||
// CHECK:STDOUT: %.loc12_17.5: @B.%.loc12_17.4 (@B.%.loc12_17.4) = splice_inst %.loc12_17.3 [template = %.loc12_17.5 (constants.%.ae6)]
|
||||
// CHECK:STDOUT: %.loc12_17.6: <instruction> = convert_to_value_action %.loc12_17.1, type [template]
|
||||
// CHECK:STDOUT: %.loc12_17.7: type = splice_inst %.loc12_17.6 [template = %.loc12_17.7 (constants.%.535)]
|
||||
// CHECK:STDOUT: %require_complete: <witness> = require_complete_type %.loc12_17.7 [template = %require_complete (constants.%require_complete.01e)]
|
||||
// CHECK:STDOUT: %B: type = class_type @B, @B(%T.loc11_10.1) [symbolic = %B (constants.%B.60e)]
|
||||
// CHECK:STDOUT: %B.elem: type = unbound_element_type %B, %.loc12_17.5 [template = %B.elem (constants.%B.elem.7af)]
|
||||
// CHECK:STDOUT: %struct_type.a: type = struct_type {.a: @B.%.loc12_17.5 (%.535)} [template = %struct_type.a (constants.%struct_type.a.be9)]
|
||||
// CHECK:STDOUT: %B.elem: type = unbound_element_type %B, %.loc12_17.7 [template = %B.elem (constants.%B.elem.7af)]
|
||||
// CHECK:STDOUT: %struct_type.a: type = struct_type {.a: @B.%.loc12_17.7 (%.535)} [template = %struct_type.a (constants.%struct_type.a.be9)]
|
||||
// CHECK:STDOUT: %complete_type.loc13_1.2: <witness> = complete_type_witness %struct_type.a [template = %complete_type.loc13_1.2 (constants.%complete_type.7ab)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class {
|
||||
// CHECK:STDOUT: %.loc12_8: @B.%B.elem (%B.elem.7af) = field_decl a, element0 [concrete]
|
||||
// CHECK:STDOUT: %field_decl: @B.%B.elem (%B.elem.7af) = field_decl a, element0, %.loc12_17.2 in [concrete] {
|
||||
// CHECK:STDOUT: %Cpp.ref: <namespace> = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp]
|
||||
// CHECK:STDOUT: %A.ref: %A.type = name_ref A, imports.%A.template [concrete = constants.%A.template]
|
||||
// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc11_10.2 [symbolic = %T.loc11_10.1 (constants.%T)]
|
||||
// CHECK:STDOUT: %.loc12_17.1: @B.%.loc12_17.4 (@B.%.loc12_17.4) = splice_inst %.loc12_17.3 [template = %.loc12_17.5 (constants.%.ae6)]
|
||||
// CHECK:STDOUT: %.loc12_17.2: type = splice_inst %.loc12_17.6 [template = %.loc12_17.7 (constants.%.535)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %complete_type.loc13_1.1: <witness> = complete_type_witness constants.%struct_type.a.be9 [template = %complete_type.loc13_1.2 (constants.%complete_type.7ab)]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type.loc13_1.1
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = constants.%B.60e
|
||||
// CHECK:STDOUT: .T = <poisoned>
|
||||
// CHECK:STDOUT: .a = %.loc12_8
|
||||
// CHECK:STDOUT: .a = %field_decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @F(%b.param: ref %B.bd8) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %b.ref: ref %B.bd8 = name_ref b, %b
|
||||
// CHECK:STDOUT: %a.ref: %B.elem.1e0 = name_ref a, @B.%.loc12_8 [concrete = @B.%.loc12_8]
|
||||
// CHECK:STDOUT: %a.ref: %B.elem.1e0 = name_ref a, @B.%field_decl [concrete = @B.%field_decl]
|
||||
// CHECK:STDOUT: %.loc16_4: ref %A = class_element_access %b.ref, element0
|
||||
// CHECK:STDOUT: %t.ref: %A.elem = name_ref t, @A.%.1 [concrete = @A.%.1]
|
||||
// CHECK:STDOUT: %t.ref: %A.elem = name_ref t, @A.%field_decl [concrete = @A.%field_decl]
|
||||
// CHECK:STDOUT: %.loc16_6: ref %i32 = class_element_access %.loc16_4, element0
|
||||
// CHECK:STDOUT: %int_123: Core.IntLiteral = int_value 123 [concrete = constants.%int_123.fff]
|
||||
// CHECK:STDOUT: %impl.elem0: %.b7a = impl_witness_access constants.%ImplicitAs.impl_witness.a2a, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e39]
|
||||
@@ -475,14 +482,12 @@ fn G() {
|
||||
// CHECK:STDOUT: %T.loc11_10.1 => constants.%i32
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %.loc12_17.1 => constants.%inst.splice_block.72d
|
||||
// CHECK:STDOUT: %.loc12_17.2 => type
|
||||
// CHECK:STDOUT: %.loc12_17.3 => constants.%A
|
||||
// CHECK:STDOUT: %.loc12_17.4 => constants.%inst.splice_block.c26
|
||||
// CHECK:STDOUT: %.loc12_17.3 => constants.%inst.splice_block.72d
|
||||
// CHECK:STDOUT: %.loc12_17.4 => type
|
||||
// CHECK:STDOUT: %.loc12_17.5 => constants.%A
|
||||
// CHECK:STDOUT: %.loc12_17.6 => constants.%inst.splice_block.c26
|
||||
// CHECK:STDOUT: %.loc12_17.7 => constants.%A
|
||||
// CHECK:STDOUT: %require_complete => constants.%complete_type.ece
|
||||
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.b78
|
||||
// CHECK:STDOUT: %a.patt => constants.%a.patt.fbf
|
||||
// CHECK:STDOUT: %B => constants.%B.bd8
|
||||
// CHECK:STDOUT: %B.elem => constants.%B.elem.1e0
|
||||
// CHECK:STDOUT: %struct_type.a => constants.%struct_type.a.b63
|
||||
|
||||
@@ -395,7 +395,7 @@ fn MyF(bar: Cpp.TemplateBar(Cpp.X)*);
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %bar.ref: %ptr.ec1 = name_ref bar, %bar
|
||||
// CHECK:STDOUT: %.loc8_47.1: ref %DataMemberBar = deref %bar.ref
|
||||
// CHECK:STDOUT: %foo.ref: %DataMemberBar.elem = name_ref foo, @DataMemberBar.%.1 [concrete = @DataMemberBar.%.1]
|
||||
// CHECK:STDOUT: %foo.ref: %DataMemberBar.elem = name_ref foo, @DataMemberBar.%field_decl [concrete = @DataMemberBar.%field_decl]
|
||||
// CHECK:STDOUT: %.loc8_47.2: ref %ptr.ec1 = class_element_access %.loc8_47.1, element0
|
||||
// CHECK:STDOUT: %.loc8_47.3: %ptr.ec1 = acquire_value %.loc8_47.2
|
||||
// CHECK:STDOUT: %.loc8_40: type = splice_block %ptr.loc8 [concrete = constants.%ptr.ec1] {
|
||||
|
||||
@@ -251,7 +251,7 @@ let a: array(i32, F()) = (1, 2, 3);
|
||||
// CHECK:STDOUT: %c.patt: %pattern_type.3cc = value_binding_pattern c [concrete = constants.%c.patt]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %c.ref: %ConstexprC = name_ref c, %c
|
||||
// CHECK:STDOUT: %a.ref: %ConstexprC.elem = name_ref a, @ConstexprC.%.1 [concrete = @ConstexprC.%.1]
|
||||
// CHECK:STDOUT: %a.ref: %ConstexprC.elem = name_ref a, @ConstexprC.%field_decl [concrete = @ConstexprC.%field_decl]
|
||||
// CHECK:STDOUT: %.loc20_11.1: ref %i32 = class_element_access %c.ref, element0
|
||||
// CHECK:STDOUT: %.loc20_11.2: %i32 = acquire_value %.loc20_11.1
|
||||
// CHECK:STDOUT: %impl.elem0.loc20: %.737 = impl_witness_access constants.%Copy.impl_witness.b51, element0 [concrete = constants.%Int.as.Copy.impl.Op.4f6]
|
||||
|
||||
@@ -2224,9 +2224,9 @@ let _: C(1) = {} as C(Cpp.COUNT);
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %Cpp.ref: <namespace> = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp]
|
||||
// CHECK:STDOUT: <elided>
|
||||
// CHECK:STDOUT: %b.ref: %SubA.elem = name_ref b, @SubA.%.1 [concrete = @SubA.%.1]
|
||||
// CHECK:STDOUT: %b.ref: %SubA.elem = name_ref b, @SubA.%field_decl [concrete = @SubA.%field_decl]
|
||||
// CHECK:STDOUT: %.loc17_6.1: ref %SubB = class_element_access imports.%a_obj.var, element0 [concrete = constants.%.d13]
|
||||
// CHECK:STDOUT: %c.ref: %SubB.elem = name_ref c, @SubB.%.1 [concrete = @SubB.%.1]
|
||||
// CHECK:STDOUT: %c.ref: %SubB.elem = name_ref c, @SubB.%field_decl [concrete = @SubB.%field_decl]
|
||||
// CHECK:STDOUT: %.loc17_6.2: ref %i32 = class_element_access %.loc17_6.1, element0 [concrete = constants.%.010]
|
||||
// CHECK:STDOUT: %m.ref: ref %i32 = name_ref m, constants.%.010 [concrete = constants.%.010]
|
||||
// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc]
|
||||
|
||||
@@ -93,7 +93,7 @@ fn Test() {
|
||||
// CHECK:STDOUT: %ImplicitAs.facet.1d0: %ImplicitAs.type.914 = facet_value %X, (%ImplicitAs.impl_witness.e7c) [concrete]
|
||||
// CHECK:STDOUT: %ImplicitAs.WithSelf.Convert.type.1f0: type = fn_type @ImplicitAs.WithSelf.Convert, @ImplicitAs.WithSelf(%i32, %ImplicitAs.facet.1d0) [concrete]
|
||||
// CHECK:STDOUT: %n.param_patt: %pattern_type.6b6 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %n.patt.ae8: %pattern_type.6b6 = wrapper_binding_pattern n, %n.param_patt [concrete]
|
||||
// CHECK:STDOUT: %n.patt: %pattern_type.6b6 = wrapper_binding_pattern n, %n.param_patt [concrete]
|
||||
// CHECK:STDOUT: %Sink_i32.type: type = fn_type @Sink_i32 [concrete]
|
||||
// CHECK:STDOUT: %Sink_i32: %Sink_i32.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %x.param_patt: %pattern_type.6cb = value_param_pattern [concrete]
|
||||
@@ -167,7 +167,7 @@ fn Test() {
|
||||
// CHECK:STDOUT: %.loc23: <witness> = impl_self_witness @X.as.ImplicitAs.impl.%X.ref, @ImplicitAs, @ImplicitAs(constants.%i32) [concrete = constants.%.516]
|
||||
// CHECK:STDOUT: %Sink_i32.decl: %Sink_i32.type = fn_decl @Sink_i32 [concrete = constants.%Sink_i32] {
|
||||
// CHECK:STDOUT: %n.param_patt: %pattern_type.6b6 = value_param_pattern [concrete = constants.%n.param_patt]
|
||||
// CHECK:STDOUT: %n.patt: %pattern_type.6b6 = wrapper_binding_pattern n, %n.param_patt [concrete = constants.%n.patt.ae8]
|
||||
// CHECK:STDOUT: %n.patt: %pattern_type.6b6 = wrapper_binding_pattern n, %n.param_patt [concrete = constants.%n.patt]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %n.param: %i32 = value_param call_param0
|
||||
// CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
@@ -250,13 +250,15 @@ fn Test() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @X {
|
||||
// CHECK:STDOUT: %.loc16: %X.elem = field_decl n, element0 [concrete]
|
||||
// CHECK:STDOUT: %field_decl: %X.elem = field_decl n, element0, %i32 in [concrete] {
|
||||
// CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness constants.%struct_type.n [concrete = constants.%complete_type.cdf]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = constants.%X
|
||||
// CHECK:STDOUT: .n = %.loc16
|
||||
// CHECK:STDOUT: .n = %field_decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @i32.as.ImplicitAs.impl.Convert(%self.param: %i32) -> out %return.param: %X {
|
||||
@@ -278,7 +280,7 @@ fn Test() {
|
||||
// CHECK:STDOUT: fn @X.as.ImplicitAs.impl.Convert(%self.param: %X) -> out %return.param: %i32 {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %self.ref: %X = name_ref self, %self
|
||||
// CHECK:STDOUT: %n.ref: %X.elem = name_ref n, @X.%.loc16 [concrete = @X.%.loc16]
|
||||
// CHECK:STDOUT: %n.ref: %X.elem = name_ref n, @X.%field_decl [concrete = @X.%field_decl]
|
||||
// CHECK:STDOUT: %.loc24_43.1: ref %i32 = class_element_access %self.ref, element0
|
||||
// CHECK:STDOUT: %.loc24_43.2: %i32 = acquire_value %.loc24_43.1
|
||||
// CHECK:STDOUT: %impl.elem0: %.737 = impl_witness_access constants.%Copy.impl_witness.b51, element0 [concrete = constants.%Int.as.Copy.impl.Op.4f6]
|
||||
|
||||
+28
-24
@@ -201,6 +201,7 @@ alias C = Other.C;
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %C: type = class_type @C [concrete]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete]
|
||||
// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete]
|
||||
// CHECK:STDOUT: %C.elem: type = unbound_element_type %C, %empty_tuple.type [concrete]
|
||||
// CHECK:STDOUT: %struct_type.x: type = struct_type {.x: %empty_tuple.type} [concrete]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %struct_type.x [concrete]
|
||||
@@ -214,13 +215,16 @@ alias C = Other.C;
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @C {
|
||||
// CHECK:STDOUT: %.loc5: %C.elem = field_decl x, element0 [concrete]
|
||||
// CHECK:STDOUT: %field_decl: %C.elem = field_decl x, element0, %.loc5_11.2 in [concrete] {
|
||||
// CHECK:STDOUT: %.loc5_11.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple]
|
||||
// CHECK:STDOUT: %.loc5_11.2: type = converted %.loc5_11.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness constants.%struct_type.x [concrete = constants.%complete_type]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = constants.%C
|
||||
// CHECK:STDOUT: .x = %.loc5
|
||||
// CHECK:STDOUT: .x = %field_decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: --- conflict.carbon
|
||||
@@ -294,7 +298,7 @@ alias C = Other.C;
|
||||
// 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.0cc = import_ref Other//base, inst{{[0-9A-F]+}} [no loc], unloaded
|
||||
// CHECK:STDOUT: %Other.import_ref.d54 = import_ref Other//base, loc5_8, unloaded
|
||||
// CHECK:STDOUT: %Other.import_ref.d09 = import_ref Other//base, loc5_8, unloaded
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -310,7 +314,7 @@ alias C = Other.C;
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Other.import_ref.0cc
|
||||
// CHECK:STDOUT: .x = imports.%Other.import_ref.d54
|
||||
// CHECK:STDOUT: .x = imports.%Other.import_ref.d09
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: --- export_name_copy.carbon
|
||||
@@ -326,7 +330,7 @@ alias C = Other.C;
|
||||
// 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.0cc = import_ref Other//base, inst{{[0-9A-F]+}} [no loc], unloaded
|
||||
// CHECK:STDOUT: %Other.import_ref.d54 = import_ref Other//base, loc5_8, unloaded
|
||||
// CHECK:STDOUT: %Other.import_ref.d09 = import_ref Other//base, loc5_8, unloaded
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -342,7 +346,7 @@ alias C = Other.C;
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Other.import_ref.0cc
|
||||
// CHECK:STDOUT: .x = imports.%Other.import_ref.d54
|
||||
// CHECK:STDOUT: .x = imports.%Other.import_ref.d09
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: --- export_name_indirect.carbon
|
||||
@@ -358,7 +362,7 @@ alias C = Other.C;
|
||||
// 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, inst{{[0-9A-F]+}} [indirect], loaded [concrete = constants.%complete_type]
|
||||
// CHECK:STDOUT: %Other.import_ref.4fa = import_ref Other//export_name, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: %Other.import_ref.625 = import_ref Other//export_name, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: %Other.import_ref.82f = import_ref Other//export_name, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -374,7 +378,7 @@ alias C = Other.C;
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Other.import_ref.4fa
|
||||
// CHECK:STDOUT: .x = imports.%Other.import_ref.625
|
||||
// CHECK:STDOUT: .x = imports.%Other.import_ref.82f
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: --- use_export_import.carbon
|
||||
@@ -402,7 +406,7 @@ alias C = Other.C;
|
||||
// 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.0cc = import_ref Other//base, inst{{[0-9A-F]+}} [no loc], unloaded
|
||||
// CHECK:STDOUT: %Other.import_ref.d54 = import_ref Other//base, loc5_8, unloaded
|
||||
// CHECK:STDOUT: %Other.import_ref.d09 = import_ref Other//base, loc5_8, unloaded
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -428,7 +432,7 @@ alias C = Other.C;
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Other.import_ref.0cc
|
||||
// CHECK:STDOUT: .x = imports.%Other.import_ref.d54
|
||||
// CHECK:STDOUT: .x = imports.%Other.import_ref.d09
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @__global_init() {
|
||||
@@ -471,7 +475,7 @@ alias C = Other.C;
|
||||
// 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.0cc = import_ref Other//base, inst{{[0-9A-F]+}} [no loc], unloaded
|
||||
// CHECK:STDOUT: %Other.import_ref.d54 = import_ref Other//base, loc5_8, unloaded
|
||||
// CHECK:STDOUT: %Other.import_ref.d09 = import_ref Other//base, loc5_8, unloaded
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -497,7 +501,7 @@ alias C = Other.C;
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Other.import_ref.0cc
|
||||
// CHECK:STDOUT: .x = imports.%Other.import_ref.d54
|
||||
// CHECK:STDOUT: .x = imports.%Other.import_ref.d09
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @__global_init() {
|
||||
@@ -540,7 +544,7 @@ alias C = Other.C;
|
||||
// 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.0cc = import_ref Other//base, inst{{[0-9A-F]+}} [no loc], unloaded
|
||||
// CHECK:STDOUT: %Other.import_ref.d54 = import_ref Other//base, loc5_8, unloaded
|
||||
// CHECK:STDOUT: %Other.import_ref.d09 = import_ref Other//base, loc5_8, unloaded
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -566,7 +570,7 @@ alias C = Other.C;
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Other.import_ref.0cc
|
||||
// CHECK:STDOUT: .x = imports.%Other.import_ref.d54
|
||||
// CHECK:STDOUT: .x = imports.%Other.import_ref.d09
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @__global_init() {
|
||||
@@ -607,7 +611,7 @@ alias C = Other.C;
|
||||
// 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, inst{{[0-9A-F]+}} [indirect], loaded [concrete = constants.%complete_type]
|
||||
// CHECK:STDOUT: %Other.import_ref.4fa = import_ref Other//export_name, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: %Other.import_ref.625 = import_ref Other//export_name, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: %Other.import_ref.82f = import_ref Other//export_name, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -633,7 +637,7 @@ alias C = Other.C;
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Other.import_ref.4fa
|
||||
// CHECK:STDOUT: .x = imports.%Other.import_ref.625
|
||||
// CHECK:STDOUT: .x = imports.%Other.import_ref.82f
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @__global_init() {
|
||||
@@ -675,7 +679,7 @@ alias C = Other.C;
|
||||
// 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, inst{{[0-9A-F]+}} [indirect], loaded [concrete = constants.%complete_type]
|
||||
// CHECK:STDOUT: %Other.import_ref.4fa = import_ref Other//export_name, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: %Other.import_ref.625 = import_ref Other//export_name, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: %Other.import_ref.82f = import_ref Other//export_name, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -701,7 +705,7 @@ alias C = Other.C;
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Other.import_ref.4fa
|
||||
// CHECK:STDOUT: .x = imports.%Other.import_ref.625
|
||||
// CHECK:STDOUT: .x = imports.%Other.import_ref.82f
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @__global_init() {
|
||||
@@ -742,7 +746,7 @@ alias C = Other.C;
|
||||
// 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, inst{{[0-9A-F]+}} [indirect], loaded [concrete = constants.%complete_type]
|
||||
// CHECK:STDOUT: %Other.import_ref.b97 = import_ref Other//export_name_indirect, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: %Other.import_ref.197 = import_ref Other//export_name_indirect, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: %Other.import_ref.de6 = import_ref Other//export_name_indirect, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -768,7 +772,7 @@ alias C = Other.C;
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Other.import_ref.b97
|
||||
// CHECK:STDOUT: .x = imports.%Other.import_ref.197
|
||||
// CHECK:STDOUT: .x = imports.%Other.import_ref.de6
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @__global_init() {
|
||||
@@ -815,7 +819,7 @@ alias C = Other.C;
|
||||
// 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, inst{{[0-9A-F]+}} [indirect], loaded [concrete = constants.%complete_type]
|
||||
// CHECK:STDOUT: %Other.import_ref.4fa = import_ref Other//export_name, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: %Other.import_ref.625 = import_ref Other//export_name, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: %Other.import_ref.82f = import_ref Other//export_name, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -841,7 +845,7 @@ alias C = Other.C;
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Other.import_ref.4fa
|
||||
// CHECK:STDOUT: .x = imports.%Other.import_ref.625
|
||||
// CHECK:STDOUT: .x = imports.%Other.import_ref.82f
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @__global_init() {
|
||||
@@ -939,7 +943,7 @@ alias C = Other.C;
|
||||
// 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, inst{{[0-9A-F]+}} [indirect], loaded [concrete = constants.%complete_type]
|
||||
// CHECK:STDOUT: %Other.import_ref.4fa = import_ref Other//export_name, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: %Other.import_ref.625 = import_ref Other//export_name, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: %Other.import_ref.82f = import_ref Other//export_name, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -958,6 +962,6 @@ alias C = Other.C;
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Other.import_ref.4fa
|
||||
// CHECK:STDOUT: .x = imports.%Other.import_ref.625
|
||||
// CHECK:STDOUT: .x = imports.%Other.import_ref.82f
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
+26
-22
@@ -195,6 +195,7 @@ export Poison;
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %C: type = class_type @C [concrete]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete]
|
||||
// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete]
|
||||
// CHECK:STDOUT: %C.elem: type = unbound_element_type %C, %empty_tuple.type [concrete]
|
||||
// CHECK:STDOUT: %struct_type.x: type = struct_type {.x: %empty_tuple.type} [concrete]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %struct_type.x [concrete]
|
||||
@@ -208,13 +209,16 @@ export Poison;
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @C {
|
||||
// CHECK:STDOUT: %.loc5: %C.elem = field_decl x, element0 [concrete]
|
||||
// CHECK:STDOUT: %field_decl: %C.elem = field_decl x, element0, %.loc5_11.2 in [concrete] {
|
||||
// CHECK:STDOUT: %.loc5_11.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple]
|
||||
// CHECK:STDOUT: %.loc5_11.2: type = converted %.loc5_11.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness constants.%struct_type.x [concrete = constants.%complete_type]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = constants.%C
|
||||
// CHECK:STDOUT: .x = %.loc5
|
||||
// CHECK:STDOUT: .x = %field_decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: --- export.carbon
|
||||
@@ -308,7 +312,7 @@ export Poison;
|
||||
// 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.e47 = import_ref Main//base, inst{{[0-9A-F]+}} [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.c69 = import_ref Main//base, loc5_8, unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.14f = import_ref Main//base, loc5_8, unloaded
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -331,7 +335,7 @@ export Poison;
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Main.import_ref.e47
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.c69
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.14f
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @__global_init() {
|
||||
@@ -370,7 +374,7 @@ export Poison;
|
||||
// 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.e47 = import_ref Main//base, inst{{[0-9A-F]+}} [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.c69 = import_ref Main//base, loc5_8, unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.14f = import_ref Main//base, loc5_8, unloaded
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -394,7 +398,7 @@ export Poison;
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Main.import_ref.e47
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.c69
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.14f
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @__global_init() {
|
||||
@@ -431,7 +435,7 @@ export Poison;
|
||||
// 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.e47 = import_ref Main//base, inst{{[0-9A-F]+}} [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.c69 = import_ref Main//base, loc5_8, unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.14f = import_ref Main//base, loc5_8, unloaded
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -454,7 +458,7 @@ export Poison;
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Main.import_ref.e47
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.c69
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.14f
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @__global_init() {
|
||||
@@ -491,7 +495,7 @@ export Poison;
|
||||
// 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.e47 = import_ref Main//base, inst{{[0-9A-F]+}} [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.c69 = import_ref Main//base, loc5_8, unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.14f = import_ref Main//base, loc5_8, unloaded
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -514,7 +518,7 @@ export Poison;
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Main.import_ref.e47
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.c69
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.14f
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @__global_init() {
|
||||
@@ -551,7 +555,7 @@ export Poison;
|
||||
// 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.e47 = import_ref Main//base, inst{{[0-9A-F]+}} [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.c69 = import_ref Main//base, loc5_8, unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.14f = import_ref Main//base, loc5_8, unloaded
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -574,7 +578,7 @@ export Poison;
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Main.import_ref.e47
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.c69
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.14f
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @__global_init() {
|
||||
@@ -611,7 +615,7 @@ export Poison;
|
||||
// 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.e47 = import_ref Main//base, inst{{[0-9A-F]+}} [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.c69 = import_ref Main//base, loc5_8, unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.14f = import_ref Main//base, loc5_8, unloaded
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -634,7 +638,7 @@ export Poison;
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Main.import_ref.e47
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.c69
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.14f
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @__global_init() {
|
||||
@@ -671,7 +675,7 @@ export Poison;
|
||||
// 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.e47 = import_ref Main//base, inst{{[0-9A-F]+}} [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.c69 = import_ref Main//base, loc5_8, unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.14f = import_ref Main//base, loc5_8, unloaded
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -694,7 +698,7 @@ export Poison;
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Main.import_ref.e47
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.c69
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.14f
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @__global_init() {
|
||||
@@ -731,7 +735,7 @@ export Poison;
|
||||
// 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.e47 = import_ref Main//base, inst{{[0-9A-F]+}} [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.c69 = import_ref Main//base, loc5_8, unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.14f = import_ref Main//base, loc5_8, unloaded
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -754,7 +758,7 @@ export Poison;
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Main.import_ref.e47
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.c69
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.14f
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @__global_init() {
|
||||
@@ -803,7 +807,7 @@ export Poison;
|
||||
// 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.e47 = import_ref Main//base, inst{{[0-9A-F]+}} [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.c69 = import_ref Main//base, loc5_8, unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.14f = import_ref Main//base, loc5_8, unloaded
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -826,7 +830,7 @@ export Poison;
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Main.import_ref.e47
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.c69
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.14f
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @__global_init() {
|
||||
@@ -864,7 +868,7 @@ export Poison;
|
||||
// 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.e47 = import_ref Main//base, inst{{[0-9A-F]+}} [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.c69 = import_ref Main//base, loc5_8, unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.14f = import_ref Main//base, loc5_8, unloaded
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -888,7 +892,7 @@ export Poison;
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Main.import_ref.e47
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.c69
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.14f
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @__global_init() {
|
||||
|
||||
+27
-20
@@ -123,6 +123,7 @@ var d: D = {.y = ()};
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %C: type = class_type @C [concrete]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete]
|
||||
// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete]
|
||||
// CHECK:STDOUT: %C.elem: type = unbound_element_type %C, %empty_tuple.type [concrete]
|
||||
// CHECK:STDOUT: %struct_type.x: type = struct_type {.x: %empty_tuple.type} [concrete]
|
||||
// CHECK:STDOUT: %complete_type.9be: <witness> = complete_type_witness %struct_type.x [concrete]
|
||||
@@ -142,23 +143,29 @@ var d: D = {.y = ()};
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @C {
|
||||
// CHECK:STDOUT: %.loc5: %C.elem = field_decl x, element0 [concrete]
|
||||
// CHECK:STDOUT: %field_decl: %C.elem = field_decl x, element0, %.loc5_11.2 in [concrete] {
|
||||
// CHECK:STDOUT: %.loc5_11.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple]
|
||||
// CHECK:STDOUT: %.loc5_11.2: type = converted %.loc5_11.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness constants.%struct_type.x [concrete = constants.%complete_type.9be]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = constants.%C
|
||||
// CHECK:STDOUT: .x = %.loc5
|
||||
// CHECK:STDOUT: .x = %field_decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @D {
|
||||
// CHECK:STDOUT: %.loc9: %D.elem = field_decl y, element0 [concrete]
|
||||
// CHECK:STDOUT: %field_decl: %D.elem = field_decl y, element0, %.loc9_11.2 in [concrete] {
|
||||
// CHECK:STDOUT: %.loc9_11.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple]
|
||||
// CHECK:STDOUT: %.loc9_11.2: type = converted %.loc9_11.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness constants.%struct_type.y [concrete = constants.%complete_type.9f4]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = constants.%D
|
||||
// CHECK:STDOUT: .y = %.loc9
|
||||
// CHECK:STDOUT: .y = %field_decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: --- export_import.carbon
|
||||
@@ -190,7 +197,7 @@ var d: D = {.y = ()};
|
||||
// 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.e47 = import_ref Main//base, inst{{[0-9A-F]+}} [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.c69 = import_ref Main//base, loc5_8, unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.14f = import_ref Main//base, loc5_8, unloaded
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -207,7 +214,7 @@ var d: D = {.y = ()};
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Main.import_ref.e47
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.c69
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.14f
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: --- export_name.carbon
|
||||
@@ -224,7 +231,7 @@ var d: D = {.y = ()};
|
||||
// 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.e47 = import_ref Main//base, inst{{[0-9A-F]+}} [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.c69 = import_ref Main//base, loc5_8, unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.14f = import_ref Main//base, loc5_8, unloaded
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -241,7 +248,7 @@ var d: D = {.y = ()};
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Main.import_ref.e47
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.c69
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.14f
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: --- export_name_then_import.carbon
|
||||
@@ -277,7 +284,7 @@ var d: D = {.y = ()};
|
||||
// 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, inst{{[0-9A-F]+}} [indirect], loaded [concrete = constants.%complete_type]
|
||||
// CHECK:STDOUT: %Main.import_ref.0a8 = import_ref Main//export_import_then_name, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.1ec = import_ref Main//export_import_then_name, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.b7f = import_ref Main//export_import_then_name, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -300,7 +307,7 @@ var d: D = {.y = ()};
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Main.import_ref.0a8
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.1ec
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.b7f
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @__global_init() {
|
||||
@@ -337,7 +344,7 @@ var d: D = {.y = ()};
|
||||
// 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, inst{{[0-9A-F]+}} [indirect], loaded [concrete = constants.%complete_type]
|
||||
// CHECK:STDOUT: %Main.import_ref.0a8 = import_ref Main//export_name, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.1ec = import_ref Main//export_name, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.b7f = import_ref Main//export_name, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -360,7 +367,7 @@ var d: D = {.y = ()};
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Main.import_ref.0a8
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.1ec
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.b7f
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @__global_init() {
|
||||
@@ -397,7 +404,7 @@ var d: D = {.y = ()};
|
||||
// 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, inst{{[0-9A-F]+}} [indirect], loaded [concrete = constants.%complete_type]
|
||||
// CHECK:STDOUT: %Main.import_ref.0a8 = import_ref Main//export_import_then_name, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.1ec = import_ref Main//export_import_then_name, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.b7f = import_ref Main//export_import_then_name, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -420,7 +427,7 @@ var d: D = {.y = ()};
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Main.import_ref.0a8
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.1ec
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.b7f
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @__global_init() {
|
||||
@@ -494,7 +501,7 @@ var d: D = {.y = ()};
|
||||
// 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, inst{{[0-9A-F]+}} [indirect], loaded [concrete = constants.%complete_type]
|
||||
// CHECK:STDOUT: %Main.import_ref.0a8 = import_ref Main//export_import_then_name, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.1ec = import_ref Main//export_import_then_name, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.b7f = import_ref Main//export_import_then_name, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -517,7 +524,7 @@ var d: D = {.y = ()};
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Main.import_ref.0a8
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.1ec
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.b7f
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @__global_init() {
|
||||
@@ -564,10 +571,10 @@ var d: D = {.y = ()};
|
||||
// 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, inst{{[0-9A-F]+}} [indirect], loaded [concrete = constants.%complete_type.9be]
|
||||
// CHECK:STDOUT: %Main.import_ref.0a8 = import_ref Main//export_import_then_name, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.1ec = import_ref Main//export_import_then_name, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.b7f = import_ref Main//export_import_then_name, inst{{[0-9A-F]+}} [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.54a = import_ref Main//base, inst{{[0-9A-F]+}} [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.053 = import_ref Main//base, loc9_8, unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.d27 = import_ref Main//base, loc9_8, unloaded
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -599,7 +606,7 @@ var d: D = {.y = ()};
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Main.import_ref.0a8
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.1ec
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.b7f
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @D [from "base.carbon"] {
|
||||
@@ -607,7 +614,7 @@ var d: D = {.y = ()};
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Main.import_ref.54a
|
||||
// CHECK:STDOUT: .y = imports.%Main.import_ref.053
|
||||
// CHECK:STDOUT: .y = imports.%Main.import_ref.d27
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @__global_init() {
|
||||
|
||||
+47
-40
@@ -210,6 +210,7 @@ private export C;
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %C: type = class_type @C [concrete]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete]
|
||||
// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete]
|
||||
// CHECK:STDOUT: %C.elem: type = unbound_element_type %C, %empty_tuple.type [concrete]
|
||||
// CHECK:STDOUT: %struct_type.x: type = struct_type {.x: %empty_tuple.type} [concrete]
|
||||
// CHECK:STDOUT: %complete_type.9be: <witness> = complete_type_witness %struct_type.x [concrete]
|
||||
@@ -232,23 +233,29 @@ private export C;
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @C {
|
||||
// CHECK:STDOUT: %.loc5: %C.elem = field_decl x, element0 [concrete]
|
||||
// CHECK:STDOUT: %field_decl: %C.elem = field_decl x, element0, %.loc5_11.2 in [concrete] {
|
||||
// CHECK:STDOUT: %.loc5_11.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple]
|
||||
// CHECK:STDOUT: %.loc5_11.2: type = converted %.loc5_11.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness constants.%struct_type.x [concrete = constants.%complete_type.9be]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = constants.%C
|
||||
// CHECK:STDOUT: .x = %.loc5
|
||||
// CHECK:STDOUT: .x = %field_decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @NSC {
|
||||
// CHECK:STDOUT: %.loc10: %NSC.elem = field_decl y, element0 [concrete]
|
||||
// CHECK:STDOUT: %field_decl: %NSC.elem = field_decl y, element0, %.loc10_11.2 in [concrete] {
|
||||
// CHECK:STDOUT: %.loc10_11.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple]
|
||||
// CHECK:STDOUT: %.loc10_11.2: type = converted %.loc10_11.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness constants.%struct_type.y [concrete = constants.%complete_type.9f4]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = constants.%NSC
|
||||
// CHECK:STDOUT: .y = %.loc10
|
||||
// CHECK:STDOUT: .y = %field_decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: --- export.carbon
|
||||
@@ -272,10 +279,10 @@ private export C;
|
||||
// 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.e47 = import_ref Main//base, inst{{[0-9A-F]+}} [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.c69 = import_ref Main//base, loc5_8, unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.14f = 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.8d3 = import_ref Main//base, inst{{[0-9A-F]+}} [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.307 = import_ref Main//base, loc10_8, unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.565 = import_ref Main//base, loc10_8, unloaded
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -293,7 +300,7 @@ private export C;
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Main.import_ref.e47
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.c69
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.14f
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @NSC [from "base.carbon"] {
|
||||
@@ -301,7 +308,7 @@ private export C;
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Main.import_ref.8d3
|
||||
// CHECK:STDOUT: .y = imports.%Main.import_ref.307
|
||||
// CHECK:STDOUT: .y = imports.%Main.import_ref.565
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: --- not_reexporting.carbon
|
||||
@@ -344,10 +351,10 @@ private export C;
|
||||
// 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, inst{{[0-9A-F]+}} [indirect], loaded [concrete = constants.%complete_type.9be]
|
||||
// CHECK:STDOUT: %Main.import_ref.0a8 = import_ref Main//export, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.1ec = import_ref Main//export, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.b7f = import_ref Main//export, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.63c: <witness> = import_ref Main//export, inst{{[0-9A-F]+}} [indirect], loaded [concrete = constants.%complete_type.9f4]
|
||||
// CHECK:STDOUT: %Main.import_ref.17a = import_ref Main//export, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.5c2 = import_ref Main//export, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.5a3 = import_ref Main//export, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -365,7 +372,7 @@ private export C;
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Main.import_ref.0a8
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.1ec
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.b7f
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @NSC [from "export.carbon"] {
|
||||
@@ -373,7 +380,7 @@ private export C;
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Main.import_ref.17a
|
||||
// CHECK:STDOUT: .y = imports.%Main.import_ref.5c2
|
||||
// CHECK:STDOUT: .y = imports.%Main.import_ref.5a3
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: --- export_in_impl.carbon
|
||||
@@ -416,10 +423,10 @@ private export C;
|
||||
// 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, inst{{[0-9A-F]+}} [indirect], loaded [concrete = constants.%complete_type.9be]
|
||||
// CHECK:STDOUT: %Main.import_ref.0a8 = import_ref Main//export, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.1ec = import_ref Main//export, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.b7f = import_ref Main//export, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.63c: <witness> = import_ref Main//export, inst{{[0-9A-F]+}} [indirect], loaded [concrete = constants.%complete_type.9f4]
|
||||
// CHECK:STDOUT: %Main.import_ref.17a = import_ref Main//export, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.5c2 = import_ref Main//export, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.5a3 = import_ref Main//export, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -454,7 +461,7 @@ private export C;
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Main.import_ref.0a8
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.1ec
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.b7f
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @NSC [from "export.carbon"] {
|
||||
@@ -462,7 +469,7 @@ private export C;
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Main.import_ref.17a
|
||||
// CHECK:STDOUT: .y = imports.%Main.import_ref.5c2
|
||||
// CHECK:STDOUT: .y = imports.%Main.import_ref.5a3
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @__global_init() {
|
||||
@@ -522,10 +529,10 @@ private export C;
|
||||
// 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, inst{{[0-9A-F]+}} [indirect], loaded [concrete = constants.%complete_type.9be]
|
||||
// CHECK:STDOUT: %Main.import_ref.045 = import_ref Main//export_export, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.408 = import_ref Main//export_export, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.0fe = import_ref Main//export_export, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.c12: <witness> = import_ref Main//export_export, inst{{[0-9A-F]+}} [indirect], loaded [concrete = constants.%complete_type.9f4]
|
||||
// CHECK:STDOUT: %Main.import_ref.45b = import_ref Main//export_export, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.4ec = import_ref Main//export_export, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.fe6 = import_ref Main//export_export, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -561,7 +568,7 @@ private export C;
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Main.import_ref.045
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.408
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.0fe
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @NSC [from "export_export.carbon"] {
|
||||
@@ -569,7 +576,7 @@ private export C;
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Main.import_ref.45b
|
||||
// CHECK:STDOUT: .y = imports.%Main.import_ref.4ec
|
||||
// CHECK:STDOUT: .y = imports.%Main.import_ref.fe6
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @__global_init() {
|
||||
@@ -629,10 +636,10 @@ private export C;
|
||||
// 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, inst{{[0-9A-F]+}} [indirect], loaded [concrete = constants.%complete_type.9be]
|
||||
// CHECK:STDOUT: %Main.import_ref.045 = import_ref Main//export_export, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.408 = import_ref Main//export_export, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.0fe = import_ref Main//export_export, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.c12: <witness> = import_ref Main//export_export, inst{{[0-9A-F]+}} [indirect], loaded [concrete = constants.%complete_type.9f4]
|
||||
// CHECK:STDOUT: %Main.import_ref.45b = import_ref Main//export_export, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.4ec = import_ref Main//export_export, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.fe6 = import_ref Main//export_export, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -667,7 +674,7 @@ private export C;
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Main.import_ref.045
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.408
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.0fe
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @NSC [from "export_export.carbon"] {
|
||||
@@ -675,7 +682,7 @@ private export C;
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Main.import_ref.45b
|
||||
// CHECK:STDOUT: .y = imports.%Main.import_ref.4ec
|
||||
// CHECK:STDOUT: .y = imports.%Main.import_ref.fe6
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @__global_init() {
|
||||
@@ -761,7 +768,7 @@ private export C;
|
||||
// CHECK:STDOUT: %Main.NSC = import_ref Main//base, NSC, unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.56d: <witness> = import_ref Main//base, loc6_1, loaded [concrete = constants.%complete_type]
|
||||
// CHECK:STDOUT: %Main.import_ref.e47 = import_ref Main//base, inst{{[0-9A-F]+}} [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.c69 = import_ref Main//base, loc5_8, unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.14f = import_ref Main//base, loc5_8, unloaded
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -777,7 +784,7 @@ private export C;
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Main.import_ref.e47
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.c69
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.14f
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: --- import_both.carbon
|
||||
@@ -814,10 +821,10 @@ private export C;
|
||||
// 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.e47 = import_ref Main//base, inst{{[0-9A-F]+}} [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.c69 = import_ref Main//base, loc5_8, unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.14f = 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.8d3 = import_ref Main//base, inst{{[0-9A-F]+}} [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.307 = import_ref Main//base, loc10_8, unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.565 = import_ref Main//base, loc10_8, unloaded
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -852,7 +859,7 @@ private export C;
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Main.import_ref.e47
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.c69
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.14f
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @NSC [from "base.carbon"] {
|
||||
@@ -860,7 +867,7 @@ private export C;
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Main.import_ref.8d3
|
||||
// CHECK:STDOUT: .y = imports.%Main.import_ref.307
|
||||
// CHECK:STDOUT: .y = imports.%Main.import_ref.565
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @__global_init() {
|
||||
@@ -920,10 +927,10 @@ private export C;
|
||||
// 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, inst{{[0-9A-F]+}} [indirect], loaded [concrete = constants.%complete_type.9be]
|
||||
// CHECK:STDOUT: %Main.import_ref.0a8 = import_ref Main//export, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.1ec = import_ref Main//export, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.b7f = import_ref Main//export, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.63c: <witness> = import_ref Main//export, inst{{[0-9A-F]+}} [indirect], loaded [concrete = constants.%complete_type.9f4]
|
||||
// CHECK:STDOUT: %Main.import_ref.17a = import_ref Main//export, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.5c2 = import_ref Main//export, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.5a3 = import_ref Main//export, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -958,7 +965,7 @@ private export C;
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Main.import_ref.0a8
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.1ec
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.b7f
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @NSC [from "export.carbon"] {
|
||||
@@ -966,7 +973,7 @@ private export C;
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Main.import_ref.17a
|
||||
// CHECK:STDOUT: .y = imports.%Main.import_ref.5c2
|
||||
// CHECK:STDOUT: .y = imports.%Main.import_ref.5a3
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @__global_init() {
|
||||
@@ -1027,7 +1034,7 @@ private export C;
|
||||
// CHECK:STDOUT: %Main.NSC = import_ref Main//base, NSC, unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.56d: <witness> = import_ref Main//base, loc6_1, loaded [concrete = constants.%complete_type]
|
||||
// CHECK:STDOUT: %Main.import_ref.e47 = import_ref Main//base, inst{{[0-9A-F]+}} [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.c69 = import_ref Main//base, loc5_8, unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.14f = import_ref Main//base, loc5_8, unloaded
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -1044,7 +1051,7 @@ private export C;
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Main.import_ref.e47
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.c69
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.14f
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: --- use_repeat_export.carbon
|
||||
@@ -1067,7 +1074,7 @@ private export C;
|
||||
// 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, inst{{[0-9A-F]+}} [indirect], loaded [concrete = constants.%complete_type]
|
||||
// CHECK:STDOUT: %Main.import_ref.0a8 = import_ref Main//repeat_export, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.1ec = import_ref Main//repeat_export, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.b7f = import_ref Main//repeat_export, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -1090,7 +1097,7 @@ private export C;
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Main.import_ref.0a8
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.1ec
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.b7f
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @__global_init() {
|
||||
@@ -1125,7 +1132,7 @@ private export C;
|
||||
// CHECK:STDOUT: %Main.NSC = import_ref Main//base, NSC, unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.56d: <witness> = import_ref Main//base, loc6_1, loaded [concrete = constants.%complete_type]
|
||||
// CHECK:STDOUT: %Main.import_ref.e47 = import_ref Main//base, inst{{[0-9A-F]+}} [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.c69 = import_ref Main//base, loc5_8, unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.14f = import_ref Main//base, loc5_8, unloaded
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -1142,6 +1149,6 @@ private export C;
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Main.import_ref.e47
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.c69
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.14f
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
@@ -43,6 +43,7 @@ export C.n;
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %C: type = class_type @C [concrete]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
||||
// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %C.elem: type = unbound_element_type %C, %empty_struct_type [concrete]
|
||||
// CHECK:STDOUT: %struct_type.n: type = struct_type {.n: %empty_struct_type} [concrete]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %struct_type.n [concrete]
|
||||
@@ -56,13 +57,16 @@ export C.n;
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @C {
|
||||
// CHECK:STDOUT: %.loc5: %C.elem = field_decl n, element0 [concrete]
|
||||
// CHECK:STDOUT: %field_decl: %C.elem = field_decl n, element0, %.loc5_11.2 in [concrete] {
|
||||
// CHECK:STDOUT: %.loc5_11.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct]
|
||||
// CHECK:STDOUT: %.loc5_11.2: type = converted %.loc5_11.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness constants.%struct_type.n [concrete = constants.%complete_type]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = constants.%C
|
||||
// CHECK:STDOUT: .n = %.loc5
|
||||
// CHECK:STDOUT: .n = %field_decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: --- fail_b.carbon
|
||||
@@ -78,7 +82,7 @@ export C.n;
|
||||
// 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.c61 = import_ref Foo//a, inst{{[0-9A-F]+}} [no loc], unloaded
|
||||
// CHECK:STDOUT: %Foo.import_ref.e5b = import_ref Foo//a, loc5_8, unloaded
|
||||
// CHECK:STDOUT: %Foo.import_ref.e2c = import_ref Foo//a, loc5_8, unloaded
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -93,6 +97,6 @@ export C.n;
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Foo.import_ref.c61
|
||||
// CHECK:STDOUT: .n = imports.%Foo.import_ref.e5b
|
||||
// CHECK:STDOUT: .n = imports.%Foo.import_ref.e2c
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
+7
-2
@@ -275,13 +275,18 @@ var c: r#Core = {.n = 0 as Core.Int(32)};
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @Core {
|
||||
// CHECK:STDOUT: %.loc3: %Core.elem = field_decl n, element0 [concrete]
|
||||
// CHECK:STDOUT: %field_decl: %Core.elem = field_decl n, element0, %i32 in [concrete] {
|
||||
// CHECK:STDOUT: %Core.ref: <namespace> = name_ref Core, imports.%Core [concrete = imports.%Core]
|
||||
// CHECK:STDOUT: %Int.ref: %Int.type = name_ref Int, imports.%Core.Int [concrete = constants.%Int.generic]
|
||||
// CHECK:STDOUT: %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: %complete_type: <witness> = complete_type_witness constants.%struct_type.n [concrete = constants.%complete_type.cdf]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = constants.%Core
|
||||
// CHECK:STDOUT: .n = %.loc3
|
||||
// CHECK:STDOUT: .n = %field_decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @__global_init() {
|
||||
|
||||
+5
-1
@@ -512,6 +512,7 @@ fn F() -> {} {
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %C: type = class_type @C [concrete]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete]
|
||||
// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete]
|
||||
// CHECK:STDOUT: %C.elem: type = unbound_element_type %C, %empty_tuple.type [concrete]
|
||||
// CHECK:STDOUT: %struct_type._: type = struct_type {._: %empty_tuple.type} [concrete]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %struct_type._ [concrete]
|
||||
@@ -534,7 +535,10 @@ fn F() -> {} {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @C {
|
||||
// CHECK:STDOUT: %.loc9: %C.elem = field_decl _, element0 [concrete]
|
||||
// CHECK:STDOUT: %field_decl: %C.elem = field_decl _, element0, %.loc9_11.2 in [concrete] {
|
||||
// CHECK:STDOUT: %.loc9_11.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple]
|
||||
// CHECK:STDOUT: %.loc9_11.2: type = converted %.loc9_11.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness constants.%struct_type._ [concrete = constants.%complete_type]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
|
||||
+9
-6
@@ -85,7 +85,10 @@ fn Foo(ptr: C*) {
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %self: %C = wrapper_binding self, %self.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.loc17: %C.elem = field_decl field, element0 [concrete]
|
||||
// CHECK:STDOUT: %field_decl: %C.elem = field_decl field, element0, %ptr in [concrete] {
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %ptr: type = ptr_type %C.ref [concrete = constants.%ptr.6b6]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness constants.%struct_type.field [concrete = constants.%complete_type]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
@@ -93,7 +96,7 @@ fn Foo(ptr: C*) {
|
||||
// CHECK:STDOUT: .Self = constants.%C
|
||||
// CHECK:STDOUT: .Member = %C.Member.decl
|
||||
// CHECK:STDOUT: .C = <poisoned>
|
||||
// CHECK:STDOUT: .field = %.loc17
|
||||
// CHECK:STDOUT: .field = %field_decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @C.Member(%self.param: %C);
|
||||
@@ -114,19 +117,19 @@ fn Foo(ptr: C*) {
|
||||
// CHECK:STDOUT: %C.Member.call.loc22: init %empty_tuple.type = call %C.Member.bound.loc22(%.loc22_6.2)
|
||||
// CHECK:STDOUT: %ptr.ref.loc24: %ptr.6b6 = name_ref ptr, %ptr.loc20_11
|
||||
// CHECK:STDOUT: %.loc24_4: ref %C = deref %ptr.ref.loc24
|
||||
// CHECK:STDOUT: %field.ref.loc24: %C.elem = name_ref field, @C.%.loc17 [concrete = @C.%.loc17]
|
||||
// CHECK:STDOUT: %field.ref.loc24: %C.elem = name_ref field, @C.%field_decl [concrete = @C.%field_decl]
|
||||
// CHECK:STDOUT: %.loc24_9: ref %ptr.6b6 = class_element_access %.loc24_4, element0
|
||||
// CHECK:STDOUT: %ptr.ref.loc25: %ptr.6b6 = name_ref ptr, %ptr.loc20_11
|
||||
// CHECK:STDOUT: %.loc25_6.1: ref %C = deref %ptr.ref.loc25
|
||||
// CHECK:STDOUT: %field.ref.loc25: %C.elem = name_ref field, @C.%.loc17 [concrete = @C.%.loc17]
|
||||
// CHECK:STDOUT: %field.ref.loc25: %C.elem = name_ref field, @C.%field_decl [concrete = @C.%field_decl]
|
||||
// CHECK:STDOUT: %.loc25_6.2: ref %ptr.6b6 = class_element_access %.loc25_6.1, element0
|
||||
// CHECK:STDOUT: %ptr.ref.loc27: %ptr.6b6 = name_ref ptr, %ptr.loc20_11
|
||||
// CHECK:STDOUT: %.loc27_6.1: ref %C = deref %ptr.ref.loc27
|
||||
// CHECK:STDOUT: %field.ref.loc27_6: %C.elem = name_ref field, @C.%.loc17 [concrete = @C.%.loc17]
|
||||
// CHECK:STDOUT: %field.ref.loc27_6: %C.elem = name_ref field, @C.%field_decl [concrete = @C.%field_decl]
|
||||
// CHECK:STDOUT: %.loc27_6.2: ref %ptr.6b6 = class_element_access %.loc27_6.1, element0
|
||||
// CHECK:STDOUT: %.loc27_6.3: %ptr.6b6 = acquire_value %.loc27_6.2
|
||||
// CHECK:STDOUT: %.loc27_13.1: ref %C = deref %.loc27_6.3
|
||||
// CHECK:STDOUT: %field.ref.loc27_13: %C.elem = name_ref field, @C.%.loc17 [concrete = @C.%.loc17]
|
||||
// CHECK:STDOUT: %field.ref.loc27_13: %C.elem = name_ref field, @C.%field_decl [concrete = @C.%field_decl]
|
||||
// CHECK:STDOUT: %.loc27_13.2: ref %ptr.6b6 = class_element_access %.loc27_13.1, element0
|
||||
// CHECK:STDOUT: return
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
@@ -144,15 +144,19 @@ fn G() -> C {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @C {
|
||||
// CHECK:STDOUT: %.loc27_16: %C.elem = field_decl a, element0 [concrete]
|
||||
// CHECK:STDOUT: %.loc27_28: %C.elem = field_decl b, element1 [concrete]
|
||||
// CHECK:STDOUT: %field_decl.loc27_16: %C.elem = field_decl a, element0, %i32.loc27_18 in [concrete] {
|
||||
// CHECK:STDOUT: %i32.loc27_18: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %field_decl.loc27_28: %C.elem = field_decl b, element1, %i32.loc27_30 in [concrete] {
|
||||
// CHECK:STDOUT: %i32.loc27_30: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness constants.%struct_type.a.b.b4c [concrete = constants.%complete_type.7b9]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = constants.%C
|
||||
// CHECK:STDOUT: .a = %.loc27_16
|
||||
// CHECK:STDOUT: .b = %.loc27_28
|
||||
// CHECK:STDOUT: .a = %field_decl.loc27_16
|
||||
// CHECK:STDOUT: .b = %field_decl.loc27_28
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @F() -> out %return.param: %i32 {
|
||||
|
||||
@@ -592,15 +592,19 @@ fn F0(unused n: i32) -> P.D {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @D {
|
||||
// CHECK:STDOUT: %.loc5_16: %D.elem = field_decl n, element0 [concrete]
|
||||
// CHECK:STDOUT: %.loc5_28: %D.elem = field_decl m, element1 [concrete]
|
||||
// CHECK:STDOUT: %field_decl.loc5_16: %D.elem = field_decl n, element0, %i32.loc5_18 in [concrete] {
|
||||
// CHECK:STDOUT: %i32.loc5_18: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %field_decl.loc5_28: %D.elem = field_decl m, element1, %i32.loc5_30 in [concrete] {
|
||||
// CHECK:STDOUT: %i32.loc5_30: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness constants.%struct_type.n.m.fa1 [concrete = constants.%complete_type.237]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = constants.%D
|
||||
// CHECK:STDOUT: .n = %.loc5_16
|
||||
// CHECK:STDOUT: .m = %.loc5_28
|
||||
// CHECK:STDOUT: .n = %field_decl.loc5_16
|
||||
// CHECK:STDOUT: .m = %field_decl.loc5_28
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @Make() -> out %return.param: %D {
|
||||
@@ -955,8 +959,8 @@ fn F0(unused n: i32) -> P.D {
|
||||
// CHECK:STDOUT: %P.D: type = import_ref P//library, D, loaded [concrete = constants.%D]
|
||||
// CHECK:STDOUT: %P.import_ref.6bc: <witness> = import_ref P//library, loc5_35, loaded [concrete = constants.%complete_type.237]
|
||||
// CHECK:STDOUT: %P.import_ref.737 = import_ref P//library, inst{{[0-9A-F]+}} [no loc], unloaded
|
||||
// CHECK:STDOUT: %P.import_ref.9f8 = import_ref P//library, loc5_16, unloaded
|
||||
// CHECK:STDOUT: %P.import_ref.0cb = import_ref P//library, loc5_28, unloaded
|
||||
// CHECK:STDOUT: %P.import_ref.e54 = import_ref P//library, loc5_16, unloaded
|
||||
// CHECK:STDOUT: %P.import_ref.6c3 = import_ref P//library, loc5_28, unloaded
|
||||
// CHECK:STDOUT: %P.C: %C.type = import_ref P//library, C, loaded [concrete = constants.%C.generic]
|
||||
// CHECK:STDOUT: %P.import_ref.8f2: <witness> = import_ref P//library, loc4_18, loaded [concrete = constants.%complete_type.357]
|
||||
// CHECK:STDOUT: %P.import_ref.70e = import_ref P//library, inst{{[0-9A-F]+}} [no loc], unloaded
|
||||
@@ -1078,8 +1082,8 @@ fn F0(unused n: i32) -> P.D {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%P.import_ref.737
|
||||
// CHECK:STDOUT: .n = imports.%P.import_ref.9f8
|
||||
// CHECK:STDOUT: .m = imports.%P.import_ref.0cb
|
||||
// CHECK:STDOUT: .n = imports.%P.import_ref.e54
|
||||
// CHECK:STDOUT: .m = imports.%P.import_ref.6c3
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: generic class @C(imports.%P.import_ref.d2a: %i32) [from "library.carbon"] {
|
||||
|
||||
+8
-4
@@ -134,15 +134,19 @@ fn G() -> i32 {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @C {
|
||||
// CHECK:STDOUT: %.loc16: %C.elem = field_decl a, element0 [concrete]
|
||||
// CHECK:STDOUT: %.loc17: %C.elem = field_decl b, element1 [concrete]
|
||||
// CHECK:STDOUT: %field_decl.loc16: %C.elem = field_decl a, element0, %i32.loc16 in [concrete] {
|
||||
// CHECK:STDOUT: %i32.loc16: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %field_decl.loc17: %C.elem = field_decl b, element1, %i32.loc17 in [concrete] {
|
||||
// CHECK:STDOUT: %i32.loc17: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness constants.%struct_type.a.b.b4c [concrete = constants.%complete_type.7b9]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = constants.%C
|
||||
// CHECK:STDOUT: .a = %.loc16
|
||||
// CHECK:STDOUT: .b = %.loc17
|
||||
// CHECK:STDOUT: .a = %field_decl.loc16
|
||||
// CHECK:STDOUT: .b = %field_decl.loc17
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @F() -> out %return.param: %C {
|
||||
|
||||
@@ -13,10 +13,12 @@ namespace Carbon::SemIR {
|
||||
// A class field.
|
||||
struct Field : public Printable<Field> {
|
||||
ElementIndex index;
|
||||
NameId name_id;
|
||||
SemIR::InstId initializer_id;
|
||||
|
||||
auto Print(llvm::raw_ostream& out) const -> void {
|
||||
out << "{index: " << index << ", initializer_id: " << initializer_id << "}";
|
||||
out << "{index: " << index << ", name_id: " << name_id
|
||||
<< ", initializer_id: " << initializer_id << "}";
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -1657,7 +1657,8 @@ auto Formatter::FormatArg(DefaultValueId id) -> void {
|
||||
|
||||
auto Formatter::FormatArg(FieldId id) -> void {
|
||||
const auto& field = sem_ir_->fields().Get(id);
|
||||
out() << field.index;
|
||||
FormatName(field.name_id);
|
||||
out() << ", " << field.index;
|
||||
if (field.initializer_id.has_value()) {
|
||||
out() << ", initializer = ";
|
||||
out() << field.initializer_id;
|
||||
|
||||
@@ -1156,6 +1156,14 @@ auto InstNamer::NamingContext::NameInst() -> void {
|
||||
AddInstName("facet_value");
|
||||
return;
|
||||
}
|
||||
case CARBON_KIND(FieldDecl inst): {
|
||||
for (auto block_id :
|
||||
sem_ir().expr_regions().Get(inst.type_region_id).block_ids) {
|
||||
PushBlockId(scope_id_, block_id);
|
||||
}
|
||||
AddInstName("field_decl");
|
||||
return;
|
||||
}
|
||||
case CARBON_KIND(FloatType inst): {
|
||||
AddIntOrFloatTypeName('f', inst.bit_width_id);
|
||||
return;
|
||||
|
||||
@@ -864,8 +864,8 @@ struct FieldDecl {
|
||||
.constant_kind = InstConstantKind::AlwaysUnique});
|
||||
|
||||
TypeId type_id;
|
||||
NameId name_id;
|
||||
FieldId field_id;
|
||||
ExprRegionId type_region_id;
|
||||
};
|
||||
|
||||
// The float literal type.
|
||||
|
||||
Reference in New Issue
Block a user