mirror of
https://github.com/carbon-language/carbon-lang.git
synced 2026-10-06 06:34:41 +01:00
Add FieldStore and fix field initializer imports (#7287)
As suggested in [1], replace `FieldInitializerMap` with a `FieldStore`. The corresponding `FieldId` is now stored in `FieldDecl`. To make room for the `FieldId`, the `ElementIndex` is now stored in the `Field`, along with the initializer. In import_ref.cpp, resolving `FieldDecl` initializers is now supported, and in convert.cpp `LoadImportRef` is called to do so. The `field_initializer_import.carbon` test now passes. Printing a `FieldDecl` instruction now prints the initializer as well, if present. See field_initializer.carbon for an example. [1]: https://github.com/carbon-language/carbon-lang/pull/7238#discussion_r3283217158
This commit is contained in:
@@ -117,9 +117,9 @@ static auto AddStructTypeFields(
|
||||
llvm::ArrayRef<SemIR::InstId> field_decls) -> SemIR::StructTypeFieldsId {
|
||||
for (auto field_decl_id : field_decls) {
|
||||
auto field_decl = context.insts().GetAs<SemIR::FieldDecl>(field_decl_id);
|
||||
field_decl.index =
|
||||
auto& field = context.fields().Get(field_decl.field_id);
|
||||
field.index =
|
||||
SemIR::ElementIndex{static_cast<int>(struct_type_fields.size())};
|
||||
ReplaceInstPreservingConstantValue(context, field_decl_id, field_decl);
|
||||
if (field_decl.type_id == SemIR::ErrorInst::TypeId) {
|
||||
struct_type_fields.push_back(
|
||||
{.name_id = field_decl.name_id,
|
||||
|
||||
@@ -336,6 +336,7 @@ class Context {
|
||||
}
|
||||
auto functions() -> SemIR::FunctionStore& { return sem_ir().functions(); }
|
||||
auto classes() -> SemIR::ClassStore& { return sem_ir().classes(); }
|
||||
auto fields() -> SemIR::FieldStore& { return sem_ir().fields(); }
|
||||
auto vtables() -> SemIR::VtableStore& { return sem_ir().vtables(); }
|
||||
auto interfaces() -> SemIR::InterfaceStore& { return sem_ir().interfaces(); }
|
||||
auto named_constraints() -> SemIR::NamedConstraintStore& {
|
||||
@@ -353,9 +354,6 @@ class Context {
|
||||
auto facet_types() -> SemIR::FacetTypeInfoStore& {
|
||||
return sem_ir().facet_types();
|
||||
}
|
||||
auto field_initializers() -> SemIR::File::FieldInitializerMap& {
|
||||
return sem_ir().field_initializers();
|
||||
}
|
||||
auto identified_facet_types() -> SemIR::IdentifiedFacetTypeStore& {
|
||||
return sem_ir().identified_facet_types();
|
||||
}
|
||||
|
||||
@@ -906,16 +906,18 @@ static auto ConvertStructToClass(Context& context, SemIR::StructType src_type,
|
||||
// constant.
|
||||
auto field_inst_id =
|
||||
dest_class_scope.GetEntry(*entry_id).result.target_inst_id();
|
||||
auto lookup = context.field_initializers().Lookup(field_inst_id);
|
||||
if (!lookup) {
|
||||
LoadImportRef(context, field_inst_id);
|
||||
field_inst_id = context.constant_values().GetConstantInstId(field_inst_id);
|
||||
auto field_decl = context.insts().GetAs<SemIR::FieldDecl>(field_inst_id);
|
||||
auto field = context.fields().Get(field_decl.field_id);
|
||||
if (!field.initializer_id.has_value()) {
|
||||
return SemIR::InstId::None;
|
||||
}
|
||||
auto initializer_id = lookup.value();
|
||||
SemIR::ConstantId const_id = SemIR::ConstantId::NotConstant;
|
||||
const_id = GetConstantValueInSpecific(
|
||||
context.sem_ir(), dest_type.specific_id, initializer_id);
|
||||
context.sem_ir(), dest_type.specific_id, field.initializer_id);
|
||||
if (const_id == SemIR::ConstantId::NotConstant) {
|
||||
context.TODO(initializer_id, "field initializer is not constant");
|
||||
context.TODO(field.initializer_id, "field initializer is not constant");
|
||||
return SemIR::ErrorInst::InstId;
|
||||
}
|
||||
|
||||
|
||||
@@ -798,6 +798,10 @@ static auto ImportClassObjectRepr(Context& context, SemIR::ClassId class_id,
|
||||
|
||||
// Create a field now, as we know the index to use.
|
||||
// TODO: Consider doing this lazily instead.
|
||||
auto field_id =
|
||||
context.fields().Add({.index = SemIR::ElementIndex(fields.size()),
|
||||
// TODO: import initializers.
|
||||
.initializer_id = SemIR::InstId::None});
|
||||
auto field_decl_id = AddInst(
|
||||
context, SemIR::LocIdAndInst::RuntimeVerified(
|
||||
context.sem_ir(), import_ir_inst_id,
|
||||
@@ -805,7 +809,8 @@ static auto ImportClassObjectRepr(Context& context, SemIR::ClassId class_id,
|
||||
.type_id = GetUnboundElementType(
|
||||
context, class_type_inst_id, field_type_inst_id),
|
||||
.name_id = field_name_id,
|
||||
.index = SemIR::ElementIndex(fields.size())}));
|
||||
.field_id = field_id,
|
||||
}));
|
||||
// The imported SemIR::FieldDecl represents the original declaration `decl`,
|
||||
// which is either the field or the indirect field declaration.
|
||||
auto key = SemIR::ClangDeclKey::ForNonFunctionDecl(decl);
|
||||
|
||||
@@ -2170,14 +2170,20 @@ static auto TryResolveTypedInst(ImportRefResolver& resolver,
|
||||
SemIR::FieldDecl inst,
|
||||
SemIR::InstId import_inst_id) -> ResolveResult {
|
||||
auto const_id = GetLocalConstantId(resolver, inst.type_id);
|
||||
const auto& import_field = resolver.import_ir().fields().Get(inst.field_id);
|
||||
auto initializer_id =
|
||||
GetLocalConstantInstId(resolver, import_field.initializer_id);
|
||||
if (resolver.HasNewWork()) {
|
||||
return ResolveResult::Retry();
|
||||
}
|
||||
|
||||
auto field_id = resolver.local_ir().fields().Add(
|
||||
{.index = import_field.index, .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),
|
||||
.index = inst.index});
|
||||
.field_id = field_id});
|
||||
}
|
||||
|
||||
static auto TryResolveTypedInst(ImportRefResolver& resolver,
|
||||
|
||||
@@ -39,7 +39,7 @@ static auto GetClassElementIndex(Context& context, SemIR::InstId element_id)
|
||||
-> SemIR::ElementIndex {
|
||||
auto element_inst = context.insts().Get(element_id);
|
||||
if (auto field = element_inst.TryAs<SemIR::FieldDecl>()) {
|
||||
return field->index;
|
||||
return context.fields().Get(field->field_id).index;
|
||||
}
|
||||
if (auto base = element_inst.TryAs<SemIR::BaseDecl>()) {
|
||||
return base->index;
|
||||
|
||||
@@ -153,13 +153,14 @@ auto AddBindingPattern(Context& context, SemIR::LocId name_loc,
|
||||
}
|
||||
|
||||
auto field_id =
|
||||
AddInst<SemIR::FieldDecl>(context, name_loc,
|
||||
{.type_id = field_type_id,
|
||||
.name_id = name_id,
|
||||
.index = SemIR::ElementIndex::None});
|
||||
context.field_decls_stack().AppendToTop(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 {.pattern_id = field_id, .bind_id = field_id};
|
||||
return {.pattern_id = field_decl_id, .bind_id = field_decl_id};
|
||||
}
|
||||
|
||||
auto bind_id = AddInstInNoBlock(
|
||||
|
||||
@@ -541,7 +541,7 @@ auto MatchContext::DoPostWork(State /*state*/,
|
||||
WorkItem /*entry*/) -> void {}
|
||||
|
||||
auto MatchContext::DoPreWork(State /*state*/, SemIR::FieldDecl field_decl,
|
||||
SemIR::InstId scrutinee_id, WorkItem entry)
|
||||
SemIR::InstId scrutinee_id, WorkItem /*entry*/)
|
||||
-> void {
|
||||
if (!scrutinee_id.has_value()) {
|
||||
return;
|
||||
@@ -559,8 +559,8 @@ auto MatchContext::DoPreWork(State /*state*/, SemIR::FieldDecl field_decl,
|
||||
return;
|
||||
}
|
||||
|
||||
// Store a mapping to the field's initializer.
|
||||
context_.field_initializers().Insert(entry.pattern_id, converted_id);
|
||||
// Store the field's initializer.
|
||||
context_.fields().Get(field_decl.field_id).initializer_id = converted_id;
|
||||
}
|
||||
|
||||
auto MatchContext::DoPreWork(State state,
|
||||
|
||||
+6
-6
@@ -101,8 +101,8 @@ 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.a3c = import_ref Main//a, inst{{[0-9A-F]+}} [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.4c6: %C.elem = import_ref Main//a, loc4_16, loaded [concrete = %.3a7]
|
||||
// CHECK:STDOUT: %.3a7: %C.elem = field_decl v, element0 [concrete]
|
||||
// CHECK:STDOUT: %Main.import_ref.ae3: %C.elem = import_ref Main//a, loc4_16, loaded [concrete = %.ab1]
|
||||
// CHECK:STDOUT: %.ab1: %C.elem = field_decl v, element0 [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -153,7 +153,7 @@ var a_val: a = {.v = b_val.v};
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Main.import_ref.a3c
|
||||
// CHECK:STDOUT: .v = imports.%Main.import_ref.4c6
|
||||
// CHECK:STDOUT: .v = imports.%Main.import_ref.ae3
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @__global_init() {
|
||||
@@ -168,7 +168,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.4c6 [concrete = imports.%.3a7]
|
||||
// CHECK:STDOUT: %v.ref.loc8: %C.elem = name_ref v, imports.%Main.import_ref.ae3 [concrete = imports.%.ab1]
|
||||
// CHECK:STDOUT: %.loc8_27.1: ref %empty_tuple.type = class_element_access %d_val.ref, element0 [concrete = constants.%.2cf]
|
||||
// CHECK:STDOUT: %.loc8_29.1: %struct_type.v = struct_literal (%.loc8_27.1) [concrete = constants.%struct.9bd]
|
||||
// CHECK:STDOUT: %.loc8_29.2: ref %empty_tuple.type = class_element_access file.%c_val.var, element0 [concrete = constants.%.819]
|
||||
@@ -179,7 +179,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.4c6 [concrete = imports.%.3a7]
|
||||
// CHECK:STDOUT: %v.ref.loc9: %C.elem = name_ref v, imports.%Main.import_ref.ae3 [concrete = imports.%.ab1]
|
||||
// CHECK:STDOUT: %.loc9_27.1: ref %empty_tuple.type = class_element_access %c_val.ref, element0 [concrete = constants.%.819]
|
||||
// CHECK:STDOUT: %.loc9_29.1: %struct_type.v = struct_literal (%.loc9_27.1) [concrete = constants.%struct.cff]
|
||||
// CHECK:STDOUT: %.loc9_29.2: ref %empty_tuple.type = class_element_access file.%b_val.var, element0 [concrete = constants.%.c19]
|
||||
@@ -190,7 +190,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.4c6 [concrete = imports.%.3a7]
|
||||
// CHECK:STDOUT: %v.ref.loc10: %C.elem = name_ref v, imports.%Main.import_ref.ae3 [concrete = imports.%.ab1]
|
||||
// CHECK:STDOUT: %.loc10_27.1: ref %empty_tuple.type = class_element_access %b_val.ref, element0 [concrete = constants.%.c19]
|
||||
// CHECK:STDOUT: %.loc10_29.1: %struct_type.v = struct_literal (%.loc10_27.1) [concrete = constants.%struct.f26]
|
||||
// CHECK:STDOUT: %.loc10_29.2: ref %empty_tuple.type = class_element_access file.%a_val.var, element0 [concrete = constants.%.d52]
|
||||
|
||||
@@ -218,7 +218,7 @@ fn G(x: Cpp.X) {
|
||||
// CHECK:STDOUT: inst5000001F: {kind: StructValue, arg0: inst_block_empty, type: type(inst5000001D)}
|
||||
// CHECK:STDOUT: inst50000020: {kind: PointerType, arg0: inst50000014, type: type(TypeType)}
|
||||
// CHECK:STDOUT: inst50000021: {kind: UnboundElementType, arg0: inst50000014, arg1: inst50000020, type: type(TypeType)}
|
||||
// CHECK:STDOUT: inst50000022: {kind: FieldDecl, arg0: name5, arg1: element0, type: type(inst50000021)}
|
||||
// CHECK:STDOUT: inst50000022: {kind: FieldDecl, arg0: name5, arg1: field50000000, type: type(inst50000021)}
|
||||
// CHECK:STDOUT: inst50000023: {kind: CustomLayoutType, arg0: struct_type_fields50000001, arg1: custom_layout50000001, type: type(TypeType)}
|
||||
// CHECK:STDOUT: inst50000024: {kind: CustomLayoutType, arg0: struct_type_fields50000002, arg1: custom_layout50000001, type: type(TypeType)}
|
||||
// CHECK:STDOUT: inst50000025: {kind: CompleteTypeWitness, arg0: inst50000023, type: type(inst(WitnessType))}
|
||||
|
||||
@@ -21,15 +21,11 @@ class Class {
|
||||
var C: Class = {};
|
||||
//@dump-sem-ir-end
|
||||
|
||||
// --- fail_todo_field_initializer_import.carbon
|
||||
// --- field_initializer_import.carbon
|
||||
library "[[@TEST_NAME]]";
|
||||
|
||||
import library "field_initializer";
|
||||
|
||||
// CHECK:STDERR: fail_todo_field_initializer_import.carbon:[[@LINE+4]]:17: error: missing value for field `field` in struct initialization [StructInitMissingFieldInLiteral]
|
||||
// CHECK:STDERR: var C2: Class = {};
|
||||
// CHECK:STDERR: ^~
|
||||
// CHECK:STDERR:
|
||||
var C2: Class = {};
|
||||
|
||||
// --- field_initializer_generic.carbon
|
||||
@@ -135,7 +131,7 @@ var C: Class = {};
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @Class {
|
||||
// CHECK:STDOUT: %.loc5_12: %Class.elem = field_decl field, element0 [concrete]
|
||||
// CHECK:STDOUT: %.loc5_12: %Class.elem = field_decl field, element0, initializer = inst640000D4 [concrete]
|
||||
// CHECK:STDOUT: %int_123: Core.IntLiteral = int_value 123 [concrete = constants.%int_123.fff]
|
||||
// CHECK:STDOUT: %impl.elem0: %.205 = impl_witness_access constants.%ImplicitAs.impl_witness.fb6, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e6b]
|
||||
// CHECK:STDOUT: %bound_method.loc5_20.1: <bound method> = bound_method %int_123, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound]
|
||||
|
||||
+8
-8
@@ -336,12 +336,12 @@ 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.668 = import_ref Main//adapt_specific_type, inst{{[0-9A-F]+}} [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.17f: @C.%C.elem (%C.elem.992) = import_ref Main//adapt_specific_type, loc5_8, loaded [concrete = %.65d]
|
||||
// CHECK:STDOUT: %Main.import_ref.2fa: @C.%C.elem (%C.elem.992) = import_ref Main//adapt_specific_type, loc5_8, loaded [concrete = %.862]
|
||||
// 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.bc4: <witness> = import_ref Main//adapt_specific_type, loc10_1, loaded [concrete = constants.%complete_type.9ec]
|
||||
// CHECK:STDOUT: %Main.import_ref.bbb = 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: %.65d: @C.%C.elem (%C.elem.992) = field_decl x, element0 [concrete]
|
||||
// CHECK:STDOUT: %.862: @C.%C.elem (%C.elem.992) = field_decl x, element0 [concrete]
|
||||
// CHECK:STDOUT: %Core.Copy: type = import_ref Core//prelude/parts/copy, Copy, loaded [concrete = constants.%Copy.type]
|
||||
// CHECK:STDOUT: %Core.import_ref.8e5: @Int.as.Copy.impl.%Int.as.Copy.impl.Op.type (%Int.as.Copy.impl.Op.type.c59) = 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.fb0)]
|
||||
// CHECK:STDOUT: %Copy.impl_witness_table.03a = impl_witness_table (%Core.import_ref.8e5), @Int.as.Copy.impl [concrete]
|
||||
@@ -395,7 +395,7 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Main.import_ref.668
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.17f
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.2fa
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -407,7 +407,7 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 {
|
||||
// CHECK:STDOUT: %C: type = class_type @C, @C(constants.%i32) [concrete = constants.%C.6b0]
|
||||
// CHECK:STDOUT: %.loc7_13.1: %C.6b0 = as_compatible %a.ref
|
||||
// CHECK:STDOUT: %.loc7_13.2: %C.6b0 = converted %a.ref, %.loc7_13.1
|
||||
// CHECK:STDOUT: %x.ref: %C.elem.bed = name_ref x, imports.%Main.import_ref.17f [concrete = imports.%.65d]
|
||||
// CHECK:STDOUT: %x.ref: %C.elem.bed = name_ref x, imports.%Main.import_ref.2fa [concrete = imports.%.862]
|
||||
// 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: %.cf6 = impl_witness_access constants.%Copy.impl_witness.c36, element0 [concrete = constants.%Int.as.Copy.impl.Op.123]
|
||||
@@ -719,13 +719,13 @@ 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.38a = import_ref Main//extend_adapt_specific_type_library, inst{{[0-9A-F]+}} [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.58c: @C.%C.elem (%C.elem.a43) = import_ref Main//extend_adapt_specific_type_library, loc8_8, loaded [concrete = %.c5a]
|
||||
// CHECK:STDOUT: %Main.import_ref.c5d: @C.%C.elem (%C.elem.a43) = import_ref Main//extend_adapt_specific_type_library, loc8_8, loaded [concrete = %.062]
|
||||
// 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.bc4: <witness> = import_ref Main//extend_adapt_specific_type_library, loc13_1, loaded [concrete = constants.%complete_type.9ec]
|
||||
// CHECK:STDOUT: %Main.import_ref.d90 = import_ref Main//extend_adapt_specific_type_library, inst{{[0-9A-F]+}} [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.2e2d92.2: type = import_ref Main//extend_adapt_specific_type_library, loc12_21, loaded [concrete = constants.%C.e72]
|
||||
// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic]
|
||||
// CHECK:STDOUT: %.c5a: @C.%C.elem (%C.elem.a43) = field_decl x, element0 [concrete]
|
||||
// CHECK:STDOUT: %.062: @C.%C.elem (%C.elem.a43) = field_decl x, element0 [concrete]
|
||||
// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.649 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -778,14 +778,14 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Main.import_ref.38a
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.58c
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.c5d
|
||||
// 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.5c5 = name_ref x, imports.%Main.import_ref.58c [concrete = imports.%.c5a]
|
||||
// CHECK:STDOUT: %x.ref: %C.elem.5c5 = name_ref x, imports.%Main.import_ref.c5d [concrete = imports.%.062]
|
||||
// CHECK:STDOUT: %.loc15_11.1: %C.e72 = converted %a.ref, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: %.loc15_11.2: %i32 = class_element_access <error>, element0 [concrete = <error>]
|
||||
// CHECK:STDOUT: return <error>
|
||||
|
||||
@@ -323,18 +323,18 @@ fn H() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Main.import_ref.7a7: <witness> = import_ref Main//extend_generic_base, loc10_1, loaded [concrete = constants.%complete_type.558]
|
||||
// CHECK:STDOUT: %Main.import_ref.7b0 = import_ref Main//extend_generic_base, inst{{[0-9A-F]+}} [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.28e: %Param.elem = import_ref Main//extend_generic_base, loc9_8, loaded [concrete = %.19e]
|
||||
// CHECK:STDOUT: %Main.import_ref.95a: %Param.elem = import_ref Main//extend_generic_base, loc9_8, loaded [concrete = %.4f0]
|
||||
// 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.8a6 = import_ref Main//extend_generic_base, inst{{[0-9A-F]+}} [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.8ea: @Base.%Base.elem (%Base.elem.69f) = import_ref Main//extend_generic_base, loc5_8, loaded [concrete = %.447]
|
||||
// CHECK:STDOUT: %Main.import_ref.d26: @Base.%Base.elem (%Base.elem.69f) = import_ref Main//extend_generic_base, loc5_8, loaded [concrete = %.831]
|
||||
// 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.b3f: <witness> = import_ref Main//extend_generic_base, loc14_1, loaded [concrete = constants.%complete_type.25a]
|
||||
// CHECK:STDOUT: %Main.import_ref.71e = import_ref Main//extend_generic_base, inst{{[0-9A-F]+}} [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.42b = import_ref Main//extend_generic_base, loc13_27, unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.d09220.2: type = import_ref Main//extend_generic_base, loc13_26, loaded [concrete = constants.%Base.125]
|
||||
// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic]
|
||||
// CHECK:STDOUT: %.447: @Base.%Base.elem (%Base.elem.69f) = field_decl x, element0 [concrete]
|
||||
// CHECK:STDOUT: %.19e: %Param.elem = field_decl y, element0 [concrete]
|
||||
// CHECK:STDOUT: %.831: @Base.%Base.elem (%Base.elem.69f) = field_decl x, element0 [concrete]
|
||||
// CHECK:STDOUT: %.4f0: %Param.elem = field_decl y, element0 [concrete]
|
||||
// CHECK:STDOUT: %Core.Copy: type = import_ref Core//prelude/parts/copy, Copy, loaded [concrete = constants.%Copy.type]
|
||||
// CHECK:STDOUT: %Core.import_ref.8e5: @Int.as.Copy.impl.%Int.as.Copy.impl.Op.type (%Int.as.Copy.impl.Op.type.c59) = 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.fb0)]
|
||||
// CHECK:STDOUT: %Copy.impl_witness_table.03a = impl_witness_table (%Core.import_ref.8e5), @Int.as.Copy.impl [concrete]
|
||||
@@ -382,7 +382,7 @@ fn H() {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Main.import_ref.7b0
|
||||
// CHECK:STDOUT: .y = imports.%Main.import_ref.28e
|
||||
// CHECK:STDOUT: .y = imports.%Main.import_ref.95a
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: generic class @Base(imports.%Main.import_ref.b3b: type) [from "extend_generic_base.carbon"] {
|
||||
@@ -400,18 +400,18 @@ fn H() {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Main.import_ref.8a6
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.8ea
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.d26
|
||||
// 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.482 = name_ref x, imports.%Main.import_ref.8ea [concrete = imports.%.447]
|
||||
// CHECK:STDOUT: %x.ref: %Base.elem.482 = name_ref x, imports.%Main.import_ref.d26 [concrete = imports.%.831]
|
||||
// CHECK:STDOUT: %.loc7_11.1: ref %Base.125 = class_element_access %d.ref, element0
|
||||
// CHECK:STDOUT: %.loc7_11.2: ref %Base.125 = converted %d.ref, %.loc7_11.1
|
||||
// CHECK:STDOUT: %.loc7_11.3: ref %Param = class_element_access %.loc7_11.2, element0
|
||||
// CHECK:STDOUT: %y.ref: %Param.elem = name_ref y, imports.%Main.import_ref.28e [concrete = imports.%.19e]
|
||||
// CHECK:STDOUT: %y.ref: %Param.elem = name_ref y, imports.%Main.import_ref.95a [concrete = imports.%.4f0]
|
||||
// CHECK:STDOUT: %.loc7_13.1: ref %i32 = class_element_access %.loc7_11.3, element0
|
||||
// CHECK:STDOUT: %.loc7_13.2: %i32 = acquire_value %.loc7_13.1
|
||||
// CHECK:STDOUT: %impl.elem0: %.cf6 = impl_witness_access constants.%Copy.impl_witness.c36, element0 [concrete = constants.%Int.as.Copy.impl.Op.123]
|
||||
|
||||
+8
-8
@@ -331,7 +331,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.8b4: <witness> = import_ref Main//foo, loc9_1, loaded [concrete = constants.%complete_type.bd4]
|
||||
// CHECK:STDOUT: %Main.import_ref.459 = import_ref Main//foo, inst{{[0-9A-F]+}} [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.b51 = import_ref Main//foo, loc7_8, unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.5a3 = import_ref Main//foo, loc7_8, unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.21e = 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]
|
||||
@@ -406,7 +406,7 @@ class Class(U:! type) {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Main.import_ref.459
|
||||
// CHECK:STDOUT: .n = imports.%Main.import_ref.b51
|
||||
// CHECK:STDOUT: .n = imports.%Main.import_ref.5a3
|
||||
// CHECK:STDOUT: .F = imports.%Main.import_ref.21e
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
@@ -523,11 +523,11 @@ 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.8b4: <witness> = import_ref Main//foo, loc9_1, loaded [concrete = constants.%complete_type.059]
|
||||
// CHECK:STDOUT: %Main.import_ref.459 = import_ref Main//foo, inst{{[0-9A-F]+}} [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.4de: @CompleteClass.%CompleteClass.elem (%CompleteClass.elem.91f) = import_ref Main//foo, loc7_8, loaded [concrete = %.903]
|
||||
// CHECK:STDOUT: %Main.import_ref.96b: @CompleteClass.%CompleteClass.elem (%CompleteClass.elem.91f) = import_ref Main//foo, loc7_8, loaded [concrete = %.363]
|
||||
// CHECK:STDOUT: %Main.import_ref.6ec: @CompleteClass.%CompleteClass.F.type (%CompleteClass.F.type.f8c) = import_ref Main//foo, loc8_17, loaded [symbolic = @CompleteClass.%CompleteClass.F (constants.%CompleteClass.F.c58)]
|
||||
// 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: %.903: @CompleteClass.%CompleteClass.elem (%CompleteClass.elem.91f) = field_decl n, element0 [concrete]
|
||||
// CHECK:STDOUT: %.363: @CompleteClass.%CompleteClass.elem (%CompleteClass.elem.91f) = field_decl n, element0 [concrete]
|
||||
// CHECK:STDOUT: %Core.Copy: type = import_ref Core//prelude/parts/copy, Copy, loaded [concrete = constants.%Copy.type]
|
||||
// CHECK:STDOUT: %Core.import_ref.809: @Int.as.Copy.impl.%Int.as.Copy.impl.Op.type (%Int.as.Copy.impl.Op.type.b5d) = 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.c85)]
|
||||
// CHECK:STDOUT: %Copy.impl_witness_table.07a = impl_witness_table (%Core.import_ref.809), @Int.as.Copy.impl [concrete]
|
||||
@@ -578,7 +578,7 @@ class Class(U:! type) {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Main.import_ref.459
|
||||
// CHECK:STDOUT: .n = imports.%Main.import_ref.4de
|
||||
// CHECK:STDOUT: .n = imports.%Main.import_ref.96b
|
||||
// CHECK:STDOUT: .F = imports.%Main.import_ref.6ec
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
@@ -653,7 +653,7 @@ class Class(U:! type) {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %v: ref %CompleteClass.b60 = ref_binding v, %v.var
|
||||
// CHECK:STDOUT: %v.ref: ref %CompleteClass.b60 = name_ref v, %v
|
||||
// CHECK:STDOUT: %n.ref: %CompleteClass.elem.352 = name_ref n, imports.%Main.import_ref.4de [concrete = imports.%.903]
|
||||
// CHECK:STDOUT: %n.ref: %CompleteClass.elem.352 = name_ref n, imports.%Main.import_ref.96b [concrete = imports.%.363]
|
||||
// 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: %.a5f = impl_witness_access constants.%Copy.impl_witness.32d, element0 [concrete = constants.%Int.as.Copy.impl.Op.c4a]
|
||||
@@ -745,7 +745,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.8b4: <witness> = import_ref Main//foo, loc9_1, loaded [concrete = constants.%complete_type.bd4]
|
||||
// CHECK:STDOUT: %Main.import_ref.459 = import_ref Main//foo, inst{{[0-9A-F]+}} [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.b51 = import_ref Main//foo, loc7_8, unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.5a3 = import_ref Main//foo, loc7_8, unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.21e = 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]
|
||||
@@ -780,7 +780,7 @@ class Class(U:! type) {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Main.import_ref.459
|
||||
// CHECK:STDOUT: .n = imports.%Main.import_ref.b51
|
||||
// CHECK:STDOUT: .n = imports.%Main.import_ref.5a3
|
||||
// CHECK:STDOUT: .F = imports.%Main.import_ref.21e
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
+4
-4
@@ -256,11 +256,11 @@ fn Run() {
|
||||
// CHECK:STDOUT: %Main.import_ref.121 = import_ref Main//a, inst{{[0-9A-F]+}} [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.bc4: <witness> = import_ref Main//a, loc9_1, loaded [concrete = constants.%complete_type.9ec]
|
||||
// CHECK:STDOUT: %Main.import_ref.475 = import_ref Main//a, inst{{[0-9A-F]+}} [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.3e4: %Field.elem = import_ref Main//a, loc8_8, loaded [concrete = %.3b6]
|
||||
// CHECK:STDOUT: %Main.import_ref.488: %Field.elem = import_ref Main//a, loc8_8, loaded [concrete = %.c73]
|
||||
// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.649 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic]
|
||||
// CHECK:STDOUT: %Core.import_ref.7f1: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.ca9) = 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.768)]
|
||||
// CHECK:STDOUT: %ImplicitAs.impl_witness_table.bc3 = impl_witness_table (%Core.import_ref.7f1), @Core.IntLiteral.as.ImplicitAs.impl [concrete]
|
||||
// CHECK:STDOUT: %.3b6: %Field.elem = field_decl x, element0 [concrete]
|
||||
// CHECK:STDOUT: %.c73: %Field.elem = field_decl x, element0 [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.1dc190.1 = import_ref Main//a, inst{{[0-9A-F]+}} [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.e20: %ForwardDeclared.F.type = import_ref Main//a, loc14_21, loaded [concrete = constants.%ForwardDeclared.F]
|
||||
@@ -304,7 +304,7 @@ fn Run() {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Main.import_ref.475
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.3e4
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.488
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @ForwardDeclared.1 [from "a.carbon"] {
|
||||
@@ -361,7 +361,7 @@ fn Run() {
|
||||
// CHECK:STDOUT: %Field.ref: type = name_ref Field, imports.%Main.Field [concrete = constants.%Field]
|
||||
// CHECK:STDOUT: %b: ref %Field = ref_binding b, %b.var
|
||||
// CHECK:STDOUT: %b.ref: ref %Field = name_ref b, %b
|
||||
// CHECK:STDOUT: %x.ref: %Field.elem = name_ref x, imports.%Main.import_ref.3e4 [concrete = imports.%.3b6]
|
||||
// CHECK:STDOUT: %x.ref: %Field.elem = name_ref x, imports.%Main.import_ref.488 [concrete = imports.%.c73]
|
||||
// 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: %.634 = impl_witness_access constants.%ImplicitAs.impl_witness.1e6, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.924]
|
||||
|
||||
@@ -102,7 +102,7 @@ fn Run() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Main.import_ref.091: <witness> = import_ref Main//a, loc6_1, loaded [concrete = constants.%complete_type.8c4]
|
||||
// CHECK:STDOUT: %Main.import_ref.1be = import_ref Main//a, inst{{[0-9A-F]+}} [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.943 = import_ref Main//a, loc5_8, unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.2cc = 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.b30: @T.as.DefaultOrUnformed.impl.%T.as.DefaultOrUnformed.impl.Op.type (%T.as.DefaultOrUnformed.impl.Op.type.d5a) = 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.9f4)]
|
||||
// CHECK:STDOUT: %DefaultOrUnformed.impl_witness_table.f82 = impl_witness_table (%Core.import_ref.b30), @T.as.DefaultOrUnformed.impl [concrete]
|
||||
@@ -125,7 +125,7 @@ fn Run() {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Main.import_ref.1be
|
||||
// CHECK:STDOUT: .a = imports.%Main.import_ref.943
|
||||
// CHECK:STDOUT: .a = imports.%Main.import_ref.2cc
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @Run() {
|
||||
|
||||
@@ -148,11 +148,11 @@ fn Run() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Main.import_ref.f91: <witness> = import_ref Main//a, loc11_1, loaded [concrete = constants.%complete_type.c38]
|
||||
// CHECK:STDOUT: %Main.import_ref.1be = import_ref Main//a, inst{{[0-9A-F]+}} [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.56b: %Cycle.elem = import_ref Main//a, loc10_8, loaded [concrete = %.e34]
|
||||
// CHECK:STDOUT: %Main.import_ref.beb: %Cycle.elem = import_ref Main//a, loc10_8, loaded [concrete = %.77b]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.8ce = ref_binding_pattern a [concrete]
|
||||
// CHECK:STDOUT: %a.var_patt: %pattern_type.8ce = var_pattern %a.patt [concrete]
|
||||
// CHECK:STDOUT: %a.var: ref %struct_type.b = var %a.var_patt [concrete]
|
||||
// CHECK:STDOUT: %.e34: %Cycle.elem = field_decl c, element0 [concrete]
|
||||
// CHECK:STDOUT: %.77b: %Cycle.elem = field_decl c, element0 [concrete]
|
||||
// CHECK:STDOUT: %Core.Copy: type = import_ref Core//prelude/parts/copy, Copy, loaded [concrete = constants.%Copy.type]
|
||||
// CHECK:STDOUT: %Core.import_ref.13c: @ptr.as.Copy.impl.%ptr.as.Copy.impl.Op.type (%ptr.as.Copy.impl.Op.type.b03) = 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.aed)]
|
||||
// CHECK:STDOUT: %Copy.impl_witness_table.760 = impl_witness_table (%Core.import_ref.13c), @ptr.as.Copy.impl [concrete]
|
||||
@@ -175,7 +175,7 @@ fn Run() {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Main.import_ref.1be
|
||||
// CHECK:STDOUT: .c = imports.%Main.import_ref.56b
|
||||
// CHECK:STDOUT: .c = imports.%Main.import_ref.beb
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @Run() {
|
||||
@@ -186,7 +186,7 @@ fn Run() {
|
||||
// CHECK:STDOUT: %.loc7_12.1: ref %ptr.719 = struct_access %a.ref.loc7_11, element0 [concrete = constants.%.524]
|
||||
// CHECK:STDOUT: %.loc7_12.2: %ptr.719 = 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.56b [concrete = imports.%.e34]
|
||||
// CHECK:STDOUT: %c.ref: %Cycle.elem = name_ref c, imports.%Main.import_ref.beb [concrete = imports.%.77b]
|
||||
// CHECK:STDOUT: %.loc7_15: ref %struct_type.b = class_element_access %.loc7_10, element0
|
||||
// CHECK:STDOUT: %.loc7_17.1: ref %ptr.719 = struct_access %.loc7_15, element0
|
||||
// CHECK:STDOUT: %.loc7_17.2: %ptr.719 = acquire_value %.loc7_17.1
|
||||
|
||||
@@ -199,8 +199,8 @@ fn Run() {
|
||||
// CHECK:STDOUT: %Main.import_ref.e52 = import_ref Main//a, inst{{[0-9A-F]+}} [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.e20: %Base.F.type = import_ref Main//a, loc5_21, loaded [concrete = constants.%Base.F]
|
||||
// CHECK:STDOUT: %Main.import_ref.384 = import_ref Main//a, loc6_26, unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.fc2: %Base.elem = import_ref Main//a, loc8_8, loaded [concrete = %.98f]
|
||||
// CHECK:STDOUT: %Main.import_ref.4cb = import_ref Main//a, loc9_15, unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.899: %Base.elem = import_ref Main//a, loc8_8, loaded [concrete = %.dee]
|
||||
// CHECK:STDOUT: %Main.import_ref.52e = import_ref Main//a, loc9_15, unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.e2d: <witness> = import_ref Main//a, loc14_1, loaded [concrete = constants.%complete_type.043]
|
||||
// CHECK:STDOUT: %Main.import_ref.ffc = import_ref Main//a, inst{{[0-9A-F]+}} [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.2a5 = import_ref Main//a, loc13_20, unloaded
|
||||
@@ -208,7 +208,7 @@ fn Run() {
|
||||
// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.649 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic]
|
||||
// CHECK:STDOUT: %Core.import_ref.7f1: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.ca9) = 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.768)]
|
||||
// CHECK:STDOUT: %ImplicitAs.impl_witness_table.bc3 = impl_witness_table (%Core.import_ref.7f1), @Core.IntLiteral.as.ImplicitAs.impl [concrete]
|
||||
// CHECK:STDOUT: %.98f: %Base.elem = field_decl x, element0 [concrete]
|
||||
// CHECK:STDOUT: %.dee: %Base.elem = field_decl x, element0 [concrete]
|
||||
// CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -242,8 +242,8 @@ fn Run() {
|
||||
// CHECK:STDOUT: .Self = imports.%Main.import_ref.e52
|
||||
// CHECK:STDOUT: .F = imports.%Main.import_ref.e20
|
||||
// CHECK:STDOUT: .Unused = imports.%Main.import_ref.384
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.fc2
|
||||
// CHECK:STDOUT: .unused_y = imports.%Main.import_ref.4cb
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.899
|
||||
// CHECK:STDOUT: .unused_y = imports.%Main.import_ref.52e
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @Run() {
|
||||
@@ -283,7 +283,7 @@ fn Run() {
|
||||
// CHECK:STDOUT: %Child.ref: type = name_ref Child, imports.%Main.Child [concrete = constants.%Child]
|
||||
// CHECK:STDOUT: %a: ref %Child = ref_binding a, %a.var
|
||||
// CHECK:STDOUT: %a.ref.loc8: ref %Child = name_ref a, %a
|
||||
// CHECK:STDOUT: %x.ref: %Base.elem = name_ref x, imports.%Main.import_ref.fc2 [concrete = imports.%.98f]
|
||||
// CHECK:STDOUT: %x.ref: %Base.elem = name_ref x, imports.%Main.import_ref.899 [concrete = imports.%.dee]
|
||||
// CHECK:STDOUT: %.loc8_4.1: ref %Base = class_element_access %a.ref.loc8, element0
|
||||
// CHECK:STDOUT: %.loc8_4.2: ref %Base = converted %a.ref.loc8, %.loc8_4.1
|
||||
// CHECK:STDOUT: %.loc8_4.3: ref %i32 = class_element_access %.loc8_4.2, element0
|
||||
|
||||
+4
-4
@@ -920,8 +920,8 @@ fn Read(y:! Core.IntLiteral()) {
|
||||
// CHECK:STDOUT: %Main.import_ref.a3e: <witness> = import_ref Main//lib, loc24_1, loaded [symbolic = @IntRange.%complete_type (constants.%complete_type.426)]
|
||||
// CHECK:STDOUT: %Main.import_ref.bea = import_ref Main//lib, inst{{[0-9A-F]+}} [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.3d6 = import_ref Main//lib, loc5_57, unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.964 = import_ref Main//lib, loc22_20, unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.b5d = import_ref Main//lib, loc23_18, unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.898 = import_ref Main//lib, loc22_20, unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.b04 = 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.649 = import_ref Core//prelude/operators/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic]
|
||||
// CHECK:STDOUT: %Core.import_ref.347: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.ca9) = import_ref Core//prelude/types/int, loc{{\d+_\d+}}, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.768)]
|
||||
@@ -972,8 +972,8 @@ fn Read(y:! Core.IntLiteral()) {
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Main.import_ref.bea
|
||||
// CHECK:STDOUT: .Make = imports.%Main.import_ref.3d6
|
||||
// CHECK:STDOUT: .start [private] = imports.%Main.import_ref.964
|
||||
// CHECK:STDOUT: .end [private] = imports.%Main.import_ref.b5d
|
||||
// CHECK:STDOUT: .start [private] = imports.%Main.import_ref.898
|
||||
// CHECK:STDOUT: .end [private] = imports.%Main.import_ref.b04
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
+13
-13
@@ -129,15 +129,15 @@ fn Test(e: E) {
|
||||
// CHECK:STDOUT: %inst.as_compatible.f9d: <instruction> = inst_value [concrete] {
|
||||
// CHECK:STDOUT: %.492: %C = as_compatible @F.%x.ref
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %inst.splice_block.263: <instruction> = inst_value [concrete] {
|
||||
// CHECK:STDOUT: %.aeb: %i32 = splice_block %.62d {
|
||||
// CHECK:STDOUT: %inst.splice_block.d90: <instruction> = inst_value [concrete] {
|
||||
// CHECK:STDOUT: %.1a1: %i32 = splice_block %.62d {
|
||||
// CHECK:STDOUT: %n.ref: %C.elem = name_ref n, @C.%.loc10 [concrete = @C.%.loc10]
|
||||
// CHECK:STDOUT: %.bbb: ref %i32 = class_element_access %.492, element0
|
||||
// CHECK:STDOUT: %.62d: %i32 = acquire_value %.bbb
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %inst.splice_block.691: <instruction> = inst_value [concrete] {
|
||||
// CHECK:STDOUT: %.270: %i32 = splice_block %.aeb {}
|
||||
// CHECK:STDOUT: %inst.splice_block.67f: <instruction> = inst_value [concrete] {
|
||||
// CHECK:STDOUT: %.33c: %i32 = splice_block %.1a1 {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %complete_type.23a: <witness> = complete_type_witness %struct_type.m.n [concrete]
|
||||
// CHECK:STDOUT: %inst.as_compatible.a0e: <instruction> = inst_value [concrete] {
|
||||
@@ -288,9 +288,9 @@ fn Test(e: E) {
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete => constants.%complete_type.059
|
||||
// CHECK:STDOUT: %.loc5_17.4 => constants.%inst.as_compatible.f9d
|
||||
// CHECK:STDOUT: %.loc5_17.5 => constants.%inst.splice_block.263
|
||||
// CHECK:STDOUT: %.loc5_17.5 => constants.%inst.splice_block.d90
|
||||
// CHECK:STDOUT: %.loc5_17.6 => constants.%i32
|
||||
// CHECK:STDOUT: %.loc5_17.7 => constants.%inst.splice_block.691
|
||||
// CHECK:STDOUT: %.loc5_17.7 => constants.%inst.splice_block.67f
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @F(constants.%struct_type.m.n) {
|
||||
@@ -515,8 +515,8 @@ fn Test(e: E) {
|
||||
// CHECK:STDOUT: %inst.as_compatible: <instruction> = inst_value [concrete] {
|
||||
// CHECK:STDOUT: %.013: %E = as_compatible @F.loc4.%x.ref
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %inst.splice_block.1a9: <instruction> = inst_value [concrete] {
|
||||
// CHECK:STDOUT: %.4cd: %F.77c = splice_block %.d22 {
|
||||
// CHECK:STDOUT: %inst.splice_block.fb3: <instruction> = inst_value [concrete] {
|
||||
// CHECK:STDOUT: %.fbd: %F.77c = splice_block %.d22 {
|
||||
// CHECK:STDOUT: %n.ref: %E.elem = name_ref n, @E.%.loc11 [concrete = @E.%.loc11]
|
||||
// CHECK:STDOUT: %.3bf: ref %F.77c = class_element_access %.013, element0
|
||||
// CHECK:STDOUT: %.d22: %F.77c = acquire_value %.3bf
|
||||
@@ -524,9 +524,9 @@ fn Test(e: E) {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %ImplicitAs.type.649: type = generic_interface_type @ImplicitAs [concrete]
|
||||
// CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.649 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %inst.splice_block.004: <instruction> = inst_value [concrete] {
|
||||
// CHECK:STDOUT: %.03d: <error> = splice_block <error> [concrete = <error>] {
|
||||
// CHECK:STDOUT: %.613: %i32 = converted %.4cd, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: %inst.splice_block.67b: <instruction> = inst_value [concrete] {
|
||||
// CHECK:STDOUT: %.932: <error> = splice_block <error> [concrete = <error>] {
|
||||
// CHECK:STDOUT: %.a92: %i32 = converted %.fbd, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
@@ -658,8 +658,8 @@ fn Test(e: E) {
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete => constants.%complete_type.094
|
||||
// CHECK:STDOUT: %.loc5_17.4 => constants.%inst.as_compatible
|
||||
// CHECK:STDOUT: %.loc5_17.5 => constants.%inst.splice_block.1a9
|
||||
// CHECK:STDOUT: %.loc5_17.5 => constants.%inst.splice_block.fb3
|
||||
// CHECK:STDOUT: %.loc5_17.6 => constants.%F.77c
|
||||
// CHECK:STDOUT: %.loc5_17.7 => constants.%inst.splice_block.004
|
||||
// CHECK:STDOUT: %.loc5_17.7 => constants.%inst.splice_block.67b
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
+22
-22
@@ -294,7 +294,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.0ba = import_ref Other//base, inst{{[0-9A-F]+}} [no loc], unloaded
|
||||
// CHECK:STDOUT: %Other.import_ref.636 = import_ref Other//base, loc5_8, unloaded
|
||||
// CHECK:STDOUT: %Other.import_ref.d40 = import_ref Other//base, loc5_8, unloaded
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -310,7 +310,7 @@ alias C = Other.C;
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Other.import_ref.0ba
|
||||
// CHECK:STDOUT: .x = imports.%Other.import_ref.636
|
||||
// CHECK:STDOUT: .x = imports.%Other.import_ref.d40
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: --- export_name_copy.carbon
|
||||
@@ -326,7 +326,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.0ba = import_ref Other//base, inst{{[0-9A-F]+}} [no loc], unloaded
|
||||
// CHECK:STDOUT: %Other.import_ref.636 = import_ref Other//base, loc5_8, unloaded
|
||||
// CHECK:STDOUT: %Other.import_ref.d40 = import_ref Other//base, loc5_8, unloaded
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -342,7 +342,7 @@ alias C = Other.C;
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Other.import_ref.0ba
|
||||
// CHECK:STDOUT: .x = imports.%Other.import_ref.636
|
||||
// CHECK:STDOUT: .x = imports.%Other.import_ref.d40
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: --- export_name_indirect.carbon
|
||||
@@ -358,7 +358,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.0c8 = import_ref Other//export_name, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: %Other.import_ref.c59 = import_ref Other//export_name, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: %Other.import_ref.4a4 = import_ref Other//export_name, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -374,7 +374,7 @@ alias C = Other.C;
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Other.import_ref.0c8
|
||||
// CHECK:STDOUT: .x = imports.%Other.import_ref.c59
|
||||
// CHECK:STDOUT: .x = imports.%Other.import_ref.4a4
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: --- use_export_import.carbon
|
||||
@@ -400,7 +400,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.0ba = import_ref Other//base, inst{{[0-9A-F]+}} [no loc], unloaded
|
||||
// CHECK:STDOUT: %Other.import_ref.636 = import_ref Other//base, loc5_8, unloaded
|
||||
// CHECK:STDOUT: %Other.import_ref.d40 = import_ref Other//base, loc5_8, unloaded
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -426,7 +426,7 @@ alias C = Other.C;
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Other.import_ref.0ba
|
||||
// CHECK:STDOUT: .x = imports.%Other.import_ref.636
|
||||
// CHECK:STDOUT: .x = imports.%Other.import_ref.d40
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @__global_init() {
|
||||
@@ -467,7 +467,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.0ba = import_ref Other//base, inst{{[0-9A-F]+}} [no loc], unloaded
|
||||
// CHECK:STDOUT: %Other.import_ref.636 = import_ref Other//base, loc5_8, unloaded
|
||||
// CHECK:STDOUT: %Other.import_ref.d40 = import_ref Other//base, loc5_8, unloaded
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -493,7 +493,7 @@ alias C = Other.C;
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Other.import_ref.0ba
|
||||
// CHECK:STDOUT: .x = imports.%Other.import_ref.636
|
||||
// CHECK:STDOUT: .x = imports.%Other.import_ref.d40
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @__global_init() {
|
||||
@@ -534,7 +534,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.0ba = import_ref Other//base, inst{{[0-9A-F]+}} [no loc], unloaded
|
||||
// CHECK:STDOUT: %Other.import_ref.636 = import_ref Other//base, loc5_8, unloaded
|
||||
// CHECK:STDOUT: %Other.import_ref.d40 = import_ref Other//base, loc5_8, unloaded
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -560,7 +560,7 @@ alias C = Other.C;
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Other.import_ref.0ba
|
||||
// CHECK:STDOUT: .x = imports.%Other.import_ref.636
|
||||
// CHECK:STDOUT: .x = imports.%Other.import_ref.d40
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @__global_init() {
|
||||
@@ -599,7 +599,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.0c8 = import_ref Other//export_name, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: %Other.import_ref.c59 = import_ref Other//export_name, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: %Other.import_ref.4a4 = import_ref Other//export_name, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -625,7 +625,7 @@ alias C = Other.C;
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Other.import_ref.0c8
|
||||
// CHECK:STDOUT: .x = imports.%Other.import_ref.c59
|
||||
// CHECK:STDOUT: .x = imports.%Other.import_ref.4a4
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @__global_init() {
|
||||
@@ -665,7 +665,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.0c8 = import_ref Other//export_name, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: %Other.import_ref.c59 = import_ref Other//export_name, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: %Other.import_ref.4a4 = import_ref Other//export_name, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -691,7 +691,7 @@ alias C = Other.C;
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Other.import_ref.0c8
|
||||
// CHECK:STDOUT: .x = imports.%Other.import_ref.c59
|
||||
// CHECK:STDOUT: .x = imports.%Other.import_ref.4a4
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @__global_init() {
|
||||
@@ -730,7 +730,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.61a = import_ref Other//export_name_indirect, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: %Other.import_ref.37d = import_ref Other//export_name_indirect, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: %Other.import_ref.aef = import_ref Other//export_name_indirect, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -756,7 +756,7 @@ alias C = Other.C;
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Other.import_ref.61a
|
||||
// CHECK:STDOUT: .x = imports.%Other.import_ref.37d
|
||||
// CHECK:STDOUT: .x = imports.%Other.import_ref.aef
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @__global_init() {
|
||||
@@ -801,7 +801,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.0c8 = import_ref Other//export_name, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: %Other.import_ref.c59 = import_ref Other//export_name, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: %Other.import_ref.4a4 = import_ref Other//export_name, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -827,7 +827,7 @@ alias C = Other.C;
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Other.import_ref.0c8
|
||||
// CHECK:STDOUT: .x = imports.%Other.import_ref.c59
|
||||
// CHECK:STDOUT: .x = imports.%Other.import_ref.4a4
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @__global_init() {
|
||||
@@ -925,7 +925,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.0c8 = import_ref Other//export_name, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: %Other.import_ref.c59 = import_ref Other//export_name, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: %Other.import_ref.4a4 = import_ref Other//export_name, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -944,6 +944,6 @@ alias C = Other.C;
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Other.import_ref.0c8
|
||||
// CHECK:STDOUT: .x = imports.%Other.import_ref.c59
|
||||
// CHECK:STDOUT: .x = imports.%Other.import_ref.4a4
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
+20
-20
@@ -306,7 +306,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.ac2 = import_ref Main//base, inst{{[0-9A-F]+}} [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.534 = import_ref Main//base, loc5_8, unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.022 = import_ref Main//base, loc5_8, unloaded
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -329,7 +329,7 @@ export Poison;
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Main.import_ref.ac2
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.534
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.022
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @__global_init() {
|
||||
@@ -366,7 +366,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.ac2 = import_ref Main//base, inst{{[0-9A-F]+}} [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.534 = import_ref Main//base, loc5_8, unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.022 = import_ref Main//base, loc5_8, unloaded
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -390,7 +390,7 @@ export Poison;
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Main.import_ref.ac2
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.534
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.022
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @__global_init() {
|
||||
@@ -425,7 +425,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.ac2 = import_ref Main//base, inst{{[0-9A-F]+}} [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.534 = import_ref Main//base, loc5_8, unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.022 = import_ref Main//base, loc5_8, unloaded
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -448,7 +448,7 @@ export Poison;
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Main.import_ref.ac2
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.534
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.022
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @__global_init() {
|
||||
@@ -483,7 +483,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.ac2 = import_ref Main//base, inst{{[0-9A-F]+}} [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.534 = import_ref Main//base, loc5_8, unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.022 = import_ref Main//base, loc5_8, unloaded
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -506,7 +506,7 @@ export Poison;
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Main.import_ref.ac2
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.534
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.022
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @__global_init() {
|
||||
@@ -541,7 +541,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.ac2 = import_ref Main//base, inst{{[0-9A-F]+}} [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.534 = import_ref Main//base, loc5_8, unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.022 = import_ref Main//base, loc5_8, unloaded
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -564,7 +564,7 @@ export Poison;
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Main.import_ref.ac2
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.534
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.022
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @__global_init() {
|
||||
@@ -599,7 +599,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.ac2 = import_ref Main//base, inst{{[0-9A-F]+}} [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.534 = import_ref Main//base, loc5_8, unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.022 = import_ref Main//base, loc5_8, unloaded
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -622,7 +622,7 @@ export Poison;
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Main.import_ref.ac2
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.534
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.022
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @__global_init() {
|
||||
@@ -657,7 +657,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.ac2 = import_ref Main//base, inst{{[0-9A-F]+}} [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.534 = import_ref Main//base, loc5_8, unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.022 = import_ref Main//base, loc5_8, unloaded
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -680,7 +680,7 @@ export Poison;
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Main.import_ref.ac2
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.534
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.022
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @__global_init() {
|
||||
@@ -715,7 +715,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.ac2 = import_ref Main//base, inst{{[0-9A-F]+}} [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.534 = import_ref Main//base, loc5_8, unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.022 = import_ref Main//base, loc5_8, unloaded
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -738,7 +738,7 @@ export Poison;
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Main.import_ref.ac2
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.534
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.022
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @__global_init() {
|
||||
@@ -785,7 +785,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.ac2 = import_ref Main//base, inst{{[0-9A-F]+}} [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.534 = import_ref Main//base, loc5_8, unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.022 = import_ref Main//base, loc5_8, unloaded
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -808,7 +808,7 @@ export Poison;
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Main.import_ref.ac2
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.534
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.022
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @__global_init() {
|
||||
@@ -844,7 +844,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.ac2 = import_ref Main//base, inst{{[0-9A-F]+}} [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.534 = import_ref Main//base, loc5_8, unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.022 = import_ref Main//base, loc5_8, unloaded
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -868,7 +868,7 @@ export Poison;
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Main.import_ref.ac2
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.534
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.022
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @__global_init() {
|
||||
|
||||
+16
-16
@@ -190,7 +190,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.ac2 = import_ref Main//base, inst{{[0-9A-F]+}} [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.534 = import_ref Main//base, loc5_8, unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.022 = import_ref Main//base, loc5_8, unloaded
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -207,7 +207,7 @@ var d: D = {.y = ()};
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Main.import_ref.ac2
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.534
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.022
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: --- export_name.carbon
|
||||
@@ -224,7 +224,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.ac2 = import_ref Main//base, inst{{[0-9A-F]+}} [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.534 = import_ref Main//base, loc5_8, unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.022 = import_ref Main//base, loc5_8, unloaded
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -241,7 +241,7 @@ var d: D = {.y = ()};
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Main.import_ref.ac2
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.534
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.022
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: --- export_name_then_import.carbon
|
||||
@@ -275,7 +275,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.038 = import_ref Main//export_import_then_name, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.21b = import_ref Main//export_import_then_name, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.751 = import_ref Main//export_import_then_name, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -298,7 +298,7 @@ var d: D = {.y = ()};
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Main.import_ref.038
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.21b
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.751
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @__global_init() {
|
||||
@@ -333,7 +333,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.038 = import_ref Main//export_name, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.21b = import_ref Main//export_name, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.751 = import_ref Main//export_name, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -356,7 +356,7 @@ var d: D = {.y = ()};
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Main.import_ref.038
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.21b
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.751
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @__global_init() {
|
||||
@@ -391,7 +391,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.038 = import_ref Main//export_import_then_name, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.21b = import_ref Main//export_import_then_name, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.751 = import_ref Main//export_import_then_name, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -414,7 +414,7 @@ var d: D = {.y = ()};
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Main.import_ref.038
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.21b
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.751
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @__global_init() {
|
||||
@@ -486,7 +486,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.038 = import_ref Main//export_import_then_name, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.21b = import_ref Main//export_import_then_name, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.751 = import_ref Main//export_import_then_name, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -509,7 +509,7 @@ var d: D = {.y = ()};
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Main.import_ref.038
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.21b
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.751
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @__global_init() {
|
||||
@@ -552,10 +552,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.038 = import_ref Main//export_import_then_name, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.21b = import_ref Main//export_import_then_name, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.751 = 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.153 = import_ref Main//base, inst{{[0-9A-F]+}} [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.14d = import_ref Main//base, loc9_8, unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.09a = import_ref Main//base, loc9_8, unloaded
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -587,7 +587,7 @@ var d: D = {.y = ()};
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Main.import_ref.038
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.21b
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.751
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @D [from "base.carbon"] {
|
||||
@@ -595,7 +595,7 @@ var d: D = {.y = ()};
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Main.import_ref.153
|
||||
// CHECK:STDOUT: .y = imports.%Main.import_ref.14d
|
||||
// CHECK:STDOUT: .y = imports.%Main.import_ref.09a
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @__global_init() {
|
||||
|
||||
+36
-36
@@ -272,10 +272,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.ac2 = import_ref Main//base, inst{{[0-9A-F]+}} [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.534 = import_ref Main//base, loc5_8, unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.022 = 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.bce = import_ref Main//base, inst{{[0-9A-F]+}} [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.d44 = import_ref Main//base, loc10_8, unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.b8c = import_ref Main//base, loc10_8, unloaded
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -293,7 +293,7 @@ private export C;
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Main.import_ref.ac2
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.534
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.022
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @NSC [from "base.carbon"] {
|
||||
@@ -301,7 +301,7 @@ private export C;
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Main.import_ref.bce
|
||||
// CHECK:STDOUT: .y = imports.%Main.import_ref.d44
|
||||
// CHECK:STDOUT: .y = imports.%Main.import_ref.b8c
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: --- not_reexporting.carbon
|
||||
@@ -344,10 +344,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.038 = import_ref Main//export, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.21b = import_ref Main//export, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.751 = 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.a93 = import_ref Main//export, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.879 = import_ref Main//export, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.18c = import_ref Main//export, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -365,7 +365,7 @@ private export C;
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Main.import_ref.038
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.21b
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.751
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @NSC [from "export.carbon"] {
|
||||
@@ -373,7 +373,7 @@ private export C;
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Main.import_ref.a93
|
||||
// CHECK:STDOUT: .y = imports.%Main.import_ref.879
|
||||
// CHECK:STDOUT: .y = imports.%Main.import_ref.18c
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: --- export_in_impl.carbon
|
||||
@@ -412,10 +412,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.038 = import_ref Main//export, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.21b = import_ref Main//export, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.751 = 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.a93 = import_ref Main//export, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.879 = import_ref Main//export, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.18c = import_ref Main//export, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -450,7 +450,7 @@ private export C;
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Main.import_ref.038
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.21b
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.751
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @NSC [from "export.carbon"] {
|
||||
@@ -458,7 +458,7 @@ private export C;
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Main.import_ref.a93
|
||||
// CHECK:STDOUT: .y = imports.%Main.import_ref.879
|
||||
// CHECK:STDOUT: .y = imports.%Main.import_ref.18c
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @__global_init() {
|
||||
@@ -514,10 +514,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.f5d = import_ref Main//export_export, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.8e4 = import_ref Main//export_export, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.ce5 = 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.684 = import_ref Main//export_export, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.66e = import_ref Main//export_export, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.b98 = import_ref Main//export_export, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -553,7 +553,7 @@ private export C;
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Main.import_ref.f5d
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.8e4
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.ce5
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @NSC [from "export_export.carbon"] {
|
||||
@@ -561,7 +561,7 @@ private export C;
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Main.import_ref.684
|
||||
// CHECK:STDOUT: .y = imports.%Main.import_ref.66e
|
||||
// CHECK:STDOUT: .y = imports.%Main.import_ref.b98
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @__global_init() {
|
||||
@@ -617,10 +617,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.f5d = import_ref Main//export_export, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.8e4 = import_ref Main//export_export, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.ce5 = 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.684 = import_ref Main//export_export, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.66e = import_ref Main//export_export, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.b98 = import_ref Main//export_export, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -655,7 +655,7 @@ private export C;
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Main.import_ref.f5d
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.8e4
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.ce5
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @NSC [from "export_export.carbon"] {
|
||||
@@ -663,7 +663,7 @@ private export C;
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Main.import_ref.684
|
||||
// CHECK:STDOUT: .y = imports.%Main.import_ref.66e
|
||||
// CHECK:STDOUT: .y = imports.%Main.import_ref.b98
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @__global_init() {
|
||||
@@ -749,7 +749,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.ac2 = import_ref Main//base, inst{{[0-9A-F]+}} [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.534 = import_ref Main//base, loc5_8, unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.022 = import_ref Main//base, loc5_8, unloaded
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -765,7 +765,7 @@ private export C;
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Main.import_ref.ac2
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.534
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.022
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: --- import_both.carbon
|
||||
@@ -798,10 +798,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.ac2 = import_ref Main//base, inst{{[0-9A-F]+}} [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.534 = import_ref Main//base, loc5_8, unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.022 = 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.bce = import_ref Main//base, inst{{[0-9A-F]+}} [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.d44 = import_ref Main//base, loc10_8, unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.b8c = import_ref Main//base, loc10_8, unloaded
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -836,7 +836,7 @@ private export C;
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Main.import_ref.ac2
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.534
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.022
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @NSC [from "base.carbon"] {
|
||||
@@ -844,7 +844,7 @@ private export C;
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Main.import_ref.bce
|
||||
// CHECK:STDOUT: .y = imports.%Main.import_ref.d44
|
||||
// CHECK:STDOUT: .y = imports.%Main.import_ref.b8c
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @__global_init() {
|
||||
@@ -900,10 +900,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.038 = import_ref Main//export, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.21b = import_ref Main//export, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.751 = 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.a93 = import_ref Main//export, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.879 = import_ref Main//export, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.18c = import_ref Main//export, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -938,7 +938,7 @@ private export C;
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Main.import_ref.038
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.21b
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.751
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @NSC [from "export.carbon"] {
|
||||
@@ -946,7 +946,7 @@ private export C;
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Main.import_ref.a93
|
||||
// CHECK:STDOUT: .y = imports.%Main.import_ref.879
|
||||
// CHECK:STDOUT: .y = imports.%Main.import_ref.18c
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @__global_init() {
|
||||
@@ -1007,7 +1007,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.ac2 = import_ref Main//base, inst{{[0-9A-F]+}} [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.534 = import_ref Main//base, loc5_8, unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.022 = import_ref Main//base, loc5_8, unloaded
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -1024,7 +1024,7 @@ private export C;
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Main.import_ref.ac2
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.534
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.022
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: --- use_repeat_export.carbon
|
||||
@@ -1045,7 +1045,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.038 = import_ref Main//repeat_export, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.21b = import_ref Main//repeat_export, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.751 = import_ref Main//repeat_export, inst{{[0-9A-F]+}} [indirect], unloaded
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -1068,7 +1068,7 @@ private export C;
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Main.import_ref.038
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.21b
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.751
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @__global_init() {
|
||||
@@ -1103,7 +1103,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.ac2 = import_ref Main//base, inst{{[0-9A-F]+}} [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.534 = import_ref Main//base, loc5_8, unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.022 = import_ref Main//base, loc5_8, unloaded
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -1120,6 +1120,6 @@ private export C;
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Main.import_ref.ac2
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.534
|
||||
// CHECK:STDOUT: .x = imports.%Main.import_ref.022
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
@@ -78,7 +78,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.ddc = import_ref Foo//a, inst{{[0-9A-F]+}} [no loc], unloaded
|
||||
// CHECK:STDOUT: %Foo.import_ref.cd8 = import_ref Foo//a, loc5_8, unloaded
|
||||
// CHECK:STDOUT: %Foo.import_ref.b76 = import_ref Foo//a, loc5_8, unloaded
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -93,6 +93,6 @@ export C.n;
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Foo.import_ref.ddc
|
||||
// CHECK:STDOUT: .n = imports.%Foo.import_ref.cd8
|
||||
// CHECK:STDOUT: .n = imports.%Foo.import_ref.b76
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
@@ -904,8 +904,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.c88: <witness> = import_ref P//library, loc5_35, loaded [concrete = constants.%complete_type.78f]
|
||||
// CHECK:STDOUT: %P.import_ref.89b = import_ref P//library, inst{{[0-9A-F]+}} [no loc], unloaded
|
||||
// CHECK:STDOUT: %P.import_ref.991 = import_ref P//library, loc5_16, unloaded
|
||||
// CHECK:STDOUT: %P.import_ref.dc8 = import_ref P//library, loc5_28, unloaded
|
||||
// CHECK:STDOUT: %P.import_ref.9e1 = import_ref P//library, loc5_16, unloaded
|
||||
// CHECK:STDOUT: %P.import_ref.76c = 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_19, loaded [concrete = constants.%complete_type.357]
|
||||
// CHECK:STDOUT: %P.import_ref.784 = import_ref P//library, inst{{[0-9A-F]+}} [no loc], unloaded
|
||||
@@ -1027,8 +1027,8 @@ fn F0(unused n: i32) -> P.D {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%P.import_ref.89b
|
||||
// CHECK:STDOUT: .n = imports.%P.import_ref.991
|
||||
// CHECK:STDOUT: .m = imports.%P.import_ref.dc8
|
||||
// CHECK:STDOUT: .n = imports.%P.import_ref.9e1
|
||||
// CHECK:STDOUT: .m = imports.%P.import_ref.76c
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: generic class @C(imports.%P.import_ref.c2f: %i32) [from "library.carbon"] {
|
||||
|
||||
@@ -92,6 +92,7 @@ cc_library(
|
||||
"cpp_initializer_list.cpp",
|
||||
"cpp_overload_set.cpp",
|
||||
"facet_type_info.cpp",
|
||||
"field.cpp",
|
||||
"file.cpp",
|
||||
"function.cpp",
|
||||
"generic.cpp",
|
||||
@@ -125,6 +126,7 @@ cc_library(
|
||||
"entity_name.h",
|
||||
"entity_with_params_base.h",
|
||||
"facet_type_info.h",
|
||||
"field.h",
|
||||
"file.h",
|
||||
"function.h",
|
||||
"generic.h",
|
||||
|
||||
@@ -274,6 +274,16 @@ LLVM_DUMP_METHOD auto Dump(const File& file, FacetTypeId facet_type_id)
|
||||
return out.TakeStr();
|
||||
}
|
||||
|
||||
LLVM_DUMP_METHOD auto Dump(const File& file, FieldId field_id) -> std::string {
|
||||
RawStringOstream out;
|
||||
out << field_id;
|
||||
if (field_id.has_value()) {
|
||||
const auto& field = file.fields().Get(field_id);
|
||||
out << ": " << field;
|
||||
}
|
||||
return out.TakeStr();
|
||||
}
|
||||
|
||||
LLVM_DUMP_METHOD auto Dump(const File& file, FunctionId function_id)
|
||||
-> std::string {
|
||||
RawStringOstream out;
|
||||
|
||||
@@ -26,6 +26,7 @@ auto Dump(const File& file, ClassId class_id) -> std::string;
|
||||
auto Dump(const File& file, ConstantId const_id) -> std::string;
|
||||
auto Dump(const File& file, EntityNameId entity_name_id) -> std::string;
|
||||
auto Dump(const File& file, FacetTypeId facet_type_id) -> std::string;
|
||||
auto Dump(const File& file, FieldId field_id) -> std::string;
|
||||
auto Dump(const File& file, FunctionId function_id) -> std::string;
|
||||
auto Dump(const File& file, GenericId generic_id) -> std::string;
|
||||
auto Dump(const File& file, IdentifiedFacetTypeId identified_facet_type_id)
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
// Part of the Carbon Language project, under the Apache License v2.0 with LLVM
|
||||
// Exceptions. See /LICENSE for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
|
||||
#include "toolchain/sem_ir/field.h"
|
||||
|
||||
#include "toolchain/base/value_store_impl.h"
|
||||
|
||||
namespace Carbon {
|
||||
template class ValueStore<SemIR::FieldId, SemIR::Field, Tag<SemIR::CheckIRId>>;
|
||||
} // namespace Carbon
|
||||
@@ -0,0 +1,32 @@
|
||||
// Part of the Carbon Language project, under the Apache License v2.0 with LLVM
|
||||
// Exceptions. See /LICENSE for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
|
||||
#ifndef CARBON_TOOLCHAIN_SEM_IR_FIELD_H_
|
||||
#define CARBON_TOOLCHAIN_SEM_IR_FIELD_H_
|
||||
|
||||
#include "toolchain/base/value_store.h"
|
||||
#include "toolchain/sem_ir/ids.h"
|
||||
|
||||
namespace Carbon::SemIR {
|
||||
|
||||
// A class field.
|
||||
struct Field : public Printable<Field> {
|
||||
ElementIndex index;
|
||||
SemIR::InstId initializer_id;
|
||||
|
||||
auto Print(llvm::raw_ostream& out) const -> void {
|
||||
out << "{index: " << index << ", initializer_id: " << initializer_id << "}";
|
||||
}
|
||||
};
|
||||
|
||||
using FieldStore = ValueStore<FieldId, Field, Tag<CheckIRId>>;
|
||||
|
||||
} // namespace Carbon::SemIR
|
||||
|
||||
namespace Carbon {
|
||||
extern template class ValueStore<SemIR::FieldId, SemIR::Field,
|
||||
Tag<SemIR::CheckIRId>>;
|
||||
} // namespace Carbon
|
||||
|
||||
#endif // CARBON_TOOLCHAIN_SEM_IR_FIELD_H_
|
||||
@@ -45,6 +45,7 @@ File::File(const Parse::Tree* parse_tree, CheckIRId check_ir_id,
|
||||
cpp_overload_sets_(check_ir_id),
|
||||
thunks_(check_ir_id),
|
||||
classes_(check_ir_id),
|
||||
fields_(check_ir_id),
|
||||
interfaces_(check_ir_id),
|
||||
named_constraints_(check_ir_id),
|
||||
require_impls_(check_ir_id),
|
||||
|
||||
+5
-11
@@ -27,6 +27,7 @@
|
||||
#include "toolchain/sem_ir/cpp_overload_set.h"
|
||||
#include "toolchain/sem_ir/entity_name.h"
|
||||
#include "toolchain/sem_ir/facet_type_info.h"
|
||||
#include "toolchain/sem_ir/field.h"
|
||||
#include "toolchain/sem_ir/function.h"
|
||||
#include "toolchain/sem_ir/generic.h"
|
||||
#include "toolchain/sem_ir/ids.h"
|
||||
@@ -180,6 +181,8 @@ class File : public Printable<File> {
|
||||
auto thunks() const -> const ThunkStore& { return thunks_; }
|
||||
auto classes() -> ClassStore& { return classes_; }
|
||||
auto classes() const -> const ClassStore& { return classes_; }
|
||||
auto fields() -> FieldStore& { return fields_; }
|
||||
auto fields() const -> const FieldStore& { return fields_; }
|
||||
auto interfaces() -> InterfaceStore& { return interfaces_; }
|
||||
auto interfaces() const -> const InterfaceStore& { return interfaces_; }
|
||||
auto named_constraints() -> NamedConstraintStore& {
|
||||
@@ -208,11 +211,6 @@ class File : public Printable<File> {
|
||||
auto facet_types() -> FacetTypeInfoStore& { return facet_types_; }
|
||||
auto facet_types() const -> const FacetTypeInfoStore& { return facet_types_; }
|
||||
|
||||
using FieldInitializerMap = Map<SemIR::InstId, SemIR::InstId>;
|
||||
auto field_initializers() -> FieldInitializerMap& {
|
||||
return field_initializers_;
|
||||
}
|
||||
|
||||
// If `class_id` is an imported C++ class, appends the Clang mangled name of
|
||||
// its type to `out` and returns true. Otherwise returns false and leaves
|
||||
// `out` unchanged.
|
||||
@@ -370,12 +368,8 @@ class File : public Printable<File> {
|
||||
// Storage for classes.
|
||||
ClassStore classes_;
|
||||
|
||||
// Map containing initializers for class fields. The map keys are
|
||||
// `InstId`s corresponding to `FielDecl`s.
|
||||
//
|
||||
// TODO: consider replacing this map with a separate store for fields
|
||||
// and tracking a new `FieldId` in the `FieldDecl`.
|
||||
FieldInitializerMap field_initializers_;
|
||||
// Storage for class fields.
|
||||
FieldStore fields_;
|
||||
|
||||
// Storage for interfaces.
|
||||
InterfaceStore interfaces_;
|
||||
|
||||
@@ -1562,6 +1562,15 @@ auto Formatter::FormatArg(FacetTypeId id) -> void {
|
||||
out() << ">";
|
||||
}
|
||||
|
||||
auto Formatter::FormatArg(FieldId id) -> void {
|
||||
const auto& field = sem_ir_->fields().Get(id);
|
||||
out() << field.index;
|
||||
if (field.initializer_id.has_value()) {
|
||||
out() << ", initializer = ";
|
||||
out() << field.initializer_id;
|
||||
}
|
||||
}
|
||||
|
||||
auto Formatter::FormatArg(ImportIRId id) -> void {
|
||||
if (id.has_value()) {
|
||||
out() << GetImportIRLabel(id);
|
||||
|
||||
@@ -265,6 +265,7 @@ class Formatter {
|
||||
auto FormatArg(CharId c) -> void { out() << c; }
|
||||
auto FormatArg(EntityNameId id) -> void;
|
||||
auto FormatArg(FacetTypeId id) -> void;
|
||||
auto FormatArg(FieldId id) -> void;
|
||||
auto FormatArg(IntKind k) -> void { k.Print(out()); }
|
||||
auto FormatArg(FloatKind k) -> void { k.Print(out()); }
|
||||
auto FormatArg(ImportIRId id) -> void;
|
||||
|
||||
@@ -47,6 +47,7 @@ using IdKind = TypeEnum<
|
||||
EntityNameId,
|
||||
ExprRegionId,
|
||||
FacetTypeId,
|
||||
FieldId,
|
||||
FloatKind,
|
||||
FunctionId,
|
||||
GenericId,
|
||||
|
||||
@@ -330,6 +330,13 @@ struct ClassId : public IdBase<ClassId> {
|
||||
using IdBase::IdBase;
|
||||
};
|
||||
|
||||
// The ID of a `Field`.
|
||||
struct FieldId : public IdBase<FieldId> {
|
||||
static constexpr llvm::StringLiteral Label = "field";
|
||||
|
||||
using IdBase::IdBase;
|
||||
};
|
||||
|
||||
// The ID of a `Vtable`.
|
||||
struct VtableId : public IdBase<VtableId> {
|
||||
static constexpr llvm::StringLiteral Label = "vtable";
|
||||
|
||||
@@ -442,6 +442,12 @@ struct Worklist {
|
||||
}
|
||||
}
|
||||
|
||||
auto Add(FieldId field_id) -> void {
|
||||
const auto& field = sem_ir->fields().Get(field_id);
|
||||
Add(field.index);
|
||||
Add(field.initializer_id);
|
||||
}
|
||||
|
||||
auto Add(VtableId vtable_id) -> void {
|
||||
const auto& vtable = sem_ir->vtables().Get(vtable_id);
|
||||
if (vtable.class_id.has_value()) {
|
||||
|
||||
@@ -724,7 +724,7 @@ struct FieldDecl {
|
||||
|
||||
TypeId type_id;
|
||||
NameId name_id;
|
||||
ElementIndex index;
|
||||
FieldId field_id;
|
||||
};
|
||||
|
||||
// The float literal type.
|
||||
|
||||
Reference in New Issue
Block a user