diff --git a/toolchain/check/eval.cpp b/toolchain/check/eval.cpp index f0037ddc87c0..781e32882171 100644 --- a/toolchain/check/eval.cpp +++ b/toolchain/check/eval.cpp @@ -1831,7 +1831,7 @@ static auto TryEvalTypedInst(EvalContext& eval_context, SemIR::InstId inst_id, constexpr auto ConstantKind = InstT::Kind.constant_kind(); if constexpr (ConstantKind == SemIR::InstConstantKind::Never) { return SemIR::ConstantId::NotConstant; - } else if constexpr (ConstantKind == SemIR::InstConstantKind::Unique) { + } else if constexpr (ConstantKind == SemIR::InstConstantKind::AlwaysUnique) { CARBON_CHECK(inst_id.has_value()); return SemIR::ConstantId::ForConcreteConstant(inst_id); } else { diff --git a/toolchain/check/eval_inst.cpp b/toolchain/check/eval_inst.cpp index 715081bf8f96..ec0163adf8c6 100644 --- a/toolchain/check/eval_inst.cpp +++ b/toolchain/check/eval_inst.cpp @@ -16,6 +16,7 @@ #include "toolchain/check/type.h" #include "toolchain/check/type_completion.h" #include "toolchain/diagnostics/diagnostic.h" +#include "toolchain/sem_ir/expr_info.h" #include "toolchain/sem_ir/ids.h" #include "toolchain/sem_ir/pattern.h" #include "toolchain/sem_ir/typed_insts.h" @@ -102,6 +103,19 @@ auto EvalConstantInst(Context& context, SemIR::BindAlias inst) context.constant_values().Get(inst.value_id)); } +auto EvalConstantInst(Context& context, SemIR::BindName inst) + -> ConstantEvalResult { + // A reference binding evaluates to the value it's bound to. + if (inst.value_id.has_value() && SemIR::IsRefCategory(SemIR::GetExprCategory( + context.sem_ir(), inst.value_id))) { + return ConstantEvalResult::Existing( + context.constant_values().Get(inst.value_id)); + } + + // Non-`:!` value bindings are not constant. + return ConstantEvalResult::NotConstant; +} + auto EvalConstantInst(Context& /*context*/, SemIR::BindValue /*inst*/) -> ConstantEvalResult { // TODO: Handle this once we've decided how to represent constant values of diff --git a/toolchain/check/eval_inst.h b/toolchain/check/eval_inst.h index 0a385980621a..5c54b0ee3174 100644 --- a/toolchain/check/eval_inst.h +++ b/toolchain/check/eval_inst.h @@ -107,13 +107,14 @@ constexpr auto ConstantKindHasEvalConstantInst(SemIR::InstConstantKind kind) case SemIR::InstConstantKind::InstAction: case SemIR::InstConstantKind::WheneverPossible: case SemIR::InstConstantKind::Always: - case SemIR::InstConstantKind::Unique: + case SemIR::InstConstantKind::AlwaysUnique: return false; case SemIR::InstConstantKind::Indirect: case SemIR::InstConstantKind::SymbolicOnly: case SemIR::InstConstantKind::SymbolicOrReference: case SemIR::InstConstantKind::Conditional: + case SemIR::InstConstantKind::ConditionalUnique: return true; } } @@ -163,6 +164,7 @@ auto EvalConstantInst() -> void = delete; // - InstConstantKind::SymbolicOnly // - InstConstantKind::SymbolicOrReference // - InstConstantKind::Conditional +// - InstConstantKind::ConditionalUnique // // ... except for cases where the result of evaluation depends on the evaluation // context itself. Those cases are handled by explicit specialization of diff --git a/toolchain/check/import_ref.cpp b/toolchain/check/import_ref.cpp index ac3c84f0d8da..c018005d843c 100644 --- a/toolchain/check/import_ref.cpp +++ b/toolchain/check/import_ref.cpp @@ -17,6 +17,7 @@ #include "toolchain/check/inst.h" #include "toolchain/check/name_lookup.h" #include "toolchain/check/type.h" +#include "toolchain/check/type_completion.h" #include "toolchain/parse/node_ids.h" #include "toolchain/sem_ir/constant.h" #include "toolchain/sem_ir/file.h" @@ -1196,6 +1197,12 @@ static auto RetryOrDone(ImportRefResolver& resolver, SemIR::ConstantId const_id) return ResolveResult::Done(const_id); } +// Internal concept for instruction kinds that produce unique constants. +template +concept HasUniqueConstantKind = + InstT::Kind.constant_kind() == SemIR::InstConstantKind::AlwaysUnique || + InstT::Kind.constant_kind() == SemIR::InstConstantKind::ConditionalUnique; + // Adds `inst` to the local context as a deduplicated constant and returns a // successful `ResolveResult`. Requires that there is no new work. // @@ -1208,10 +1215,9 @@ static auto RetryOrDone(ImportRefResolver& resolver, SemIR::ConstantId const_id) // other instructions with `constant_kind == InstConstantKind::Unique`, because // they should not be deduplicated. template + requires(!HasUniqueConstantKind) static auto ResolveAsDeduplicated(ImportRefResolver& resolver, InstT inst) -> ResolveResult { - static_assert(InstT::Kind.constant_kind() != SemIR::InstConstantKind::Unique, - "Use ResolveAsUnique"); CARBON_CHECK(!resolver.HasNewWork()); // AddImportedConstant produces an unattached constant, so its type must // be unattached as well. @@ -1235,11 +1241,10 @@ static auto ResolveAsDeduplicated(ImportRefResolver& resolver, InstT inst) // other instructions with `constant_kind == InstConstantKind::Unique`, because // it does not perform deduplication. template + requires HasUniqueConstantKind static auto ResolveAsUnique(ImportRefResolver& resolver, SemIR::InstId import_inst_id, InstT inst) -> ResolveResult { - static_assert(InstT::Kind.constant_kind() == SemIR::InstConstantKind::Unique, - "Use ResolveAsDeduplicated"); CARBON_CHECK(!resolver.HasNewWork()); auto inst_id = AddPlaceholderImportedInst(resolver, import_inst_id, inst); auto const_id = SetConstantValue(resolver.local_context(), inst_id, inst); @@ -1455,24 +1460,6 @@ static auto TryResolveTypedInst(ImportRefResolver& resolver, .index = inst.index}); } -static auto TryResolveTypedInst(ImportRefResolver& resolver, SemIR::Vtable inst) - -> ResolveResult { - auto type_const_id = GetLocalConstantId(resolver, inst.type_id); - auto virtual_functions = - GetLocalInstBlockContents(resolver, inst.virtual_functions_id); - if (resolver.HasNewWork()) { - return ResolveResult::Retry(); - } - - auto virtual_functions_id = GetLocalCanonicalInstBlockId( - resolver, inst.virtual_functions_id, virtual_functions); - return ResolveAsDeduplicated( - resolver, - {.type_id = resolver.local_context().types().GetTypeIdForTypeConstantId( - type_const_id), - .virtual_functions_id = virtual_functions_id}); -} - static auto TryResolveTypedInst(ImportRefResolver& resolver, SemIR::BindAlias inst) -> ResolveResult { auto value_id = GetLocalConstantId(resolver, inst.value_id); @@ -1507,16 +1494,18 @@ static auto TryResolveTypedInst(ImportRefResolver& resolver, BindingPatternT inst, SemIR::InstId import_inst_id) -> ResolveResult { auto type_const_id = GetLocalConstantId(resolver, inst.type_id); + const auto& import_entity_name = + resolver.import_entity_names().Get(inst.entity_name_id); + auto parent_scope_id = + GetLocalNameScopeId(resolver, import_entity_name.parent_scope_id); if (resolver.HasNewWork()) { return ResolveResult::Retry(); } - const auto& import_entity_name = - resolver.import_entity_names().Get(inst.entity_name_id); auto name_id = GetLocalNameId(resolver, import_entity_name.name_id); auto entity_name_id = resolver.local_entity_names().Add( {.name_id = name_id, - .parent_scope_id = SemIR::NameScopeId::None, + .parent_scope_id = parent_scope_id, .bind_index_value = import_entity_name.bind_index().index, .is_template = import_entity_name.is_template}); return ResolveAsUnique( @@ -2630,6 +2619,27 @@ static auto TryResolveTypedInst(ImportRefResolver& resolver, {.type_id = type_id, .callee_id = callee_id, .specific_id = specific_id}); } +static auto TryResolveTypedInst(ImportRefResolver& resolver, + SemIR::StructAccess inst) -> ResolveResult { + auto type_id = GetLocalConstantId(resolver, inst.type_id); + auto struct_id = GetLocalConstantInstId(resolver, inst.struct_id); + if (resolver.HasNewWork()) { + return ResolveResult::Retry(); + } + + // A `struct_access` constant requires its struct operand to have a complete + // type. + CompleteTypeOrCheckFail(resolver.local_context(), + resolver.local_insts().Get(struct_id).type_id()); + + return ResolveAsDeduplicated( + resolver, + {.type_id = + resolver.local_context().types().GetTypeIdForTypeConstantId(type_id), + .struct_id = struct_id, + .index = inst.index}); +} + static auto TryResolveTypedInst(ImportRefResolver& resolver, SemIR::StructType inst) -> ResolveResult { CARBON_CHECK(inst.type_id == SemIR::TypeType::TypeId); @@ -2676,6 +2686,44 @@ static auto TryResolveTypedInst(ImportRefResolver& resolver, GetLocalCanonicalInstBlockId(resolver, inst.elements_id, elems)}); } +static auto TryResolveTypedInst(ImportRefResolver& resolver, + SemIR::TupleAccess inst) -> ResolveResult { + auto type_id = GetLocalConstantId(resolver, inst.type_id); + auto tuple_id = GetLocalConstantInstId(resolver, inst.tuple_id); + if (resolver.HasNewWork()) { + return ResolveResult::Retry(); + } + + // A `tuple_access` constant requires its struct operand to have a complete + // type. + CompleteTypeOrCheckFail(resolver.local_context(), + resolver.local_insts().Get(tuple_id).type_id()); + + return ResolveAsDeduplicated( + resolver, + {.type_id = + resolver.local_context().types().GetTypeIdForTypeConstantId(type_id), + .tuple_id = tuple_id, + .index = inst.index}); +} + +static auto TryResolveTypedInst(ImportRefResolver& resolver, + SemIR::TuplePattern inst, + SemIR::InstId import_inst_id) -> ResolveResult { + auto type_const_id = GetLocalConstantId(resolver, inst.type_id); + auto elements = GetLocalInstBlockContents(resolver, inst.elements_id); + if (resolver.HasNewWork()) { + return ResolveResult::Retry(); + } + + return ResolveAsUnique( + resolver, import_inst_id, + {.type_id = resolver.local_context().types().GetTypeIdForTypeConstantId( + type_const_id), + .elements_id = + GetLocalCanonicalInstBlockId(resolver, inst.elements_id, elements)}); +} + static auto TryResolveTypedInst(ImportRefResolver& resolver, SemIR::TupleType inst) -> ResolveResult { CARBON_CHECK(inst.type_id == SemIR::TypeType::TypeId); @@ -2750,6 +2798,40 @@ static auto TryResolveTypedInst(ImportRefResolver& resolver, .subpattern_id = subpattern_id}); } +static auto TryResolveTypedInst(ImportRefResolver& resolver, + SemIR::VarStorage inst, + SemIR::InstId import_inst_id) -> ResolveResult { + auto type_const_id = GetLocalConstantId(resolver, inst.type_id); + auto pattern_id = GetLocalConstantInstId(resolver, inst.pattern_id); + if (resolver.HasNewWork()) { + return ResolveResult::Retry(); + } + + return ResolveAsUnique( + resolver, import_inst_id, + {.type_id = resolver.local_context().types().GetTypeIdForTypeConstantId( + type_const_id), + .pattern_id = pattern_id}); +} + +static auto TryResolveTypedInst(ImportRefResolver& resolver, SemIR::Vtable inst) + -> ResolveResult { + auto type_const_id = GetLocalConstantId(resolver, inst.type_id); + auto virtual_functions = + GetLocalInstBlockContents(resolver, inst.virtual_functions_id); + if (resolver.HasNewWork()) { + return ResolveResult::Retry(); + } + + auto virtual_functions_id = GetLocalCanonicalInstBlockId( + resolver, inst.virtual_functions_id, virtual_functions); + return ResolveAsDeduplicated( + resolver, + {.type_id = resolver.local_context().types().GetTypeIdForTypeConstantId( + type_const_id), + .virtual_functions_id = virtual_functions_id}); +} + // Tries to resolve the InstId, returning a canonical constant when ready, or // `None` if more has been added to the stack. This is the same as // TryResolveInst, except that it may resolve symbolic constants as canonical @@ -2797,10 +2879,6 @@ static auto TryResolveInstCanonical(ImportRefResolver& resolver, case CARBON_KIND(SemIR::BindingPattern inst): { return TryResolveTypedInst(resolver, inst, inst_id); } - case SemIR::BindName::Kind: { - // TODO: Should we be resolving BindNames at all? - return ResolveResult::Done(SemIR::ConstantId::NotConstant); - } case CARBON_KIND(SemIR::BindSymbolicName inst): { return TryResolveTypedInst(resolver, inst); } @@ -2906,6 +2984,9 @@ static auto TryResolveInstCanonical(ImportRefResolver& resolver, case CARBON_KIND(SemIR::SpecificImplFunction inst): { return TryResolveTypedInst(resolver, inst); } + case CARBON_KIND(SemIR::StructAccess inst): { + return TryResolveTypedInst(resolver, inst); + } case CARBON_KIND(SemIR::StructType inst): { return TryResolveTypedInst(resolver, inst); } @@ -2915,6 +2996,12 @@ static auto TryResolveInstCanonical(ImportRefResolver& resolver, case CARBON_KIND(SemIR::SymbolicBindingPattern inst): { return TryResolveTypedInst(resolver, inst, inst_id); } + case CARBON_KIND(SemIR::TupleAccess inst): { + return TryResolveTypedInst(resolver, inst); + } + case CARBON_KIND(SemIR::TuplePattern inst): { + return TryResolveTypedInst(resolver, inst, inst_id); + } case CARBON_KIND(SemIR::TupleType inst): { return TryResolveTypedInst(resolver, inst); } @@ -2930,13 +3017,26 @@ static auto TryResolveInstCanonical(ImportRefResolver& resolver, case CARBON_KIND(SemIR::VarPattern inst): { return TryResolveTypedInst(resolver, inst, inst_id); } + case CARBON_KIND(SemIR::VarStorage inst): { + return TryResolveTypedInst(resolver, inst, inst_id); + } case CARBON_KIND(SemIR::Vtable inst): { return TryResolveTypedInst(resolver, inst); } default: { + auto inst_constant_id = resolver.import_constant_values().Get(inst_id); + if (!inst_constant_id.is_constant()) { + // TODO: Import of non-constant BindNames happens when importing `let` + // declarations. + CARBON_CHECK(untyped_inst.Is(), + "TryResolveInst on non-constant instruction {0}", + untyped_inst); + return ResolveResult::Done(SemIR::ConstantId::NotConstant); + } + // This instruction might have a constant value of a different kind. auto constant_inst_id = - resolver.import_constant_values().GetConstantInstId(inst_id); + resolver.import_constant_values().GetInstId(inst_constant_id); if (constant_inst_id == inst_id) { // Produce a diagnostic to provide a source location with the CHECK // failure. diff --git a/toolchain/check/testdata/alias/builtins.carbon b/toolchain/check/testdata/alias/builtins.carbon index 790dc12d6dd8..fdede69b09a3 100644 --- a/toolchain/check/testdata/alias/builtins.carbon +++ b/toolchain/check/testdata/alias/builtins.carbon @@ -103,7 +103,7 @@ let a_test: bool = a; // CHECK:STDOUT: %.loc12_13.2: type = value_of_initializer %bool.make_type [concrete = bool] // CHECK:STDOUT: %.loc12_13.3: type = converted %bool.make_type, %.loc12_13.2 [concrete = bool] // CHECK:STDOUT: } -// CHECK:STDOUT: %a_test: bool = bind_name a_test, +// CHECK:STDOUT: %a_test: bool = bind_name a_test, [concrete = ] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { diff --git a/toolchain/check/testdata/alias/no_prelude/export_name.carbon b/toolchain/check/testdata/alias/no_prelude/export_name.carbon index 7df8f2fae091..d2e3b58bfe04 100644 --- a/toolchain/check/testdata/alias/no_prelude/export_name.carbon +++ b/toolchain/check/testdata/alias/no_prelude/export_name.carbon @@ -188,7 +188,7 @@ var d: D* = &c; // CHECK:STDOUT: } // CHECK:STDOUT: %d.var: ref %C = var %d.var_patt [concrete] // CHECK:STDOUT: %D.ref: type = name_ref D, imports.%Main.D [concrete = constants.%C] -// CHECK:STDOUT: %d: ref %C = bind_name d, %d.var +// CHECK:STDOUT: %d: ref %C = bind_name d, %d.var [concrete = %d.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "export.carbon"] { @@ -230,7 +230,7 @@ var d: D* = &c; // CHECK:STDOUT: } // CHECK:STDOUT: %c.var: ref = var %c.var_patt [concrete = ] // CHECK:STDOUT: %C.ref: = name_ref C, [concrete = ] -// CHECK:STDOUT: %c: = bind_name c, +// CHECK:STDOUT: %c: = bind_name c, [concrete = ] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -250,6 +250,7 @@ var d: D* = &c; // CHECK:STDOUT: %C.val: %C = struct_value () [concrete] // CHECK:STDOUT: %ptr.019: type = ptr_type %C [concrete] // CHECK:STDOUT: %pattern_type.44a: type = pattern_type %ptr.019 [concrete] +// CHECK:STDOUT: %addr: %ptr.019 = addr_of file.%c.var [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -273,7 +274,7 @@ var d: D* = &c; // CHECK:STDOUT: } // CHECK:STDOUT: %c.var: ref %C = var %c.var_patt [concrete] // CHECK:STDOUT: %C.ref: type = name_ref C, imports.%Main.C [concrete = constants.%C] -// CHECK:STDOUT: %c: ref %C = bind_name c, %c.var +// CHECK:STDOUT: %c: ref %C = bind_name c, %c.var [concrete = %c.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %d.patt: %pattern_type.44a = binding_pattern d [concrete] // CHECK:STDOUT: %d.var_patt: %pattern_type.44a = var_pattern %d.patt [concrete] @@ -283,7 +284,7 @@ var d: D* = &c; // CHECK:STDOUT: %D.ref: type = name_ref D, imports.%Main.D [concrete = constants.%C] // CHECK:STDOUT: %ptr: type = ptr_type %D.ref [concrete = constants.%ptr.019] // CHECK:STDOUT: } -// CHECK:STDOUT: %d: ref %ptr.019 = bind_name d, %d.var +// CHECK:STDOUT: %d: ref %ptr.019 = bind_name d, %d.var [concrete = %d.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "export_orig.carbon"] { @@ -299,8 +300,8 @@ var d: D* = &c; // CHECK:STDOUT: %.loc7_13.2: init %C = class_init (), file.%c.var [concrete = constants.%C.val] // CHECK:STDOUT: %.loc7_1: init %C = converted %.loc7_13.1, %.loc7_13.2 [concrete = constants.%C.val] // CHECK:STDOUT: assign file.%c.var, %.loc7_1 -// CHECK:STDOUT: %c.ref: ref %C = name_ref c, file.%c -// CHECK:STDOUT: %addr: %ptr.019 = addr_of %c.ref +// CHECK:STDOUT: %c.ref: ref %C = name_ref c, file.%c [concrete = file.%c.var] +// CHECK:STDOUT: %addr: %ptr.019 = addr_of %c.ref [concrete = constants.%addr] // CHECK:STDOUT: assign file.%d.var, %addr // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/alias/no_prelude/import.carbon b/toolchain/check/testdata/alias/no_prelude/import.carbon index 3d874679925f..82508f7d5c87 100644 --- a/toolchain/check/testdata/alias/no_prelude/import.carbon +++ b/toolchain/check/testdata/alias/no_prelude/import.carbon @@ -56,15 +56,10 @@ alias a_alias_alias = a_alias; var b: () = a_alias; -// --- fail_var3.carbon +// --- var3.carbon library "[[@TEST_NAME]]"; -// CHECK:STDERR: fail_var3.carbon:[[@LINE+5]]:1: in import [InImport] -// CHECK:STDERR: var2.carbon:8:5: error: semantics TODO: `Non-constant ImportRefLoaded (comes up with var)` [SemanticsTodo] -// CHECK:STDERR: var b: () = a_alias; -// CHECK:STDERR: ^ -// CHECK:STDERR: import library "var2"; var c: () = a_alias_alias; @@ -97,7 +92,7 @@ var c: () = a_alias_alias; // CHECK:STDOUT: %C.ref.loc8: type = name_ref C, %C.decl [concrete = constants.%C] // CHECK:STDOUT: %ptr: type = ptr_type %C.ref.loc8 [concrete = constants.%ptr] // CHECK:STDOUT: } -// CHECK:STDOUT: %a: ref %ptr = bind_name a, %a.var +// CHECK:STDOUT: %a: ref %ptr = bind_name a, %a.var [concrete = %a.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { @@ -147,7 +142,7 @@ var c: () = a_alias_alias; // CHECK:STDOUT: %c_alias.ref.loc8: type = name_ref c_alias, imports.%Main.c_alias [concrete = constants.%C] // CHECK:STDOUT: %ptr: type = ptr_type %c_alias.ref.loc8 [concrete = constants.%ptr] // CHECK:STDOUT: } -// CHECK:STDOUT: %b: ref %ptr = bind_name b, %b.var +// CHECK:STDOUT: %b: ref %ptr = bind_name b, %b.var [concrete = %b.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "class1.carbon"] { @@ -190,7 +185,7 @@ var c: () = a_alias_alias; // CHECK:STDOUT: %c_alias_alias.ref: type = name_ref c_alias_alias, imports.%Main.c_alias_alias [concrete = constants.%C] // CHECK:STDOUT: %ptr: type = ptr_type %c_alias_alias.ref [concrete = constants.%ptr] // CHECK:STDOUT: } -// CHECK:STDOUT: %c: ref %ptr = bind_name c, %c.var +// CHECK:STDOUT: %c: ref %ptr = bind_name c, %c.var [concrete = %c.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "class2.carbon"] { @@ -222,9 +217,9 @@ var c: () = a_alias_alias; // CHECK:STDOUT: %.loc4_9.2: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc4_9.3: type = converted %.loc4_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %a: ref %empty_tuple.type = bind_name a, %a.var -// CHECK:STDOUT: %a.ref: ref %empty_tuple.type = name_ref a, %a -// CHECK:STDOUT: %a_alias: ref %empty_tuple.type = bind_alias a_alias, %a +// CHECK:STDOUT: %a: ref %empty_tuple.type = bind_name a, %a.var [concrete = %a.var] +// CHECK:STDOUT: %a.ref: ref %empty_tuple.type = name_ref a, %a [concrete = %a.var] +// CHECK:STDOUT: %a_alias: ref %empty_tuple.type = bind_alias a_alias, %a [concrete = %a.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -246,7 +241,10 @@ var c: () = a_alias_alias; // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Main.a = import_ref Main//var1, a, unloaded -// CHECK:STDOUT: %Main.a_alias: ref %empty_tuple.type = import_ref Main//var1, a_alias, loaded +// CHECK:STDOUT: %Main.a_alias: ref %empty_tuple.type = import_ref Main//var1, a_alias, loaded [concrete = %a.var] +// CHECK:STDOUT: %a.patt: %pattern_type = binding_pattern a [concrete] +// CHECK:STDOUT: %a.var_patt: %pattern_type = var_pattern %a.patt [concrete] +// CHECK:STDOUT: %a.var: ref %empty_tuple.type = var %a.var_patt [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -257,8 +255,8 @@ var c: () = a_alias_alias; // CHECK:STDOUT: .b = %b // CHECK:STDOUT: } // CHECK:STDOUT: %default.import = import -// CHECK:STDOUT: %a_alias.ref: ref %empty_tuple.type = name_ref a_alias, imports.%Main.a_alias -// CHECK:STDOUT: %a_alias_alias: ref %empty_tuple.type = bind_alias a_alias_alias, imports.%Main.a_alias +// CHECK:STDOUT: %a_alias.ref: ref %empty_tuple.type = name_ref a_alias, imports.%Main.a_alias [concrete = imports.%a.var] +// CHECK:STDOUT: %a_alias_alias: ref %empty_tuple.type = bind_alias a_alias_alias, imports.%Main.a_alias [concrete = imports.%a.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %b.patt: %pattern_type = binding_pattern b [concrete] // CHECK:STDOUT: %b.var_patt: %pattern_type = var_pattern %b.patt [concrete] @@ -268,19 +266,19 @@ var c: () = a_alias_alias; // CHECK:STDOUT: %.loc8_9.2: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc8_9.3: type = converted %.loc8_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %b: ref %empty_tuple.type = bind_name b, %b.var +// CHECK:STDOUT: %b: ref %empty_tuple.type = bind_name b, %b.var [concrete = %b.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %a_alias.ref: ref %empty_tuple.type = name_ref a_alias, imports.%Main.a_alias +// CHECK:STDOUT: %a_alias.ref: ref %empty_tuple.type = name_ref a_alias, imports.%Main.a_alias [concrete = imports.%a.var] // CHECK:STDOUT: %.loc8_13: init %empty_tuple.type = tuple_init () to file.%b.var [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc8_1: init %empty_tuple.type = converted %a_alias.ref, %.loc8_13 [concrete = constants.%empty_tuple] // CHECK:STDOUT: assign file.%b.var, %.loc8_1 // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: --- fail_var3.carbon +// CHECK:STDOUT: --- var3.carbon // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] @@ -289,8 +287,11 @@ var c: () = a_alias_alias; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %Main.a_alias_alias: ref %empty_tuple.type = import_ref Main//var2, a_alias_alias, loaded +// CHECK:STDOUT: %Main.a_alias_alias: ref %empty_tuple.type = import_ref Main//var2, a_alias_alias, loaded [concrete = %a.var] // CHECK:STDOUT: %Main.b = import_ref Main//var2, b, unloaded +// CHECK:STDOUT: %a.patt: %pattern_type = binding_pattern a [concrete] +// CHECK:STDOUT: %a.var_patt: %pattern_type = var_pattern %a.patt [concrete] +// CHECK:STDOUT: %a.var: ref %empty_tuple.type = var %a.var_patt [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -305,19 +306,19 @@ var c: () = a_alias_alias; // CHECK:STDOUT: %c.var_patt: %pattern_type = var_pattern %c.patt [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %c.var: ref %empty_tuple.type = var %c.var_patt [concrete] -// CHECK:STDOUT: %.loc11_9.1: type = splice_block %.loc11_9.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc11_9.2: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc11_9.3: type = converted %.loc11_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %.loc6_9.1: type = splice_block %.loc6_9.3 [concrete = constants.%empty_tuple.type] { +// CHECK:STDOUT: %.loc6_9.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc6_9.3: type = converted %.loc6_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %c: ref %empty_tuple.type = bind_name c, %c.var +// CHECK:STDOUT: %c: ref %empty_tuple.type = bind_name c, %c.var [concrete = %c.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %a_alias_alias.ref: ref %empty_tuple.type = name_ref a_alias_alias, imports.%Main.a_alias_alias -// CHECK:STDOUT: %.loc11_13: init %empty_tuple.type = tuple_init () to file.%c.var [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc11_1: init %empty_tuple.type = converted %a_alias_alias.ref, %.loc11_13 [concrete = constants.%empty_tuple] -// CHECK:STDOUT: assign file.%c.var, %.loc11_1 +// CHECK:STDOUT: %a_alias_alias.ref: ref %empty_tuple.type = name_ref a_alias_alias, imports.%Main.a_alias_alias [concrete = imports.%a.var] +// CHECK:STDOUT: %.loc6_13: init %empty_tuple.type = tuple_init () to file.%c.var [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc6_1: init %empty_tuple.type = converted %a_alias_alias.ref, %.loc6_13 [concrete = constants.%empty_tuple] +// CHECK:STDOUT: assign file.%c.var, %.loc6_1 // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/alias/no_prelude/import_access.carbon b/toolchain/check/testdata/alias/no_prelude/import_access.carbon index d1e3099a62ef..b68c33846388 100644 --- a/toolchain/check/testdata/alias/no_prelude/import_access.carbon +++ b/toolchain/check/testdata/alias/no_prelude/import_access.carbon @@ -113,7 +113,7 @@ var inst: Test.A = {}; // CHECK:STDOUT: } // CHECK:STDOUT: %inst.var: ref %C = var %inst.var_patt [concrete] // CHECK:STDOUT: %A.ref: type = name_ref A, imports.%Test.A [concrete = constants.%C] -// CHECK:STDOUT: %inst: ref %C = bind_name inst, %inst.var +// CHECK:STDOUT: %inst: ref %C = bind_name inst, %inst.var [concrete = %inst.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "def.carbon"] { @@ -155,7 +155,7 @@ var inst: Test.A = {}; // CHECK:STDOUT: } // CHECK:STDOUT: %inst.var: ref = var %inst.var_patt [concrete = ] // CHECK:STDOUT: %A.ref: = name_ref A, [concrete = ] -// CHECK:STDOUT: %inst: = bind_name inst, +// CHECK:STDOUT: %inst: = bind_name inst, [concrete = ] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -193,7 +193,7 @@ var inst: Test.A = {}; // CHECK:STDOUT: %Test.ref: = name_ref Test, imports.%Test [concrete = imports.%Test] // CHECK:STDOUT: %A.ref: = name_ref A, [concrete = ] // CHECK:STDOUT: } -// CHECK:STDOUT: %inst: = bind_name inst, +// CHECK:STDOUT: %inst: = bind_name inst, [concrete = ] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { diff --git a/toolchain/check/testdata/alias/no_prelude/import_order.carbon b/toolchain/check/testdata/alias/no_prelude/import_order.carbon index aa22ff1d57cf..ffb5e1c0a34d 100644 --- a/toolchain/check/testdata/alias/no_prelude/import_order.carbon +++ b/toolchain/check/testdata/alias/no_prelude/import_order.carbon @@ -122,28 +122,28 @@ var a_val: a = {.v = b_val.v}; // CHECK:STDOUT: } // CHECK:STDOUT: %d_val.var: ref %C = var %d_val.var_patt [concrete] // CHECK:STDOUT: %d.ref: type = name_ref d, imports.%Main.d [concrete = constants.%C] -// CHECK:STDOUT: %d_val: ref %C = bind_name d_val, %d_val.var +// CHECK:STDOUT: %d_val: ref %C = bind_name d_val, %d_val.var [concrete = %d_val.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %c_val.patt: %pattern_type = binding_pattern c_val [concrete] // CHECK:STDOUT: %c_val.var_patt: %pattern_type = var_pattern %c_val.patt [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %c_val.var: ref %C = var %c_val.var_patt [concrete] // CHECK:STDOUT: %c.ref: type = name_ref c, imports.%Main.c [concrete = constants.%C] -// CHECK:STDOUT: %c_val: ref %C = bind_name c_val, %c_val.var +// CHECK:STDOUT: %c_val: ref %C = bind_name c_val, %c_val.var [concrete = %c_val.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %b_val.patt: %pattern_type = binding_pattern b_val [concrete] // CHECK:STDOUT: %b_val.var_patt: %pattern_type = var_pattern %b_val.patt [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %b_val.var: ref %C = var %b_val.var_patt [concrete] // CHECK:STDOUT: %b.ref: type = name_ref b, imports.%Main.b [concrete = constants.%C] -// CHECK:STDOUT: %b_val: ref %C = bind_name b_val, %b_val.var +// CHECK:STDOUT: %b_val: ref %C = bind_name b_val, %b_val.var [concrete = %b_val.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %a_val.patt: %pattern_type = binding_pattern a_val [concrete] // CHECK:STDOUT: %a_val.var_patt: %pattern_type = var_pattern %a_val.patt [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %a_val.var: ref %C = var %a_val.var_patt [concrete] // CHECK:STDOUT: %a.ref: type = name_ref a, imports.%Main.a [concrete = constants.%C] -// CHECK:STDOUT: %a_val: ref %C = bind_name a_val, %a_val.var +// CHECK:STDOUT: %a_val: ref %C = bind_name a_val, %a_val.var [concrete = %a_val.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "a.carbon"] { @@ -164,9 +164,9 @@ var a_val: a = {.v = b_val.v}; // CHECK:STDOUT: %.loc7_24.4: init %C = class_init (%.loc7_24.3), file.%d_val.var [concrete = constants.%C.val] // CHECK:STDOUT: %.loc7_1: init %C = converted %.loc7_24.1, %.loc7_24.4 [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 +// 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.f99 [concrete = imports.%.2fc] -// CHECK:STDOUT: %.loc8_27.1: ref %empty_tuple.type = class_element_access %d_val.ref, element0 +// CHECK:STDOUT: %.loc8_27.1: ref %empty_tuple.type = class_element_access %d_val.ref, element0 [concrete = constants.%.abf] // CHECK:STDOUT: %.loc8_29.1: %struct_type.v = struct_literal (%.loc8_27.1) // CHECK:STDOUT: %.loc8_29.2: ref %empty_tuple.type = class_element_access file.%c_val.var, element0 [concrete = constants.%.914] // CHECK:STDOUT: %.loc8_27.2: init %empty_tuple.type = tuple_init () to %.loc8_29.2 [concrete = constants.%empty_tuple] @@ -174,9 +174,9 @@ var a_val: a = {.v = b_val.v}; // CHECK:STDOUT: %.loc8_29.4: init %C = class_init (%.loc8_29.3), file.%c_val.var [concrete = constants.%C.val] // CHECK:STDOUT: %.loc8_1: init %C = converted %.loc8_29.1, %.loc8_29.4 [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 +// 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.f99 [concrete = imports.%.2fc] -// CHECK:STDOUT: %.loc9_27.1: ref %empty_tuple.type = class_element_access %c_val.ref, element0 +// CHECK:STDOUT: %.loc9_27.1: ref %empty_tuple.type = class_element_access %c_val.ref, element0 [concrete = constants.%.914] // CHECK:STDOUT: %.loc9_29.1: %struct_type.v = struct_literal (%.loc9_27.1) // CHECK:STDOUT: %.loc9_29.2: ref %empty_tuple.type = class_element_access file.%b_val.var, element0 [concrete = constants.%.604] // CHECK:STDOUT: %.loc9_27.2: init %empty_tuple.type = tuple_init () to %.loc9_29.2 [concrete = constants.%empty_tuple] @@ -184,9 +184,9 @@ var a_val: a = {.v = b_val.v}; // CHECK:STDOUT: %.loc9_29.4: init %C = class_init (%.loc9_29.3), file.%b_val.var [concrete = constants.%C.val] // CHECK:STDOUT: %.loc9_1: init %C = converted %.loc9_29.1, %.loc9_29.4 [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 +// 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.f99 [concrete = imports.%.2fc] -// CHECK:STDOUT: %.loc10_27.1: ref %empty_tuple.type = class_element_access %b_val.ref, element0 +// CHECK:STDOUT: %.loc10_27.1: ref %empty_tuple.type = class_element_access %b_val.ref, element0 [concrete = constants.%.604] // CHECK:STDOUT: %.loc10_29.1: %struct_type.v = struct_literal (%.loc10_27.1) // CHECK:STDOUT: %.loc10_29.2: ref %empty_tuple.type = class_element_access file.%a_val.var, element0 [concrete = constants.%.b4e] // CHECK:STDOUT: %.loc10_27.2: init %empty_tuple.type = tuple_init () to %.loc10_29.2 [concrete = constants.%empty_tuple] diff --git a/toolchain/check/testdata/array/init_dependent_bound.carbon b/toolchain/check/testdata/array/init_dependent_bound.carbon index 1b3b09a5f4ed..2a28abac4220 100644 --- a/toolchain/check/testdata/array/init_dependent_bound.carbon +++ b/toolchain/check/testdata/array/init_dependent_bound.carbon @@ -181,7 +181,7 @@ fn H() { G(3); } // CHECK:STDOUT: %.loc11_36: %tuple.type = tuple_literal (%int_1, %int_2, %int_3) // CHECK:STDOUT: assign %arr.var, // CHECK:STDOUT: -// CHECK:STDOUT: %arr: = bind_name arr, +// CHECK:STDOUT: %arr: = bind_name arr, [concrete = ] // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/array/no_prelude/basics.carbon b/toolchain/check/testdata/array/no_prelude/basics.carbon index cbcadcb8fae8..d6034613cde8 100644 --- a/toolchain/check/testdata/array/no_prelude/basics.carbon +++ b/toolchain/check/testdata/array/no_prelude/basics.carbon @@ -110,9 +110,12 @@ var a: array(1, 1); // CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [concrete] // CHECK:STDOUT: %array_type: type = array_type %int_3, %empty_tuple.type [concrete] // CHECK:STDOUT: %pattern_type.035: type = pattern_type %array_type [concrete] +// CHECK:STDOUT: %tuple.elem0: ref %empty_tuple.type = tuple_access file.%a.var, element0 [concrete] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %tuple.elem1: ref %empty_tuple.type = tuple_access file.%a.var, element1 [concrete] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete] +// CHECK:STDOUT: %tuple.elem2: ref %empty_tuple.type = tuple_access file.%a.var, element2 [concrete] // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete] // CHECK:STDOUT: %array: %array_type = tuple_value (%empty_tuple, %empty_tuple, %empty_tuple) [concrete] // CHECK:STDOUT: } @@ -129,23 +132,23 @@ var a: array(1, 1); // CHECK:STDOUT: %.loc6_15.2: type = converted %.loc6_15.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %array_type: type = array_type %int_3, %.loc6_15.2 [concrete = constants.%array_type] // CHECK:STDOUT: } -// CHECK:STDOUT: %b: ref %array_type = bind_name b, %b.var +// CHECK:STDOUT: %b: ref %array_type = bind_name b, %b.var [concrete = %b.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %a.ref: ref %tuple.type = name_ref a, file.%a -// CHECK:STDOUT: %tuple.elem0: ref %empty_tuple.type = tuple_access %a.ref, element0 +// CHECK:STDOUT: %a.ref: ref %tuple.type = name_ref a, file.%a [concrete = file.%a.var] +// CHECK:STDOUT: %tuple.elem0: ref %empty_tuple.type = tuple_access %a.ref, element0 [concrete = constants.%tuple.elem0] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0] // CHECK:STDOUT: %.loc6_23.1: ref %empty_tuple.type = array_index file.%b.var, %int_0 // CHECK:STDOUT: %.loc6_23.2: init %empty_tuple.type = tuple_init () to %.loc6_23.1 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc6_23.3: init %empty_tuple.type = converted %tuple.elem0, %.loc6_23.2 [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %tuple.elem1: ref %empty_tuple.type = tuple_access %a.ref, element1 +// CHECK:STDOUT: %tuple.elem1: ref %empty_tuple.type = tuple_access %a.ref, element1 [concrete = constants.%tuple.elem1] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1] // CHECK:STDOUT: %.loc6_23.4: ref %empty_tuple.type = array_index file.%b.var, %int_1 // CHECK:STDOUT: %.loc6_23.5: init %empty_tuple.type = tuple_init () to %.loc6_23.4 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc6_23.6: init %empty_tuple.type = converted %tuple.elem1, %.loc6_23.5 [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %tuple.elem2: ref %empty_tuple.type = tuple_access %a.ref, element2 +// CHECK:STDOUT: %tuple.elem2: ref %empty_tuple.type = tuple_access %a.ref, element2 [concrete = constants.%tuple.elem2] // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2] // CHECK:STDOUT: %.loc6_23.7: ref %empty_tuple.type = array_index file.%b.var, %int_2 // CHECK:STDOUT: %.loc6_23.8: init %empty_tuple.type = tuple_init () to %.loc6_23.7 [concrete = constants.%empty_tuple] @@ -301,7 +304,16 @@ var a: array(1, 1); // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %tuple.type: type = tuple_type (%empty_tuple.type, %empty_tuple.type, %empty_tuple.type, %empty_tuple.type, %empty_tuple.type, %empty_tuple.type, %empty_tuple.type, %empty_tuple.type, %empty_tuple.type) [concrete] +// CHECK:STDOUT: %tuple.elem0: ref %empty_tuple.type = tuple_access file.%a.var, element0 [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %tuple.elem1: ref %empty_tuple.type = tuple_access file.%a.var, element1 [concrete] +// CHECK:STDOUT: %tuple.elem2: ref %empty_tuple.type = tuple_access file.%a.var, element2 [concrete] +// CHECK:STDOUT: %tuple.elem3: ref %empty_tuple.type = tuple_access file.%a.var, element3 [concrete] +// CHECK:STDOUT: %tuple.elem4: ref %empty_tuple.type = tuple_access file.%a.var, element4 [concrete] +// CHECK:STDOUT: %tuple.elem5: ref %empty_tuple.type = tuple_access file.%a.var, element5 [concrete] +// CHECK:STDOUT: %tuple.elem6: ref %empty_tuple.type = tuple_access file.%a.var, element6 [concrete] +// CHECK:STDOUT: %tuple.elem7: ref %empty_tuple.type = tuple_access file.%a.var, element7 [concrete] +// CHECK:STDOUT: %tuple.elem8: ref %empty_tuple.type = tuple_access file.%a.var, element8 [concrete] // CHECK:STDOUT: %int_9: Core.IntLiteral = int_value 9 [concrete] // CHECK:STDOUT: %array_type: type = array_type %int_9, %empty_tuple.type [concrete] // CHECK:STDOUT: %pattern_type.3db: type = pattern_type %array_type [concrete] @@ -329,54 +341,54 @@ var a: array(1, 1); // CHECK:STDOUT: %.loc9_15.2: type = converted %.loc9_15.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %array_type: type = array_type %int_9, %.loc9_15.2 [concrete = constants.%array_type] // CHECK:STDOUT: } -// CHECK:STDOUT: %b: ref %array_type = bind_name b, %b.var +// CHECK:STDOUT: %b: ref %array_type = bind_name b, %b.var [concrete = %b.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: -// CHECK:STDOUT: %a.ref: ref %tuple.type = name_ref a, file.%a -// CHECK:STDOUT: %tuple.elem0.loc9: ref %empty_tuple.type = tuple_access %a.ref, element0 +// CHECK:STDOUT: %a.ref: ref %tuple.type = name_ref a, file.%a [concrete = file.%a.var] +// CHECK:STDOUT: %tuple.elem0.loc9: ref %empty_tuple.type = tuple_access %a.ref, element0 [concrete = constants.%tuple.elem0] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0] // CHECK:STDOUT: %.loc9_23.1: ref %empty_tuple.type = array_index file.%b.var, %int_0 // CHECK:STDOUT: %.loc9_23.2: init %empty_tuple.type = tuple_init () to %.loc9_23.1 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc9_23.3: init %empty_tuple.type = converted %tuple.elem0.loc9, %.loc9_23.2 [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %tuple.elem1.loc9: ref %empty_tuple.type = tuple_access %a.ref, element1 +// CHECK:STDOUT: %tuple.elem1.loc9: ref %empty_tuple.type = tuple_access %a.ref, element1 [concrete = constants.%tuple.elem1] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1] // CHECK:STDOUT: %.loc9_23.4: ref %empty_tuple.type = array_index file.%b.var, %int_1 // CHECK:STDOUT: %.loc9_23.5: init %empty_tuple.type = tuple_init () to %.loc9_23.4 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc9_23.6: init %empty_tuple.type = converted %tuple.elem1.loc9, %.loc9_23.5 [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %tuple.elem2.loc9: ref %empty_tuple.type = tuple_access %a.ref, element2 +// CHECK:STDOUT: %tuple.elem2.loc9: ref %empty_tuple.type = tuple_access %a.ref, element2 [concrete = constants.%tuple.elem2] // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2] // CHECK:STDOUT: %.loc9_23.7: ref %empty_tuple.type = array_index file.%b.var, %int_2 // CHECK:STDOUT: %.loc9_23.8: init %empty_tuple.type = tuple_init () to %.loc9_23.7 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc9_23.9: init %empty_tuple.type = converted %tuple.elem2.loc9, %.loc9_23.8 [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %tuple.elem3.loc9: ref %empty_tuple.type = tuple_access %a.ref, element3 +// CHECK:STDOUT: %tuple.elem3.loc9: ref %empty_tuple.type = tuple_access %a.ref, element3 [concrete = constants.%tuple.elem3] // CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [concrete = constants.%int_3] // CHECK:STDOUT: %.loc9_23.10: ref %empty_tuple.type = array_index file.%b.var, %int_3 // CHECK:STDOUT: %.loc9_23.11: init %empty_tuple.type = tuple_init () to %.loc9_23.10 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc9_23.12: init %empty_tuple.type = converted %tuple.elem3.loc9, %.loc9_23.11 [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %tuple.elem4.loc9: ref %empty_tuple.type = tuple_access %a.ref, element4 +// CHECK:STDOUT: %tuple.elem4.loc9: ref %empty_tuple.type = tuple_access %a.ref, element4 [concrete = constants.%tuple.elem4] // CHECK:STDOUT: %int_4: Core.IntLiteral = int_value 4 [concrete = constants.%int_4] // CHECK:STDOUT: %.loc9_23.13: ref %empty_tuple.type = array_index file.%b.var, %int_4 // CHECK:STDOUT: %.loc9_23.14: init %empty_tuple.type = tuple_init () to %.loc9_23.13 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc9_23.15: init %empty_tuple.type = converted %tuple.elem4.loc9, %.loc9_23.14 [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %tuple.elem5.loc9: ref %empty_tuple.type = tuple_access %a.ref, element5 +// CHECK:STDOUT: %tuple.elem5.loc9: ref %empty_tuple.type = tuple_access %a.ref, element5 [concrete = constants.%tuple.elem5] // CHECK:STDOUT: %int_5: Core.IntLiteral = int_value 5 [concrete = constants.%int_5] // CHECK:STDOUT: %.loc9_23.16: ref %empty_tuple.type = array_index file.%b.var, %int_5 // CHECK:STDOUT: %.loc9_23.17: init %empty_tuple.type = tuple_init () to %.loc9_23.16 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc9_23.18: init %empty_tuple.type = converted %tuple.elem5.loc9, %.loc9_23.17 [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %tuple.elem6.loc9: ref %empty_tuple.type = tuple_access %a.ref, element6 +// CHECK:STDOUT: %tuple.elem6.loc9: ref %empty_tuple.type = tuple_access %a.ref, element6 [concrete = constants.%tuple.elem6] // CHECK:STDOUT: %int_6: Core.IntLiteral = int_value 6 [concrete = constants.%int_6] // CHECK:STDOUT: %.loc9_23.19: ref %empty_tuple.type = array_index file.%b.var, %int_6 // CHECK:STDOUT: %.loc9_23.20: init %empty_tuple.type = tuple_init () to %.loc9_23.19 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc9_23.21: init %empty_tuple.type = converted %tuple.elem6.loc9, %.loc9_23.20 [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %tuple.elem7.loc9: ref %empty_tuple.type = tuple_access %a.ref, element7 +// CHECK:STDOUT: %tuple.elem7.loc9: ref %empty_tuple.type = tuple_access %a.ref, element7 [concrete = constants.%tuple.elem7] // CHECK:STDOUT: %int_7: Core.IntLiteral = int_value 7 [concrete = constants.%int_7] // CHECK:STDOUT: %.loc9_23.22: ref %empty_tuple.type = array_index file.%b.var, %int_7 // CHECK:STDOUT: %.loc9_23.23: init %empty_tuple.type = tuple_init () to %.loc9_23.22 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc9_23.24: init %empty_tuple.type = converted %tuple.elem7.loc9, %.loc9_23.23 [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %tuple.elem8.loc9: ref %empty_tuple.type = tuple_access %a.ref, element8 +// CHECK:STDOUT: %tuple.elem8.loc9: ref %empty_tuple.type = tuple_access %a.ref, element8 [concrete = constants.%tuple.elem8] // CHECK:STDOUT: %int_8: Core.IntLiteral = int_value 8 [concrete = constants.%int_8] // CHECK:STDOUT: %.loc9_23.25: ref %empty_tuple.type = array_index file.%b.var, %int_8 // CHECK:STDOUT: %.loc9_23.26: init %empty_tuple.type = tuple_init () to %.loc9_23.25 [concrete = constants.%empty_tuple] diff --git a/toolchain/check/testdata/as/adapter_conversion.carbon b/toolchain/check/testdata/as/adapter_conversion.carbon index 51a5f3d41df1..b4fdee90217a 100644 --- a/toolchain/check/testdata/as/adapter_conversion.carbon +++ b/toolchain/check/testdata/as/adapter_conversion.carbon @@ -184,8 +184,10 @@ var b: B = {.x = ()} as B; // CHECK:STDOUT: %Make: %Make.type = struct_value () [concrete] // CHECK:STDOUT: %B: type = class_type @B [concrete] // CHECK:STDOUT: %pattern_type.049: type = pattern_type %B [concrete] +// CHECK:STDOUT: %a_ref.var: ref %B = var file.%a_ref.var_patt [concrete] // CHECK:STDOUT: %ptr.e79: type = ptr_type %B [concrete] // CHECK:STDOUT: %pattern_type.960: type = pattern_type %ptr.e79 [concrete] +// CHECK:STDOUT: %addr: %ptr.e79 = addr_of %a_ref.var [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -196,7 +198,7 @@ var b: B = {.x = ()} as B; // CHECK:STDOUT: %b_val.patt: %pattern_type.049 = binding_pattern b_val [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %B.ref.loc22: type = name_ref B, %B.decl [concrete = constants.%B] -// CHECK:STDOUT: %b_val: ref %B = bind_name b_val, @__global_init.%.loc22_22.2 +// CHECK:STDOUT: %b_val: ref %B = bind_name b_val, @__global_init.%.loc22_22.2 [concrete = constants.%a_ref.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %b_ptr.patt: %pattern_type.960 = binding_pattern b_ptr [concrete] // CHECK:STDOUT: } @@ -211,21 +213,21 @@ var b: B = {.x = ()} as B; // CHECK:STDOUT: } // CHECK:STDOUT: %b_factory.var: ref %B = var %b_factory.var_patt [concrete] // CHECK:STDOUT: %B.ref.loc25: type = name_ref B, %B.decl [concrete = constants.%B] -// CHECK:STDOUT: %b_factory: ref %B = bind_name b_factory, %b_factory.var +// CHECK:STDOUT: %b_factory: ref %B = bind_name b_factory, %b_factory.var [concrete = %b_factory.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: -// CHECK:STDOUT: %a_val.ref: ref %A = name_ref a_val, file.%a_val +// CHECK:STDOUT: %a_val.ref: ref %A = name_ref a_val, file.%a_val [concrete = file.%a_ref.var] // CHECK:STDOUT: %B.ref.loc22: type = name_ref B, file.%B.decl [concrete = constants.%B] -// CHECK:STDOUT: %.loc22_22.1: ref %B = as_compatible %a_val.ref -// CHECK:STDOUT: %.loc22_22.2: ref %B = converted %a_val.ref, %.loc22_22.1 -// CHECK:STDOUT: %a_ref.ref.loc23: ref %A = name_ref a_ref, file.%a_ref +// CHECK:STDOUT: %.loc22_22.1: ref %B = as_compatible %a_val.ref [concrete = constants.%a_ref.var] +// CHECK:STDOUT: %.loc22_22.2: ref %B = converted %a_val.ref, %.loc22_22.1 [concrete = constants.%a_ref.var] +// CHECK:STDOUT: %a_ref.ref.loc23: ref %A = name_ref a_ref, file.%a_ref [concrete = file.%a_ref.var] // CHECK:STDOUT: %B.ref.loc23: type = name_ref B, file.%B.decl [concrete = constants.%B] -// CHECK:STDOUT: %.loc23_25.1: ref %B = as_compatible %a_ref.ref.loc23 -// CHECK:STDOUT: %.loc23_25.2: ref %B = converted %a_ref.ref.loc23, %.loc23_25.1 -// CHECK:STDOUT: %addr: %ptr.e79 = addr_of %.loc23_25.2 +// CHECK:STDOUT: %.loc23_25.1: ref %B = as_compatible %a_ref.ref.loc23 [concrete = constants.%a_ref.var] +// CHECK:STDOUT: %.loc23_25.2: ref %B = converted %a_ref.ref.loc23, %.loc23_25.1 [concrete = constants.%a_ref.var] +// CHECK:STDOUT: %addr: %ptr.e79 = addr_of %.loc23_25.2 [concrete = constants.%addr] // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [concrete = constants.%A] // CHECK:STDOUT: %Make.ref: %Make.type = name_ref Make, @A.%Make.decl [concrete = constants.%Make] // CHECK:STDOUT: %.loc25_1: ref %B = splice_block file.%b_factory.var [concrete = file.%b_factory.var] {} diff --git a/toolchain/check/testdata/basics/parens.carbon b/toolchain/check/testdata/basics/parens.carbon index 620c636a5502..a8fc1c0a06b4 100644 --- a/toolchain/check/testdata/basics/parens.carbon +++ b/toolchain/check/testdata/basics/parens.carbon @@ -73,7 +73,7 @@ var b: i32 = ((2)); // CHECK:STDOUT: %int_32.loc13: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc13: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %a: ref %i32 = bind_name a, %a.var +// CHECK:STDOUT: %a: ref %i32 = bind_name a, %a.var [concrete = %a.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %b.patt: %pattern_type.7ce = binding_pattern b [concrete] // CHECK:STDOUT: %b.var_patt: %pattern_type.7ce = var_pattern %b.patt [concrete] @@ -83,7 +83,7 @@ var b: i32 = ((2)); // CHECK:STDOUT: %int_32.loc14: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc14: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %b: ref %i32 = bind_name b, %b.var +// CHECK:STDOUT: %b: ref %i32 = bind_name b, %b.var [concrete = %b.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { diff --git a/toolchain/check/testdata/basics/type_literals.carbon b/toolchain/check/testdata/basics/type_literals.carbon index 8828d9b2fbb2..c93e348c5fbc 100644 --- a/toolchain/check/testdata/basics/type_literals.carbon +++ b/toolchain/check/testdata/basics/type_literals.carbon @@ -200,7 +200,7 @@ var x: type = 42; // CHECK:STDOUT: %int_8: Core.IntLiteral = int_value 8 [concrete = constants.%int_8] // CHECK:STDOUT: %i8: type = class_type @Int, @Int(constants.%int_8) [concrete = constants.%i8] // CHECK:STDOUT: } -// CHECK:STDOUT: %test_i8: ref %i8 = bind_name test_i8, %test_i8.var +// CHECK:STDOUT: %test_i8: ref %i8 = bind_name test_i8, %test_i8.var [concrete = %test_i8.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %test_i16.patt: %pattern_type.2f8 = binding_pattern test_i16 [concrete] // CHECK:STDOUT: %test_i16.var_patt: %pattern_type.2f8 = var_pattern %test_i16.patt [concrete] @@ -210,7 +210,7 @@ var x: type = 42; // CHECK:STDOUT: %int_16: Core.IntLiteral = int_value 16 [concrete = constants.%int_16] // CHECK:STDOUT: %i16: type = class_type @Int, @Int(constants.%int_16) [concrete = constants.%i16] // CHECK:STDOUT: } -// CHECK:STDOUT: %test_i16: ref %i16 = bind_name test_i16, %test_i16.var +// CHECK:STDOUT: %test_i16: ref %i16 = bind_name test_i16, %test_i16.var [concrete = %test_i16.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %test_i32.patt: %pattern_type.7ce = binding_pattern test_i32 [concrete] // CHECK:STDOUT: %test_i32.var_patt: %pattern_type.7ce = var_pattern %test_i32.patt [concrete] @@ -220,7 +220,7 @@ var x: type = 42; // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %test_i32: ref %i32 = bind_name test_i32, %test_i32.var +// CHECK:STDOUT: %test_i32: ref %i32 = bind_name test_i32, %test_i32.var [concrete = %test_i32.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %test_i64.patt: %pattern_type.95b = binding_pattern test_i64 [concrete] // CHECK:STDOUT: %test_i64.var_patt: %pattern_type.95b = var_pattern %test_i64.patt [concrete] @@ -230,7 +230,7 @@ var x: type = 42; // CHECK:STDOUT: %int_64: Core.IntLiteral = int_value 64 [concrete = constants.%int_64] // CHECK:STDOUT: %i64: type = class_type @Int, @Int(constants.%int_64) [concrete = constants.%i64] // CHECK:STDOUT: } -// CHECK:STDOUT: %test_i64: ref %i64 = bind_name test_i64, %test_i64.var +// CHECK:STDOUT: %test_i64: ref %i64 = bind_name test_i64, %test_i64.var [concrete = %test_i64.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- uN.carbon @@ -263,7 +263,7 @@ var x: type = 42; // CHECK:STDOUT: %int_8: Core.IntLiteral = int_value 8 [concrete = constants.%int_8] // CHECK:STDOUT: %u8: type = class_type @UInt, @UInt(constants.%int_8) [concrete = constants.%u8] // CHECK:STDOUT: } -// CHECK:STDOUT: %test_u8: ref %u8 = bind_name test_u8, %test_u8.var +// CHECK:STDOUT: %test_u8: ref %u8 = bind_name test_u8, %test_u8.var [concrete = %test_u8.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %test_u16.patt: %pattern_type.9db = binding_pattern test_u16 [concrete] // CHECK:STDOUT: %test_u16.var_patt: %pattern_type.9db = var_pattern %test_u16.patt [concrete] @@ -273,7 +273,7 @@ var x: type = 42; // CHECK:STDOUT: %int_16: Core.IntLiteral = int_value 16 [concrete = constants.%int_16] // CHECK:STDOUT: %u16: type = class_type @UInt, @UInt(constants.%int_16) [concrete = constants.%u16] // CHECK:STDOUT: } -// CHECK:STDOUT: %test_u16: ref %u16 = bind_name test_u16, %test_u16.var +// CHECK:STDOUT: %test_u16: ref %u16 = bind_name test_u16, %test_u16.var [concrete = %test_u16.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %test_u32.patt: %pattern_type.4a9 = binding_pattern test_u32 [concrete] // CHECK:STDOUT: %test_u32.var_patt: %pattern_type.4a9 = var_pattern %test_u32.patt [concrete] @@ -283,7 +283,7 @@ var x: type = 42; // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %u32: type = class_type @UInt, @UInt(constants.%int_32) [concrete = constants.%u32] // CHECK:STDOUT: } -// CHECK:STDOUT: %test_u32: ref %u32 = bind_name test_u32, %test_u32.var +// CHECK:STDOUT: %test_u32: ref %u32 = bind_name test_u32, %test_u32.var [concrete = %test_u32.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %test_u64.patt: %pattern_type.157 = binding_pattern test_u64 [concrete] // CHECK:STDOUT: %test_u64.var_patt: %pattern_type.157 = var_pattern %test_u64.patt [concrete] @@ -293,7 +293,7 @@ var x: type = 42; // CHECK:STDOUT: %int_64: Core.IntLiteral = int_value 64 [concrete = constants.%int_64] // CHECK:STDOUT: %u64: type = class_type @UInt, @UInt(constants.%int_64) [concrete = constants.%u64] // CHECK:STDOUT: } -// CHECK:STDOUT: %test_u64: ref %u64 = bind_name test_u64, %test_u64.var +// CHECK:STDOUT: %test_u64: ref %u64 = bind_name test_u64, %test_u64.var [concrete = %test_u64.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- fN.carbon @@ -320,7 +320,7 @@ var x: type = 42; // CHECK:STDOUT: %.loc4_15.2: type = value_of_initializer %float.make_type [concrete = f64] // CHECK:STDOUT: %.loc4_15.3: type = converted %float.make_type, %.loc4_15.2 [concrete = f64] // CHECK:STDOUT: } -// CHECK:STDOUT: %test_f64: ref f64 = bind_name test_f64, %test_f64.var +// CHECK:STDOUT: %test_f64: ref f64 = bind_name test_f64, %test_f64.var [concrete = %test_f64.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- string.carbon @@ -363,7 +363,7 @@ var x: type = 42; // CHECK:STDOUT: %test_type.var_patt: %pattern_type.98f = var_pattern %test_type.patt [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %test_type.var: ref type = var %test_type.var_patt [concrete] -// CHECK:STDOUT: %test_type: ref type = bind_name test_type, %test_type.var +// CHECK:STDOUT: %test_type: ref type = bind_name test_type, %test_type.var [concrete = %test_type.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { diff --git a/toolchain/check/testdata/builtins/bool/eq.carbon b/toolchain/check/testdata/builtins/bool/eq.carbon index 84552c9bff01..4d354094cbb9 100644 --- a/toolchain/check/testdata/builtins/bool/eq.carbon +++ b/toolchain/check/testdata/builtins/bool/eq.carbon @@ -77,7 +77,7 @@ var d: C(false == false) = True(); // CHECK:STDOUT: %.loc12_24.3: bool = converted %bool.eq.loc12, %.loc12_24.2 [concrete = constants.%true] // CHECK:STDOUT: %C.loc12: type = class_type @C, @C(constants.%true) [concrete = constants.%C.a14] // CHECK:STDOUT: } -// CHECK:STDOUT: %a: ref %C.a14 = bind_name a, %a.var +// CHECK:STDOUT: %a: ref %C.a14 = bind_name a, %a.var [concrete = %a.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -132,7 +132,7 @@ var d: C(false == false) = True(); // CHECK:STDOUT: %.loc10_22.3: bool = converted %bool.eq.loc10, %.loc10_22.2 [concrete = constants.%true] // CHECK:STDOUT: %C.loc10: type = class_type @C, @C(constants.%true) [concrete = constants.%C.a14] // CHECK:STDOUT: } -// CHECK:STDOUT: %a: ref %C.a14 = bind_name a, %a.var +// CHECK:STDOUT: %a: ref %C.a14 = bind_name a, %a.var [concrete = %a.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { diff --git a/toolchain/check/testdata/builtins/bool/make_type.carbon b/toolchain/check/testdata/builtins/bool/make_type.carbon index 816ce3e6e865..f27b633e864a 100644 --- a/toolchain/check/testdata/builtins/bool/make_type.carbon +++ b/toolchain/check/testdata/builtins/bool/make_type.carbon @@ -51,7 +51,7 @@ var b: Bool() = false; // CHECK:STDOUT: %.loc7_13.2: type = value_of_initializer %bool.make_type [concrete = bool] // CHECK:STDOUT: %.loc7_13.3: type = converted %bool.make_type, %.loc7_13.2 [concrete = bool] // CHECK:STDOUT: } -// CHECK:STDOUT: %b: ref bool = bind_name b, %b.var +// CHECK:STDOUT: %b: ref bool = bind_name b, %b.var [concrete = %b.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { diff --git a/toolchain/check/testdata/builtins/bool/neq.carbon b/toolchain/check/testdata/builtins/bool/neq.carbon index a8432a0eb993..285870d334f5 100644 --- a/toolchain/check/testdata/builtins/bool/neq.carbon +++ b/toolchain/check/testdata/builtins/bool/neq.carbon @@ -78,7 +78,7 @@ var d: C(false != false) = False(); // CHECK:STDOUT: %.loc12_25.3: bool = converted %bool.neq.loc12, %.loc12_25.2 [concrete = constants.%false] // CHECK:STDOUT: %C.loc12: type = class_type @C, @C(constants.%false) [concrete = constants.%C.2ba] // CHECK:STDOUT: } -// CHECK:STDOUT: %a: ref %C.2ba = bind_name a, %a.var +// CHECK:STDOUT: %a: ref %C.2ba = bind_name a, %a.var [concrete = %a.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -134,7 +134,7 @@ var d: C(false != false) = False(); // CHECK:STDOUT: %.loc10_22.3: bool = converted %bool.neq.loc10, %.loc10_22.2 [concrete = constants.%false] // CHECK:STDOUT: %C.loc10: type = class_type @C, @C(constants.%false) [concrete = constants.%C.2ba] // CHECK:STDOUT: } -// CHECK:STDOUT: %a: ref %C.2ba = bind_name a, %a.var +// CHECK:STDOUT: %a: ref %C.2ba = bind_name a, %a.var [concrete = %a.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { diff --git a/toolchain/check/testdata/builtins/no_prelude/no_op.carbon b/toolchain/check/testdata/builtins/no_prelude/no_op.carbon index 16124c432772..8ba4e13bb5a3 100644 --- a/toolchain/check/testdata/builtins/no_prelude/no_op.carbon +++ b/toolchain/check/testdata/builtins/no_prelude/no_op.carbon @@ -137,7 +137,7 @@ fn NoOp() -> {} = "no_op"; // CHECK:STDOUT: %.loc7_9.2: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc7_9.3: type = converted %.loc7_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %x: ref %empty_tuple.type = bind_name x, %x.var +// CHECK:STDOUT: %x: ref %empty_tuple.type = bind_name x, %x.var [concrete = %x.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { diff --git a/toolchain/check/testdata/class/access_modifers.carbon b/toolchain/check/testdata/class/access_modifers.carbon index db8b2e2d9104..947aa42829a0 100644 --- a/toolchain/check/testdata/class/access_modifers.carbon +++ b/toolchain/check/testdata/class/access_modifers.carbon @@ -317,7 +317,7 @@ class A { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %radius: %i32 = bind_name radius, +// CHECK:STDOUT: %radius: %i32 = bind_name radius, [concrete = ] // CHECK:STDOUT: %circle.ref.loc34: ref %Circle = name_ref circle, %circle // CHECK:STDOUT: %radius.ref.loc34: = name_ref radius, [concrete = ] // CHECK:STDOUT: %int_5: Core.IntLiteral = int_value 5 [concrete = constants.%int_5.64b] @@ -389,7 +389,7 @@ class A { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %x: %i32 = bind_name x, +// CHECK:STDOUT: %x: %i32 = bind_name x, [concrete = ] // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -691,7 +691,7 @@ class A { // CHECK:STDOUT: %int_32.loc16: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc16: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %x: %i32 = bind_name x, +// CHECK:STDOUT: %x: %i32 = bind_name x, [concrete = ] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %y.patt: %pattern_type.7ce = binding_pattern y [concrete] // CHECK:STDOUT: } @@ -699,7 +699,7 @@ class A { // CHECK:STDOUT: %int_32.loc24: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc24: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %y: %i32 = bind_name y, +// CHECK:STDOUT: %y: %i32 = bind_name y, [concrete = ] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @A { diff --git a/toolchain/check/testdata/class/adapter/init_adapt.carbon b/toolchain/check/testdata/class/adapter/init_adapt.carbon index 716eb9dc591e..921f24c94941 100644 --- a/toolchain/check/testdata/class/adapter/init_adapt.carbon +++ b/toolchain/check/testdata/class/adapter/init_adapt.carbon @@ -224,14 +224,14 @@ var e: C = MakeAdaptC(); // CHECK:STDOUT: } // CHECK:STDOUT: %d.var: ref %AdaptC = var %d.var_patt [concrete] // CHECK:STDOUT: %AdaptC.ref.loc23: type = name_ref AdaptC, %AdaptC.decl [concrete = constants.%AdaptC] -// CHECK:STDOUT: %d: ref %AdaptC = bind_name d, %d.var +// CHECK:STDOUT: %d: ref %AdaptC = bind_name d, %d.var [concrete = %d.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %e.patt: %pattern_type.c48 = binding_pattern e [concrete] // CHECK:STDOUT: %e.var_patt: %pattern_type.c48 = var_pattern %e.patt [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %e.var: ref %C = var %e.var_patt [concrete] // CHECK:STDOUT: %C.ref.loc25: type = name_ref C, %C.decl [concrete = constants.%C] -// CHECK:STDOUT: %e: ref %C = bind_name e, %e.var +// CHECK:STDOUT: %e: ref %C = bind_name e, %e.var [concrete = %e.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { @@ -398,13 +398,13 @@ var e: C = MakeAdaptC(); // CHECK:STDOUT: } // CHECK:STDOUT: %AdaptC.ref.loc24: type = name_ref AdaptC, %AdaptC.decl [concrete = constants.%AdaptC] // CHECK:STDOUT: %.loc24: %AdaptC = converted @__global_init.%a.ref, [concrete = ] -// CHECK:STDOUT: %b: %AdaptC = bind_name b, +// CHECK:STDOUT: %b: %AdaptC = bind_name b, [concrete = ] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %c.patt: %pattern_type.c48 = binding_pattern c [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %C.ref.loc33: type = name_ref C, %C.decl [concrete = constants.%C] // CHECK:STDOUT: %.loc33: %C = converted @__global_init.%b.ref, [concrete = ] -// CHECK:STDOUT: %c: %C = bind_name c, +// CHECK:STDOUT: %c: %C = bind_name c, [concrete = ] // CHECK:STDOUT: %MakeC.decl: %MakeC.type = fn_decl @MakeC [concrete = constants.%MakeC] { // CHECK:STDOUT: %return.patt: %pattern_type.c48 = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.c48 = out_param_pattern %return.patt, call_param0 [concrete] @@ -427,14 +427,14 @@ var e: C = MakeAdaptC(); // CHECK:STDOUT: } // CHECK:STDOUT: %d.var: ref %AdaptC = var %d.var_patt [concrete] // CHECK:STDOUT: %AdaptC.ref.loc46: type = name_ref AdaptC, %AdaptC.decl [concrete = constants.%AdaptC] -// CHECK:STDOUT: %d: ref %AdaptC = bind_name d, %d.var +// CHECK:STDOUT: %d: ref %AdaptC = bind_name d, %d.var [concrete = %d.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %e.patt: %pattern_type.c48 = binding_pattern e [concrete] // CHECK:STDOUT: %e.var_patt: %pattern_type.c48 = var_pattern %e.patt [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %e.var: ref %C = var %e.var_patt [concrete] // CHECK:STDOUT: %C.ref.loc55: type = name_ref C, %C.decl [concrete = constants.%C] -// CHECK:STDOUT: %e: ref %C = bind_name e, %e.var +// CHECK:STDOUT: %e: ref %C = bind_name e, %e.var [concrete = %e.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { @@ -475,7 +475,7 @@ var e: C = MakeAdaptC(); // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] // CHECK:STDOUT: %.loc13: %struct_type.a.b.cfd = struct_literal (%int_1, %int_2) // CHECK:STDOUT: %a.ref: ref %C = name_ref a, file.%a -// CHECK:STDOUT: %b.ref: %AdaptC = name_ref b, file.%b +// CHECK:STDOUT: %b.ref: %AdaptC = name_ref b, file.%b [concrete = ] // CHECK:STDOUT: %MakeC.ref: %MakeC.type = name_ref MakeC, file.%MakeC.decl [concrete = constants.%MakeC] // CHECK:STDOUT: %.loc46_23: ref %C = temporary_storage // CHECK:STDOUT: %MakeC.call: init %C = call %MakeC.ref() to %.loc46_23 diff --git a/toolchain/check/testdata/class/cross_package_import.carbon b/toolchain/check/testdata/class/cross_package_import.carbon index 3b2cc861dfb4..c9983f2d517b 100644 --- a/toolchain/check/testdata/class/cross_package_import.carbon +++ b/toolchain/check/testdata/class/cross_package_import.carbon @@ -229,7 +229,7 @@ var c: Other.C = {}; // CHECK:STDOUT: %Other.ref: = name_ref Other, imports.%Other [concrete = imports.%Other] // CHECK:STDOUT: %C.ref: type = name_ref C, imports.%Other.C [concrete = constants.%C] // CHECK:STDOUT: } -// CHECK:STDOUT: %c: ref %C = bind_name c, %c.var +// CHECK:STDOUT: %c: ref %C = bind_name c, %c.var [concrete = %c.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "other_define.carbon"] { @@ -284,7 +284,7 @@ var c: Other.C = {}; // CHECK:STDOUT: %Other.ref: = name_ref Other, imports.%Other [concrete = imports.%Other] // CHECK:STDOUT: %C.ref: type = name_ref C, imports.%Other.C [concrete = constants.%C] // CHECK:STDOUT: } -// CHECK:STDOUT: %c: = bind_name c, +// CHECK:STDOUT: %c: = bind_name c, [concrete = ] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "other_extern.carbon"]; @@ -338,7 +338,7 @@ var c: Other.C = {}; // CHECK:STDOUT: %Other.ref: = name_ref Other, imports.%Other [concrete = imports.%Other] // CHECK:STDOUT: %C.ref: type = name_ref C, imports.%Other.C [concrete = constants.%C] // CHECK:STDOUT: } -// CHECK:STDOUT: %c: ref %C = bind_name c, %c.var +// CHECK:STDOUT: %c: ref %C = bind_name c, %c.var [concrete = %c.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "other_define.carbon"] { @@ -399,7 +399,7 @@ var c: Other.C = {}; // CHECK:STDOUT: %Other.ref: = name_ref Other, imports.%Other [concrete = imports.%Other] // CHECK:STDOUT: %C.ref: type = name_ref C, imports.%Other.C [concrete = constants.%C] // CHECK:STDOUT: } -// CHECK:STDOUT: %c: ref %C = bind_name c, %c.var +// CHECK:STDOUT: %c: ref %C = bind_name c, %c.var [concrete = %c.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "other_define.carbon"] { diff --git a/toolchain/check/testdata/class/fail_base_unbound.carbon b/toolchain/check/testdata/class/fail_base_unbound.carbon index b02e35276335..df992a2b8807 100644 --- a/toolchain/check/testdata/class/fail_base_unbound.carbon +++ b/toolchain/check/testdata/class/fail_base_unbound.carbon @@ -57,7 +57,7 @@ let b: B = C.base; // CHECK:STDOUT: %b.patt: %pattern_type = binding_pattern b [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %B.ref: type = name_ref B, %B.decl [concrete = constants.%B] -// CHECK:STDOUT: %b: %B = bind_name b, +// CHECK:STDOUT: %b: %B = bind_name b, [concrete = ] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @B { diff --git a/toolchain/check/testdata/class/fail_generic_method.carbon b/toolchain/check/testdata/class/fail_generic_method.carbon index 6e68e5459026..9e2d425a2e06 100644 --- a/toolchain/check/testdata/class/fail_generic_method.carbon +++ b/toolchain/check/testdata/class/fail_generic_method.carbon @@ -94,10 +94,10 @@ fn Class(N:! i32).F[self: Self](n: T) {} // CHECK:STDOUT: %N.loc36_10.1: %i32 = bind_symbolic_name N, 0 [symbolic = %N.loc36_10.2 (constants.%N.51e)] // CHECK:STDOUT: %self.param: = value_param call_param0 // CHECK:STDOUT: %Self.ref: = name_ref Self, [concrete = ] -// CHECK:STDOUT: %self: = bind_name self, %self.param +// CHECK:STDOUT: %self: = bind_name self, %self.param [concrete = ] // CHECK:STDOUT: %n.param: = value_param call_param1 // CHECK:STDOUT: %T.ref: = name_ref T, [concrete = ] -// CHECK:STDOUT: %n: = bind_name n, %n.param +// CHECK:STDOUT: %n: = bind_name n, %n.param [concrete = ] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/fail_import_misuses.carbon b/toolchain/check/testdata/class/fail_import_misuses.carbon index f99fda511940..046c79106612 100644 --- a/toolchain/check/testdata/class/fail_import_misuses.carbon +++ b/toolchain/check/testdata/class/fail_import_misuses.carbon @@ -122,7 +122,7 @@ var a: Incomplete; // CHECK:STDOUT: } // CHECK:STDOUT: %a.var: ref = var %a.var_patt [concrete = ] // CHECK:STDOUT: %Incomplete.ref: type = name_ref Incomplete, imports.%Main.Incomplete [concrete = constants.%Incomplete] -// CHECK:STDOUT: %a: = bind_name a, +// CHECK:STDOUT: %a: = bind_name a, [concrete = ] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Empty.1 [from "a.carbon"] { diff --git a/toolchain/check/testdata/class/fail_incomplete.carbon b/toolchain/check/testdata/class/fail_incomplete.carbon index c62a244d4a68..9bb6511561bc 100644 --- a/toolchain/check/testdata/class/fail_incomplete.carbon +++ b/toolchain/check/testdata/class/fail_incomplete.carbon @@ -259,7 +259,7 @@ class C { // CHECK:STDOUT: } // CHECK:STDOUT: %global_var.var: ref = var %global_var.var_patt [concrete = ] // CHECK:STDOUT: %Class.ref: type = name_ref Class, %Class.decl [concrete = constants.%Class] -// CHECK:STDOUT: %global_var: = bind_name global_var, +// CHECK:STDOUT: %global_var: = bind_name global_var, [concrete = ] // CHECK:STDOUT: %ConvertFromStruct.decl: %ConvertFromStruct.type = fn_decl @ConvertFromStruct [concrete = constants.%ConvertFromStruct] { // CHECK:STDOUT: %return.patt: %pattern_type.761 = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.761 = out_param_pattern %return.patt, call_param0 [concrete] @@ -443,7 +443,7 @@ class C { // CHECK:STDOUT: %p.ref: %ptr.e71 = name_ref p, %p // CHECK:STDOUT: %.loc85: ref %Class = deref %p.ref // CHECK:STDOUT: %Class.ref.loc85: type = name_ref Class, file.%Class.decl [concrete = constants.%Class] -// CHECK:STDOUT: %c: = bind_name c, +// CHECK:STDOUT: %c: = bind_name c, [concrete = ] // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/fail_self_param.carbon b/toolchain/check/testdata/class/fail_self_param.carbon index 899c7aca9c21..960fa0e136bb 100644 --- a/toolchain/check/testdata/class/fail_self_param.carbon +++ b/toolchain/check/testdata/class/fail_self_param.carbon @@ -57,7 +57,7 @@ var v: C(0); // CHECK:STDOUT: %C.ref: %C.type = name_ref C, %C.decl [concrete = constants.%C.generic] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0] // CHECK:STDOUT: } -// CHECK:STDOUT: %v: = bind_name v, +// CHECK:STDOUT: %v: = bind_name v, [concrete = ] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic class @C(%x: ) { diff --git a/toolchain/check/testdata/class/generic/call.carbon b/toolchain/check/testdata/class/generic/call.carbon index b8d1506b6d65..9de267bac9ed 100644 --- a/toolchain/check/testdata/class/generic/call.carbon +++ b/toolchain/check/testdata/class/generic/call.carbon @@ -186,7 +186,7 @@ class Outer(T:! type) { // CHECK:STDOUT: %.loc6_21.3: %i32 = converted %int_5, %.loc6_21.2 [concrete = constants.%int_5.0f6] // CHECK:STDOUT: %Class.loc6: type = class_type @Class, @Class(constants.%ptr.235, constants.%int_5.0f6) [concrete = constants.%Class.f29] // CHECK:STDOUT: } -// CHECK:STDOUT: %a: ref %Class.f29 = bind_name a, %a.var +// CHECK:STDOUT: %a: ref %Class.f29 = bind_name a, %a.var [concrete = %a.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %b.patt: %pattern_type.c73 = binding_pattern b [concrete] // CHECK:STDOUT: %b.var_patt: %pattern_type.c73 = var_pattern %b.patt [concrete] @@ -206,7 +206,7 @@ class Outer(T:! type) { // CHECK:STDOUT: %.loc9_19.4: %i32 = converted %int_0, %.loc9_19.3 [concrete = constants.%int_0.6a9] // CHECK:STDOUT: %Class.loc9: type = class_type @Class, @Class(constants.%empty_tuple.type, constants.%int_0.6a9) [concrete = constants.%Class.dd4] // CHECK:STDOUT: } -// CHECK:STDOUT: %b: ref %Class.dd4 = bind_name b, %b.var +// CHECK:STDOUT: %b: ref %Class.dd4 = bind_name b, %b.var [concrete = %b.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic class @Class(%T.loc4_13.1: type, %N.loc4_23.1: %i32) { @@ -301,7 +301,7 @@ class Outer(T:! type) { // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %ptr: type = ptr_type %i32 [concrete = constants.%ptr] // CHECK:STDOUT: } -// CHECK:STDOUT: %a: = bind_name a, +// CHECK:STDOUT: %a: = bind_name a, [concrete = ] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic class @Class(%T.loc4_13.1: type, %N.loc4_23.1: %i32) { @@ -386,7 +386,7 @@ class Outer(T:! type) { // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1] // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2] // CHECK:STDOUT: } -// CHECK:STDOUT: %a: = bind_name a, +// CHECK:STDOUT: %a: = bind_name a, [concrete = ] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic class @Class(%T.loc4_13.1: type, %N.loc4_23.1: %i32) { @@ -474,7 +474,7 @@ class Outer(T:! type) { // CHECK:STDOUT: %ptr: type = ptr_type %i32 [concrete = constants.%ptr] // CHECK:STDOUT: %.loc16: type = converted %int_5, [concrete = ] // CHECK:STDOUT: } -// CHECK:STDOUT: %a: = bind_name a, +// CHECK:STDOUT: %a: = bind_name a, [concrete = ] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic class @Class(%T.loc4_13.1: type, %N.loc4_23.1: %i32) { diff --git a/toolchain/check/testdata/class/generic/stringify.carbon b/toolchain/check/testdata/class/generic/stringify.carbon index da8744fbbb2b..80cf7588cb40 100644 --- a/toolchain/check/testdata/class/generic/stringify.carbon +++ b/toolchain/check/testdata/class/generic/stringify.carbon @@ -132,7 +132,7 @@ var g: E({.a = 1, .b = 2}) = {} as E({.a = 3, .b = 4} as D); // CHECK:STDOUT: } // CHECK:STDOUT: %v.var: ref %NoParams = var %v.var_patt [concrete] // CHECK:STDOUT: %NoParams.ref: type = name_ref NoParams, %NoParams.decl [concrete = constants.%NoParams] -// CHECK:STDOUT: %v: ref %NoParams = bind_name v, %v.var +// CHECK:STDOUT: %v: ref %NoParams = bind_name v, %v.var [concrete = %v.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %w.patt: %pattern_type.71c = binding_pattern w [concrete] // CHECK:STDOUT: %w.var_patt: %pattern_type.71c = var_pattern %w.patt [concrete] @@ -142,7 +142,7 @@ var g: E({.a = 1, .b = 2}) = {} as E({.a = 3, .b = 4} as D); // CHECK:STDOUT: %EmptyParams.ref: %EmptyParams.type = name_ref EmptyParams, %EmptyParams.decl [concrete = constants.%EmptyParams.generic] // CHECK:STDOUT: %EmptyParams: type = class_type @EmptyParams [concrete = constants.%EmptyParams] // CHECK:STDOUT: } -// CHECK:STDOUT: %w: ref %EmptyParams = bind_name w, %w.var +// CHECK:STDOUT: %w: ref %EmptyParams = bind_name w, %w.var [concrete = %w.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @NoParams { @@ -165,7 +165,7 @@ var g: E({.a = 1, .b = 2}) = {} as E({.a = 3, .b = 4} as D); // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %v.ref: ref %NoParams = name_ref v, file.%v +// CHECK:STDOUT: %v.ref: ref %NoParams = name_ref v, file.%v [concrete = file.%v.var] // CHECK:STDOUT: %.loc15: %EmptyParams = converted %v.ref, [concrete = ] // CHECK:STDOUT: assign file.%w.var, // CHECK:STDOUT: return @@ -238,7 +238,7 @@ var g: E({.a = 1, .b = 2}) = {} as E({.a = 3, .b = 4} as D); // CHECK:STDOUT: %ptr.loc9: type = ptr_type %.loc9_16 [concrete = constants.%ptr.c28] // CHECK:STDOUT: %Outer.loc9: type = class_type @Outer, @Outer(constants.%ptr.c28) [concrete = constants.%Outer.614] // CHECK:STDOUT: } -// CHECK:STDOUT: %v: ref %Outer.614 = bind_name v, %v.var +// CHECK:STDOUT: %v: ref %Outer.614 = bind_name v, %v.var [concrete = %v.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %w.patt: %pattern_type.5fa = binding_pattern w [concrete] // CHECK:STDOUT: %w.var_patt: %pattern_type.5fa = var_pattern %w.patt [concrete] @@ -258,7 +258,7 @@ var g: E({.a = 1, .b = 2}) = {} as E({.a = 3, .b = 4} as D); // CHECK:STDOUT: %ptr.loc19_34: type = ptr_type %struct_type.a [concrete = constants.%ptr.1bb] // CHECK:STDOUT: %Inner: type = class_type @Inner, @Inner(constants.%ptr.c28, constants.%ptr.1bb) [concrete = constants.%Inner.277] // CHECK:STDOUT: } -// CHECK:STDOUT: %w: ref %Inner.277 = bind_name w, %w.var +// CHECK:STDOUT: %w: ref %Inner.277 = bind_name w, %w.var [concrete = %w.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic class @Outer(%T.loc4_13.1: type) { @@ -301,7 +301,7 @@ var g: E({.a = 1, .b = 2}) = {} as E({.a = 3, .b = 4} as D); // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %v.ref: ref %Outer.614 = name_ref v, file.%v +// CHECK:STDOUT: %v.ref: ref %Outer.614 = name_ref v, file.%v [concrete = file.%v.var] // CHECK:STDOUT: %.loc19: %Inner.277 = converted %v.ref, [concrete = ] // CHECK:STDOUT: assign file.%w.var, // CHECK:STDOUT: return @@ -411,7 +411,7 @@ var g: E({.a = 1, .b = 2}) = {} as E({.a = 3, .b = 4} as D); // CHECK:STDOUT: %.loc13_13.3: %i32 = converted %int_123, %.loc13_13.2 [concrete = constants.%int_123.f7f] // CHECK:STDOUT: %C: type = class_type @C, @C(constants.%int_123.f7f) [concrete = constants.%C.4c3] // CHECK:STDOUT: } -// CHECK:STDOUT: %v: ref %C.4c3 = bind_name v, %v.var +// CHECK:STDOUT: %v: ref %C.4c3 = bind_name v, %v.var [concrete = %v.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic class @C(%N.loc4_9.1: %i32) { @@ -559,7 +559,7 @@ var g: E({.a = 1, .b = 2}) = {} as E({.a = 3, .b = 4} as D); // CHECK:STDOUT: %.loc25_26.1: ref %D = converted %.loc25_25.1, %.loc25_25.10 // CHECK:STDOUT: %.loc25_26.2: %D = bind_value %.loc25_26.1 // CHECK:STDOUT: } -// CHECK:STDOUT: %g: = bind_name g, +// CHECK:STDOUT: %g: = bind_name g, [concrete = ] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @D { diff --git a/toolchain/check/testdata/class/import_indirect.carbon b/toolchain/check/testdata/class/import_indirect.carbon index 13742138cea1..0d9cc0faa234 100644 --- a/toolchain/check/testdata/class/import_indirect.carbon +++ b/toolchain/check/testdata/class/import_indirect.carbon @@ -146,6 +146,7 @@ var ptr: E* = &val; // CHECK:STDOUT: %C.val: %C = struct_value () [concrete] // CHECK:STDOUT: %ptr.019: type = ptr_type %C [concrete] // CHECK:STDOUT: %pattern_type.44a: type = pattern_type %ptr.019 [concrete] +// CHECK:STDOUT: %addr: %ptr.019 = addr_of file.%b_val.var [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -176,7 +177,7 @@ var ptr: E* = &val; // CHECK:STDOUT: } // CHECK:STDOUT: %b_val.var: ref %C = var %b_val.var_patt [concrete] // CHECK:STDOUT: %C.ref.loc8: type = name_ref C, imports.%Main.C [concrete = constants.%C] -// CHECK:STDOUT: %b_val: ref %C = bind_name b_val, %b_val.var +// CHECK:STDOUT: %b_val: ref %C = bind_name b_val, %b_val.var [concrete = %b_val.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %b_ptr.patt: %pattern_type.44a = binding_pattern b_ptr [concrete] // CHECK:STDOUT: %b_ptr.var_patt: %pattern_type.44a = var_pattern %b_ptr.patt [concrete] @@ -186,7 +187,7 @@ var ptr: E* = &val; // CHECK:STDOUT: %D.ref: type = name_ref D, %D [concrete = constants.%C] // CHECK:STDOUT: %ptr: type = ptr_type %D.ref [concrete = constants.%ptr.019] // CHECK:STDOUT: } -// CHECK:STDOUT: %b_ptr: ref %ptr.019 = bind_name b_ptr, %b_ptr.var +// CHECK:STDOUT: %b_ptr: ref %ptr.019 = bind_name b_ptr, %b_ptr.var [concrete = %b_ptr.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "a.carbon"] { @@ -202,8 +203,8 @@ var ptr: E* = &val; // CHECK:STDOUT: %.loc8_17.2: init %C = class_init (), file.%b_val.var [concrete = constants.%C.val] // CHECK:STDOUT: %.loc8_1: init %C = converted %.loc8_17.1, %.loc8_17.2 [concrete = constants.%C.val] // CHECK:STDOUT: assign file.%b_val.var, %.loc8_1 -// CHECK:STDOUT: %b_val.ref: ref %C = name_ref b_val, file.%b_val -// CHECK:STDOUT: %addr: %ptr.019 = addr_of %b_val.ref +// CHECK:STDOUT: %b_val.ref: ref %C = name_ref b_val, file.%b_val [concrete = file.%b_val.var] +// CHECK:STDOUT: %addr: %ptr.019 = addr_of %b_val.ref [concrete = constants.%addr] // CHECK:STDOUT: assign file.%b_ptr.var, %addr // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -218,6 +219,7 @@ var ptr: E* = &val; // CHECK:STDOUT: %C.val: %C = struct_value () [concrete] // CHECK:STDOUT: %ptr.019: type = ptr_type %C [concrete] // CHECK:STDOUT: %pattern_type.44a: type = pattern_type %ptr.019 [concrete] +// CHECK:STDOUT: %addr: %ptr.019 = addr_of file.%c_val.var [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -248,7 +250,7 @@ var ptr: E* = &val; // CHECK:STDOUT: } // CHECK:STDOUT: %c_val.var: ref %C = var %c_val.var_patt [concrete] // CHECK:STDOUT: %C.ref.loc8: type = name_ref C, imports.%Main.C [concrete = constants.%C] -// CHECK:STDOUT: %c_val: ref %C = bind_name c_val, %c_val.var +// CHECK:STDOUT: %c_val: ref %C = bind_name c_val, %c_val.var [concrete = %c_val.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %c_ptr.patt: %pattern_type.44a = binding_pattern c_ptr [concrete] // CHECK:STDOUT: %c_ptr.var_patt: %pattern_type.44a = var_pattern %c_ptr.patt [concrete] @@ -258,7 +260,7 @@ var ptr: E* = &val; // CHECK:STDOUT: %E.ref: type = name_ref E, %E [concrete = constants.%C] // CHECK:STDOUT: %ptr: type = ptr_type %E.ref [concrete = constants.%ptr.019] // CHECK:STDOUT: } -// CHECK:STDOUT: %c_ptr: ref %ptr.019 = bind_name c_ptr, %c_ptr.var +// CHECK:STDOUT: %c_ptr: ref %ptr.019 = bind_name c_ptr, %c_ptr.var [concrete = %c_ptr.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "a.carbon"] { @@ -274,8 +276,8 @@ var ptr: E* = &val; // CHECK:STDOUT: %.loc8_17.2: init %C = class_init (), file.%c_val.var [concrete = constants.%C.val] // CHECK:STDOUT: %.loc8_1: init %C = converted %.loc8_17.1, %.loc8_17.2 [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 -// CHECK:STDOUT: %addr: %ptr.019 = addr_of %c_val.ref +// CHECK:STDOUT: %c_val.ref: ref %C = name_ref c_val, file.%c_val [concrete = file.%c_val.var] +// CHECK:STDOUT: %addr: %ptr.019 = addr_of %c_val.ref [concrete = constants.%addr] // CHECK:STDOUT: assign file.%c_ptr.var, %addr // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -290,6 +292,7 @@ var ptr: E* = &val; // CHECK:STDOUT: %C.val: %C = struct_value () [concrete] // CHECK:STDOUT: %ptr.019: type = ptr_type %C [concrete] // CHECK:STDOUT: %pattern_type.44a: type = pattern_type %ptr.019 [concrete] +// CHECK:STDOUT: %addr: %ptr.019 = addr_of file.%val.var [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -323,7 +326,7 @@ var ptr: E* = &val; // CHECK:STDOUT: } // CHECK:STDOUT: %val.var: ref %C = var %val.var_patt [concrete] // CHECK:STDOUT: %C.ref: type = name_ref C, imports.%Main.C [concrete = constants.%C] -// CHECK:STDOUT: %val: ref %C = bind_name val, %val.var +// CHECK:STDOUT: %val: ref %C = bind_name val, %val.var [concrete = %val.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %ptr.patt: %pattern_type.44a = binding_pattern ptr [concrete] // CHECK:STDOUT: %ptr.var_patt: %pattern_type.44a = var_pattern %ptr.patt [concrete] @@ -333,7 +336,7 @@ var ptr: E* = &val; // CHECK:STDOUT: %D.ref: type = name_ref D, imports.%Main.D [concrete = constants.%C] // CHECK:STDOUT: %ptr.loc8_11: type = ptr_type %D.ref [concrete = constants.%ptr.019] // CHECK:STDOUT: } -// CHECK:STDOUT: %ptr.loc8_5: ref %ptr.019 = bind_name ptr, %ptr.var +// CHECK:STDOUT: %ptr.loc8_5: ref %ptr.019 = bind_name ptr, %ptr.var [concrete = %ptr.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "a.carbon"] { @@ -349,8 +352,8 @@ var ptr: E* = &val; // CHECK:STDOUT: %.loc7_15.2: init %C = class_init (), file.%val.var [concrete = constants.%C.val] // CHECK:STDOUT: %.loc7_1: init %C = converted %.loc7_15.1, %.loc7_15.2 [concrete = constants.%C.val] // CHECK:STDOUT: assign file.%val.var, %.loc7_1 -// CHECK:STDOUT: %val.ref: ref %C = name_ref val, file.%val -// CHECK:STDOUT: %addr: %ptr.019 = addr_of %val.ref +// CHECK:STDOUT: %val.ref: ref %C = name_ref val, file.%val [concrete = file.%val.var] +// CHECK:STDOUT: %addr: %ptr.019 = addr_of %val.ref [concrete = constants.%addr] // CHECK:STDOUT: assign file.%ptr.var, %addr // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -365,6 +368,7 @@ var ptr: E* = &val; // CHECK:STDOUT: %C.val: %C = struct_value () [concrete] // CHECK:STDOUT: %ptr.019: type = ptr_type %C [concrete] // CHECK:STDOUT: %pattern_type.44a: type = pattern_type %ptr.019 [concrete] +// CHECK:STDOUT: %addr: %ptr.019 = addr_of file.%val.var [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -398,7 +402,7 @@ var ptr: E* = &val; // CHECK:STDOUT: } // CHECK:STDOUT: %val.var: ref %C = var %val.var_patt [concrete] // CHECK:STDOUT: %C.ref: type = name_ref C, imports.%Main.C [concrete = constants.%C] -// CHECK:STDOUT: %val: ref %C = bind_name val, %val.var +// CHECK:STDOUT: %val: ref %C = bind_name val, %val.var [concrete = %val.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %ptr.patt: %pattern_type.44a = binding_pattern ptr [concrete] // CHECK:STDOUT: %ptr.var_patt: %pattern_type.44a = var_pattern %ptr.patt [concrete] @@ -408,7 +412,7 @@ var ptr: E* = &val; // CHECK:STDOUT: %D.ref: type = name_ref D, imports.%Main.D [concrete = constants.%C] // CHECK:STDOUT: %ptr.loc8_11: type = ptr_type %D.ref [concrete = constants.%ptr.019] // CHECK:STDOUT: } -// CHECK:STDOUT: %ptr.loc8_5: ref %ptr.019 = bind_name ptr, %ptr.var +// CHECK:STDOUT: %ptr.loc8_5: ref %ptr.019 = bind_name ptr, %ptr.var [concrete = %ptr.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "a.carbon"] { @@ -424,8 +428,8 @@ var ptr: E* = &val; // CHECK:STDOUT: %.loc7_15.2: init %C = class_init (), file.%val.var [concrete = constants.%C.val] // CHECK:STDOUT: %.loc7_1: init %C = converted %.loc7_15.1, %.loc7_15.2 [concrete = constants.%C.val] // CHECK:STDOUT: assign file.%val.var, %.loc7_1 -// CHECK:STDOUT: %val.ref: ref %C = name_ref val, file.%val -// CHECK:STDOUT: %addr: %ptr.019 = addr_of %val.ref +// CHECK:STDOUT: %val.ref: ref %C = name_ref val, file.%val [concrete = file.%val.var] +// CHECK:STDOUT: %addr: %ptr.019 = addr_of %val.ref [concrete = constants.%addr] // CHECK:STDOUT: assign file.%ptr.var, %addr // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -440,6 +444,7 @@ var ptr: E* = &val; // CHECK:STDOUT: %C.val: %C = struct_value () [concrete] // CHECK:STDOUT: %ptr.019: type = ptr_type %C [concrete] // CHECK:STDOUT: %pattern_type.44a: type = pattern_type %ptr.019 [concrete] +// CHECK:STDOUT: %addr: %ptr.019 = addr_of file.%val.var [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -477,7 +482,7 @@ var ptr: E* = &val; // CHECK:STDOUT: } // CHECK:STDOUT: %val.var: ref %C = var %val.var_patt [concrete] // CHECK:STDOUT: %D.ref: type = name_ref D, imports.%Main.D [concrete = constants.%C] -// CHECK:STDOUT: %val: ref %C = bind_name val, %val.var +// CHECK:STDOUT: %val: ref %C = bind_name val, %val.var [concrete = %val.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %ptr.patt: %pattern_type.44a = binding_pattern ptr [concrete] // CHECK:STDOUT: %ptr.var_patt: %pattern_type.44a = var_pattern %ptr.patt [concrete] @@ -487,7 +492,7 @@ var ptr: E* = &val; // CHECK:STDOUT: %E.ref: type = name_ref E, imports.%Main.E [concrete = constants.%C] // CHECK:STDOUT: %ptr.loc8_11: type = ptr_type %E.ref [concrete = constants.%ptr.019] // CHECK:STDOUT: } -// CHECK:STDOUT: %ptr.loc8_5: ref %ptr.019 = bind_name ptr, %ptr.var +// CHECK:STDOUT: %ptr.loc8_5: ref %ptr.019 = bind_name ptr, %ptr.var [concrete = %ptr.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "b.carbon"] { @@ -503,8 +508,8 @@ var ptr: E* = &val; // CHECK:STDOUT: %.loc7_15.2: init %C = class_init (), file.%val.var [concrete = constants.%C.val] // CHECK:STDOUT: %.loc7_1: init %C = converted %.loc7_15.1, %.loc7_15.2 [concrete = constants.%C.val] // CHECK:STDOUT: assign file.%val.var, %.loc7_1 -// CHECK:STDOUT: %val.ref: ref %C = name_ref val, file.%val -// CHECK:STDOUT: %addr: %ptr.019 = addr_of %val.ref +// CHECK:STDOUT: %val.ref: ref %C = name_ref val, file.%val [concrete = file.%val.var] +// CHECK:STDOUT: %addr: %ptr.019 = addr_of %val.ref [concrete = constants.%addr] // CHECK:STDOUT: assign file.%ptr.var, %addr // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -519,6 +524,7 @@ var ptr: E* = &val; // CHECK:STDOUT: %C.val: %C = struct_value () [concrete] // CHECK:STDOUT: %ptr.019: type = ptr_type %C [concrete] // CHECK:STDOUT: %pattern_type.44a: type = pattern_type %ptr.019 [concrete] +// CHECK:STDOUT: %addr: %ptr.019 = addr_of file.%val.var [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -556,7 +562,7 @@ var ptr: E* = &val; // CHECK:STDOUT: } // CHECK:STDOUT: %val.var: ref %C = var %val.var_patt [concrete] // CHECK:STDOUT: %D.ref: type = name_ref D, imports.%Main.D [concrete = constants.%C] -// CHECK:STDOUT: %val: ref %C = bind_name val, %val.var +// CHECK:STDOUT: %val: ref %C = bind_name val, %val.var [concrete = %val.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %ptr.patt: %pattern_type.44a = binding_pattern ptr [concrete] // CHECK:STDOUT: %ptr.var_patt: %pattern_type.44a = var_pattern %ptr.patt [concrete] @@ -566,7 +572,7 @@ var ptr: E* = &val; // CHECK:STDOUT: %E.ref: type = name_ref E, imports.%Main.E [concrete = constants.%C] // CHECK:STDOUT: %ptr.loc8_11: type = ptr_type %E.ref [concrete = constants.%ptr.019] // CHECK:STDOUT: } -// CHECK:STDOUT: %ptr.loc8_5: ref %ptr.019 = bind_name ptr, %ptr.var +// CHECK:STDOUT: %ptr.loc8_5: ref %ptr.019 = bind_name ptr, %ptr.var [concrete = %ptr.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "b.carbon"] { @@ -582,8 +588,8 @@ var ptr: E* = &val; // CHECK:STDOUT: %.loc7_15.2: init %C = class_init (), file.%val.var [concrete = constants.%C.val] // CHECK:STDOUT: %.loc7_1: init %C = converted %.loc7_15.1, %.loc7_15.2 [concrete = constants.%C.val] // CHECK:STDOUT: assign file.%val.var, %.loc7_1 -// CHECK:STDOUT: %val.ref: ref %C = name_ref val, file.%val -// CHECK:STDOUT: %addr: %ptr.019 = addr_of %val.ref +// CHECK:STDOUT: %val.ref: ref %C = name_ref val, file.%val [concrete = file.%val.var] +// CHECK:STDOUT: %addr: %ptr.019 = addr_of %val.ref [concrete = constants.%addr] // CHECK:STDOUT: assign file.%ptr.var, %addr // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/class/import_struct_cyle.carbon b/toolchain/check/testdata/class/import_struct_cyle.carbon index 2dccf313ac6c..6f8669c35bce 100644 --- a/toolchain/check/testdata/class/import_struct_cyle.carbon +++ b/toolchain/check/testdata/class/import_struct_cyle.carbon @@ -71,7 +71,7 @@ fn Run() { // CHECK:STDOUT: %ptr: type = ptr_type %Cycle.ref [concrete = constants.%ptr] // CHECK:STDOUT: %struct_type.b: type = struct_type {.b: %ptr} [concrete = constants.%struct_type.b] // CHECK:STDOUT: } -// CHECK:STDOUT: %a: ref %struct_type.b = bind_name a, %a.var +// CHECK:STDOUT: %a: ref %struct_type.b = bind_name a, %a.var [concrete = %a.var] // CHECK:STDOUT: %Cycle.decl.loc8: type = class_decl @Cycle [concrete = constants.%Cycle] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: @@ -100,12 +100,14 @@ fn Run() { // CHECK:STDOUT: %struct_type.b: type = struct_type {.b: %ptr.257} [concrete] // CHECK:STDOUT: %struct_type.c: type = struct_type {.c: %struct_type.b} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.c [concrete] +// CHECK:STDOUT: %pattern_type: type = pattern_type %struct_type.b [concrete] +// CHECK:STDOUT: %.46a: ref %ptr.257 = struct_access imports.%a.var, element0 [concrete] // CHECK:STDOUT: %Cycle.elem: type = unbound_element_type %Cycle, %struct_type.b [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Main.Cycle = import_ref Main//a, Cycle, unloaded -// CHECK:STDOUT: %Main.a: ref %struct_type.b = import_ref Main//a, a, loaded +// CHECK:STDOUT: %Main.a: ref %struct_type.b = import_ref Main//a, a, loaded [concrete = %a.var] // CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... @@ -113,6 +115,9 @@ fn Run() { // CHECK:STDOUT: %Main.import_ref.b93: = import_ref Main//a, loc11_1, loaded [concrete = constants.%complete_type] // CHECK:STDOUT: %Main.import_ref.3a6 = import_ref Main//a, inst18 [no loc], unloaded // CHECK:STDOUT: %Main.import_ref.455: %Cycle.elem = import_ref Main//a, loc10_8, loaded [concrete = %.354] +// CHECK:STDOUT: %a.patt: %pattern_type = binding_pattern a [concrete] +// CHECK:STDOUT: %a.var_patt: %pattern_type = var_pattern %a.patt [concrete] +// CHECK:STDOUT: %a.var: ref %struct_type.b = var %a.var_patt [concrete] // CHECK:STDOUT: %.354: %Cycle.elem = field_decl c, element0 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -138,10 +143,10 @@ fn Run() { // CHECK:STDOUT: // CHECK:STDOUT: fn @Run() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %a.ref.loc7_3: ref %struct_type.b = name_ref a, imports.%Main.a -// CHECK:STDOUT: %.loc7_4: ref %ptr.257 = struct_access %a.ref.loc7_3, element0 -// CHECK:STDOUT: %a.ref.loc7_11: ref %struct_type.b = name_ref a, imports.%Main.a -// CHECK:STDOUT: %.loc7_12.1: ref %ptr.257 = struct_access %a.ref.loc7_11, element0 +// CHECK:STDOUT: %a.ref.loc7_3: ref %struct_type.b = name_ref a, imports.%Main.a [concrete = imports.%a.var] +// CHECK:STDOUT: %.loc7_4: ref %ptr.257 = struct_access %a.ref.loc7_3, element0 [concrete = constants.%.46a] +// CHECK:STDOUT: %a.ref.loc7_11: ref %struct_type.b = name_ref a, imports.%Main.a [concrete = imports.%a.var] +// CHECK:STDOUT: %.loc7_12.1: ref %ptr.257 = struct_access %a.ref.loc7_11, element0 [concrete = constants.%.46a] // CHECK:STDOUT: %.loc7_12.2: %ptr.257 = bind_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.455 [concrete = imports.%.354] diff --git a/toolchain/check/testdata/class/min_prelude/fail_abstract.carbon b/toolchain/check/testdata/class/min_prelude/fail_abstract.carbon index 60627da4fed2..2800764f9bfb 100644 --- a/toolchain/check/testdata/class/min_prelude/fail_abstract.carbon +++ b/toolchain/check/testdata/class/min_prelude/fail_abstract.carbon @@ -283,7 +283,7 @@ fn CallReturnAbstract() { // CHECK:STDOUT: } // CHECK:STDOUT: %v.var: ref = var %v.var_patt [concrete = ] // CHECK:STDOUT: %Abstract.ref: type = name_ref Abstract, file.%Abstract.decl [concrete = constants.%Abstract] -// CHECK:STDOUT: %v: = bind_name v, +// CHECK:STDOUT: %v: = bind_name v, [concrete = ] // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -338,7 +338,7 @@ fn CallReturnAbstract() { // CHECK:STDOUT: } // CHECK:STDOUT: %a.ref: %Abstract = name_ref a, %a // CHECK:STDOUT: %Abstract.ref.loc8: type = name_ref Abstract, file.%Abstract.decl [concrete = constants.%Abstract] -// CHECK:STDOUT: %l: %Abstract = bind_name l, +// CHECK:STDOUT: %l: %Abstract = bind_name l, [concrete = ] // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -747,7 +747,7 @@ fn CallReturnAbstract() { // CHECK:STDOUT: } // CHECK:STDOUT: %.loc8: %empty_struct_type = struct_literal () // CHECK:STDOUT: %Abstract.ref: type = name_ref Abstract, file.%Abstract.decl [concrete = constants.%Abstract] -// CHECK:STDOUT: %l: %Abstract = bind_name l, +// CHECK:STDOUT: %l: %Abstract = bind_name l, [concrete = ] // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/min_prelude/fail_abstract_in_tuple.carbon b/toolchain/check/testdata/class/min_prelude/fail_abstract_in_tuple.carbon index 1df3a9354a49..7583227151f2 100644 --- a/toolchain/check/testdata/class/min_prelude/fail_abstract_in_tuple.carbon +++ b/toolchain/check/testdata/class/min_prelude/fail_abstract_in_tuple.carbon @@ -225,7 +225,7 @@ fn Var5() { // CHECK:STDOUT: %.loc13_21.2: %tuple.type.85c = tuple_literal (%Abstract2.ref) // CHECK:STDOUT: %.loc13_21.3: type = converted %.loc13_21.2, constants.%tuple.type.ac6 [concrete = constants.%tuple.type.ac6] // CHECK:STDOUT: } -// CHECK:STDOUT: %v: = bind_name v, +// CHECK:STDOUT: %v: = bind_name v, [concrete = ] // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -288,7 +288,7 @@ fn Var5() { // CHECK:STDOUT: %.loc7_21.2: %tuple.type.85c = tuple_literal (%Abstract3.ref.loc7) // CHECK:STDOUT: %.loc7_21.3: type = converted %.loc7_21.2, constants.%tuple.type.fa1 [concrete = constants.%tuple.type.fa1] // CHECK:STDOUT: } -// CHECK:STDOUT: %l: %tuple.type.fa1 = bind_name l, +// CHECK:STDOUT: %l: %tuple.type.fa1 = bind_name l, [concrete = ] // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -355,7 +355,7 @@ fn Var5() { // CHECK:STDOUT: %.loc14_32.2: %tuple.type.24b = tuple_literal (%Abstract4.ref, %Abstract5.ref) // CHECK:STDOUT: %.loc14_32.3: type = converted %.loc14_32.2, constants.%tuple.type.e3e [concrete = constants.%tuple.type.e3e] // CHECK:STDOUT: } -// CHECK:STDOUT: %v2: = bind_name v2, +// CHECK:STDOUT: %v2: = bind_name v2, [concrete = ] // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -411,7 +411,7 @@ fn Var5() { // CHECK:STDOUT: %.loc13_25.3: type = converted %.loc13_24, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %.loc13_25.4: type = converted %.loc13_25.2, constants.%tuple.type.d93 [concrete = constants.%tuple.type.d93] // CHECK:STDOUT: } -// CHECK:STDOUT: %v3: = bind_name v3, +// CHECK:STDOUT: %v3: = bind_name v3, [concrete = ] // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -467,7 +467,7 @@ fn Var5() { // CHECK:STDOUT: %.loc13_25.3: type = converted %.loc13_13, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %.loc13_25.4: type = converted %.loc13_25.2, constants.%tuple.type.919 [concrete = constants.%tuple.type.919] // CHECK:STDOUT: } -// CHECK:STDOUT: %v4: = bind_name v4, +// CHECK:STDOUT: %v4: = bind_name v4, [concrete = ] // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -554,7 +554,7 @@ fn Var5() { // CHECK:STDOUT: %.loc14_21.2: %tuple.type.85c = tuple_literal (%Abstract.ref) // CHECK:STDOUT: %.loc14_21.3: type = converted %.loc14_21.2, constants.%tuple.type.555 [concrete = constants.%tuple.type.555] // CHECK:STDOUT: } -// CHECK:STDOUT: %v5: = bind_name v5, +// CHECK:STDOUT: %v5: = bind_name v5, [concrete = ] // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/no_prelude/export_name.carbon b/toolchain/check/testdata/class/no_prelude/export_name.carbon index b68bdc0d5037..bc9eb09e8626 100644 --- a/toolchain/check/testdata/class/no_prelude/export_name.carbon +++ b/toolchain/check/testdata/class/no_prelude/export_name.carbon @@ -122,7 +122,7 @@ var c: C = {}; // CHECK:STDOUT: } // CHECK:STDOUT: %c.var: ref %C = var %c.var_patt [concrete] // CHECK:STDOUT: %C.ref: type = name_ref C, imports.%Main.C [concrete = constants.%C] -// CHECK:STDOUT: %c: ref %C = bind_name c, %c.var +// CHECK:STDOUT: %c: ref %C = bind_name c, %c.var [concrete = %c.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "export.carbon"] { diff --git a/toolchain/check/testdata/class/no_prelude/fail_abstract_in_struct.carbon b/toolchain/check/testdata/class/no_prelude/fail_abstract_in_struct.carbon index 96cd508e9919..b3970e7bb581 100644 --- a/toolchain/check/testdata/class/no_prelude/fail_abstract_in_struct.carbon +++ b/toolchain/check/testdata/class/no_prelude/fail_abstract_in_struct.carbon @@ -180,7 +180,7 @@ var v5: {.m: Abstract}; // CHECK:STDOUT: %Abstract2.ref: type = name_ref Abstract2, %Abstract2.decl [concrete = constants.%Abstract2] // CHECK:STDOUT: %struct_type.m2: type = struct_type {.m2: %Abstract2} [concrete = constants.%struct_type.m2.155] // CHECK:STDOUT: } -// CHECK:STDOUT: %v: = bind_name v, +// CHECK:STDOUT: %v: = bind_name v, [concrete = ] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Abstract2 { @@ -241,7 +241,7 @@ var v5: {.m: Abstract}; // CHECK:STDOUT: %Abstract3.ref.loc7: type = name_ref Abstract3, file.%Abstract3.decl [concrete = constants.%Abstract3] // CHECK:STDOUT: %struct_type.m3: type = struct_type {.m3: %Abstract3} [concrete = constants.%struct_type.m3.fe4] // CHECK:STDOUT: } -// CHECK:STDOUT: %l: %struct_type.m3.fe4 = bind_name l, +// CHECK:STDOUT: %l: %struct_type.m3.fe4 = bind_name l, [concrete = ] // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -273,7 +273,7 @@ var v5: {.m: Abstract}; // CHECK:STDOUT: %Abstract5.ref: type = name_ref Abstract5, %Abstract5.decl [concrete = constants.%Abstract5] // CHECK:STDOUT: %struct_type.m4.m5: type = struct_type {.m4: %Abstract4, .m5: %Abstract5} [concrete = constants.%struct_type.m4.m5.c86] // CHECK:STDOUT: } -// CHECK:STDOUT: %v2: = bind_name v2, +// CHECK:STDOUT: %v2: = bind_name v2, [concrete = ] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Abstract4 { @@ -321,7 +321,7 @@ var v5: {.m: Abstract}; // CHECK:STDOUT: %.loc12_32.2: type = converted %.loc12_32.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %struct_type.m6.c1: type = struct_type {.m6: %Abstract6, .c1: %empty_tuple.type} [concrete = constants.%struct_type.m6.c1.489] // CHECK:STDOUT: } -// CHECK:STDOUT: %v3: = bind_name v3, +// CHECK:STDOUT: %v3: = bind_name v3, [concrete = ] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Abstract6 { @@ -360,7 +360,7 @@ var v5: {.m: Abstract}; // CHECK:STDOUT: %Abstract7.ref: type = name_ref Abstract7, %Abstract7.decl [concrete = constants.%Abstract7] // CHECK:STDOUT: %struct_type.c2.m7: type = struct_type {.c2: %empty_tuple.type, .m7: %Abstract7} [concrete = constants.%struct_type.c2.m7.4a7] // CHECK:STDOUT: } -// CHECK:STDOUT: %v4: = bind_name v4, +// CHECK:STDOUT: %v4: = bind_name v4, [concrete = ] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Abstract7 { @@ -426,7 +426,7 @@ var v5: {.m: Abstract}; // CHECK:STDOUT: %Abstract.ref: type = name_ref Abstract, imports.%Main.Abstract [concrete = constants.%Abstract] // CHECK:STDOUT: %struct_type.m: type = struct_type {.m: %Abstract} [concrete = constants.%struct_type.m.50b] // CHECK:STDOUT: } -// CHECK:STDOUT: %v5: = bind_name v5, +// CHECK:STDOUT: %v5: = bind_name v5, [concrete = ] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Abstract [from "lib.carbon"] { diff --git a/toolchain/check/testdata/class/no_prelude/fail_error_recovery.carbon b/toolchain/check/testdata/class/no_prelude/fail_error_recovery.carbon index ffdcedaf3bce..db2a4f913478 100644 --- a/toolchain/check/testdata/class/no_prelude/fail_error_recovery.carbon +++ b/toolchain/check/testdata/class/no_prelude/fail_error_recovery.carbon @@ -60,7 +60,7 @@ fn F(N:! error_not_found) { // CHECK:STDOUT: } { // CHECK:STDOUT: %self.param: = value_param call_param0 // CHECK:STDOUT: %Self.ref: = name_ref Self, [concrete = ] -// CHECK:STDOUT: %self: = bind_name self, %self.param +// CHECK:STDOUT: %self: = bind_name self, %self.param [concrete = ] // CHECK:STDOUT: } // CHECK:STDOUT: %.loc9: = vtable (%Foo.decl) [concrete = ] // CHECK:STDOUT: %struct_type.vptr: type = struct_type {.: %ptr} [concrete = constants.%struct_type.vptr] diff --git a/toolchain/check/testdata/class/no_prelude/generic_vs_params.carbon b/toolchain/check/testdata/class/no_prelude/generic_vs_params.carbon index 29b205373202..501453b357b1 100644 --- a/toolchain/check/testdata/class/no_prelude/generic_vs_params.carbon +++ b/toolchain/check/testdata/class/no_prelude/generic_vs_params.carbon @@ -150,7 +150,7 @@ class Foo[T:! type]; // CHECK:STDOUT: } // CHECK:STDOUT: %a.var: ref %NotGenericNoParams = var %a.var_patt [concrete] // CHECK:STDOUT: %NotGenericNoParams.ref: type = name_ref NotGenericNoParams, %NotGenericNoParams.decl [concrete = constants.%NotGenericNoParams] -// CHECK:STDOUT: %a: ref %NotGenericNoParams = bind_name a, %a.var +// CHECK:STDOUT: %a: ref %NotGenericNoParams = bind_name a, %a.var [concrete = %a.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %b.patt: %pattern_type.4f9 = binding_pattern b [concrete] // CHECK:STDOUT: %b.var_patt: %pattern_type.4f9 = var_pattern %b.patt [concrete] @@ -160,7 +160,7 @@ class Foo[T:! type]; // CHECK:STDOUT: %NotGenericButParams.ref: %NotGenericButParams.type = name_ref NotGenericButParams, %NotGenericButParams.decl [concrete = constants.%NotGenericButParams.generic] // CHECK:STDOUT: %NotGenericButParams: type = class_type @NotGenericButParams [concrete = constants.%NotGenericButParams] // CHECK:STDOUT: } -// CHECK:STDOUT: %b: ref %NotGenericButParams = bind_name b, %b.var +// CHECK:STDOUT: %b: ref %NotGenericButParams = bind_name b, %b.var [concrete = %b.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %c.patt: %pattern_type.569 = binding_pattern c [concrete] // CHECK:STDOUT: %c.var_patt: %pattern_type.569 = var_pattern %c.patt [concrete] @@ -171,7 +171,7 @@ class Foo[T:! type]; // CHECK:STDOUT: %X.ref.loc17: type = name_ref X, %X.decl [concrete = constants.%X] // CHECK:STDOUT: %GenericAndParams.loc17: type = class_type @GenericAndParams.1, @GenericAndParams.1(constants.%X) [concrete = constants.%GenericAndParams.2bb] // CHECK:STDOUT: } -// CHECK:STDOUT: %c: ref %GenericAndParams.2bb = bind_name c, %c.var +// CHECK:STDOUT: %c: ref %GenericAndParams.2bb = bind_name c, %c.var [concrete = %c.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %d.patt: %pattern_type.518 = binding_pattern d [concrete] // CHECK:STDOUT: %d.var_patt: %pattern_type.518 = var_pattern %d.patt [concrete] @@ -184,7 +184,7 @@ class Foo[T:! type]; // CHECK:STDOUT: %.loc18_12.2: type = specific_constant @C.%GenericNoParams.decl, @C(constants.%X) [concrete = constants.%GenericNoParams.fa1] // CHECK:STDOUT: %GenericNoParams.ref: type = name_ref GenericNoParams, %.loc18_12.2 [concrete = constants.%GenericNoParams.fa1] // CHECK:STDOUT: } -// CHECK:STDOUT: %d: ref %GenericNoParams.fa1 = bind_name d, %d.var +// CHECK:STDOUT: %d: ref %GenericNoParams.fa1 = bind_name d, %d.var [concrete = %d.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %e.patt: %pattern_type.806 = binding_pattern e [concrete] // CHECK:STDOUT: %e.var_patt: %pattern_type.806 = var_pattern %e.patt [concrete] @@ -199,7 +199,7 @@ class Foo[T:! type]; // CHECK:STDOUT: %X.ref.loc19_30: type = name_ref X, %X.decl [concrete = constants.%X] // CHECK:STDOUT: %GenericAndParams.loc19: type = class_type @GenericAndParams.2, @GenericAndParams.2(constants.%X, constants.%X) [concrete = constants.%GenericAndParams.91f] // CHECK:STDOUT: } -// CHECK:STDOUT: %e: ref %GenericAndParams.91f = bind_name e, %e.var +// CHECK:STDOUT: %e: ref %GenericAndParams.91f = bind_name e, %e.var [concrete = %e.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @NotGenericNoParams { diff --git a/toolchain/check/testdata/class/no_prelude/import_access.carbon b/toolchain/check/testdata/class/no_prelude/import_access.carbon index 16f098905998..ba56c30ae13d 100644 --- a/toolchain/check/testdata/class/no_prelude/import_access.carbon +++ b/toolchain/check/testdata/class/no_prelude/import_access.carbon @@ -232,7 +232,7 @@ private class Redecl {} // CHECK:STDOUT: } // CHECK:STDOUT: %c.var: ref %Def = var %c.var_patt [concrete] // CHECK:STDOUT: %Def.ref: type = name_ref Def, imports.%Test.Def [concrete = constants.%Def] -// CHECK:STDOUT: %c: ref %Def = bind_name c, %c.var +// CHECK:STDOUT: %c: ref %Def = bind_name c, %c.var [concrete = %c.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Def [from "def.carbon"] { @@ -269,7 +269,7 @@ private class Redecl {} // CHECK:STDOUT: } // CHECK:STDOUT: %c.var: ref = var %c.var_patt [concrete = ] // CHECK:STDOUT: %Def.ref: = name_ref Def, [concrete = ] -// CHECK:STDOUT: %c: = bind_name c, +// CHECK:STDOUT: %c: = bind_name c, [concrete = ] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -307,7 +307,7 @@ private class Redecl {} // CHECK:STDOUT: %Test.ref: = name_ref Test, imports.%Test [concrete = imports.%Test] // CHECK:STDOUT: %Def.ref: = name_ref Def, [concrete = ] // CHECK:STDOUT: } -// CHECK:STDOUT: %c: = bind_name c, +// CHECK:STDOUT: %c: = bind_name c, [concrete = ] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -346,7 +346,7 @@ private class Redecl {} // CHECK:STDOUT: } // CHECK:STDOUT: %c.var: ref %ForwardWithDef = var %c.var_patt [concrete] // CHECK:STDOUT: %ForwardWithDef.ref: type = name_ref ForwardWithDef, imports.%Test.ForwardWithDef [concrete = constants.%ForwardWithDef] -// CHECK:STDOUT: %c: ref %ForwardWithDef = bind_name c, %c.var +// CHECK:STDOUT: %c: ref %ForwardWithDef = bind_name c, %c.var [concrete = %c.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @ForwardWithDef [from "forward_with_def.carbon"] { @@ -383,7 +383,7 @@ private class Redecl {} // CHECK:STDOUT: } // CHECK:STDOUT: %c.var: ref = var %c.var_patt [concrete = ] // CHECK:STDOUT: %ForwardWithDef.ref: = name_ref ForwardWithDef, [concrete = ] -// CHECK:STDOUT: %c: = bind_name c, +// CHECK:STDOUT: %c: = bind_name c, [concrete = ] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -421,7 +421,7 @@ private class Redecl {} // CHECK:STDOUT: %Test.ref: = name_ref Test, imports.%Test [concrete = imports.%Test] // CHECK:STDOUT: %ForwardWithDef.ref: = name_ref ForwardWithDef, [concrete = ] // CHECK:STDOUT: } -// CHECK:STDOUT: %c: = bind_name c, +// CHECK:STDOUT: %c: = bind_name c, [concrete = ] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -504,7 +504,7 @@ private class Redecl {} // CHECK:STDOUT: %Forward.ref: = name_ref Forward, [concrete = ] // CHECK:STDOUT: %ptr: type = ptr_type [concrete = ] // CHECK:STDOUT: } -// CHECK:STDOUT: %c: = bind_name c, %c.param +// CHECK:STDOUT: %c: = bind_name c, %c.param [concrete = ] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -543,7 +543,7 @@ private class Redecl {} // CHECK:STDOUT: %Forward.ref: = name_ref Forward, [concrete = ] // CHECK:STDOUT: %ptr: type = ptr_type [concrete = ] // CHECK:STDOUT: } -// CHECK:STDOUT: %c: = bind_name c, %c.param +// CHECK:STDOUT: %c: = bind_name c, %c.param [concrete = ] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/no_prelude/indirect_import_member.carbon b/toolchain/check/testdata/class/no_prelude/indirect_import_member.carbon index 0f434f2aed44..723a023df6e9 100644 --- a/toolchain/check/testdata/class/no_prelude/indirect_import_member.carbon +++ b/toolchain/check/testdata/class/no_prelude/indirect_import_member.carbon @@ -286,7 +286,7 @@ var x: () = D.C.F(); // CHECK:STDOUT: %.loc6_9.2: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc6_9.3: type = converted %.loc6_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %x: ref %empty_tuple.type = bind_name x, %x.var +// CHECK:STDOUT: %x: ref %empty_tuple.type = bind_name x, %x.var [concrete = %x.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "a.carbon"] { @@ -342,7 +342,7 @@ var x: () = D.C.F(); // CHECK:STDOUT: %.loc6_9.2: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc6_9.3: type = converted %.loc6_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %x: ref %empty_tuple.type = bind_name x, %x.var +// CHECK:STDOUT: %x: ref %empty_tuple.type = bind_name x, %x.var [concrete = %x.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "c.carbon"] { @@ -398,7 +398,7 @@ var x: () = D.C.F(); // CHECK:STDOUT: %.loc6_9.2: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc6_9.3: type = converted %.loc6_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %x: ref %empty_tuple.type = bind_name x, %x.var +// CHECK:STDOUT: %x: ref %empty_tuple.type = bind_name x, %x.var [concrete = %x.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "c.carbon"] { @@ -458,7 +458,7 @@ var x: () = D.C.F(); // CHECK:STDOUT: %.loc6_9.2: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc6_9.3: type = converted %.loc6_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %x: ref %empty_tuple.type = bind_name x, %x.var +// CHECK:STDOUT: %x: ref %empty_tuple.type = bind_name x, %x.var [concrete = %x.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @D [from "e.carbon"] { @@ -527,7 +527,7 @@ var x: () = D.C.F(); // CHECK:STDOUT: %.loc6_9.2: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc6_9.3: type = converted %.loc6_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %x: ref %empty_tuple.type = bind_name x, %x.var +// CHECK:STDOUT: %x: ref %empty_tuple.type = bind_name x, %x.var [concrete = %x.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @D [from "e.carbon"] { diff --git a/toolchain/check/testdata/const/no_prelude/import.carbon b/toolchain/check/testdata/const/no_prelude/import.carbon index 510a82e33cbf..4964d0e7c8eb 100644 --- a/toolchain/check/testdata/const/no_prelude/import.carbon +++ b/toolchain/check/testdata/const/no_prelude/import.carbon @@ -36,19 +36,27 @@ var a_ptr: const C* = a_ptr_ref; // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %const: type = const_type %C [concrete] // CHECK:STDOUT: %ptr.801: type = ptr_type %const [concrete] -// CHECK:STDOUT: %pattern_type: type = pattern_type %ptr.801 [concrete] +// CHECK:STDOUT: %pattern_type.c0d: type = pattern_type %ptr.801 [concrete] +// CHECK:STDOUT: %pattern_type.6af: type = pattern_type %const [concrete] +// CHECK:STDOUT: %addr: %ptr.801 = addr_of imports.%a_ref.var [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Main.C: type = import_ref Main//implicit, C, loaded [concrete = constants.%C] -// CHECK:STDOUT: %Main.a_ref: ref %const = import_ref Main//implicit, a_ref, loaded -// CHECK:STDOUT: %Main.a_ptr_ref: ref %ptr.801 = import_ref Main//implicit, a_ptr_ref, loaded +// CHECK:STDOUT: %Main.a_ref: ref %const = import_ref Main//implicit, a_ref, loaded [concrete = %a_ref.var] +// CHECK:STDOUT: %Main.a_ptr_ref: ref %ptr.801 = import_ref Main//implicit, a_ptr_ref, loaded [concrete = %a_ptr_ref.var] +// CHECK:STDOUT: %a_ref.patt: %pattern_type.6af = binding_pattern a_ref [concrete] +// CHECK:STDOUT: %a_ref.var_patt: %pattern_type.6af = var_pattern %a_ref.patt [concrete] +// CHECK:STDOUT: %a_ref.var: ref %const = var %a_ref.var_patt [concrete] +// CHECK:STDOUT: %a_ptr_ref.patt: %pattern_type.c0d = binding_pattern a_ptr_ref [concrete] +// CHECK:STDOUT: %a_ptr_ref.var_patt: %pattern_type.c0d = var_pattern %a_ptr_ref.patt [concrete] +// CHECK:STDOUT: %a_ptr_ref.var: ref %ptr.801 = var %a_ptr_ref.var_patt [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: name_binding_decl { -// CHECK:STDOUT: %a.patt: %pattern_type = binding_pattern a [concrete] -// CHECK:STDOUT: %a.var_patt: %pattern_type = var_pattern %a.patt [concrete] +// CHECK:STDOUT: %a.patt: %pattern_type.c0d = binding_pattern a [concrete] +// CHECK:STDOUT: %a.var_patt: %pattern_type.c0d = var_pattern %a.patt [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %a.var: ref %ptr.801 = var %a.var_patt [concrete] // CHECK:STDOUT: %.loc6: type = splice_block %ptr.loc6 [concrete = constants.%ptr.801] { @@ -56,10 +64,10 @@ var a_ptr: const C* = a_ptr_ref; // CHECK:STDOUT: %const.loc6: type = const_type %C.ref.loc6 [concrete = constants.%const] // CHECK:STDOUT: %ptr.loc6: type = ptr_type %const.loc6 [concrete = constants.%ptr.801] // CHECK:STDOUT: } -// CHECK:STDOUT: %a: ref %ptr.801 = bind_name a, %a.var +// CHECK:STDOUT: %a: ref %ptr.801 = bind_name a, %a.var [concrete = %a.var] // CHECK:STDOUT: name_binding_decl { -// CHECK:STDOUT: %a_ptr.patt: %pattern_type = binding_pattern a_ptr [concrete] -// CHECK:STDOUT: %a_ptr.var_patt: %pattern_type = var_pattern %a_ptr.patt [concrete] +// CHECK:STDOUT: %a_ptr.patt: %pattern_type.c0d = binding_pattern a_ptr [concrete] +// CHECK:STDOUT: %a_ptr.var_patt: %pattern_type.c0d = var_pattern %a_ptr.patt [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %a_ptr.var: ref %ptr.801 = var %a_ptr.var_patt [concrete] // CHECK:STDOUT: %.loc7: type = splice_block %ptr.loc7 [concrete = constants.%ptr.801] { @@ -67,15 +75,15 @@ var a_ptr: const C* = a_ptr_ref; // CHECK:STDOUT: %const.loc7: type = const_type %C.ref.loc7 [concrete = constants.%const] // CHECK:STDOUT: %ptr.loc7: type = ptr_type %const.loc7 [concrete = constants.%ptr.801] // CHECK:STDOUT: } -// CHECK:STDOUT: %a_ptr: ref %ptr.801 = bind_name a_ptr, %a_ptr.var +// CHECK:STDOUT: %a_ptr: ref %ptr.801 = bind_name a_ptr, %a_ptr.var [concrete = %a_ptr.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %a_ref.ref: ref %const = name_ref a_ref, imports.%Main.a_ref -// CHECK:STDOUT: %addr: %ptr.801 = addr_of %a_ref.ref +// CHECK:STDOUT: %a_ref.ref: ref %const = name_ref a_ref, imports.%Main.a_ref [concrete = imports.%a_ref.var] +// CHECK:STDOUT: %addr: %ptr.801 = addr_of %a_ref.ref [concrete = constants.%addr] // CHECK:STDOUT: assign file.%a.var, %addr -// CHECK:STDOUT: %a_ptr_ref.ref: ref %ptr.801 = name_ref a_ptr_ref, imports.%Main.a_ptr_ref +// CHECK:STDOUT: %a_ptr_ref.ref: ref %ptr.801 = name_ref a_ptr_ref, imports.%Main.a_ptr_ref [concrete = imports.%a_ptr_ref.var] // CHECK:STDOUT: %.loc7: %ptr.801 = bind_value %a_ptr_ref.ref // CHECK:STDOUT: assign file.%a_ptr.var, %.loc7 // CHECK:STDOUT: diff --git a/toolchain/check/testdata/deduce/int_float.carbon b/toolchain/check/testdata/deduce/int_float.carbon index 45eb68e39bc4..8013baea8c1f 100644 --- a/toolchain/check/testdata/deduce/int_float.carbon +++ b/toolchain/check/testdata/deduce/int_float.carbon @@ -237,7 +237,7 @@ fn G(a: f64) -> Core.IntLiteral() { // CHECK:STDOUT: %.loc9_44.1: type = value_of_initializer %float.make_type // CHECK:STDOUT: %.loc9_44.2: type = converted %float.make_type, %.loc9_44.1 // CHECK:STDOUT: } -// CHECK:STDOUT: %n: = bind_name n, %n.param +// CHECK:STDOUT: %n: = bind_name n, %n.param [concrete = ] // CHECK:STDOUT: %return.param: ref Core.IntLiteral = out_param call_param1 // CHECK:STDOUT: %return: ref Core.IntLiteral = return_slot %return.param // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/deduce/value_with_type_through_access.carbon b/toolchain/check/testdata/deduce/value_with_type_through_access.carbon index ae3cb8e0719b..b774ed3aaf46 100644 --- a/toolchain/check/testdata/deduce/value_with_type_through_access.carbon +++ b/toolchain/check/testdata/deduce/value_with_type_through_access.carbon @@ -539,7 +539,7 @@ fn G() { // CHECK:STDOUT: %.loc21_38.1: ref type = class_element_access %T.ref.loc21_37, element0 [symbolic = %.loc21_38.3 (constants.%.2fe)] // CHECK:STDOUT: %.loc21_38.2: type = bind_value %.loc21_38.1 // CHECK:STDOUT: } -// CHECK:STDOUT: %a: = bind_name a, %a.param +// CHECK:STDOUT: %a: = bind_name a, %a.param [concrete = ] // CHECK:STDOUT: } // CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {} // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] {} {} @@ -754,7 +754,7 @@ fn G() { // CHECK:STDOUT: %.loc12_49.2: ref type = array_index %.loc12_49.1, %.loc12_48.2 // CHECK:STDOUT: %.loc12_49.3: type = bind_value %.loc12_49.2 // CHECK:STDOUT: } -// CHECK:STDOUT: %a: = bind_name a, %a.param +// CHECK:STDOUT: %a: = bind_name a, %a.param [concrete = ] // CHECK:STDOUT: } // CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {} // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] {} {} diff --git a/toolchain/check/testdata/eval/aggregate.carbon b/toolchain/check/testdata/eval/aggregate.carbon index 368a9d2cce34..ac8910933357 100644 --- a/toolchain/check/testdata/eval/aggregate.carbon +++ b/toolchain/check/testdata/eval/aggregate.carbon @@ -116,7 +116,7 @@ var struct_access: array(i32, 1) = (0,) as array(i32, {.a = 3, .b = 1}.b); // CHECK:STDOUT: %.loc11_26.2: %tuple.type.24b = tuple_literal (%i32.loc11_18, %i32.loc11_23) // CHECK:STDOUT: %.loc11_26.3: type = converted %.loc11_26.2, constants.%tuple.type.d07 [concrete = constants.%tuple.type.d07] // CHECK:STDOUT: } -// CHECK:STDOUT: %tuple_copy: ref %tuple.type.d07 = bind_name tuple_copy, %tuple_copy.var +// CHECK:STDOUT: %tuple_copy: ref %tuple.type.d07 = bind_name tuple_copy, %tuple_copy.var [concrete = %tuple_copy.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %struct_copy.patt: %pattern_type.8ae = binding_pattern struct_copy [concrete] // CHECK:STDOUT: %struct_copy.var_patt: %pattern_type.8ae = var_pattern %struct_copy.patt [concrete] @@ -131,7 +131,7 @@ var struct_access: array(i32, 1) = (0,) as array(i32, {.a = 3, .b = 1}.b); // CHECK:STDOUT: %i32.loc13_41: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %struct_type.a.b.c: type = struct_type {.a: %i32, .b: %i32, .c: %i32} [concrete = constants.%struct_type.a.b.c] // CHECK:STDOUT: } -// CHECK:STDOUT: %struct_copy: ref %struct_type.a.b.c = bind_name struct_copy, %struct_copy.var +// CHECK:STDOUT: %struct_copy: ref %struct_type.a.b.c = bind_name struct_copy, %struct_copy.var [concrete = %struct_copy.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %tuple_index.patt: %pattern_type.a98 = binding_pattern tuple_index [concrete] // CHECK:STDOUT: %tuple_index.var_patt: %pattern_type.a98 = var_pattern %tuple_index.patt [concrete] @@ -143,7 +143,7 @@ var struct_access: array(i32, 1) = (0,) as array(i32, {.a = 3, .b = 1}.b); // CHECK:STDOUT: %int_1.loc15: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %array_type.loc15: type = array_type %int_1.loc15, %i32.loc15 [concrete = constants.%array_type] // CHECK:STDOUT: } -// CHECK:STDOUT: %tuple_index: ref %array_type = bind_name tuple_index, %tuple_index.var +// CHECK:STDOUT: %tuple_index: ref %array_type = bind_name tuple_index, %tuple_index.var [concrete = %tuple_index.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %struct_access.patt: %pattern_type.a98 = binding_pattern struct_access [concrete] // CHECK:STDOUT: %struct_access.var_patt: %pattern_type.a98 = var_pattern %struct_access.patt [concrete] @@ -155,7 +155,7 @@ var struct_access: array(i32, 1) = (0,) as array(i32, {.a = 3, .b = 1}.b); // CHECK:STDOUT: %int_1.loc17: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %array_type.loc17: type = array_type %int_1.loc17, %i32.loc17 [concrete = constants.%array_type] // CHECK:STDOUT: } -// CHECK:STDOUT: %struct_access: ref %array_type = bind_name struct_access, %struct_access.var +// CHECK:STDOUT: %struct_access: ref %array_type = bind_name struct_access, %struct_access.var [concrete = %struct_access.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { diff --git a/toolchain/check/testdata/eval/fail_aggregate.carbon b/toolchain/check/testdata/eval/fail_aggregate.carbon index 551ab78e0e68..5b159822359d 100644 --- a/toolchain/check/testdata/eval/fail_aggregate.carbon +++ b/toolchain/check/testdata/eval/fail_aggregate.carbon @@ -97,7 +97,7 @@ var array_index: array(i32, 1) = (0,) as array(i32, ((5, 7, 1, 9) as array(i32, // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %array_type: type = array_type %int_1, %i32 [concrete = constants.%array_type.0cb] // CHECK:STDOUT: } -// CHECK:STDOUT: %array_index: ref %array_type.0cb = bind_name array_index, %array_index.var +// CHECK:STDOUT: %array_index: ref %array_type.0cb = bind_name array_index, %array_index.var [concrete = %array_index.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { diff --git a/toolchain/check/testdata/facet/min_prelude/access.carbon b/toolchain/check/testdata/facet/min_prelude/access.carbon index 2fd429e4f258..d27fa42012b5 100644 --- a/toolchain/check/testdata/facet/min_prelude/access.carbon +++ b/toolchain/check/testdata/facet/min_prelude/access.carbon @@ -854,7 +854,7 @@ interface J { // CHECK:STDOUT: %Id.specific_fn: = specific_function %Id.ref, @Id(constants.%I.assoc_type) [concrete = constants.%Id.specific_fn] // CHECK:STDOUT: %Id.call: init %I.assoc_type = call %Id.specific_fn(%T.ref) // CHECK:STDOUT: } -// CHECK:STDOUT: %v: = bind_name v, +// CHECK:STDOUT: %v: = bind_name v, [concrete = ] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @I { diff --git a/toolchain/check/testdata/facet/min_prelude/runtime_value.carbon b/toolchain/check/testdata/facet/min_prelude/runtime_value.carbon index 1306fcbcc885..d79cede19845 100644 --- a/toolchain/check/testdata/facet/min_prelude/runtime_value.carbon +++ b/toolchain/check/testdata/facet/min_prelude/runtime_value.carbon @@ -160,7 +160,7 @@ fn F(T: Z where .X = (), v: T.X); // CHECK:STDOUT: %.loc21_15.1: ref %facet_type = class_element_access %c.ref, element0 // CHECK:STDOUT: %.loc21_15.2: %facet_type = bind_value %.loc21_15.1 // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] -// CHECK:STDOUT: %a: %I.type = bind_name a, +// CHECK:STDOUT: %a: %I.type = bind_name a, [concrete = ] // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/function/builtin/call.carbon b/toolchain/check/testdata/function/builtin/call.carbon index dd20ba630458..d7802f531595 100644 --- a/toolchain/check/testdata/function/builtin/call.carbon +++ b/toolchain/check/testdata/function/builtin/call.carbon @@ -156,7 +156,7 @@ fn RuntimeCall(a: i32, b: i32) -> i32 { // CHECK:STDOUT: %.loc16_29.4: Core.IntLiteral = converted %int.sadd, %.loc16_29.3 [concrete = constants.%int_3.1ba] // CHECK:STDOUT: %array_type: type = array_type %.loc16_29.4, %i32 [concrete = constants.%array_type] // CHECK:STDOUT: } -// CHECK:STDOUT: %arr: ref %array_type = bind_name arr, %arr.var +// CHECK:STDOUT: %arr: ref %array_type = bind_name arr, %arr.var [concrete = %arr.var] // CHECK:STDOUT: %RuntimeCall.decl: %RuntimeCall.type = fn_decl @RuntimeCall [concrete = constants.%RuntimeCall] { // CHECK:STDOUT: %a.patt: %pattern_type.7ce = binding_pattern a [concrete] // CHECK:STDOUT: %a.param_patt: %pattern_type.7ce = value_param_pattern %a.patt, call_param0 [concrete] diff --git a/toolchain/check/testdata/function/builtin/method.carbon b/toolchain/check/testdata/function/builtin/method.carbon index b73ee0e52eb4..9e065ce46cee 100644 --- a/toolchain/check/testdata/function/builtin/method.carbon +++ b/toolchain/check/testdata/function/builtin/method.carbon @@ -171,7 +171,7 @@ var arr: array(i32, (1 as i32).(I.F)(2)); // CHECK:STDOUT: %.loc22_39.4: Core.IntLiteral = converted %int.sadd, %.loc22_39.3 [concrete = constants.%int_3.1ba] // CHECK:STDOUT: %array_type: type = array_type %.loc22_39.4, %i32.loc22_16 [concrete = constants.%array_type] // CHECK:STDOUT: } -// CHECK:STDOUT: %arr: ref %array_type = bind_name arr, %arr.var +// CHECK:STDOUT: %arr: ref %array_type = bind_name arr, %arr.var [concrete = %arr.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @I { diff --git a/toolchain/check/testdata/function/builtin/no_prelude/adapted_type.carbon b/toolchain/check/testdata/function/builtin/no_prelude/adapted_type.carbon index 699716ab45a0..686c1d860115 100644 --- a/toolchain/check/testdata/function/builtin/no_prelude/adapted_type.carbon +++ b/toolchain/check/testdata/function/builtin/no_prelude/adapted_type.carbon @@ -146,7 +146,7 @@ fn Int(N: MyIntLiteral) -> type = "int.make_type_signed"; // CHECK:STDOUT: } // CHECK:STDOUT: %v.var: ref %MyInt32 = var %v.var_patt [concrete] // CHECK:STDOUT: %MyInt32.ref: type = name_ref MyInt32, %MyInt32.decl [concrete = constants.%MyInt32] -// CHECK:STDOUT: %v: ref %MyInt32 = bind_name v, %v.var +// CHECK:STDOUT: %v: ref %MyInt32 = bind_name v, %v.var [concrete = %v.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @MyIntLiteral { diff --git a/toolchain/check/testdata/function/builtin/no_prelude/call_from_operator.carbon b/toolchain/check/testdata/function/builtin/no_prelude/call_from_operator.carbon index aed84e4f65bb..6983b4e54fef 100644 --- a/toolchain/check/testdata/function/builtin/no_prelude/call_from_operator.carbon +++ b/toolchain/check/testdata/function/builtin/no_prelude/call_from_operator.carbon @@ -791,7 +791,7 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: %.loc4_32.4: Core.IntLiteral = converted %int.sadd, %.loc4_32.3 [concrete = constants.%int_3.1ba] // CHECK:STDOUT: %array_type: type = array_type %.loc4_32.4, %.loc4_16.2 [concrete = constants.%array_type] // CHECK:STDOUT: } -// CHECK:STDOUT: %arr: ref %array_type = bind_name arr, %arr.var +// CHECK:STDOUT: %arr: ref %array_type = bind_name arr, %arr.var [concrete = %arr.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic interface @As(imports.%Core.import_ref.5ab3ec.1: type) [from "core.carbon"] { diff --git a/toolchain/check/testdata/function/builtin/no_prelude/import.carbon b/toolchain/check/testdata/function/builtin/no_prelude/import.carbon index f414dadfd054..7e672356609e 100644 --- a/toolchain/check/testdata/function/builtin/no_prelude/import.carbon +++ b/toolchain/check/testdata/function/builtin/no_prelude/import.carbon @@ -247,7 +247,7 @@ var arr: array(i32, Core.AsIntLiteral(Core.TestAdd(Core.AsI32(1), Core.AsI32(2)) // CHECK:STDOUT: %.loc4_81.2: Core.IntLiteral = converted %int.convert_checked.loc4_81, %.loc4_81.1 [concrete = constants.%int_3.1ba] // CHECK:STDOUT: %array_type: type = array_type %.loc4_81.2, %.loc4_16.2 [concrete = constants.%array_type] // CHECK:STDOUT: } -// CHECK:STDOUT: %arr: ref %array_type = bind_name arr, %arr.var +// CHECK:STDOUT: %arr: ref %array_type = bind_name arr, %arr.var [concrete = %arr.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Int = "int.make_type_signed" [from "core.carbon"]; diff --git a/toolchain/check/testdata/function/declaration/fail_param_in_type.carbon b/toolchain/check/testdata/function/declaration/fail_param_in_type.carbon index 62635068a7d5..ba3773487edc 100644 --- a/toolchain/check/testdata/function/declaration/fail_param_in_type.carbon +++ b/toolchain/check/testdata/function/declaration/fail_param_in_type.carbon @@ -63,7 +63,7 @@ fn F(n: i32, a: array(i32, n)*); // CHECK:STDOUT: %n.ref: %i32 = name_ref n, %n // CHECK:STDOUT: %ptr: type = ptr_type [concrete = ] // CHECK:STDOUT: } -// CHECK:STDOUT: %a: = bind_name a, %a.param +// CHECK:STDOUT: %a: = bind_name a, %a.param [concrete = ] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/function/declaration/import.carbon b/toolchain/check/testdata/function/declaration/import.carbon index 2b1f46e2b434..ddf39034b3dd 100644 --- a/toolchain/check/testdata/function/declaration/import.carbon +++ b/toolchain/check/testdata/function/declaration/import.carbon @@ -548,7 +548,7 @@ import library "extern_api"; // CHECK:STDOUT: %.loc6_9.2: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc6_9.3: type = converted %.loc6_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %a: ref %empty_tuple.type = bind_name a, %a.var +// CHECK:STDOUT: %a: ref %empty_tuple.type = bind_name a, %a.var [concrete = %a.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %b.patt: %pattern_type.7ce = binding_pattern b [concrete] // CHECK:STDOUT: %b.var_patt: %pattern_type.7ce = var_pattern %b.patt [concrete] @@ -558,7 +558,7 @@ import library "extern_api"; // CHECK:STDOUT: %int_32.loc7: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc7: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %b: ref %i32 = bind_name b, %b.var +// CHECK:STDOUT: %b: ref %i32 = bind_name b, %b.var [concrete = %b.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %c.patt: %pattern_type.688 = binding_pattern c [concrete] // CHECK:STDOUT: %c.var_patt: %pattern_type.688 = var_pattern %c.patt [concrete] @@ -569,7 +569,7 @@ import library "extern_api"; // CHECK:STDOUT: %i32.loc8: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %struct_type.c: type = struct_type {.c: %i32} [concrete = constants.%struct_type.c] // CHECK:STDOUT: } -// CHECK:STDOUT: %c: ref %struct_type.c = bind_name c, %c.var +// CHECK:STDOUT: %c: ref %struct_type.c = bind_name c, %c.var [concrete = %c.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %d.patt: %pattern_type.cb1 = binding_pattern d [concrete] // CHECK:STDOUT: %d.var_patt: %pattern_type.cb1 = var_pattern %d.patt [concrete] @@ -579,7 +579,7 @@ import library "extern_api"; // CHECK:STDOUT: %.loc9_9.2: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc9_9.3: type = converted %.loc9_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %d: ref %empty_tuple.type = bind_name d, %d.var +// CHECK:STDOUT: %d: ref %empty_tuple.type = bind_name d, %d.var [concrete = %d.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %e.patt: %pattern_type.cb1 = binding_pattern e [concrete] // CHECK:STDOUT: %e.var_patt: %pattern_type.cb1 = var_pattern %e.patt [concrete] @@ -589,7 +589,7 @@ import library "extern_api"; // CHECK:STDOUT: %.loc10_9.2: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc10_9.3: type = converted %.loc10_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %e: ref %empty_tuple.type = bind_name e, %e.var +// CHECK:STDOUT: %e: ref %empty_tuple.type = bind_name e, %e.var [concrete = %e.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @A [from "api.carbon"]; @@ -759,7 +759,7 @@ import library "extern_api"; // CHECK:STDOUT: %.loc52_9.2: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc52_9.3: type = converted %.loc52_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %a: ref %empty_tuple.type = bind_name a, %a.var +// CHECK:STDOUT: %a: ref %empty_tuple.type = bind_name a, %a.var [concrete = %a.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %b.patt: %pattern_type.7ce = binding_pattern b [concrete] // CHECK:STDOUT: %b.var_patt: %pattern_type.7ce = var_pattern %b.patt [concrete] @@ -769,7 +769,7 @@ import library "extern_api"; // CHECK:STDOUT: %int_32.loc53: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc53: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %b: ref %i32 = bind_name b, %b.var +// CHECK:STDOUT: %b: ref %i32 = bind_name b, %b.var [concrete = %b.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %c.patt: %pattern_type.688 = binding_pattern c [concrete] // CHECK:STDOUT: %c.var_patt: %pattern_type.688 = var_pattern %c.patt [concrete] @@ -780,7 +780,7 @@ import library "extern_api"; // CHECK:STDOUT: %i32.loc54: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %struct_type.c: type = struct_type {.c: %i32} [concrete = constants.%struct_type.c] // CHECK:STDOUT: } -// CHECK:STDOUT: %c: ref %struct_type.c = bind_name c, %c.var +// CHECK:STDOUT: %c: ref %struct_type.c = bind_name c, %c.var [concrete = %c.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %d.patt: %pattern_type.cb1 = binding_pattern d [concrete] // CHECK:STDOUT: %d.var_patt: %pattern_type.cb1 = var_pattern %d.patt [concrete] @@ -790,7 +790,7 @@ import library "extern_api"; // CHECK:STDOUT: %.loc55_9.2: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc55_9.3: type = converted %.loc55_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %d: ref %empty_tuple.type = bind_name d, %d.var +// CHECK:STDOUT: %d: ref %empty_tuple.type = bind_name d, %d.var [concrete = %d.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %e.patt: %pattern_type.cb1 = binding_pattern e [concrete] // CHECK:STDOUT: %e.var_patt: %pattern_type.cb1 = var_pattern %e.patt [concrete] @@ -800,7 +800,7 @@ import library "extern_api"; // CHECK:STDOUT: %.loc56_9.2: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc56_9.3: type = converted %.loc56_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %e: ref %empty_tuple.type = bind_name e, %e.var +// CHECK:STDOUT: %e: ref %empty_tuple.type = bind_name e, %e.var [concrete = %e.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @A [from "api.carbon"]; @@ -970,7 +970,7 @@ import library "extern_api"; // CHECK:STDOUT: %.loc12_9.2: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc12_9.3: type = converted %.loc12_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %a: ref %empty_tuple.type = bind_name a, %a.var +// CHECK:STDOUT: %a: ref %empty_tuple.type = bind_name a, %a.var [concrete = %a.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %b.patt: %pattern_type.501 = binding_pattern b [concrete] // CHECK:STDOUT: %b.var_patt: %pattern_type.501 = var_pattern %b.patt [concrete] @@ -980,7 +980,7 @@ import library "extern_api"; // CHECK:STDOUT: %int_32.loc13: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc13: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %b: ref %i32 = bind_name b, %b.var +// CHECK:STDOUT: %b: ref %i32 = bind_name b, %b.var [concrete = %b.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %c.patt: %pattern_type.f5f = binding_pattern c [concrete] // CHECK:STDOUT: %c.var_patt: %pattern_type.f5f = var_pattern %c.patt [concrete] @@ -991,7 +991,7 @@ import library "extern_api"; // CHECK:STDOUT: %i32.loc14: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %struct_type.c: type = struct_type {.c: %i32} [concrete = constants.%struct_type.c] // CHECK:STDOUT: } -// CHECK:STDOUT: %c: ref %struct_type.c = bind_name c, %c.var +// CHECK:STDOUT: %c: ref %struct_type.c = bind_name c, %c.var [concrete = %c.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %d.patt: %pattern_type.cb1 = binding_pattern d [concrete] // CHECK:STDOUT: %d.var_patt: %pattern_type.cb1 = var_pattern %d.patt [concrete] @@ -1001,7 +1001,7 @@ import library "extern_api"; // CHECK:STDOUT: %.loc15_9.2: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc15_9.3: type = converted %.loc15_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %d: ref %empty_tuple.type = bind_name d, %d.var +// CHECK:STDOUT: %d: ref %empty_tuple.type = bind_name d, %d.var [concrete = %d.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %e.patt: %pattern_type.cb1 = binding_pattern e [concrete] // CHECK:STDOUT: %e.var_patt: %pattern_type.cb1 = var_pattern %e.patt [concrete] @@ -1011,7 +1011,7 @@ import library "extern_api"; // CHECK:STDOUT: %.loc16_9.2: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc16_9.3: type = converted %.loc16_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %e: ref %empty_tuple.type = bind_name e, %e.var +// CHECK:STDOUT: %e: ref %empty_tuple.type = bind_name e, %e.var [concrete = %e.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: extern fn @A; @@ -1155,7 +1155,7 @@ import library "extern_api"; // CHECK:STDOUT: %.loc52_9.2: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc52_9.3: type = converted %.loc52_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %a: ref %empty_tuple.type = bind_name a, %a.var +// CHECK:STDOUT: %a: ref %empty_tuple.type = bind_name a, %a.var [concrete = %a.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %b.patt: %pattern_type.7ce = binding_pattern b [concrete] // CHECK:STDOUT: %b.var_patt: %pattern_type.7ce = var_pattern %b.patt [concrete] @@ -1165,7 +1165,7 @@ import library "extern_api"; // CHECK:STDOUT: %int_32.loc53: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc53: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %b: ref %i32 = bind_name b, %b.var +// CHECK:STDOUT: %b: ref %i32 = bind_name b, %b.var [concrete = %b.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %c.patt: %pattern_type.688 = binding_pattern c [concrete] // CHECK:STDOUT: %c.var_patt: %pattern_type.688 = var_pattern %c.patt [concrete] @@ -1176,7 +1176,7 @@ import library "extern_api"; // CHECK:STDOUT: %i32.loc54: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %struct_type.c: type = struct_type {.c: %i32} [concrete = constants.%struct_type.c] // CHECK:STDOUT: } -// CHECK:STDOUT: %c: ref %struct_type.c = bind_name c, %c.var +// CHECK:STDOUT: %c: ref %struct_type.c = bind_name c, %c.var [concrete = %c.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %d.patt: %pattern_type.cb1 = binding_pattern d [concrete] // CHECK:STDOUT: %d.var_patt: %pattern_type.cb1 = var_pattern %d.patt [concrete] @@ -1186,7 +1186,7 @@ import library "extern_api"; // CHECK:STDOUT: %.loc55_9.2: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc55_9.3: type = converted %.loc55_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %d: ref %empty_tuple.type = bind_name d, %d.var +// CHECK:STDOUT: %d: ref %empty_tuple.type = bind_name d, %d.var [concrete = %d.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %e.patt: %pattern_type.cb1 = binding_pattern e [concrete] // CHECK:STDOUT: %e.var_patt: %pattern_type.cb1 = var_pattern %e.patt [concrete] @@ -1196,7 +1196,7 @@ import library "extern_api"; // CHECK:STDOUT: %.loc56_9.2: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc56_9.3: type = converted %.loc56_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %e: ref %empty_tuple.type = bind_name e, %e.var +// CHECK:STDOUT: %e: ref %empty_tuple.type = bind_name e, %e.var [concrete = %e.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @A [from "api.carbon"]; @@ -1340,7 +1340,7 @@ import library "extern_api"; // CHECK:STDOUT: %.loc52_9.2: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc52_9.3: type = converted %.loc52_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %a: ref %empty_tuple.type = bind_name a, %a.var +// CHECK:STDOUT: %a: ref %empty_tuple.type = bind_name a, %a.var [concrete = %a.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %b.patt: %pattern_type.7ce = binding_pattern b [concrete] // CHECK:STDOUT: %b.var_patt: %pattern_type.7ce = var_pattern %b.patt [concrete] @@ -1350,7 +1350,7 @@ import library "extern_api"; // CHECK:STDOUT: %int_32.loc53: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc53: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %b: ref %i32 = bind_name b, %b.var +// CHECK:STDOUT: %b: ref %i32 = bind_name b, %b.var [concrete = %b.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %c.patt: %pattern_type.688 = binding_pattern c [concrete] // CHECK:STDOUT: %c.var_patt: %pattern_type.688 = var_pattern %c.patt [concrete] @@ -1361,7 +1361,7 @@ import library "extern_api"; // CHECK:STDOUT: %i32.loc54: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %struct_type.c: type = struct_type {.c: %i32} [concrete = constants.%struct_type.c] // CHECK:STDOUT: } -// CHECK:STDOUT: %c: ref %struct_type.c = bind_name c, %c.var +// CHECK:STDOUT: %c: ref %struct_type.c = bind_name c, %c.var [concrete = %c.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %d.patt: %pattern_type.cb1 = binding_pattern d [concrete] // CHECK:STDOUT: %d.var_patt: %pattern_type.cb1 = var_pattern %d.patt [concrete] @@ -1371,7 +1371,7 @@ import library "extern_api"; // CHECK:STDOUT: %.loc55_9.2: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc55_9.3: type = converted %.loc55_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %d: ref %empty_tuple.type = bind_name d, %d.var +// CHECK:STDOUT: %d: ref %empty_tuple.type = bind_name d, %d.var [concrete = %d.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %e.patt: %pattern_type.cb1 = binding_pattern e [concrete] // CHECK:STDOUT: %e.var_patt: %pattern_type.cb1 = var_pattern %e.patt [concrete] @@ -1381,7 +1381,7 @@ import library "extern_api"; // CHECK:STDOUT: %.loc56_9.2: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc56_9.3: type = converted %.loc56_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %e: ref %empty_tuple.type = bind_name e, %e.var +// CHECK:STDOUT: %e: ref %empty_tuple.type = bind_name e, %e.var [concrete = %e.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: extern fn @A; diff --git a/toolchain/check/testdata/function/declaration/no_prelude/export_name.carbon b/toolchain/check/testdata/function/declaration/no_prelude/export_name.carbon index 9c4652694bda..2d85d4e40aa6 100644 --- a/toolchain/check/testdata/function/declaration/no_prelude/export_name.carbon +++ b/toolchain/check/testdata/function/declaration/no_prelude/export_name.carbon @@ -106,7 +106,7 @@ var f: () = F(); // CHECK:STDOUT: %.loc6_9.2: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc6_9.3: type = converted %.loc6_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %f: ref %empty_tuple.type = bind_name f, %f.var +// CHECK:STDOUT: %f: ref %empty_tuple.type = bind_name f, %f.var [concrete = %f.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F [from "export.carbon"]; diff --git a/toolchain/check/testdata/function/declaration/no_prelude/extern.carbon b/toolchain/check/testdata/function/declaration/no_prelude/extern.carbon index 9a92c1978664..02a0a2ddd152 100644 --- a/toolchain/check/testdata/function/declaration/no_prelude/extern.carbon +++ b/toolchain/check/testdata/function/declaration/no_prelude/extern.carbon @@ -128,7 +128,7 @@ extern library "basic" fn F(); // CHECK:STDOUT: %.loc4_9.2: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc4_9.3: type = converted %.loc4_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %x: ref %empty_tuple.type = bind_name x, %x.var +// CHECK:STDOUT: %x: ref %empty_tuple.type = bind_name x, %x.var [concrete = %x.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: extern fn @F [from "basic.carbon"]; diff --git a/toolchain/check/testdata/function/definition/import.carbon b/toolchain/check/testdata/function/definition/import.carbon index 6a4be3e445df..d5f0aa9bb084 100644 --- a/toolchain/check/testdata/function/definition/import.carbon +++ b/toolchain/check/testdata/function/definition/import.carbon @@ -324,7 +324,7 @@ fn D() {} // CHECK:STDOUT: %.loc6_9.2: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc6_9.3: type = converted %.loc6_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %a: ref %empty_tuple.type = bind_name a, %a.var +// CHECK:STDOUT: %a: ref %empty_tuple.type = bind_name a, %a.var [concrete = %a.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %b.patt: %pattern_type.7ce = binding_pattern b [concrete] // CHECK:STDOUT: %b.var_patt: %pattern_type.7ce = var_pattern %b.patt [concrete] @@ -334,7 +334,7 @@ fn D() {} // CHECK:STDOUT: %int_32.loc7: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc7: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %b: ref %i32 = bind_name b, %b.var +// CHECK:STDOUT: %b: ref %i32 = bind_name b, %b.var [concrete = %b.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %c.patt: %pattern_type.688 = binding_pattern c [concrete] // CHECK:STDOUT: %c.var_patt: %pattern_type.688 = var_pattern %c.patt [concrete] @@ -345,7 +345,7 @@ fn D() {} // CHECK:STDOUT: %i32.loc8: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %struct_type.c: type = struct_type {.c: %i32} [concrete = constants.%struct_type.c] // CHECK:STDOUT: } -// CHECK:STDOUT: %c: ref %struct_type.c = bind_name c, %c.var +// CHECK:STDOUT: %c: ref %struct_type.c = bind_name c, %c.var [concrete = %c.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @A [from "fns.carbon"]; diff --git a/toolchain/check/testdata/function/definition/import_access.carbon b/toolchain/check/testdata/function/definition/import_access.carbon index 66f37cbd519c..52d7a2a05daa 100644 --- a/toolchain/check/testdata/function/definition/import_access.carbon +++ b/toolchain/check/testdata/function/definition/import_access.carbon @@ -256,7 +256,7 @@ private fn Redecl() {} // CHECK:STDOUT: %.loc4_9.2: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc4_9.3: type = converted %.loc4_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %f: ref %empty_tuple.type = bind_name f, %f.var +// CHECK:STDOUT: %f: ref %empty_tuple.type = bind_name f, %f.var [concrete = %f.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Def [from "def.carbon"]; @@ -300,7 +300,7 @@ private fn Redecl() {} // CHECK:STDOUT: %.loc10_9.2: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc10_9.3: type = converted %.loc10_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %f: ref %empty_tuple.type = bind_name f, %f.var +// CHECK:STDOUT: %f: ref %empty_tuple.type = bind_name f, %f.var [concrete = %f.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -345,7 +345,7 @@ private fn Redecl() {} // CHECK:STDOUT: %.loc10_9.2: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc10_9.3: type = converted %.loc10_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %f: ref %empty_tuple.type = bind_name f, %f.var +// CHECK:STDOUT: %f: ref %empty_tuple.type = bind_name f, %f.var [concrete = %f.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -391,7 +391,7 @@ private fn Redecl() {} // CHECK:STDOUT: %.loc4_9.2: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc4_9.3: type = converted %.loc4_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %f: ref %empty_tuple.type = bind_name f, %f.var +// CHECK:STDOUT: %f: ref %empty_tuple.type = bind_name f, %f.var [concrete = %f.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @ForwardWithDef [from "forward_with_def.carbon"]; @@ -435,7 +435,7 @@ private fn Redecl() {} // CHECK:STDOUT: %.loc10_9.2: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc10_9.3: type = converted %.loc10_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %f: ref %empty_tuple.type = bind_name f, %f.var +// CHECK:STDOUT: %f: ref %empty_tuple.type = bind_name f, %f.var [concrete = %f.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -480,7 +480,7 @@ private fn Redecl() {} // CHECK:STDOUT: %.loc10_9.2: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc10_9.3: type = converted %.loc10_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %f: ref %empty_tuple.type = bind_name f, %f.var +// CHECK:STDOUT: %f: ref %empty_tuple.type = bind_name f, %f.var [concrete = %f.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -526,7 +526,7 @@ private fn Redecl() {} // CHECK:STDOUT: %.loc4_9.2: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc4_9.3: type = converted %.loc4_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %f: ref %empty_tuple.type = bind_name f, %f.var +// CHECK:STDOUT: %f: ref %empty_tuple.type = bind_name f, %f.var [concrete = %f.var] // CHECK:STDOUT: %Forward.decl: %Forward.type = fn_decl @Forward [concrete = constants.%Forward] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: @@ -574,7 +574,7 @@ private fn Redecl() {} // CHECK:STDOUT: %.loc10_9.2: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc10_9.3: type = converted %.loc10_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %f: ref %empty_tuple.type = bind_name f, %f.var +// CHECK:STDOUT: %f: ref %empty_tuple.type = bind_name f, %f.var [concrete = %f.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -619,7 +619,7 @@ private fn Redecl() {} // CHECK:STDOUT: %.loc10_9.2: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc10_9.3: type = converted %.loc10_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %f: ref %empty_tuple.type = bind_name f, %f.var +// CHECK:STDOUT: %f: ref %empty_tuple.type = bind_name f, %f.var [concrete = %f.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { diff --git a/toolchain/check/testdata/function/definition/no_prelude/fail_decl_param_mismatch.carbon b/toolchain/check/testdata/function/definition/no_prelude/fail_decl_param_mismatch.carbon index 916701b1e0b7..25f283fef80a 100644 --- a/toolchain/check/testdata/function/definition/no_prelude/fail_decl_param_mismatch.carbon +++ b/toolchain/check/testdata/function/definition/no_prelude/fail_decl_param_mismatch.carbon @@ -152,7 +152,7 @@ fn K() -> {} { return {}; } // CHECK:STDOUT: %x.param_patt: = value_param_pattern %x.patt, call_param0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %x.param: = value_param call_param0 -// CHECK:STDOUT: %x: = bind_name x, %x.param +// CHECK:STDOUT: %x: = bind_name x, %x.param [concrete = ] // CHECK:STDOUT: } // CHECK:STDOUT: %I.decl.loc41: %I.type.af49c4.1 = fn_decl @I.1 [concrete = constants.%I.58e4ec.1] {} {} // CHECK:STDOUT: %I.decl.loc49: %I.type.af49c4.2 = fn_decl @I.2 [concrete = constants.%I.58e4ec.2] { diff --git a/toolchain/check/testdata/function/generic/min_prelude/fail_type_param_mismatch.carbon b/toolchain/check/testdata/function/generic/min_prelude/fail_type_param_mismatch.carbon index 4f74cca870cf..6784fb898953 100644 --- a/toolchain/check/testdata/function/generic/min_prelude/fail_type_param_mismatch.carbon +++ b/toolchain/check/testdata/function/generic/min_prelude/fail_type_param_mismatch.carbon @@ -87,7 +87,7 @@ fn F(T:! type, U:! type) { // CHECK:STDOUT: %.loc19_14.1: ref @F.%T.loc13_6.2 (%T) = deref %.loc19_15 // CHECK:STDOUT: %U.ref: type = name_ref U, %U.loc13_16.1 [symbolic = %U.loc13_16.2 (constants.%U)] // CHECK:STDOUT: %.loc19_14.2: @F.%U.loc13_16.2 (%U) = converted %.loc19_14.1, [concrete = ] -// CHECK:STDOUT: %n: @F.%U.loc13_16.2 (%U) = bind_name n, +// CHECK:STDOUT: %n: @F.%U.loc13_16.2 (%U) = bind_name n, [concrete = ] // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/generic/dependent_param.carbon b/toolchain/check/testdata/generic/dependent_param.carbon index a20bf459e876..759a2ff3befd 100644 --- a/toolchain/check/testdata/generic/dependent_param.carbon +++ b/toolchain/check/testdata/generic/dependent_param.carbon @@ -108,7 +108,7 @@ var n: i32 = Outer(i32).Inner(42).Get(); // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %n: ref %i32 = bind_name n, %n.var +// CHECK:STDOUT: %n: ref %i32 = bind_name n, %n.var [concrete = %n.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic class @Outer(%T.loc4_13.1: type) { diff --git a/toolchain/check/testdata/global/class_obj.carbon b/toolchain/check/testdata/global/class_obj.carbon index b623ff8fcbc7..30de72c12dab 100644 --- a/toolchain/check/testdata/global/class_obj.carbon +++ b/toolchain/check/testdata/global/class_obj.carbon @@ -42,7 +42,7 @@ var a: A = {}; // CHECK:STDOUT: } // CHECK:STDOUT: %a.var: ref %A = var %a.var_patt [concrete] // CHECK:STDOUT: %A.ref: type = name_ref A, %A.decl [concrete = constants.%A] -// CHECK:STDOUT: %a: ref %A = bind_name a, %a.var +// CHECK:STDOUT: %a: ref %A = bind_name a, %a.var [concrete = %a.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @A { diff --git a/toolchain/check/testdata/global/class_with_fun.carbon b/toolchain/check/testdata/global/class_with_fun.carbon index baee340b1005..ff9b4ec5961f 100644 --- a/toolchain/check/testdata/global/class_with_fun.carbon +++ b/toolchain/check/testdata/global/class_with_fun.carbon @@ -57,7 +57,7 @@ var a: A = {}; // CHECK:STDOUT: } // CHECK:STDOUT: %a.var: ref %A = var %a.var_patt [concrete] // CHECK:STDOUT: %A.ref: type = name_ref A, %A.decl [concrete = constants.%A] -// CHECK:STDOUT: %a: ref %A = bind_name a, %a.var +// CHECK:STDOUT: %a: ref %A = bind_name a, %a.var [concrete = %a.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @A { diff --git a/toolchain/check/testdata/global/decl.carbon b/toolchain/check/testdata/global/decl.carbon index dddca32f162c..a19e735403ef 100644 --- a/toolchain/check/testdata/global/decl.carbon +++ b/toolchain/check/testdata/global/decl.carbon @@ -43,6 +43,6 @@ var a: i32; // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %a: ref %i32 = bind_name a, %a.var +// CHECK:STDOUT: %a: ref %i32 = bind_name a, %a.var [concrete = %a.var] // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/global/simple_init.carbon b/toolchain/check/testdata/global/simple_init.carbon index f329e78a28e9..aaca25edddc1 100644 --- a/toolchain/check/testdata/global/simple_init.carbon +++ b/toolchain/check/testdata/global/simple_init.carbon @@ -64,7 +64,7 @@ var a: i32 = 0; // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %a: ref %i32 = bind_name a, %a.var +// CHECK:STDOUT: %a: ref %i32 = bind_name a, %a.var [concrete = %a.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { diff --git a/toolchain/check/testdata/global/simple_with_fun.carbon b/toolchain/check/testdata/global/simple_with_fun.carbon index 9998c39385ee..927c515daab4 100644 --- a/toolchain/check/testdata/global/simple_with_fun.carbon +++ b/toolchain/check/testdata/global/simple_with_fun.carbon @@ -81,7 +81,7 @@ var a: i32 = test_a(); // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %a: ref %i32 = bind_name a, %a.var +// CHECK:STDOUT: %a: ref %i32 = bind_name a, %a.var [concrete = %a.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @test_a() -> %i32 { diff --git a/toolchain/check/testdata/if_expr/fail_partial_constant.carbon b/toolchain/check/testdata/if_expr/fail_partial_constant.carbon index fa13a928e2e9..77d9dd86814a 100644 --- a/toolchain/check/testdata/if_expr/fail_partial_constant.carbon +++ b/toolchain/check/testdata/if_expr/fail_partial_constant.carbon @@ -119,7 +119,7 @@ fn ChosenBranchIsNonConstant(t: type) { // CHECK:STDOUT: br !.loc12_7 // CHECK:STDOUT: // CHECK:STDOUT: !.loc12_7: -// CHECK:STDOUT: %v: = bind_name v, +// CHECK:STDOUT: %v: = bind_name v, [concrete = ] // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -191,7 +191,7 @@ fn ChosenBranchIsNonConstant(t: type) { // CHECK:STDOUT: br !.loc9_7 // CHECK:STDOUT: // CHECK:STDOUT: !.loc9_7: -// CHECK:STDOUT: %v: = bind_name v, +// CHECK:STDOUT: %v: = bind_name v, [concrete = ] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %w.patt: = binding_pattern w [concrete] // CHECK:STDOUT: %w.var_patt: = var_pattern %w.patt [concrete] @@ -219,7 +219,7 @@ fn ChosenBranchIsNonConstant(t: type) { // CHECK:STDOUT: br !.loc14_7 // CHECK:STDOUT: // CHECK:STDOUT: !.loc14_7: -// CHECK:STDOUT: %w: = bind_name w, +// CHECK:STDOUT: %w: = bind_name w, [concrete = ] // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/fail_call_invalid.carbon b/toolchain/check/testdata/impl/fail_call_invalid.carbon index bd464e0a9039..a6382e217938 100644 --- a/toolchain/check/testdata/impl/fail_call_invalid.carbon +++ b/toolchain/check/testdata/impl/fail_call_invalid.carbon @@ -122,7 +122,7 @@ fn InstanceCall(n: i32) { // CHECK:STDOUT: } { // CHECK:STDOUT: %self.param: = value_param call_param0 // CHECK:STDOUT: %Undeclared.ref: = name_ref Undeclared, [concrete = ] -// CHECK:STDOUT: %self: = bind_name self, %self.param +// CHECK:STDOUT: %self: = bind_name self, %self.param [concrete = ] // CHECK:STDOUT: } // CHECK:STDOUT: %G.decl.loc23_27.2: %G.type.c9825d.2 = fn_decl @G.3 [concrete = constants.%G.e73e91.2] { // CHECK:STDOUT: %self.patt: %pattern_type.7ce = binding_pattern self [concrete] diff --git a/toolchain/check/testdata/impl/lookup/min_prelude/specialization_with_symbolic_rewrite.carbon b/toolchain/check/testdata/impl/lookup/min_prelude/specialization_with_symbolic_rewrite.carbon index 8e4635e9d2e1..949ed49f1b94 100644 --- a/toolchain/check/testdata/impl/lookup/min_prelude/specialization_with_symbolic_rewrite.carbon +++ b/toolchain/check/testdata/impl/lookup/min_prelude/specialization_with_symbolic_rewrite.carbon @@ -689,7 +689,7 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %.loc22_16.1: @F.%ImplicitAs.assoc_type (%ImplicitAs.assoc_type.bd9) = specific_constant imports.%Core.import_ref.492, @ImplicitAs(constants.%impl.elem0.284) [symbolic = %assoc0 (constants.%assoc0.428)] // CHECK:STDOUT: %Convert.ref: @F.%ImplicitAs.assoc_type (%ImplicitAs.assoc_type.bd9) = name_ref Convert, %.loc22_16.1 [symbolic = %assoc0 (constants.%assoc0.428)] // CHECK:STDOUT: %.loc22_16.2: @F.%impl.elem0.loc22_11.2 (%impl.elem0.284) = converted %t.ref, [concrete = ] -// CHECK:STDOUT: %a: @F.%impl.elem0.loc22_11.2 (%impl.elem0.284) = bind_name a, +// CHECK:STDOUT: %a: @F.%impl.elem0.loc22_11.2 (%impl.elem0.284) = bind_name a, [concrete = ] // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/impl/min_prelude/forward_decls.carbon b/toolchain/check/testdata/impl/min_prelude/forward_decls.carbon index e587c99d9ca4..71623ef4c23f 100644 --- a/toolchain/check/testdata/impl/min_prelude/forward_decls.carbon +++ b/toolchain/check/testdata/impl/min_prelude/forward_decls.carbon @@ -893,7 +893,7 @@ interface I { // CHECK:STDOUT: %.loc13_16.2: type = converted %.loc13_11, %as_type [concrete = constants.%C] // CHECK:STDOUT: %impl.elem0: type = impl_witness_access constants.%I.impl_witness, element0 [concrete = ] // CHECK:STDOUT: } -// CHECK:STDOUT: %x: = bind_name x, +// CHECK:STDOUT: %x: = bind_name x, [concrete = ] // CHECK:STDOUT: impl_decl @impl [concrete] {} { // CHECK:STDOUT: %C.ref.loc22: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %I.ref.loc22: type = name_ref I, file.%I.decl [concrete = constants.%I.type] diff --git a/toolchain/check/testdata/impl/no_prelude/import_builtin_call.carbon b/toolchain/check/testdata/impl/no_prelude/import_builtin_call.carbon index 6401f10f887f..bac3e7b4fae6 100644 --- a/toolchain/check/testdata/impl/no_prelude/import_builtin_call.carbon +++ b/toolchain/check/testdata/impl/no_prelude/import_builtin_call.carbon @@ -1098,7 +1098,7 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: %.loc6_14.2: type = value_of_initializer %int.make_type_signed.loc6 [concrete = constants.%i64.builtin] // CHECK:STDOUT: %.loc6_14.3: type = converted %int.make_type_signed.loc6, %.loc6_14.2 [concrete = constants.%i64.builtin] // CHECK:STDOUT: } -// CHECK:STDOUT: %m: ref %i64.builtin = bind_name m, %m.var +// CHECK:STDOUT: %m: ref %i64.builtin = bind_name m, %m.var [concrete = %m.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %n.patt: %pattern_type.e13 = binding_pattern n [concrete] // CHECK:STDOUT: %n.var_patt: %pattern_type.e13 = var_pattern %n.patt [concrete] @@ -1111,7 +1111,7 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: %.loc7_14.2: type = value_of_initializer %int.make_type_signed.loc7 [concrete = constants.%i64.builtin] // CHECK:STDOUT: %.loc7_14.3: type = converted %int.make_type_signed.loc7, %.loc7_14.2 [concrete = constants.%i64.builtin] // CHECK:STDOUT: } -// CHECK:STDOUT: %n: ref %i64.builtin = bind_name n, %n.var +// CHECK:STDOUT: %n: ref %i64.builtin = bind_name n, %n.var [concrete = %n.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @OtherInt [from "convert_symbolic.carbon"] { diff --git a/toolchain/check/testdata/impl/no_prelude/import_use_generic.carbon b/toolchain/check/testdata/impl/no_prelude/import_use_generic.carbon index 6e40e6d837db..80a06a56d5f6 100644 --- a/toolchain/check/testdata/impl/no_prelude/import_use_generic.carbon +++ b/toolchain/check/testdata/impl/no_prelude/import_use_generic.carbon @@ -249,12 +249,12 @@ fn H() -> C({}).(I.F)() {} // CHECK:STDOUT: %.loc6_12.2: type = converted %.loc6_11, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %C: type = class_type @C, @C(constants.%empty_struct_type) [concrete = constants.%C.7a7] // CHECK:STDOUT: } -// CHECK:STDOUT: %c: ref %C.7a7 = bind_name c, %c.var +// CHECK:STDOUT: %c: ref %C.7a7 = bind_name c, %c.var [concrete = %c.var] // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] { // CHECK:STDOUT: %return.patt: = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %c.ref: ref %C.7a7 = name_ref c, file.%c +// CHECK:STDOUT: %c.ref: ref %C.7a7 = name_ref c, file.%c [concrete = file.%c.var] // CHECK:STDOUT: %I.ref: type = name_ref I, imports.%Main.I [concrete = constants.%I.type] // CHECK:STDOUT: %F.ref: %I.assoc_type = name_ref F, imports.%Main.import_ref.c44 [concrete = constants.%assoc0] // CHECK:STDOUT: %.loc16: %I.type = converted %c.ref, [concrete = ] diff --git a/toolchain/check/testdata/impl/use_assoc_const.carbon b/toolchain/check/testdata/impl/use_assoc_const.carbon index 9abbfa6f7068..f5ece126b32a 100644 --- a/toolchain/check/testdata/impl/use_assoc_const.carbon +++ b/toolchain/check/testdata/impl/use_assoc_const.carbon @@ -2351,7 +2351,7 @@ fn F() { // CHECK:STDOUT: %U.ref.loc24_13: %J.assoc_type = name_ref U, @U.%assoc0 [concrete = constants.%assoc0.411] // CHECK:STDOUT: %.loc24_13: type = converted %U.ref.loc24_13, [concrete = ] // CHECK:STDOUT: } -// CHECK:STDOUT: %u: = bind_name u, %u.param +// CHECK:STDOUT: %u: = bind_name u, %u.param [concrete = ] // CHECK:STDOUT: %return.param: ref = out_param call_param1 // CHECK:STDOUT: %return: ref = return_slot %return.param // CHECK:STDOUT: } @@ -2564,7 +2564,7 @@ fn F() { // CHECK:STDOUT: %self: @F.1.%Self.as_type.loc19_14.1 (%Self.as_type) = bind_name self, %self.param // CHECK:STDOUT: %z.param: = value_param call_param1 // CHECK:STDOUT: %Self.ref.loc19_23: %J2.type = name_ref Self, @J2.%Self [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %z: = bind_name z, %z.param +// CHECK:STDOUT: %z: = bind_name z, %z.param [concrete = ] // CHECK:STDOUT: %return.param: ref = out_param call_param2 // CHECK:STDOUT: %return: ref = return_slot %return.param // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/index/array_element_access.carbon b/toolchain/check/testdata/index/array_element_access.carbon index 1f9a94323cf4..60fb4db59fde 100644 --- a/toolchain/check/testdata/index/array_element_access.carbon +++ b/toolchain/check/testdata/index/array_element_access.carbon @@ -93,7 +93,7 @@ var d: i32 = a[b]; // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2] // CHECK:STDOUT: %array_type: type = array_type %int_2, %i32.loc14 [concrete = constants.%array_type] // CHECK:STDOUT: } -// CHECK:STDOUT: %a: ref %array_type = bind_name a, %a.var +// CHECK:STDOUT: %a: ref %array_type = bind_name a, %a.var [concrete = %a.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %b.patt: %pattern_type.7ce = binding_pattern b [concrete] // CHECK:STDOUT: %b.var_patt: %pattern_type.7ce = var_pattern %b.patt [concrete] @@ -103,7 +103,7 @@ var d: i32 = a[b]; // CHECK:STDOUT: %int_32.loc15: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc15: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %b: ref %i32 = bind_name b, %b.var +// CHECK:STDOUT: %b: ref %i32 = bind_name b, %b.var [concrete = %b.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %c.patt: %pattern_type.7ce = binding_pattern c [concrete] // CHECK:STDOUT: %c.var_patt: %pattern_type.7ce = var_pattern %c.patt [concrete] @@ -113,7 +113,7 @@ var d: i32 = a[b]; // CHECK:STDOUT: %int_32.loc16: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc16: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %c: ref %i32 = bind_name c, %c.var +// CHECK:STDOUT: %c: ref %i32 = bind_name c, %c.var [concrete = %c.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %d.patt: %pattern_type.7ce = binding_pattern d [concrete] // CHECK:STDOUT: %d.var_patt: %pattern_type.7ce = var_pattern %d.patt [concrete] @@ -123,7 +123,7 @@ var d: i32 = a[b]; // CHECK:STDOUT: %int_32.loc17: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc17: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %d: ref %i32 = bind_name d, %d.var +// CHECK:STDOUT: %d: ref %i32 = bind_name d, %d.var [concrete = %d.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -160,7 +160,7 @@ var d: i32 = a[b]; // CHECK:STDOUT: %int.convert_checked.loc15: init %i32 = call %bound_method.loc15_1.2(%int_1.loc15) [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc15: init %i32 = converted %int_1.loc15, %int.convert_checked.loc15 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: assign file.%b.var, %.loc15 -// CHECK:STDOUT: %a.ref.loc16: ref %array_type = name_ref a, file.%a +// CHECK:STDOUT: %a.ref.loc16: ref %array_type = name_ref a, file.%a [concrete = file.%a.var] // CHECK:STDOUT: %int_0.loc16: Core.IntLiteral = int_value 0 [concrete = constants.%int_0.5c6] // CHECK:STDOUT: %int_32.loc16: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc16: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] @@ -174,8 +174,8 @@ var d: i32 = a[b]; // CHECK:STDOUT: %.loc16_17.1: ref %i32 = array_index %a.ref.loc16, %.loc16_16.2 // CHECK:STDOUT: %.loc16_17.2: %i32 = bind_value %.loc16_17.1 // CHECK:STDOUT: assign file.%c.var, %.loc16_17.2 -// CHECK:STDOUT: %a.ref.loc17: ref %array_type = name_ref a, file.%a -// CHECK:STDOUT: %b.ref: ref %i32 = name_ref b, file.%b +// CHECK:STDOUT: %a.ref.loc17: ref %array_type = name_ref a, file.%a [concrete = file.%a.var] +// CHECK:STDOUT: %b.ref: ref %i32 = name_ref b, file.%b [concrete = file.%b.var] // CHECK:STDOUT: %int_32.loc17: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc17: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %.loc17_16: %i32 = bind_value %b.ref diff --git a/toolchain/check/testdata/index/fail_array_large_index.carbon b/toolchain/check/testdata/index/fail_array_large_index.carbon index 5801f607931e..9ec0affb2010 100644 --- a/toolchain/check/testdata/index/fail_array_large_index.carbon +++ b/toolchain/check/testdata/index/fail_array_large_index.carbon @@ -97,7 +97,7 @@ var c: i32 = a[0x7FFF_FFFF]; // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %array_type: type = array_type %int_1, %i32.loc14 [concrete = constants.%array_type] // CHECK:STDOUT: } -// CHECK:STDOUT: %a: ref %array_type = bind_name a, %a.var +// CHECK:STDOUT: %a: ref %array_type = bind_name a, %a.var [concrete = %a.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %b.patt: %pattern_type.7ce = binding_pattern b [concrete] // CHECK:STDOUT: %b.var_patt: %pattern_type.7ce = var_pattern %b.patt [concrete] @@ -107,7 +107,7 @@ var c: i32 = a[0x7FFF_FFFF]; // CHECK:STDOUT: %int_32.loc20: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc20: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %b: ref %i32 = bind_name b, %b.var +// CHECK:STDOUT: %b: ref %i32 = bind_name b, %b.var [concrete = %b.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %c.patt: %pattern_type.7ce = binding_pattern c [concrete] // CHECK:STDOUT: %c.var_patt: %pattern_type.7ce = var_pattern %c.patt [concrete] @@ -117,7 +117,7 @@ var c: i32 = a[0x7FFF_FFFF]; // CHECK:STDOUT: %int_32.loc26: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc26: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %c: ref %i32 = bind_name c, %c.var +// CHECK:STDOUT: %c: ref %i32 = bind_name c, %c.var [concrete = %c.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -136,7 +136,7 @@ var c: i32 = a[0x7FFF_FFFF]; // CHECK:STDOUT: %.loc14_28.5: init %array_type = array_init (%.loc14_28.4) to file.%a.var [concrete = constants.%array] // CHECK:STDOUT: %.loc14_1: init %array_type = converted %.loc14_28.1, %.loc14_28.5 [concrete = constants.%array] // CHECK:STDOUT: assign file.%a.var, %.loc14_1 -// CHECK:STDOUT: %a.ref.loc20: ref %array_type = name_ref a, file.%a +// CHECK:STDOUT: %a.ref.loc20: ref %array_type = name_ref a, file.%a [concrete = file.%a.var] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %int_32.loc20: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc20: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] @@ -150,7 +150,7 @@ var c: i32 = a[0x7FFF_FFFF]; // CHECK:STDOUT: %.loc20_17.1: ref %i32 = array_index %a.ref.loc20, %.loc20_16.2 [concrete = ] // CHECK:STDOUT: %.loc20_17.2: %i32 = bind_value %.loc20_17.1 [concrete = ] // CHECK:STDOUT: assign file.%b.var, %.loc20_17.2 -// CHECK:STDOUT: %a.ref.loc26: ref %array_type = name_ref a, file.%a +// CHECK:STDOUT: %a.ref.loc26: ref %array_type = name_ref a, file.%a [concrete = file.%a.var] // CHECK:STDOUT: %int_2147483647: Core.IntLiteral = int_value 2147483647 [concrete = constants.%int_2147483647.d89] // CHECK:STDOUT: %int_32.loc26: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc26: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] diff --git a/toolchain/check/testdata/index/fail_array_non_int_indexing.carbon b/toolchain/check/testdata/index/fail_array_non_int_indexing.carbon index 4704d7617a7c..faf324c8218f 100644 --- a/toolchain/check/testdata/index/fail_array_non_int_indexing.carbon +++ b/toolchain/check/testdata/index/fail_array_non_int_indexing.carbon @@ -86,7 +86,7 @@ var b: i32 = a[2.6]; // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1] // CHECK:STDOUT: %array_type: type = array_type %int_1, %i32.loc14 [concrete = constants.%array_type] // CHECK:STDOUT: } -// CHECK:STDOUT: %a: ref %array_type = bind_name a, %a.var +// CHECK:STDOUT: %a: ref %array_type = bind_name a, %a.var [concrete = %a.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %b.patt: %pattern_type.7ce = binding_pattern b [concrete] // CHECK:STDOUT: %b.var_patt: %pattern_type.7ce = var_pattern %b.patt [concrete] @@ -96,7 +96,7 @@ var b: i32 = a[2.6]; // CHECK:STDOUT: %int_32.loc22: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc22: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %b: ref %i32 = bind_name b, %b.var +// CHECK:STDOUT: %b: ref %i32 = bind_name b, %b.var [concrete = %b.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -115,7 +115,7 @@ var b: i32 = a[2.6]; // CHECK:STDOUT: %.loc14_28.5: init %array_type = array_init (%.loc14_28.4) to file.%a.var [concrete = constants.%array] // CHECK:STDOUT: %.loc14_1: init %array_type = converted %.loc14_28.1, %.loc14_28.5 [concrete = constants.%array] // CHECK:STDOUT: assign file.%a.var, %.loc14_1 -// CHECK:STDOUT: %a.ref: ref %array_type = name_ref a, file.%a +// CHECK:STDOUT: %a.ref: ref %array_type = name_ref a, file.%a [concrete = file.%a.var] // CHECK:STDOUT: %float: f64 = float_literal 2.6000000000000001 [concrete = constants.%float] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] diff --git a/toolchain/check/testdata/index/fail_array_out_of_bound_access.carbon b/toolchain/check/testdata/index/fail_array_out_of_bound_access.carbon index be71d517002f..b08208cd2dca 100644 --- a/toolchain/check/testdata/index/fail_array_out_of_bound_access.carbon +++ b/toolchain/check/testdata/index/fail_array_out_of_bound_access.carbon @@ -85,7 +85,7 @@ var b: i32 = a[1]; // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %array_type: type = array_type %int_1, %i32.loc14 [concrete = constants.%array_type] // CHECK:STDOUT: } -// CHECK:STDOUT: %a: ref %array_type = bind_name a, %a.var +// CHECK:STDOUT: %a: ref %array_type = bind_name a, %a.var [concrete = %a.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %b.patt: %pattern_type.7ce = binding_pattern b [concrete] // CHECK:STDOUT: %b.var_patt: %pattern_type.7ce = var_pattern %b.patt [concrete] @@ -95,7 +95,7 @@ var b: i32 = a[1]; // CHECK:STDOUT: %int_32.loc19: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc19: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %b: ref %i32 = bind_name b, %b.var +// CHECK:STDOUT: %b: ref %i32 = bind_name b, %b.var [concrete = %b.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -114,7 +114,7 @@ var b: i32 = a[1]; // CHECK:STDOUT: %.loc14_28.5: init %array_type = array_init (%.loc14_28.4) to file.%a.var [concrete = constants.%array] // CHECK:STDOUT: %.loc14_1: init %array_type = converted %.loc14_28.1, %.loc14_28.5 [concrete = constants.%array] // CHECK:STDOUT: assign file.%a.var, %.loc14_1 -// CHECK:STDOUT: %a.ref: ref %array_type = name_ref a, file.%a +// CHECK:STDOUT: %a.ref: ref %array_type = name_ref a, file.%a [concrete = file.%a.var] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] diff --git a/toolchain/check/testdata/index/fail_invalid_base.carbon b/toolchain/check/testdata/index/fail_invalid_base.carbon index a0a256f1850a..4c762da8a3ef 100644 --- a/toolchain/check/testdata/index/fail_invalid_base.carbon +++ b/toolchain/check/testdata/index/fail_invalid_base.carbon @@ -89,7 +89,7 @@ var d: i32 = {.a: i32, .b: i32}[0]; // CHECK:STDOUT: %int_32.loc19: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc19: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %a: ref %i32 = bind_name a, %a.var +// CHECK:STDOUT: %a: ref %i32 = bind_name a, %a.var [concrete = %a.var] // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {} // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %b.patt: %pattern_type.7ce = binding_pattern b [concrete] @@ -100,7 +100,7 @@ var d: i32 = {.a: i32, .b: i32}[0]; // CHECK:STDOUT: %int_32.loc26: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc26: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %b: ref %i32 = bind_name b, %b.var +// CHECK:STDOUT: %b: ref %i32 = bind_name b, %b.var [concrete = %b.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %c.patt: %pattern_type.7ce = binding_pattern c [concrete] // CHECK:STDOUT: %c.var_patt: %pattern_type.7ce = var_pattern %c.patt [concrete] @@ -110,7 +110,7 @@ var d: i32 = {.a: i32, .b: i32}[0]; // CHECK:STDOUT: %int_32.loc32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %c: ref %i32 = bind_name c, %c.var +// CHECK:STDOUT: %c: ref %i32 = bind_name c, %c.var [concrete = %c.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %d.patt: %pattern_type.7ce = binding_pattern d [concrete] // CHECK:STDOUT: %d.var_patt: %pattern_type.7ce = var_pattern %d.patt [concrete] @@ -120,7 +120,7 @@ var d: i32 = {.a: i32, .b: i32}[0]; // CHECK:STDOUT: %int_32.loc38: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc38: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %d: ref %i32 = bind_name d, %d.var +// CHECK:STDOUT: %d: ref %i32 = bind_name d, %d.var [concrete = %d.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F(); diff --git a/toolchain/check/testdata/index/fail_negative_indexing.carbon b/toolchain/check/testdata/index/fail_negative_indexing.carbon index aa817bae6bbb..84348202afe8 100644 --- a/toolchain/check/testdata/index/fail_negative_indexing.carbon +++ b/toolchain/check/testdata/index/fail_negative_indexing.carbon @@ -101,7 +101,7 @@ var d: i32 = c[-10]; // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2] // CHECK:STDOUT: %array_type: type = array_type %int_2, %i32.loc14 [concrete = constants.%array_type] // CHECK:STDOUT: } -// CHECK:STDOUT: %c: ref %array_type = bind_name c, %c.var +// CHECK:STDOUT: %c: ref %array_type = bind_name c, %c.var [concrete = %c.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %d.patt: %pattern_type.7ce = binding_pattern d [concrete] // CHECK:STDOUT: %d.var_patt: %pattern_type.7ce = var_pattern %d.patt [concrete] @@ -111,7 +111,7 @@ var d: i32 = c[-10]; // CHECK:STDOUT: %int_32.loc19: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc19: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %d: ref %i32 = bind_name d, %d.var +// CHECK:STDOUT: %d: ref %i32 = bind_name d, %d.var [concrete = %d.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -140,7 +140,7 @@ var d: i32 = c[-10]; // CHECK:STDOUT: %.loc14_31.8: init %array_type = array_init (%.loc14_31.4, %.loc14_31.7) to file.%c.var [concrete = constants.%array] // CHECK:STDOUT: %.loc14_1: init %array_type = converted %.loc14_31.1, %.loc14_31.8 [concrete = constants.%array] // CHECK:STDOUT: assign file.%c.var, %.loc14_1 -// CHECK:STDOUT: %c.ref: ref %array_type = name_ref c, file.%c +// CHECK:STDOUT: %c.ref: ref %array_type = name_ref c, file.%c [concrete = file.%c.var] // CHECK:STDOUT: %int_10: Core.IntLiteral = int_value 10 [concrete = constants.%int_10] // CHECK:STDOUT: %impl.elem0.loc19_16.1: %.63a = impl_witness_access constants.%Negate.impl_witness.561, element0 [concrete = constants.%Op.bba] // CHECK:STDOUT: %bound_method.loc19_16.1: = bound_method %int_10, %impl.elem0.loc19_16.1 [concrete = constants.%Op.bound] diff --git a/toolchain/check/testdata/interface/min_prelude/fail_member_lookup.carbon b/toolchain/check/testdata/interface/min_prelude/fail_member_lookup.carbon index d0dc704100cf..62666d1aeae4 100644 --- a/toolchain/check/testdata/interface/min_prelude/fail_member_lookup.carbon +++ b/toolchain/check/testdata/interface/min_prelude/fail_member_lookup.carbon @@ -296,7 +296,7 @@ fn G(U:! Different) -> U.(Interface.T); // CHECK:STDOUT: %T.ref: %Interface.assoc_type = name_ref T, @T.%assoc1 [concrete = constants.%assoc1] // CHECK:STDOUT: %.loc25: type = converted %T.ref, [concrete = ] // CHECK:STDOUT: } -// CHECK:STDOUT: %v: = bind_name v, +// CHECK:STDOUT: %v: = bind_name v, [concrete = ] // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/interface/no_prelude/fail_lookup_in_type_type.carbon b/toolchain/check/testdata/interface/no_prelude/fail_lookup_in_type_type.carbon index 05c4c24dd19d..c9849e8c0df7 100644 --- a/toolchain/check/testdata/interface/no_prelude/fail_lookup_in_type_type.carbon +++ b/toolchain/check/testdata/interface/no_prelude/fail_lookup_in_type_type.carbon @@ -44,7 +44,7 @@ let U: (type where .Self impls type).missing = {}; // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %T.patt: = binding_pattern T [concrete] // CHECK:STDOUT: } -// CHECK:STDOUT: %T: = bind_name T, +// CHECK:STDOUT: %T: = bind_name T, [concrete = ] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -76,7 +76,7 @@ let U: (type where .Self impls type).missing = {}; // CHECK:STDOUT: } // CHECK:STDOUT: %missing.ref: = name_ref missing, [concrete = ] // CHECK:STDOUT: } -// CHECK:STDOUT: %U: = bind_name U, +// CHECK:STDOUT: %U: = bind_name U, [concrete = ] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { diff --git a/toolchain/check/testdata/interface/no_prelude/import.carbon b/toolchain/check/testdata/interface/no_prelude/import.carbon index e1b8f3c58dcb..449801b7f06b 100644 --- a/toolchain/check/testdata/interface/no_prelude/import.carbon +++ b/toolchain/check/testdata/interface/no_prelude/import.carbon @@ -93,7 +93,7 @@ var f: ForwardDeclared* = &f_ref.f; // CHECK:STDOUT: %ForwardDeclared.ref: type = name_ref ForwardDeclared, %ForwardDeclared.decl [concrete = constants.%ForwardDeclared.type] // CHECK:STDOUT: %struct_type.f: type = struct_type {.f: %ForwardDeclared.type} [concrete = constants.%struct_type.f] // CHECK:STDOUT: } -// CHECK:STDOUT: %f_ref: ref %struct_type.f = bind_name f_ref, %f_ref.var +// CHECK:STDOUT: %f_ref: ref %struct_type.f = bind_name f_ref, %f_ref.var [concrete = %f_ref.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @Empty { @@ -182,13 +182,16 @@ var f: ForwardDeclared* = &f_ref.f; // CHECK:STDOUT: %ptr: type = ptr_type %ForwardDeclared.type [concrete] // CHECK:STDOUT: %pattern_type.97e: type = pattern_type %ptr [concrete] // CHECK:STDOUT: %struct_type.f: type = struct_type {.f: %ForwardDeclared.type} [concrete] +// CHECK:STDOUT: %pattern_type.e3b: type = pattern_type %struct_type.f [concrete] +// CHECK:STDOUT: %.7e4: ref %ForwardDeclared.type = struct_access imports.%f_ref.var, element0 [concrete] +// CHECK:STDOUT: %addr: %ptr = addr_of %.7e4 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Main.Empty: type = import_ref Main//a, Empty, loaded [concrete = constants.%Empty.type] // CHECK:STDOUT: %Main.Basic: type = import_ref Main//a, Basic, loaded [concrete = constants.%Basic.type] // CHECK:STDOUT: %Main.ForwardDeclared: type = import_ref Main//a, ForwardDeclared, loaded [concrete = constants.%ForwardDeclared.type] -// CHECK:STDOUT: %Main.f_ref: ref %struct_type.f = import_ref Main//a, f_ref, loaded +// CHECK:STDOUT: %Main.f_ref: ref %struct_type.f = import_ref Main//a, f_ref, loaded [concrete = %f_ref.var] // CHECK:STDOUT: %Main.import_ref.cc0 = import_ref Main//a, inst17 [no loc], unloaded // CHECK:STDOUT: %Main.import_ref.37f = import_ref Main//a, inst22 [no loc], unloaded // CHECK:STDOUT: %Main.import_ref.3d5: %Basic.assoc_type = import_ref Main//a, loc8_8, loaded [concrete = constants.%assoc0.fee] @@ -204,6 +207,9 @@ var f: ForwardDeclared* = &f_ref.f; // CHECK:STDOUT: %Main.import_ref.0be = import_ref Main//a, loc9_9, unloaded // CHECK:STDOUT: %Main.import_ref.69a = import_ref Main//a, loc16_8, unloaded // CHECK:STDOUT: %Main.import_ref.1cc = import_ref Main//a, loc17_9, unloaded +// CHECK:STDOUT: %f_ref.patt: %pattern_type.e3b = binding_pattern f_ref [concrete] +// CHECK:STDOUT: %f_ref.var_patt: %pattern_type.e3b = var_pattern %f_ref.patt [concrete] +// CHECK:STDOUT: %f_ref.var: ref %struct_type.f = var %f_ref.var_patt [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -267,7 +273,7 @@ var f: ForwardDeclared* = &f_ref.f; // CHECK:STDOUT: %ForwardDeclared.ref.loc16: type = name_ref ForwardDeclared, imports.%Main.ForwardDeclared [concrete = constants.%ForwardDeclared.type] // CHECK:STDOUT: %ptr: type = ptr_type %ForwardDeclared.ref.loc16 [concrete = constants.%ptr] // CHECK:STDOUT: } -// CHECK:STDOUT: %f: ref %ptr = bind_name f, %f.var +// CHECK:STDOUT: %f: ref %ptr = bind_name f, %f.var [concrete = %f.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @Empty [from "a.carbon"] { @@ -309,9 +315,9 @@ var f: ForwardDeclared* = &f_ref.f; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %f_ref.ref: ref %struct_type.f = name_ref f_ref, imports.%Main.f_ref -// CHECK:STDOUT: %.loc16: ref %ForwardDeclared.type = struct_access %f_ref.ref, element0 -// CHECK:STDOUT: %addr: %ptr = addr_of %.loc16 +// CHECK:STDOUT: %f_ref.ref: ref %struct_type.f = name_ref f_ref, imports.%Main.f_ref [concrete = imports.%f_ref.var] +// CHECK:STDOUT: %.loc16: ref %ForwardDeclared.type = struct_access %f_ref.ref, element0 [concrete = constants.%.7e4] +// CHECK:STDOUT: %addr: %ptr = addr_of %.loc16 [concrete = constants.%addr] // CHECK:STDOUT: assign file.%f.var, %addr // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/interface/no_prelude/import_access.carbon b/toolchain/check/testdata/interface/no_prelude/import_access.carbon index bca630e6e61a..33abb55b4878 100644 --- a/toolchain/check/testdata/interface/no_prelude/import_access.carbon +++ b/toolchain/check/testdata/interface/no_prelude/import_access.carbon @@ -263,7 +263,7 @@ private interface Redecl {} // CHECK:STDOUT: } { // CHECK:STDOUT: %i.param: = value_param call_param0 // CHECK:STDOUT: %Def.ref: = name_ref Def, [concrete = ] -// CHECK:STDOUT: %i: = bind_name i, %i.param +// CHECK:STDOUT: %i: = bind_name i, %i.param [concrete = ] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -301,7 +301,7 @@ private interface Redecl {} // CHECK:STDOUT: %Test.ref: = name_ref Test, imports.%Test [concrete = imports.%Test] // CHECK:STDOUT: %Def.ref: = name_ref Def, [concrete = ] // CHECK:STDOUT: } -// CHECK:STDOUT: %i: = bind_name i, %i.param +// CHECK:STDOUT: %i: = bind_name i, %i.param [concrete = ] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -371,7 +371,7 @@ private interface Redecl {} // CHECK:STDOUT: } { // CHECK:STDOUT: %i.param: = value_param call_param0 // CHECK:STDOUT: %ForwardWithDef.ref: = name_ref ForwardWithDef, [concrete = ] -// CHECK:STDOUT: %i: = bind_name i, %i.param +// CHECK:STDOUT: %i: = bind_name i, %i.param [concrete = ] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -409,7 +409,7 @@ private interface Redecl {} // CHECK:STDOUT: %Test.ref: = name_ref Test, imports.%Test [concrete = imports.%Test] // CHECK:STDOUT: %ForwardWithDef.ref: = name_ref ForwardWithDef, [concrete = ] // CHECK:STDOUT: } -// CHECK:STDOUT: %i: = bind_name i, %i.param +// CHECK:STDOUT: %i: = bind_name i, %i.param [concrete = ] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -443,7 +443,7 @@ private interface Redecl {} // CHECK:STDOUT: %Forward.ref: = name_ref Forward, [concrete = ] // CHECK:STDOUT: %ptr: type = ptr_type [concrete = ] // CHECK:STDOUT: } -// CHECK:STDOUT: %i: = bind_name i, %i.param +// CHECK:STDOUT: %i: = bind_name i, %i.param [concrete = ] // CHECK:STDOUT: } // CHECK:STDOUT: %Forward.decl: type = interface_decl @Forward [concrete = constants.%Forward.type] {} {} // CHECK:STDOUT: } @@ -483,7 +483,7 @@ private interface Redecl {} // CHECK:STDOUT: %Forward.ref: = name_ref Forward, [concrete = ] // CHECK:STDOUT: %ptr: type = ptr_type [concrete = ] // CHECK:STDOUT: } -// CHECK:STDOUT: %i: = bind_name i, %i.param +// CHECK:STDOUT: %i: = bind_name i, %i.param [concrete = ] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -521,7 +521,7 @@ private interface Redecl {} // CHECK:STDOUT: %Forward.ref: = name_ref Forward, [concrete = ] // CHECK:STDOUT: %ptr: type = ptr_type [concrete = ] // CHECK:STDOUT: } -// CHECK:STDOUT: %i: = bind_name i, %i.param +// CHECK:STDOUT: %i: = bind_name i, %i.param [concrete = ] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/interop/cpp/no_prelude/class.carbon b/toolchain/check/testdata/interop/cpp/no_prelude/class.carbon index 99873d5be9ee..2de176984499 100644 --- a/toolchain/check/testdata/interop/cpp/no_prelude/class.carbon +++ b/toolchain/check/testdata/interop/cpp/no_prelude/class.carbon @@ -391,7 +391,7 @@ fn MyF(bar: Cpp.Bar*); // CHECK:STDOUT: %Bar.ref: = name_ref Bar, [concrete = ] // CHECK:STDOUT: %ptr: type = ptr_type [concrete = ] // CHECK:STDOUT: } -// CHECK:STDOUT: %bar: = bind_name bar, %bar.param +// CHECK:STDOUT: %bar: = bind_name bar, %bar.param [concrete = ] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -731,7 +731,7 @@ fn MyF(bar: Cpp.Bar*); // CHECK:STDOUT: %Bar.ref.loc18_15: type = name_ref Bar, %Bar.decl [concrete = constants.%Bar] // CHECK:STDOUT: %ptr: type = ptr_type %Bar.ref.loc18_15 [concrete = constants.%ptr.f68] // CHECK:STDOUT: } -// CHECK:STDOUT: %bar: %ptr.f68 = bind_name bar, +// CHECK:STDOUT: %bar: %ptr.f68 = bind_name bar, [concrete = ] // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -801,7 +801,7 @@ fn MyF(bar: Cpp.Bar*); // CHECK:STDOUT: %Bar.ref.loc18: type = name_ref Bar, %Bar.decl [concrete = constants.%Bar] // CHECK:STDOUT: %ptr.loc18: type = ptr_type %Bar.ref.loc18 [concrete = constants.%ptr.f68] // CHECK:STDOUT: } -// CHECK:STDOUT: %foo_bar: %ptr.f68 = bind_name foo_bar, +// CHECK:STDOUT: %foo_bar: %ptr.f68 = bind_name foo_bar, [concrete = ] // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1019,7 +1019,7 @@ fn MyF(bar: Cpp.Bar*); // CHECK:STDOUT: %Bar.ref: = name_ref Bar, [concrete = ] // CHECK:STDOUT: %ptr: type = ptr_type [concrete = ] // CHECK:STDOUT: } -// CHECK:STDOUT: %bar: = bind_name bar, %bar.param +// CHECK:STDOUT: %bar: = bind_name bar, %bar.param [concrete = ] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1209,7 +1209,7 @@ fn MyF(bar: Cpp.Bar*); // CHECK:STDOUT: %Bar.ref: = name_ref Bar, [concrete = ] // CHECK:STDOUT: %ptr: type = ptr_type [concrete = ] // CHECK:STDOUT: } -// CHECK:STDOUT: %bar: = bind_name bar, %bar.param +// CHECK:STDOUT: %bar: = bind_name bar, %bar.param [concrete = ] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/interop/cpp/no_prelude/struct.carbon b/toolchain/check/testdata/interop/cpp/no_prelude/struct.carbon index 1c6f3d94875f..0c5c6943cbab 100644 --- a/toolchain/check/testdata/interop/cpp/no_prelude/struct.carbon +++ b/toolchain/check/testdata/interop/cpp/no_prelude/struct.carbon @@ -381,7 +381,7 @@ fn MyF(bar: Cpp.Bar*); // CHECK:STDOUT: %Bar.ref: = name_ref Bar, [concrete = ] // CHECK:STDOUT: %ptr: type = ptr_type [concrete = ] // CHECK:STDOUT: } -// CHECK:STDOUT: %bar: = bind_name bar, %bar.param +// CHECK:STDOUT: %bar: = bind_name bar, %bar.param [concrete = ] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -721,7 +721,7 @@ fn MyF(bar: Cpp.Bar*); // CHECK:STDOUT: %Bar.ref.loc18_15: type = name_ref Bar, %Bar.decl [concrete = constants.%Bar] // CHECK:STDOUT: %ptr: type = ptr_type %Bar.ref.loc18_15 [concrete = constants.%ptr.f68] // CHECK:STDOUT: } -// CHECK:STDOUT: %bar: %ptr.f68 = bind_name bar, +// CHECK:STDOUT: %bar: %ptr.f68 = bind_name bar, [concrete = ] // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -791,7 +791,7 @@ fn MyF(bar: Cpp.Bar*); // CHECK:STDOUT: %Bar.ref.loc18: type = name_ref Bar, %Bar.decl [concrete = constants.%Bar] // CHECK:STDOUT: %ptr.loc18: type = ptr_type %Bar.ref.loc18 [concrete = constants.%ptr.f68] // CHECK:STDOUT: } -// CHECK:STDOUT: %foo_bar: %ptr.f68 = bind_name foo_bar, +// CHECK:STDOUT: %foo_bar: %ptr.f68 = bind_name foo_bar, [concrete = ] // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1009,7 +1009,7 @@ fn MyF(bar: Cpp.Bar*); // CHECK:STDOUT: %Bar.ref: = name_ref Bar, [concrete = ] // CHECK:STDOUT: %ptr: type = ptr_type [concrete = ] // CHECK:STDOUT: } -// CHECK:STDOUT: %bar: = bind_name bar, %bar.param +// CHECK:STDOUT: %bar: = bind_name bar, %bar.param [concrete = ] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1199,7 +1199,7 @@ fn MyF(bar: Cpp.Bar*); // CHECK:STDOUT: %Bar.ref: = name_ref Bar, [concrete = ] // CHECK:STDOUT: %ptr: type = ptr_type [concrete = ] // CHECK:STDOUT: } -// CHECK:STDOUT: %bar: = bind_name bar, %bar.param +// CHECK:STDOUT: %bar: = bind_name bar, %bar.param [concrete = ] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/interop/cpp/no_prelude/union.carbon b/toolchain/check/testdata/interop/cpp/no_prelude/union.carbon index f97cdce3fec1..b38348a35048 100644 --- a/toolchain/check/testdata/interop/cpp/no_prelude/union.carbon +++ b/toolchain/check/testdata/interop/cpp/no_prelude/union.carbon @@ -286,7 +286,7 @@ fn MyF(bar: Cpp.Bar*); // CHECK:STDOUT: %Bar.ref: = name_ref Bar, [concrete = ] // CHECK:STDOUT: %ptr: type = ptr_type [concrete = ] // CHECK:STDOUT: } -// CHECK:STDOUT: %bar: = bind_name bar, %bar.param +// CHECK:STDOUT: %bar: = bind_name bar, %bar.param [concrete = ] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -626,7 +626,7 @@ fn MyF(bar: Cpp.Bar*); // CHECK:STDOUT: %Bar.ref.loc18_15: type = name_ref Bar, %Bar.decl [concrete = constants.%Bar] // CHECK:STDOUT: %ptr: type = ptr_type %Bar.ref.loc18_15 [concrete = constants.%ptr.f68] // CHECK:STDOUT: } -// CHECK:STDOUT: %bar: %ptr.f68 = bind_name bar, +// CHECK:STDOUT: %bar: %ptr.f68 = bind_name bar, [concrete = ] // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -696,7 +696,7 @@ fn MyF(bar: Cpp.Bar*); // CHECK:STDOUT: %Bar.ref.loc18: type = name_ref Bar, %Bar.decl [concrete = constants.%Bar] // CHECK:STDOUT: %ptr.loc18: type = ptr_type %Bar.ref.loc18 [concrete = constants.%ptr.f68] // CHECK:STDOUT: } -// CHECK:STDOUT: %foo_bar: %ptr.f68 = bind_name foo_bar, +// CHECK:STDOUT: %foo_bar: %ptr.f68 = bind_name foo_bar, [concrete = ] // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -808,7 +808,7 @@ fn MyF(bar: Cpp.Bar*); // CHECK:STDOUT: %Bar.ref: = name_ref Bar, [concrete = ] // CHECK:STDOUT: %ptr: type = ptr_type [concrete = ] // CHECK:STDOUT: } -// CHECK:STDOUT: %bar: = bind_name bar, %bar.param +// CHECK:STDOUT: %bar: = bind_name bar, %bar.param [concrete = ] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/let/fail_generic.carbon b/toolchain/check/testdata/let/fail_generic.carbon index 6371c4feaa19..337c7f904003 100644 --- a/toolchain/check/testdata/let/fail_generic.carbon +++ b/toolchain/check/testdata/let/fail_generic.carbon @@ -114,8 +114,8 @@ fn F(a: i32) -> i32 { // CHECK:STDOUT: %.loc24_14.1: %ImplicitAs.assoc_type.ca0d85.2 = specific_constant imports.%Core.import_ref.492, @ImplicitAs(constants.%T) [symbolic = constants.%assoc0.9f5e6b.2] // CHECK:STDOUT: %Convert.ref: %ImplicitAs.assoc_type.ca0d85.2 = name_ref Convert, %.loc24_14.1 [symbolic = constants.%assoc0.9f5e6b.2] // CHECK:STDOUT: %.loc24_14.2: %T = converted %int_5, [concrete = ] -// CHECK:STDOUT: %x: %T = bind_name x, -// CHECK:STDOUT: %x.ref: %T = name_ref x, %x +// CHECK:STDOUT: %x: %T = bind_name x, [concrete = ] +// CHECK:STDOUT: %x.ref: %T = name_ref x, %x [concrete = ] // CHECK:STDOUT: %.loc32: %i32 = converted %x.ref, [concrete = ] // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/let/fail_generic_import.carbon b/toolchain/check/testdata/let/fail_generic_import.carbon index d9b96990df08..01bdbbc66744 100644 --- a/toolchain/check/testdata/let/fail_generic_import.carbon +++ b/toolchain/check/testdata/let/fail_generic_import.carbon @@ -97,7 +97,7 @@ let a: T = 0; // CHECK:STDOUT: %a.patt: = binding_pattern a [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %T.ref: type = name_ref T, imports.%Implicit.T -// CHECK:STDOUT: %a: = bind_name a, +// CHECK:STDOUT: %a: = bind_name a, [concrete = ] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { diff --git a/toolchain/check/testdata/let/fail_use_in_init.carbon b/toolchain/check/testdata/let/fail_use_in_init.carbon index 260bac9171b6..98a4e39fb6e0 100644 --- a/toolchain/check/testdata/let/fail_use_in_init.carbon +++ b/toolchain/check/testdata/let/fail_use_in_init.carbon @@ -59,7 +59,7 @@ fn F() { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %a: %i32 = bind_name a, +// CHECK:STDOUT: %a: %i32 = bind_name a, [concrete = ] // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/let/generic_import.carbon b/toolchain/check/testdata/let/generic_import.carbon index 71642f7b3631..1a0065c0e684 100644 --- a/toolchain/check/testdata/let/generic_import.carbon +++ b/toolchain/check/testdata/let/generic_import.carbon @@ -103,14 +103,14 @@ var b: T = *a; // CHECK:STDOUT: %T.ref.loc8: type = name_ref T, imports.%Implicit.T // CHECK:STDOUT: %ptr: type = ptr_type [concrete = ] // CHECK:STDOUT: } -// CHECK:STDOUT: %a: = bind_name a, +// CHECK:STDOUT: %a: = bind_name a, [concrete = ] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %b.patt: = binding_pattern b [concrete] // CHECK:STDOUT: %b.var_patt: = var_pattern %b.patt [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %b.var: ref = var %b.var_patt [concrete = ] // CHECK:STDOUT: %T.ref.loc13: type = name_ref T, imports.%Implicit.T -// CHECK:STDOUT: %b: = bind_name b, +// CHECK:STDOUT: %b: = bind_name b, [concrete = ] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { diff --git a/toolchain/check/testdata/let/no_prelude/import_access.carbon b/toolchain/check/testdata/let/no_prelude/import_access.carbon index 93168fc62716..f2930fb81b29 100644 --- a/toolchain/check/testdata/let/no_prelude/import_access.carbon +++ b/toolchain/check/testdata/let/no_prelude/import_access.carbon @@ -139,7 +139,7 @@ let v2: () = Test.v; // CHECK:STDOUT: %.loc10_10.2: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc10_10.3: type = converted %.loc10_10.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %v2: %empty_tuple.type = bind_name v2, +// CHECK:STDOUT: %v2: %empty_tuple.type = bind_name v2, [concrete = ] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -175,7 +175,7 @@ let v2: () = Test.v; // CHECK:STDOUT: %.loc10_10.2: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc10_10.3: type = converted %.loc10_10.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %v2: %empty_tuple.type = bind_name v2, +// CHECK:STDOUT: %v2: %empty_tuple.type = bind_name v2, [concrete = ] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { diff --git a/toolchain/check/testdata/namespace/add_to_import.carbon b/toolchain/check/testdata/namespace/add_to_import.carbon index a73cab1f5a83..26bcdb340ff8 100644 --- a/toolchain/check/testdata/namespace/add_to_import.carbon +++ b/toolchain/check/testdata/namespace/add_to_import.carbon @@ -116,7 +116,7 @@ var a: i32 = NS.A(); // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %a: ref %i32 = bind_name a, %a.var +// CHECK:STDOUT: %a: ref %i32 = bind_name a, %a.var [concrete = %a.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @A() -> %i32 { diff --git a/toolchain/check/testdata/namespace/imported.carbon b/toolchain/check/testdata/namespace/imported.carbon index ba68ed1c6108..331a05fb761b 100644 --- a/toolchain/check/testdata/namespace/imported.carbon +++ b/toolchain/check/testdata/namespace/imported.carbon @@ -118,7 +118,7 @@ var package_b: () = package.NS.ChildNS.B(); // CHECK:STDOUT: %.loc4_9.2: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc4_9.3: type = converted %.loc4_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %a: ref %empty_tuple.type = bind_name a, %a.var +// CHECK:STDOUT: %a: ref %empty_tuple.type = bind_name a, %a.var [concrete = %a.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %b.patt: %pattern_type = binding_pattern b [concrete] // CHECK:STDOUT: %b.var_patt: %pattern_type = var_pattern %b.patt [concrete] @@ -128,7 +128,7 @@ var package_b: () = package.NS.ChildNS.B(); // CHECK:STDOUT: %.loc5_9.2: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc5_9.3: type = converted %.loc5_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %b: ref %empty_tuple.type = bind_name b, %b.var +// CHECK:STDOUT: %b: ref %empty_tuple.type = bind_name b, %b.var [concrete = %b.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %package_a.patt: %pattern_type = binding_pattern package_a [concrete] // CHECK:STDOUT: %package_a.var_patt: %pattern_type = var_pattern %package_a.patt [concrete] @@ -138,7 +138,7 @@ var package_b: () = package.NS.ChildNS.B(); // CHECK:STDOUT: %.loc7_17.2: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc7_17.3: type = converted %.loc7_17.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %package_a: ref %empty_tuple.type = bind_name package_a, %package_a.var +// CHECK:STDOUT: %package_a: ref %empty_tuple.type = bind_name package_a, %package_a.var [concrete = %package_a.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %package_b.patt: %pattern_type = binding_pattern package_b [concrete] // CHECK:STDOUT: %package_b.var_patt: %pattern_type = var_pattern %package_b.patt [concrete] @@ -148,7 +148,7 @@ var package_b: () = package.NS.ChildNS.B(); // CHECK:STDOUT: %.loc8_17.2: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc8_17.3: type = converted %.loc8_17.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %package_b: ref %empty_tuple.type = bind_name package_b, %package_b.var +// CHECK:STDOUT: %package_b: ref %empty_tuple.type = bind_name package_b, %package_b.var [concrete = %package_b.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @A [from "implicit.carbon"]; diff --git a/toolchain/check/testdata/namespace/imported_indirect.carbon b/toolchain/check/testdata/namespace/imported_indirect.carbon index 6605f4949549..3361177ed453 100644 --- a/toolchain/check/testdata/namespace/imported_indirect.carbon +++ b/toolchain/check/testdata/namespace/imported_indirect.carbon @@ -280,7 +280,7 @@ fn G() { Same.F(); } // CHECK:STDOUT: %.loc5_9.2: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc5_9.3: type = converted %.loc5_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %e: ref %empty_tuple.type = bind_name e, %e.var +// CHECK:STDOUT: %e: ref %empty_tuple.type = bind_name e, %e.var [concrete = %e.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @D [from "d.carbon"]; diff --git a/toolchain/check/testdata/operators/builtin/fail_and_or_partial_constant.carbon b/toolchain/check/testdata/operators/builtin/fail_and_or_partial_constant.carbon index 34d6c70df97d..f0c1a717decb 100644 --- a/toolchain/check/testdata/operators/builtin/fail_and_or_partial_constant.carbon +++ b/toolchain/check/testdata/operators/builtin/fail_and_or_partial_constant.carbon @@ -124,7 +124,7 @@ fn KnownValueButNonConstantCondition(x: bool) { // CHECK:STDOUT: br !.loc9_7 // CHECK:STDOUT: // CHECK:STDOUT: !.loc9_7: -// CHECK:STDOUT: %a: = bind_name a, +// CHECK:STDOUT: %a: = bind_name a, [concrete = ] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %b.patt: = binding_pattern b [concrete] // CHECK:STDOUT: %b.var_patt: = var_pattern %b.patt [concrete] @@ -162,7 +162,7 @@ fn KnownValueButNonConstantCondition(x: bool) { // CHECK:STDOUT: br !.loc14_7 // CHECK:STDOUT: // CHECK:STDOUT: !.loc14_7: -// CHECK:STDOUT: %b: = bind_name b, +// CHECK:STDOUT: %b: = bind_name b, [concrete = ] // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -246,7 +246,7 @@ fn KnownValueButNonConstantCondition(x: bool) { // CHECK:STDOUT: br !.loc11_7 // CHECK:STDOUT: // CHECK:STDOUT: !.loc11_7: -// CHECK:STDOUT: %c: = bind_name c, +// CHECK:STDOUT: %c: = bind_name c, [concrete = ] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %d.patt: = binding_pattern d [concrete] // CHECK:STDOUT: %d.var_patt: = var_pattern %d.patt [concrete] @@ -284,7 +284,7 @@ fn KnownValueButNonConstantCondition(x: bool) { // CHECK:STDOUT: br !.loc16_7 // CHECK:STDOUT: // CHECK:STDOUT: !.loc16_7: -// CHECK:STDOUT: %d: = bind_name d, +// CHECK:STDOUT: %d: = bind_name d, [concrete = ] // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/operators/overloaded/index.carbon b/toolchain/check/testdata/operators/overloaded/index.carbon index 22b974f62623..a10f73af8fa0 100644 --- a/toolchain/check/testdata/operators/overloaded/index.carbon +++ b/toolchain/check/testdata/operators/overloaded/index.carbon @@ -631,7 +631,7 @@ let x: i32 = c[0]; // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %x: %i32 = bind_name x, +// CHECK:STDOUT: %x: %i32 = bind_name x, [concrete = ] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { diff --git a/toolchain/check/testdata/package_expr/syntax.carbon b/toolchain/check/testdata/package_expr/syntax.carbon index 044cad8677fa..f7359997e9b7 100644 --- a/toolchain/check/testdata/package_expr/syntax.carbon +++ b/toolchain/check/testdata/package_expr/syntax.carbon @@ -97,7 +97,7 @@ fn Main() { // CHECK:STDOUT: %int_32.loc4: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc4: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %x: ref %i32 = bind_name x, %x.var +// CHECK:STDOUT: %x: ref %i32 = bind_name x, %x.var [concrete = %x.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %y.patt: %pattern_type.7ce = binding_pattern y [concrete] // CHECK:STDOUT: %y.var_patt: %pattern_type.7ce = var_pattern %y.patt [concrete] @@ -107,7 +107,7 @@ fn Main() { // CHECK:STDOUT: %int_32.loc5: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc5: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %y: ref %i32 = bind_name y, %y.var +// CHECK:STDOUT: %y: ref %i32 = bind_name y, %y.var [concrete = %y.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -121,7 +121,7 @@ fn Main() { // CHECK:STDOUT: %.loc4: init %i32 = converted %int_0, %int.convert_checked [concrete = constants.%int_0.6a9] // CHECK:STDOUT: assign file.%x.var, %.loc4 // CHECK:STDOUT: %package.ref: = name_ref package, package [concrete = package] -// CHECK:STDOUT: %x.ref: ref %i32 = name_ref x, file.%x +// CHECK:STDOUT: %x.ref: ref %i32 = name_ref x, file.%x [concrete = file.%x.var] // CHECK:STDOUT: %.loc5: %i32 = bind_value %x.ref // CHECK:STDOUT: assign file.%y.var, %.loc5 // CHECK:STDOUT: return @@ -189,7 +189,7 @@ fn Main() { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %x: ref %i32 = bind_name x, %x.var +// CHECK:STDOUT: %x: ref %i32 = bind_name x, %x.var [concrete = %x.var] // CHECK:STDOUT: %Main.decl: %Main.type = fn_decl @Main [concrete = constants.%Main] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: @@ -219,7 +219,7 @@ fn Main() { // CHECK:STDOUT: } // CHECK:STDOUT: %y.var: ref %i32 = var %y.var_patt // CHECK:STDOUT: %package.ref: = name_ref package, package [concrete = package] -// CHECK:STDOUT: %x.ref: ref %i32 = name_ref x, file.%x +// CHECK:STDOUT: %x.ref: ref %i32 = name_ref x, file.%x [concrete = file.%x.var] // CHECK:STDOUT: %.loc9_23: %i32 = bind_value %x.ref // CHECK:STDOUT: assign %y.var, %.loc9_23 // CHECK:STDOUT: %.loc9_10: type = splice_block %i32.loc9 [concrete = constants.%i32] { diff --git a/toolchain/check/testdata/packages/fail_conflict_no_namespaces.carbon b/toolchain/check/testdata/packages/fail_conflict_no_namespaces.carbon index 3b4bebb38267..319d4b8565e7 100644 --- a/toolchain/check/testdata/packages/fail_conflict_no_namespaces.carbon +++ b/toolchain/check/testdata/packages/fail_conflict_no_namespaces.carbon @@ -95,7 +95,7 @@ import library "var"; // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %Foo: ref %i32 = bind_name Foo, %Foo.var +// CHECK:STDOUT: %Foo: ref %i32 = bind_name Foo, %Foo.var [concrete = %Foo.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- fail_conflict.carbon diff --git a/toolchain/check/testdata/packages/fail_import_type_error.carbon b/toolchain/check/testdata/packages/fail_import_type_error.carbon index 6ac17475586f..39fbb44ea21a 100644 --- a/toolchain/check/testdata/packages/fail_import_type_error.carbon +++ b/toolchain/check/testdata/packages/fail_import_type_error.carbon @@ -69,7 +69,7 @@ var d: i32 = d_ref; // CHECK:STDOUT: } // CHECK:STDOUT: %a_ref.var: ref = var %a_ref.var_patt [concrete = ] // CHECK:STDOUT: %x.ref.loc8: = name_ref x, [concrete = ] -// CHECK:STDOUT: %a_ref: = bind_name a_ref, +// CHECK:STDOUT: %a_ref: = bind_name a_ref, [concrete = ] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %b_ref.patt: = binding_pattern b_ref [concrete] // CHECK:STDOUT: %b_ref.var_patt: = var_pattern %b_ref.patt [concrete] @@ -79,7 +79,7 @@ var d: i32 = d_ref; // CHECK:STDOUT: %x.ref.loc13: = name_ref x, [concrete = ] // CHECK:STDOUT: %.loc13: = struct_literal (%x.ref.loc13) // CHECK:STDOUT: } -// CHECK:STDOUT: %b_ref: = bind_name b_ref, +// CHECK:STDOUT: %b_ref: = bind_name b_ref, [concrete = ] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %c_ref.patt: = binding_pattern c_ref [concrete] // CHECK:STDOUT: %c_ref.var_patt: = var_pattern %c_ref.patt [concrete] @@ -89,7 +89,7 @@ var d: i32 = d_ref; // CHECK:STDOUT: %x.ref.loc18: = name_ref x, [concrete = ] // CHECK:STDOUT: %.loc18: = tuple_literal (%x.ref.loc18) // CHECK:STDOUT: } -// CHECK:STDOUT: %c_ref: = bind_name c_ref, +// CHECK:STDOUT: %c_ref: = bind_name c_ref, [concrete = ] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %d_ref.patt: = binding_pattern d_ref [concrete] // CHECK:STDOUT: %d_ref.var_patt: = var_pattern %d_ref.patt [concrete] @@ -99,7 +99,7 @@ var d: i32 = d_ref; // CHECK:STDOUT: %x.ref.loc23: = name_ref x, [concrete = ] // CHECK:STDOUT: %ptr: type = ptr_type [concrete = ] // CHECK:STDOUT: } -// CHECK:STDOUT: %d_ref: = bind_name d_ref, +// CHECK:STDOUT: %d_ref: = bind_name d_ref, [concrete = ] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- implicit.impl.carbon @@ -113,10 +113,10 @@ var d: i32 = d_ref; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %Implicit.a_ref: = import_ref Implicit//default, a_ref, loaded -// CHECK:STDOUT: %Implicit.b_ref: = import_ref Implicit//default, b_ref, loaded -// CHECK:STDOUT: %Implicit.c_ref: = import_ref Implicit//default, c_ref, loaded -// CHECK:STDOUT: %Implicit.d_ref: = import_ref Implicit//default, d_ref, loaded +// CHECK:STDOUT: %Implicit.a_ref: = import_ref Implicit//default, a_ref, loaded [concrete = ] +// CHECK:STDOUT: %Implicit.b_ref: = import_ref Implicit//default, b_ref, loaded [concrete = ] +// CHECK:STDOUT: %Implicit.c_ref: = import_ref Implicit//default, c_ref, loaded [concrete = ] +// CHECK:STDOUT: %Implicit.d_ref: = import_ref Implicit//default, d_ref, loaded [concrete = ] // CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { // CHECK:STDOUT: .Int = %Core.Int // CHECK:STDOUT: import Core//prelude @@ -149,7 +149,7 @@ var d: i32 = d_ref; // CHECK:STDOUT: %int_32.loc6: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc6: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %a: ref %i32 = bind_name a, %a.var +// CHECK:STDOUT: %a: ref %i32 = bind_name a, %a.var [concrete = %a.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %b.patt: %pattern_type.7ce = binding_pattern b [concrete] // CHECK:STDOUT: %b.var_patt: %pattern_type.7ce = var_pattern %b.patt [concrete] @@ -159,7 +159,7 @@ var d: i32 = d_ref; // CHECK:STDOUT: %int_32.loc7: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc7: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %b: ref %i32 = bind_name b, %b.var +// CHECK:STDOUT: %b: ref %i32 = bind_name b, %b.var [concrete = %b.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %c.patt: %pattern_type.7ce = binding_pattern c [concrete] // CHECK:STDOUT: %c.var_patt: %pattern_type.7ce = var_pattern %c.patt [concrete] @@ -169,7 +169,7 @@ var d: i32 = d_ref; // CHECK:STDOUT: %int_32.loc8: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc8: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %c: ref %i32 = bind_name c, %c.var +// CHECK:STDOUT: %c: ref %i32 = bind_name c, %c.var [concrete = %c.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %d.patt: %pattern_type.7ce = binding_pattern d [concrete] // CHECK:STDOUT: %d.var_patt: %pattern_type.7ce = var_pattern %d.patt [concrete] @@ -179,7 +179,7 @@ var d: i32 = d_ref; // CHECK:STDOUT: %int_32.loc9: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc9: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %d: ref %i32 = bind_name d, %d.var +// CHECK:STDOUT: %d: ref %i32 = bind_name d, %d.var [concrete = %d.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { diff --git a/toolchain/check/testdata/packages/fail_name_with_import_failure.carbon b/toolchain/check/testdata/packages/fail_name_with_import_failure.carbon index 0112e58cd117..e7e8a15a1ca7 100644 --- a/toolchain/check/testdata/packages/fail_name_with_import_failure.carbon +++ b/toolchain/check/testdata/packages/fail_name_with_import_failure.carbon @@ -50,7 +50,7 @@ var a: () = A(); // CHECK:STDOUT: %.loc8_9.2: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc8_9.3: type = converted %.loc8_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %a: ref %empty_tuple.type = bind_name a, %a.var +// CHECK:STDOUT: %a: ref %empty_tuple.type = bind_name a, %a.var [concrete = %a.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { diff --git a/toolchain/check/testdata/packages/implicit_imports_prelude.carbon b/toolchain/check/testdata/packages/implicit_imports_prelude.carbon index f9c6a5b956de..63bfa4269c78 100644 --- a/toolchain/check/testdata/packages/implicit_imports_prelude.carbon +++ b/toolchain/check/testdata/packages/implicit_imports_prelude.carbon @@ -77,7 +77,7 @@ var b: i32 = a; // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %a: ref %i32 = bind_name a, %a.var +// CHECK:STDOUT: %a: ref %i32 = bind_name a, %a.var [concrete = %a.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -104,13 +104,16 @@ var b: i32 = a; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %Main.a: ref %i32 = import_ref Main//lib, a, loaded +// CHECK:STDOUT: %Main.a: ref %i32 = import_ref Main//lib, a, loaded [concrete = %a.var] // CHECK:STDOUT: %Core.ece: = namespace file.%Core.import, [concrete] { // CHECK:STDOUT: .Int = %Core.Int // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/types/int, Int, loaded [concrete = constants.%Int.generic] +// CHECK:STDOUT: %a.patt: %pattern_type.501 = binding_pattern a [concrete] +// CHECK:STDOUT: %a.var_patt: %pattern_type.501 = var_pattern %a.patt [concrete] +// CHECK:STDOUT: %a.var: ref %i32 = var %a.var_patt [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -131,12 +134,12 @@ var b: i32 = a; // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %b: ref %i32 = bind_name b, %b.var +// CHECK:STDOUT: %b: ref %i32 = bind_name b, %b.var [concrete = %b.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %a.ref: ref %i32 = name_ref a, imports.%Main.a +// CHECK:STDOUT: %a.ref: ref %i32 = name_ref a, imports.%Main.a [concrete = imports.%a.var] // CHECK:STDOUT: %.loc4: %i32 = bind_value %a.ref // CHECK:STDOUT: assign file.%b.var, %.loc4 // CHECK:STDOUT: return diff --git a/toolchain/check/testdata/packages/loaded_global.carbon b/toolchain/check/testdata/packages/loaded_global.carbon index 101f6a54c6c9..4c251a142051 100644 --- a/toolchain/check/testdata/packages/loaded_global.carbon +++ b/toolchain/check/testdata/packages/loaded_global.carbon @@ -99,7 +99,7 @@ var package_b: () = package.B(); // CHECK:STDOUT: %.loc4_9.2: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc4_9.3: type = converted %.loc4_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %a: ref %empty_tuple.type = bind_name a, %a.var +// CHECK:STDOUT: %a: ref %empty_tuple.type = bind_name a, %a.var [concrete = %a.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %package_a.patt: %pattern_type = binding_pattern package_a [concrete] // CHECK:STDOUT: %package_a.var_patt: %pattern_type = var_pattern %package_a.patt [concrete] @@ -109,7 +109,7 @@ var package_b: () = package.B(); // CHECK:STDOUT: %.loc6_17.2: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc6_17.3: type = converted %.loc6_17.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %package_a: ref %empty_tuple.type = bind_name package_a, %package_a.var +// CHECK:STDOUT: %package_a: ref %empty_tuple.type = bind_name package_a, %package_a.var [concrete = %package_a.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @A [from "implicit.carbon"]; @@ -186,7 +186,7 @@ var package_b: () = package.B(); // CHECK:STDOUT: %.loc6_9.2: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc6_9.3: type = converted %.loc6_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %b: ref %empty_tuple.type = bind_name b, %b.var +// CHECK:STDOUT: %b: ref %empty_tuple.type = bind_name b, %b.var [concrete = %b.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %package_b.patt: %pattern_type = binding_pattern package_b [concrete] // CHECK:STDOUT: %package_b.var_patt: %pattern_type = var_pattern %package_b.patt [concrete] @@ -196,7 +196,7 @@ var package_b: () = package.B(); // CHECK:STDOUT: %.loc8_17.2: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc8_17.3: type = converted %.loc8_17.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %package_b: ref %empty_tuple.type = bind_name package_b, %package_b.var +// CHECK:STDOUT: %package_b: ref %empty_tuple.type = bind_name package_b, %package_b.var [concrete = %package_b.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @B [from "same_package.carbon"]; diff --git a/toolchain/check/testdata/packages/no_prelude/cross_package_export.carbon b/toolchain/check/testdata/packages/no_prelude/cross_package_export.carbon index 36427d68ae5f..d2bae9b5856e 100644 --- a/toolchain/check/testdata/packages/no_prelude/cross_package_export.carbon +++ b/toolchain/check/testdata/packages/no_prelude/cross_package_export.carbon @@ -416,7 +416,7 @@ alias C = Other.C; // CHECK:STDOUT: %Other.ref: = name_ref Other, imports.%Other [concrete = imports.%Other] // CHECK:STDOUT: %C.ref: type = name_ref C, imports.%Other.C [concrete = constants.%C] // CHECK:STDOUT: } -// CHECK:STDOUT: %c: ref %C = bind_name c, %c.var +// CHECK:STDOUT: %c: ref %C = bind_name c, %c.var [concrete = %c.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "base.carbon"] { @@ -481,7 +481,7 @@ alias C = Other.C; // CHECK:STDOUT: %Other.ref: = name_ref Other, imports.%Other [concrete = imports.%Other] // CHECK:STDOUT: %C.ref: type = name_ref C, imports.%Other.C [concrete = constants.%C] // CHECK:STDOUT: } -// CHECK:STDOUT: %c: ref %C = bind_name c, %c.var +// CHECK:STDOUT: %c: ref %C = bind_name c, %c.var [concrete = %c.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "base.carbon"] { @@ -546,7 +546,7 @@ alias C = Other.C; // CHECK:STDOUT: %Other.ref: = name_ref Other, imports.%Other [concrete = imports.%Other] // CHECK:STDOUT: %C.ref: type = name_ref C, imports.%Other.C [concrete = constants.%C] // CHECK:STDOUT: } -// CHECK:STDOUT: %c: ref %C = bind_name c, %c.var +// CHECK:STDOUT: %c: ref %C = bind_name c, %c.var [concrete = %c.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "base.carbon"] { @@ -609,7 +609,7 @@ alias C = Other.C; // CHECK:STDOUT: %Other.ref: = name_ref Other, imports.%Other [concrete = imports.%Other] // CHECK:STDOUT: %C.ref: type = name_ref C, imports.%Other.C [concrete = constants.%C] // CHECK:STDOUT: } -// CHECK:STDOUT: %c: ref %C = bind_name c, %c.var +// CHECK:STDOUT: %c: ref %C = bind_name c, %c.var [concrete = %c.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "export_name.carbon"] { @@ -673,7 +673,7 @@ alias C = Other.C; // CHECK:STDOUT: %Other.ref: = name_ref Other, imports.%Other [concrete = imports.%Other] // CHECK:STDOUT: %C.ref: type = name_ref C, imports.%Other.C [concrete = constants.%C] // CHECK:STDOUT: } -// CHECK:STDOUT: %c: ref %C = bind_name c, %c.var +// CHECK:STDOUT: %c: ref %C = bind_name c, %c.var [concrete = %c.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "export_name.carbon"] { @@ -736,7 +736,7 @@ alias C = Other.C; // CHECK:STDOUT: %Other.ref: = name_ref Other, imports.%Other [concrete = imports.%Other] // CHECK:STDOUT: %C.ref: type = name_ref C, imports.%Other.C [concrete = constants.%C] // CHECK:STDOUT: } -// CHECK:STDOUT: %c: ref %C = bind_name c, %c.var +// CHECK:STDOUT: %c: ref %C = bind_name c, %c.var [concrete = %c.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "export_name_indirect.carbon"] { @@ -805,7 +805,7 @@ alias C = Other.C; // CHECK:STDOUT: %Other.ref: = name_ref Other, imports.%Other [concrete = imports.%Other] // CHECK:STDOUT: %C.ref: type = name_ref C, imports.%Other.C [concrete = constants.%C] // CHECK:STDOUT: } -// CHECK:STDOUT: %c: ref %C = bind_name c, %c.var +// CHECK:STDOUT: %c: ref %C = bind_name c, %c.var [concrete = %c.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "export_name.carbon"] { diff --git a/toolchain/check/testdata/packages/no_prelude/export_import.carbon b/toolchain/check/testdata/packages/no_prelude/export_import.carbon index 276aeed66780..f1ae55780fee 100644 --- a/toolchain/check/testdata/packages/no_prelude/export_import.carbon +++ b/toolchain/check/testdata/packages/no_prelude/export_import.carbon @@ -319,7 +319,7 @@ export Poison; // CHECK:STDOUT: } // CHECK:STDOUT: %c.var: ref %C = var %c.var_patt [concrete] // CHECK:STDOUT: %C.ref: type = name_ref C, imports.%Main.C [concrete = constants.%C] -// CHECK:STDOUT: %c: ref %C = bind_name c, %c.var +// CHECK:STDOUT: %c: ref %C = bind_name c, %c.var [concrete = %c.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "base.carbon"] { @@ -378,7 +378,7 @@ export Poison; // CHECK:STDOUT: } // CHECK:STDOUT: %c.var: ref %C = var %c.var_patt [concrete] // CHECK:STDOUT: %C.ref: type = name_ref C, imports.%Main.C [concrete = constants.%C] -// CHECK:STDOUT: %c: ref %C = bind_name c, %c.var +// CHECK:STDOUT: %c: ref %C = bind_name c, %c.var [concrete = %c.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "base.carbon"] { @@ -434,7 +434,7 @@ export Poison; // CHECK:STDOUT: } // CHECK:STDOUT: %c.var: ref %C = var %c.var_patt [concrete] // CHECK:STDOUT: %C.ref: type = name_ref C, imports.%Main.C [concrete = constants.%C] -// CHECK:STDOUT: %c: ref %C = bind_name c, %c.var +// CHECK:STDOUT: %c: ref %C = bind_name c, %c.var [concrete = %c.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "base.carbon"] { @@ -490,7 +490,7 @@ export Poison; // CHECK:STDOUT: } // CHECK:STDOUT: %c.var: ref %C = var %c.var_patt [concrete] // CHECK:STDOUT: %C.ref: type = name_ref C, imports.%Main.C [concrete = constants.%C] -// CHECK:STDOUT: %c: ref %C = bind_name c, %c.var +// CHECK:STDOUT: %c: ref %C = bind_name c, %c.var [concrete = %c.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "base.carbon"] { @@ -546,7 +546,7 @@ export Poison; // CHECK:STDOUT: } // CHECK:STDOUT: %c.var: ref %C = var %c.var_patt [concrete] // CHECK:STDOUT: %C.ref: type = name_ref C, imports.%Main.C [concrete = constants.%C] -// CHECK:STDOUT: %c: ref %C = bind_name c, %c.var +// CHECK:STDOUT: %c: ref %C = bind_name c, %c.var [concrete = %c.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "base.carbon"] { @@ -602,7 +602,7 @@ export Poison; // CHECK:STDOUT: } // CHECK:STDOUT: %c.var: ref %C = var %c.var_patt [concrete] // CHECK:STDOUT: %C.ref: type = name_ref C, imports.%Main.C [concrete = constants.%C] -// CHECK:STDOUT: %c: ref %C = bind_name c, %c.var +// CHECK:STDOUT: %c: ref %C = bind_name c, %c.var [concrete = %c.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "base.carbon"] { @@ -658,7 +658,7 @@ export Poison; // CHECK:STDOUT: } // CHECK:STDOUT: %c.var: ref %C = var %c.var_patt [concrete] // CHECK:STDOUT: %C.ref: type = name_ref C, imports.%Main.C [concrete = constants.%C] -// CHECK:STDOUT: %c: ref %C = bind_name c, %c.var +// CHECK:STDOUT: %c: ref %C = bind_name c, %c.var [concrete = %c.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "base.carbon"] { @@ -714,7 +714,7 @@ export Poison; // CHECK:STDOUT: } // CHECK:STDOUT: %c.var: ref %C = var %c.var_patt [concrete] // CHECK:STDOUT: %C.ref: type = name_ref C, imports.%Main.C [concrete = constants.%C] -// CHECK:STDOUT: %c: ref %C = bind_name c, %c.var +// CHECK:STDOUT: %c: ref %C = bind_name c, %c.var [concrete = %c.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "base.carbon"] { @@ -782,7 +782,7 @@ export Poison; // CHECK:STDOUT: } // CHECK:STDOUT: %c.var: ref %C = var %c.var_patt [concrete] // CHECK:STDOUT: %C.ref: type = name_ref C, imports.%Main.C [concrete = constants.%C] -// CHECK:STDOUT: %c: ref %C = bind_name c, %c.var +// CHECK:STDOUT: %c: ref %C = bind_name c, %c.var [concrete = %c.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "base.carbon"] { @@ -840,7 +840,7 @@ export Poison; // CHECK:STDOUT: } // CHECK:STDOUT: %indirect_c.var: ref %C = var %indirect_c.var_patt [concrete] // CHECK:STDOUT: %C.ref: type = name_ref C, imports.%Main.C [concrete = constants.%C] -// CHECK:STDOUT: %indirect_c: ref %C = bind_name indirect_c, %indirect_c.var +// CHECK:STDOUT: %indirect_c: ref %C = bind_name indirect_c, %indirect_c.var [concrete = %indirect_c.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "base.carbon"] { diff --git a/toolchain/check/testdata/packages/no_prelude/export_mixed.carbon b/toolchain/check/testdata/packages/no_prelude/export_mixed.carbon index 02b49cff16d9..6cf494aa7e34 100644 --- a/toolchain/check/testdata/packages/no_prelude/export_mixed.carbon +++ b/toolchain/check/testdata/packages/no_prelude/export_mixed.carbon @@ -291,7 +291,7 @@ var d: D = {.y = ()}; // CHECK:STDOUT: } // CHECK:STDOUT: %c.var: ref %C = var %c.var_patt [concrete] // CHECK:STDOUT: %C.ref: type = name_ref C, imports.%Main.C [concrete = constants.%C] -// CHECK:STDOUT: %c: ref %C = bind_name c, %c.var +// CHECK:STDOUT: %c: ref %C = bind_name c, %c.var [concrete = %c.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "export_import_then_name.carbon"] { @@ -347,7 +347,7 @@ var d: D = {.y = ()}; // CHECK:STDOUT: } // CHECK:STDOUT: %c.var: ref %C = var %c.var_patt [concrete] // CHECK:STDOUT: %C.ref: type = name_ref C, imports.%Main.C [concrete = constants.%C] -// CHECK:STDOUT: %c: ref %C = bind_name c, %c.var +// CHECK:STDOUT: %c: ref %C = bind_name c, %c.var [concrete = %c.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "export_name.carbon"] { @@ -403,7 +403,7 @@ var d: D = {.y = ()}; // CHECK:STDOUT: } // CHECK:STDOUT: %c.var: ref %C = var %c.var_patt [concrete] // CHECK:STDOUT: %C.ref: type = name_ref C, imports.%Main.C [concrete = constants.%C] -// CHECK:STDOUT: %c: ref %C = bind_name c, %c.var +// CHECK:STDOUT: %c: ref %C = bind_name c, %c.var [concrete = %c.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "export_import_then_name.carbon"] { @@ -451,7 +451,7 @@ var d: D = {.y = ()}; // CHECK:STDOUT: } // CHECK:STDOUT: %d.var: ref = var %d.var_patt [concrete = ] // CHECK:STDOUT: %D.ref: = name_ref D, [concrete = ] -// CHECK:STDOUT: %d: = bind_name d, +// CHECK:STDOUT: %d: = bind_name d, [concrete = ] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -494,7 +494,7 @@ var d: D = {.y = ()}; // CHECK:STDOUT: } // CHECK:STDOUT: %c.var: ref %C = var %c.var_patt [concrete] // CHECK:STDOUT: %C.ref: type = name_ref C, imports.%Main.C [concrete = constants.%C] -// CHECK:STDOUT: %c: ref %C = bind_name c, %c.var +// CHECK:STDOUT: %c: ref %C = bind_name c, %c.var [concrete = %c.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "export_import_then_name.carbon"] { @@ -562,14 +562,14 @@ var d: D = {.y = ()}; // CHECK:STDOUT: } // CHECK:STDOUT: %c.var: ref %C = var %c.var_patt [concrete] // CHECK:STDOUT: %C.ref: type = name_ref C, imports.%Main.C [concrete = constants.%C] -// CHECK:STDOUT: %c: ref %C = bind_name c, %c.var +// CHECK:STDOUT: %c: ref %C = bind_name c, %c.var [concrete = %c.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %d.patt: %pattern_type.510 = binding_pattern d [concrete] // CHECK:STDOUT: %d.var_patt: %pattern_type.510 = var_pattern %d.patt [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %d.var: ref %D = var %d.var_patt [concrete] // CHECK:STDOUT: %D.ref: type = name_ref D, imports.%Main.D [concrete = constants.%D] -// CHECK:STDOUT: %d: ref %D = bind_name d, %d.var +// CHECK:STDOUT: %d: ref %D = bind_name d, %d.var [concrete = %d.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "export_import_then_name.carbon"] { diff --git a/toolchain/check/testdata/packages/no_prelude/export_name.carbon b/toolchain/check/testdata/packages/no_prelude/export_name.carbon index c6d9b9211e17..4acfccc8e960 100644 --- a/toolchain/check/testdata/packages/no_prelude/export_name.carbon +++ b/toolchain/check/testdata/packages/no_prelude/export_name.carbon @@ -432,7 +432,7 @@ private export C; // CHECK:STDOUT: } // CHECK:STDOUT: %c.var: ref %C = var %c.var_patt [concrete] // CHECK:STDOUT: %C.ref: type = name_ref C, imports.%Main.C [concrete = constants.%C] -// CHECK:STDOUT: %c: ref %C = bind_name c, %c.var +// CHECK:STDOUT: %c: ref %C = bind_name c, %c.var [concrete = %c.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %nsc.patt: %pattern_type.373 = binding_pattern nsc [concrete] // CHECK:STDOUT: %nsc.var_patt: %pattern_type.373 = var_pattern %nsc.patt [concrete] @@ -442,7 +442,7 @@ private export C; // CHECK:STDOUT: %NS.ref: = name_ref NS, imports.%NS [concrete = imports.%NS] // CHECK:STDOUT: %NSC.ref: type = name_ref NSC, imports.%Main.NSC [concrete = constants.%NSC] // CHECK:STDOUT: } -// CHECK:STDOUT: %nsc: ref %NSC = bind_name nsc, %nsc.var +// CHECK:STDOUT: %nsc: ref %NSC = bind_name nsc, %nsc.var [concrete = %nsc.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "export.carbon"] { @@ -531,7 +531,7 @@ private export C; // CHECK:STDOUT: } // CHECK:STDOUT: %c.var: ref %C = var %c.var_patt [concrete] // CHECK:STDOUT: %C.ref: type = name_ref C, imports.%Main.C [concrete = constants.%C] -// CHECK:STDOUT: %c: ref %C = bind_name c, %c.var +// CHECK:STDOUT: %c: ref %C = bind_name c, %c.var [concrete = %c.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %nsc.patt: %pattern_type.c0b = binding_pattern nsc [concrete] // CHECK:STDOUT: %nsc.var_patt: %pattern_type.c0b = var_pattern %nsc.patt [concrete] @@ -541,7 +541,7 @@ private export C; // CHECK:STDOUT: %NS.ref: = name_ref NS, imports.%NS [concrete = imports.%NS] // CHECK:STDOUT: %NSC.ref: type = name_ref NSC, imports.%Main.NSC [concrete = constants.%NSC] // CHECK:STDOUT: } -// CHECK:STDOUT: %nsc: ref %NSC = bind_name nsc, %nsc.var +// CHECK:STDOUT: %nsc: ref %NSC = bind_name nsc, %nsc.var [concrete = %nsc.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "export_export.carbon"] { @@ -629,7 +629,7 @@ private export C; // CHECK:STDOUT: } // CHECK:STDOUT: %c.var: ref %C = var %c.var_patt [concrete] // CHECK:STDOUT: %C.ref: type = name_ref C, imports.%Main.C [concrete = constants.%C] -// CHECK:STDOUT: %c: ref %C = bind_name c, %c.var +// CHECK:STDOUT: %c: ref %C = bind_name c, %c.var [concrete = %c.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %nsc.patt: %pattern_type.c0b = binding_pattern nsc [concrete] // CHECK:STDOUT: %nsc.var_patt: %pattern_type.c0b = var_pattern %nsc.patt [concrete] @@ -639,7 +639,7 @@ private export C; // CHECK:STDOUT: %NS.ref: = name_ref NS, imports.%NS [concrete = imports.%NS] // CHECK:STDOUT: %NSC.ref: type = name_ref NSC, imports.%Main.NSC [concrete = constants.%NSC] // CHECK:STDOUT: } -// CHECK:STDOUT: %nsc: ref %NSC = bind_name nsc, %nsc.var +// CHECK:STDOUT: %nsc: ref %NSC = bind_name nsc, %nsc.var [concrete = %nsc.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "export_export.carbon"] { @@ -807,7 +807,7 @@ private export C; // CHECK:STDOUT: } // CHECK:STDOUT: %c.var: ref %C = var %c.var_patt [concrete] // CHECK:STDOUT: %C.ref: type = name_ref C, imports.%Main.C [concrete = constants.%C] -// CHECK:STDOUT: %c: ref %C = bind_name c, %c.var +// CHECK:STDOUT: %c: ref %C = bind_name c, %c.var [concrete = %c.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %nsc.patt: %pattern_type.d03 = binding_pattern nsc [concrete] // CHECK:STDOUT: %nsc.var_patt: %pattern_type.d03 = var_pattern %nsc.patt [concrete] @@ -817,7 +817,7 @@ private export C; // CHECK:STDOUT: %NS.ref: = name_ref NS, imports.%NS [concrete = imports.%NS] // CHECK:STDOUT: %NSC.ref: type = name_ref NSC, imports.%Main.NSC [concrete = constants.%NSC] // CHECK:STDOUT: } -// CHECK:STDOUT: %nsc: ref %NSC = bind_name nsc, %nsc.var +// CHECK:STDOUT: %nsc: ref %NSC = bind_name nsc, %nsc.var [concrete = %nsc.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "base.carbon"] { @@ -905,7 +905,7 @@ private export C; // CHECK:STDOUT: } // CHECK:STDOUT: %c.var: ref %C = var %c.var_patt [concrete] // CHECK:STDOUT: %C.ref: type = name_ref C, imports.%Main.C [concrete = constants.%C] -// CHECK:STDOUT: %c: ref %C = bind_name c, %c.var +// CHECK:STDOUT: %c: ref %C = bind_name c, %c.var [concrete = %c.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %nsc.patt: %pattern_type.373 = binding_pattern nsc [concrete] // CHECK:STDOUT: %nsc.var_patt: %pattern_type.373 = var_pattern %nsc.patt [concrete] @@ -915,7 +915,7 @@ private export C; // CHECK:STDOUT: %NS.ref: = name_ref NS, imports.%NS [concrete = imports.%NS] // CHECK:STDOUT: %NSC.ref: type = name_ref NSC, imports.%Main.NSC [concrete = constants.%NSC] // CHECK:STDOUT: } -// CHECK:STDOUT: %nsc: ref %NSC = bind_name nsc, %nsc.var +// CHECK:STDOUT: %nsc: ref %NSC = bind_name nsc, %nsc.var [concrete = %nsc.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "export.carbon"] { @@ -1042,7 +1042,7 @@ private export C; // CHECK:STDOUT: } // CHECK:STDOUT: %c.var: ref %C = var %c.var_patt [concrete] // CHECK:STDOUT: %C.ref: type = name_ref C, imports.%Main.C [concrete = constants.%C] -// CHECK:STDOUT: %c: ref %C = bind_name c, %c.var +// CHECK:STDOUT: %c: ref %C = bind_name c, %c.var [concrete = %c.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "repeat_export.carbon"] { diff --git a/toolchain/check/testdata/packages/no_prelude/implicit_imports_entities.carbon b/toolchain/check/testdata/packages/no_prelude/implicit_imports_entities.carbon index 2d89c9a68961..ce3ac729bfa4 100644 --- a/toolchain/check/testdata/packages/no_prelude/implicit_imports_entities.carbon +++ b/toolchain/check/testdata/packages/no_prelude/implicit_imports_entities.carbon @@ -362,14 +362,14 @@ import Other library "o1"; // CHECK:STDOUT: } // CHECK:STDOUT: %c1.var: ref %C1 = var %c1.var_patt [concrete] // CHECK:STDOUT: %C1.ref: type = name_ref C1, imports.%Main.C1 [concrete = constants.%C1] -// CHECK:STDOUT: %c1: ref %C1 = bind_name c1, %c1.var +// CHECK:STDOUT: %c1: ref %C1 = bind_name c1, %c1.var [concrete = %c1.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %c2.patt: %pattern_type.838 = binding_pattern c2 [concrete] // CHECK:STDOUT: %c2.var_patt: %pattern_type.838 = var_pattern %c2.patt [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %c2.var: ref %C2 = var %c2.var_patt [concrete] // CHECK:STDOUT: %C2.ref: type = name_ref C2, imports.%Main.C2 [concrete = constants.%C2] -// CHECK:STDOUT: %c2: ref %C2 = bind_name c2, %c2.var +// CHECK:STDOUT: %c2: ref %C2 = bind_name c2, %c2.var [concrete = %c2.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C1 [from "c1.carbon"] { @@ -441,7 +441,7 @@ import Other library "o1"; // CHECK:STDOUT: } // CHECK:STDOUT: %c1.var: ref %C1 = var %c1.var_patt [concrete] // CHECK:STDOUT: %C1.ref: type = name_ref C1, imports.%Main.C1 [concrete = constants.%C1] -// CHECK:STDOUT: %c1: ref %C1 = bind_name c1, %c1.var +// CHECK:STDOUT: %c1: ref %C1 = bind_name c1, %c1.var [concrete = %c1.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C1 [from "c1.carbon"] { @@ -513,7 +513,7 @@ import Other library "o1"; // CHECK:STDOUT: %NS.ref: = name_ref NS, imports.%NS.528 [concrete = imports.%NS.528] // CHECK:STDOUT: %C.ref: type = name_ref C, imports.%Main.C [concrete = constants.%C] // CHECK:STDOUT: } -// CHECK:STDOUT: %c: ref %C = bind_name c, %c.var +// CHECK:STDOUT: %c: ref %C = bind_name c, %c.var [concrete = %c.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "ns.carbon"] { @@ -593,7 +593,7 @@ import Other library "o1"; // CHECK:STDOUT: %Other.ref.loc6: = name_ref Other, imports.%Other [concrete = imports.%Other] // CHECK:STDOUT: %O1.ref: type = name_ref O1, imports.%Other.O1 [concrete = constants.%O1] // CHECK:STDOUT: } -// CHECK:STDOUT: %o1: ref %O1 = bind_name o1, %o1.var +// CHECK:STDOUT: %o1: ref %O1 = bind_name o1, %o1.var [concrete = %o1.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %o2.patt: %pattern_type.7dd = binding_pattern o2 [concrete] // CHECK:STDOUT: %o2.var_patt: %pattern_type.7dd = var_pattern %o2.patt [concrete] @@ -603,7 +603,7 @@ import Other library "o1"; // CHECK:STDOUT: %Other.ref.loc7: = name_ref Other, imports.%Other [concrete = imports.%Other] // CHECK:STDOUT: %O2.ref: type = name_ref O2, imports.%Other.O2 [concrete = constants.%O2] // CHECK:STDOUT: } -// CHECK:STDOUT: %o2: ref %O2 = bind_name o2, %o2.var +// CHECK:STDOUT: %o2: ref %O2 = bind_name o2, %o2.var [concrete = %o2.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @O1 [from "o1.carbon"] { @@ -685,7 +685,7 @@ import Other library "o1"; // CHECK:STDOUT: %Other.ref: = name_ref Other, imports.%Other [concrete = imports.%Other] // CHECK:STDOUT: %O1.ref: type = name_ref O1, imports.%Other.O1 [concrete = constants.%O1] // CHECK:STDOUT: } -// CHECK:STDOUT: %o1: ref %O1 = bind_name o1, %o1.var +// CHECK:STDOUT: %o1: ref %O1 = bind_name o1, %o1.var [concrete = %o1.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @O1 [from "o1.carbon"] { diff --git a/toolchain/check/testdata/packages/no_prelude/missing_prelude.carbon b/toolchain/check/testdata/packages/no_prelude/missing_prelude.carbon index 4393674bbf33..8215a5538ac2 100644 --- a/toolchain/check/testdata/packages/no_prelude/missing_prelude.carbon +++ b/toolchain/check/testdata/packages/no_prelude/missing_prelude.carbon @@ -116,7 +116,7 @@ var n: {} = i32; // CHECK:STDOUT: } // CHECK:STDOUT: %n.var: ref = var %n.var_patt [concrete = ] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %n: = bind_name n, +// CHECK:STDOUT: %n: = bind_name n, [concrete = ] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- prelude_empty.carbon @@ -150,7 +150,7 @@ var n: {} = i32; // CHECK:STDOUT: } // CHECK:STDOUT: %n.var: ref = var %n.var_patt [concrete = ] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %n: = bind_name n, +// CHECK:STDOUT: %n: = bind_name n, [concrete = ] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- prelude_fake_int.carbon @@ -249,7 +249,7 @@ var n: {} = i32; // CHECK:STDOUT: %.loc6_9.2: %empty_struct_type = struct_literal () // CHECK:STDOUT: %.loc6_9.3: type = converted %.loc6_9.2, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: } -// CHECK:STDOUT: %n: ref %empty_struct_type = bind_name n, %n.var +// CHECK:STDOUT: %n: ref %empty_struct_type = bind_name n, %n.var [concrete = %n.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @Int(imports.%Core.import_ref.5ab: type, imports.%Core.import_ref.34c: @Int.%T (%T)) [from "prelude_fake_int.carbon"] { @@ -330,7 +330,7 @@ var n: {} = i32; // CHECK:STDOUT: %.loc10_9.2: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc10_9.3: type = converted %.loc10_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %n: ref %empty_tuple.type = bind_name n, %n.var +// CHECK:STDOUT: %n: ref %empty_tuple.type = bind_name n, %n.var [concrete = %n.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @Int(%T.loc8_8.1: type, %N.loc8_18.1: @Int.%T.loc8_8.2 (%T)) { diff --git a/toolchain/check/testdata/packages/raw_core.carbon b/toolchain/check/testdata/packages/raw_core.carbon index e178dc75e8c1..2ba317764cfb 100644 --- a/toolchain/check/testdata/packages/raw_core.carbon +++ b/toolchain/check/testdata/packages/raw_core.carbon @@ -247,7 +247,7 @@ var c: r#Core = {.n = 0 as Core.Int(32)}; // CHECK:STDOUT: } // CHECK:STDOUT: %c.var: ref %Core = var %c.var_patt [concrete] // CHECK:STDOUT: %Core.ref: type = name_ref r#Core, %Core.decl [concrete = constants.%Core] -// CHECK:STDOUT: %c: ref %Core = bind_name c, %c.var +// CHECK:STDOUT: %c: ref %Core = bind_name c, %c.var [concrete = %c.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Core { diff --git a/toolchain/check/testdata/pointer/fail_deref_error.carbon b/toolchain/check/testdata/pointer/fail_deref_error.carbon index 037b2e5dd440..e4923bc645bd 100644 --- a/toolchain/check/testdata/pointer/fail_deref_error.carbon +++ b/toolchain/check/testdata/pointer/fail_deref_error.carbon @@ -53,7 +53,7 @@ let n2: i32 = undeclared->foo; // CHECK:STDOUT: %int_32.loc15: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc15: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %n: %i32 = bind_name n, +// CHECK:STDOUT: %n: %i32 = bind_name n, [concrete = ] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %n2.patt: %pattern_type.7ce = binding_pattern n2 [concrete] // CHECK:STDOUT: } @@ -61,7 +61,7 @@ let n2: i32 = undeclared->foo; // CHECK:STDOUT: %int_32.loc20: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc20: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %n2: %i32 = bind_name n2, +// CHECK:STDOUT: %n2: %i32 = bind_name n2, [concrete = ] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { diff --git a/toolchain/check/testdata/pointer/fail_deref_type.carbon b/toolchain/check/testdata/pointer/fail_deref_type.carbon index ecbf543ce164..217775225688 100644 --- a/toolchain/check/testdata/pointer/fail_deref_type.carbon +++ b/toolchain/check/testdata/pointer/fail_deref_type.carbon @@ -57,7 +57,7 @@ var p2: i32->foo; // CHECK:STDOUT: %i32.loc18: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %.loc18: ref = deref %i32.loc18 [concrete = ] // CHECK:STDOUT: } -// CHECK:STDOUT: %p: = bind_name p, +// CHECK:STDOUT: %p: = bind_name p, [concrete = ] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %p2.patt: = binding_pattern p2 [concrete] // CHECK:STDOUT: %p2.var_patt: = var_pattern %p2.patt [concrete] @@ -69,6 +69,6 @@ var p2: i32->foo; // CHECK:STDOUT: %.loc23: ref = deref %i32.loc23 [concrete = ] // CHECK:STDOUT: %foo.ref: = name_ref foo, [concrete = ] // CHECK:STDOUT: } -// CHECK:STDOUT: %p2: = bind_name p2, +// CHECK:STDOUT: %p2: = bind_name p2, [concrete = ] // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/pointer/import.carbon b/toolchain/check/testdata/pointer/import.carbon index ba724c64ffda..42e0e697b69f 100644 --- a/toolchain/check/testdata/pointer/import.carbon +++ b/toolchain/check/testdata/pointer/import.carbon @@ -48,6 +48,7 @@ var a: i32* = a_ref; // CHECK:STDOUT: %int_0.6a9: %i32 = int_value 0 [concrete] // CHECK:STDOUT: %ptr.235: type = ptr_type %i32 [concrete] // CHECK:STDOUT: %pattern_type.fe8: type = pattern_type %ptr.235 [concrete] +// CHECK:STDOUT: %addr: %ptr.235 = addr_of file.%a_orig.var [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -79,7 +80,7 @@ var a: i32* = a_ref; // CHECK:STDOUT: %int_32.loc4: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc4: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %a_orig: ref %i32 = bind_name a_orig, %a_orig.var +// CHECK:STDOUT: %a_orig: ref %i32 = bind_name a_orig, %a_orig.var [concrete = %a_orig.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %a_ref.patt: %pattern_type.fe8 = binding_pattern a_ref [concrete] // CHECK:STDOUT: %a_ref.var_patt: %pattern_type.fe8 = var_pattern %a_ref.patt [concrete] @@ -90,7 +91,7 @@ var a: i32* = a_ref; // CHECK:STDOUT: %i32.loc5: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %ptr: type = ptr_type %i32.loc5 [concrete = constants.%ptr.235] // CHECK:STDOUT: } -// CHECK:STDOUT: %a_ref: ref %ptr.235 = bind_name a_ref, %a_ref.var +// CHECK:STDOUT: %a_ref: ref %ptr.235 = bind_name a_ref, %a_ref.var [concrete = %a_ref.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -103,8 +104,8 @@ var a: i32* = a_ref; // CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc4_1.2(%int_0) [concrete = constants.%int_0.6a9] // CHECK:STDOUT: %.loc4: init %i32 = converted %int_0, %int.convert_checked [concrete = constants.%int_0.6a9] // CHECK:STDOUT: assign file.%a_orig.var, %.loc4 -// CHECK:STDOUT: %a_orig.ref: ref %i32 = name_ref a_orig, file.%a_orig -// CHECK:STDOUT: %addr: %ptr.235 = addr_of %a_orig.ref +// CHECK:STDOUT: %a_orig.ref: ref %i32 = name_ref a_orig, file.%a_orig [concrete = file.%a_orig.var] +// CHECK:STDOUT: %addr: %ptr.235 = addr_of %a_orig.ref [concrete = constants.%addr] // CHECK:STDOUT: assign file.%a_ref.var, %addr // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -122,13 +123,16 @@ var a: i32* = a_ref; // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Implicit.a_orig = import_ref Implicit//default, a_orig, unloaded -// CHECK:STDOUT: %Implicit.a_ref: ref %ptr.9e1 = import_ref Implicit//default, a_ref, loaded +// CHECK:STDOUT: %Implicit.a_ref: ref %ptr.9e1 = import_ref Implicit//default, a_ref, loaded [concrete = %a_ref.var] // CHECK:STDOUT: %Core.ece: = namespace file.%Core.import, [concrete] { // CHECK:STDOUT: .Int = %Core.Int // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/types/int, Int, loaded [concrete = constants.%Int.generic] +// CHECK:STDOUT: %a_ref.patt: %pattern_type.f6a = binding_pattern a_ref [concrete] +// CHECK:STDOUT: %a_ref.var_patt: %pattern_type.f6a = var_pattern %a_ref.patt [concrete] +// CHECK:STDOUT: %a_ref.var: ref %ptr.9e1 = var %a_ref.var_patt [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -151,12 +155,12 @@ var a: i32* = a_ref; // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %ptr: type = ptr_type %i32 [concrete = constants.%ptr.9e1] // CHECK:STDOUT: } -// CHECK:STDOUT: %a: ref %ptr.9e1 = bind_name a, %a.var +// CHECK:STDOUT: %a: ref %ptr.9e1 = bind_name a, %a.var [concrete = %a.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %a_ref.ref: ref %ptr.9e1 = name_ref a_ref, imports.%Implicit.a_ref +// CHECK:STDOUT: %a_ref.ref: ref %ptr.9e1 = name_ref a_ref, imports.%Implicit.a_ref [concrete = imports.%a_ref.var] // CHECK:STDOUT: %.loc4: %ptr.9e1 = bind_value %a_ref.ref // CHECK:STDOUT: assign file.%a.var, %.loc4 // CHECK:STDOUT: return diff --git a/toolchain/check/testdata/return/fail_var_in_type.carbon b/toolchain/check/testdata/return/fail_var_in_type.carbon index 3ad3c041de79..d1e389c5f18c 100644 --- a/toolchain/check/testdata/return/fail_var_in_type.carbon +++ b/toolchain/check/testdata/return/fail_var_in_type.carbon @@ -49,12 +49,12 @@ fn Six() -> x { return 6; } // CHECK:STDOUT: %x.var_patt: %pattern_type.98f = var_pattern %x.patt [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %x.var: ref type = var %x.var_patt [concrete] -// CHECK:STDOUT: %x: ref type = bind_name x, %x.var +// CHECK:STDOUT: %x: ref type = bind_name x, %x.var [concrete = %x.var] // CHECK:STDOUT: %Six.decl: %Six.type = fn_decl @Six [concrete = constants.%Six] { // CHECK:STDOUT: %return.patt: = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %x.ref: ref type = name_ref x, file.%x +// CHECK:STDOUT: %x.ref: ref type = name_ref x, file.%x [concrete = file.%x.var] // CHECK:STDOUT: %.loc16: type = bind_value %x.ref // CHECK:STDOUT: %return.param: ref = out_param call_param0 // CHECK:STDOUT: %return: ref = return_slot %return.param diff --git a/toolchain/check/testdata/struct/fail_assign_empty.carbon b/toolchain/check/testdata/struct/fail_assign_empty.carbon index b677406ce9a3..163ec22f1661 100644 --- a/toolchain/check/testdata/struct/fail_assign_empty.carbon +++ b/toolchain/check/testdata/struct/fail_assign_empty.carbon @@ -51,7 +51,7 @@ var x: {.a: i32} = {}; // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %struct_type.a: type = struct_type {.a: %i32} [concrete = constants.%struct_type.a] // CHECK:STDOUT: } -// CHECK:STDOUT: %x: ref %struct_type.a = bind_name x, %x.var +// CHECK:STDOUT: %x: ref %struct_type.a = bind_name x, %x.var [concrete = %x.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { diff --git a/toolchain/check/testdata/struct/fail_assign_to_empty.carbon b/toolchain/check/testdata/struct/fail_assign_to_empty.carbon index ce7100b90698..bfe4c440fdd3 100644 --- a/toolchain/check/testdata/struct/fail_assign_to_empty.carbon +++ b/toolchain/check/testdata/struct/fail_assign_to_empty.carbon @@ -45,7 +45,7 @@ var x: {} = {.a = 1}; // CHECK:STDOUT: %.loc15_9.2: %empty_struct_type = struct_literal () // CHECK:STDOUT: %.loc15_9.3: type = converted %.loc15_9.2, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: } -// CHECK:STDOUT: %x: ref %empty_struct_type = bind_name x, %x.var +// CHECK:STDOUT: %x: ref %empty_struct_type = bind_name x, %x.var [concrete = %x.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { diff --git a/toolchain/check/testdata/struct/fail_duplicate_name.carbon b/toolchain/check/testdata/struct/fail_duplicate_name.carbon index 427698a57d01..7fe570aa1270 100644 --- a/toolchain/check/testdata/struct/fail_duplicate_name.carbon +++ b/toolchain/check/testdata/struct/fail_duplicate_name.carbon @@ -119,7 +119,7 @@ var y: {.b: i32, .c: i32} = {.b = 3, .b = 4}; // CHECK:STDOUT: %int_32.loc27_22: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc27_22: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %v: = bind_name v, +// CHECK:STDOUT: %v: = bind_name v, [concrete = ] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %w.patt: %pattern_type.7ce = binding_pattern w [concrete] // CHECK:STDOUT: } @@ -127,7 +127,7 @@ var y: {.b: i32, .c: i32} = {.b = 3, .b = 4}; // CHECK:STDOUT: %int_32.loc36: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc36: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %w: %i32 = bind_name w, +// CHECK:STDOUT: %w: %i32 = bind_name w, [concrete = ] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %x.patt: %pattern_type.268 = binding_pattern x [concrete] // CHECK:STDOUT: %x.var_patt: %pattern_type.268 = var_pattern %x.patt [concrete] @@ -138,7 +138,7 @@ var y: {.b: i32, .c: i32} = {.b = 3, .b = 4}; // CHECK:STDOUT: %i32.loc45: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %struct_type.a: type = struct_type {.a: %i32} [concrete = constants.%struct_type.a.ba9] // CHECK:STDOUT: } -// CHECK:STDOUT: %x: ref %struct_type.a.ba9 = bind_name x, %x.var +// CHECK:STDOUT: %x: ref %struct_type.a.ba9 = bind_name x, %x.var [concrete = %x.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %y.patt: %pattern_type.366 = binding_pattern y [concrete] // CHECK:STDOUT: %y.var_patt: %pattern_type.366 = var_pattern %y.patt [concrete] @@ -151,7 +151,7 @@ var y: {.b: i32, .c: i32} = {.b = 3, .b = 4}; // CHECK:STDOUT: %i32.loc54_22: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %struct_type.b.c: type = struct_type {.b: %i32, .c: %i32} [concrete = constants.%struct_type.b.c] // CHECK:STDOUT: } -// CHECK:STDOUT: %y: ref %struct_type.b.c = bind_name y, %y.var +// CHECK:STDOUT: %y: ref %struct_type.b.c = bind_name y, %y.var [concrete = %y.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F() -> ; diff --git a/toolchain/check/testdata/struct/fail_field_name_mismatch.carbon b/toolchain/check/testdata/struct/fail_field_name_mismatch.carbon index 8ea3fa4cee6b..5ef05e322749 100644 --- a/toolchain/check/testdata/struct/fail_field_name_mismatch.carbon +++ b/toolchain/check/testdata/struct/fail_field_name_mismatch.carbon @@ -61,7 +61,7 @@ var y: {.b: i32} = x; // CHECK:STDOUT: %i32.loc15: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %struct_type.a: type = struct_type {.a: %i32} [concrete = constants.%struct_type.a] // CHECK:STDOUT: } -// CHECK:STDOUT: %x: ref %struct_type.a = bind_name x, %x.var +// CHECK:STDOUT: %x: ref %struct_type.a = bind_name x, %x.var [concrete = %x.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %y.patt: %pattern_type.f4b = binding_pattern y [concrete] // CHECK:STDOUT: %y.var_patt: %pattern_type.f4b = var_pattern %y.patt [concrete] @@ -72,7 +72,7 @@ var y: {.b: i32} = x; // CHECK:STDOUT: %i32.loc21: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %struct_type.b: type = struct_type {.b: %i32} [concrete = constants.%struct_type.b.0a3] // CHECK:STDOUT: } -// CHECK:STDOUT: %y: ref %struct_type.b.0a3 = bind_name y, %y.var +// CHECK:STDOUT: %y: ref %struct_type.b.0a3 = bind_name y, %y.var [concrete = %y.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -80,7 +80,7 @@ var y: {.b: i32} = x; // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1] // CHECK:STDOUT: %.loc15: %struct_type.b.a15 = struct_literal (%int_1) // CHECK:STDOUT: assign file.%x.var, -// CHECK:STDOUT: %x.ref: ref %struct_type.a = name_ref x, file.%x +// CHECK:STDOUT: %x.ref: ref %struct_type.a = name_ref x, file.%x [concrete = file.%x.var] // CHECK:STDOUT: assign file.%y.var, // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/struct/fail_field_type_mismatch.carbon b/toolchain/check/testdata/struct/fail_field_type_mismatch.carbon index fe7f2281d1fa..bfe0e4e313ed 100644 --- a/toolchain/check/testdata/struct/fail_field_type_mismatch.carbon +++ b/toolchain/check/testdata/struct/fail_field_type_mismatch.carbon @@ -52,7 +52,7 @@ var x: {.a: i32} = {.b = 1.0}; // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %struct_type.a: type = struct_type {.a: %i32} [concrete = constants.%struct_type.a] // CHECK:STDOUT: } -// CHECK:STDOUT: %x: ref %struct_type.a = bind_name x, %x.var +// CHECK:STDOUT: %x: ref %struct_type.a = bind_name x, %x.var [concrete = %x.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { diff --git a/toolchain/check/testdata/struct/fail_member_access_type.carbon b/toolchain/check/testdata/struct/fail_member_access_type.carbon index 3810750c9510..9be8caa5e13b 100644 --- a/toolchain/check/testdata/struct/fail_member_access_type.carbon +++ b/toolchain/check/testdata/struct/fail_member_access_type.carbon @@ -62,7 +62,7 @@ var y: i32 = x.b; // CHECK:STDOUT: %.loc11_13.2: type = converted %float.make_type, %.loc11_13.1 [concrete = f64] // CHECK:STDOUT: %struct_type.a: type = struct_type {.a: f64} [concrete = constants.%struct_type.a] // CHECK:STDOUT: } -// CHECK:STDOUT: %x: ref %struct_type.a = bind_name x, %x.var +// CHECK:STDOUT: %x: ref %struct_type.a = bind_name x, %x.var [concrete = %x.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %y.patt: %pattern_type.7ce = binding_pattern y [concrete] // CHECK:STDOUT: %y.var_patt: %pattern_type.7ce = var_pattern %y.patt [concrete] @@ -72,7 +72,7 @@ var y: i32 = x.b; // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %y: ref %i32 = bind_name y, %y.var +// CHECK:STDOUT: %y: ref %i32 = bind_name y, %y.var [concrete = %y.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -82,7 +82,7 @@ var y: i32 = x.b; // CHECK:STDOUT: %.loc11_29.2: init %struct_type.a = struct_init (%float) to file.%x.var [concrete = constants.%struct] // CHECK:STDOUT: %.loc11_1: init %struct_type.a = converted %.loc11_29.1, %.loc11_29.2 [concrete = constants.%struct] // CHECK:STDOUT: assign file.%x.var, %.loc11_1 -// CHECK:STDOUT: %x.ref: ref %struct_type.a = name_ref x, file.%x +// CHECK:STDOUT: %x.ref: ref %struct_type.a = name_ref x, file.%x [concrete = file.%x.var] // CHECK:STDOUT: assign file.%y.var, // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/struct/fail_non_member_access.carbon b/toolchain/check/testdata/struct/fail_non_member_access.carbon index 3b3cd058056b..6e02b1a6330f 100644 --- a/toolchain/check/testdata/struct/fail_non_member_access.carbon +++ b/toolchain/check/testdata/struct/fail_non_member_access.carbon @@ -76,7 +76,7 @@ var y: i32 = x.b; // CHECK:STDOUT: %i32.loc11: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %struct_type.a: type = struct_type {.a: %i32} [concrete = constants.%struct_type.a.ba9] // CHECK:STDOUT: } -// CHECK:STDOUT: %x: ref %struct_type.a.ba9 = bind_name x, %x.var +// CHECK:STDOUT: %x: ref %struct_type.a.ba9 = bind_name x, %x.var [concrete = %x.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %y.patt: %pattern_type.7ce = binding_pattern y [concrete] // CHECK:STDOUT: %y.var_patt: %pattern_type.7ce = var_pattern %y.patt [concrete] @@ -86,7 +86,7 @@ var y: i32 = x.b; // CHECK:STDOUT: %int_32.loc16: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc16: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %y: ref %i32 = bind_name y, %y.var +// CHECK:STDOUT: %y: ref %i32 = bind_name y, %y.var [concrete = %y.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -102,7 +102,7 @@ var y: i32 = x.b; // CHECK:STDOUT: %.loc11_27.3: init %struct_type.a.ba9 = struct_init (%.loc11_27.2) to file.%x.var [concrete = constants.%struct] // CHECK:STDOUT: %.loc11_1: init %struct_type.a.ba9 = converted %.loc11_27.1, %.loc11_27.3 [concrete = constants.%struct] // CHECK:STDOUT: assign file.%x.var, %.loc11_1 -// CHECK:STDOUT: %x.ref: ref %struct_type.a.ba9 = name_ref x, file.%x +// CHECK:STDOUT: %x.ref: ref %struct_type.a.ba9 = name_ref x, file.%x [concrete = file.%x.var] // CHECK:STDOUT: assign file.%y.var, // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/struct/fail_too_few_values.carbon b/toolchain/check/testdata/struct/fail_too_few_values.carbon index 26f2b8fa6b02..e775258aea9f 100644 --- a/toolchain/check/testdata/struct/fail_too_few_values.carbon +++ b/toolchain/check/testdata/struct/fail_too_few_values.carbon @@ -54,7 +54,7 @@ var x: {.a: i32, .b: i32} = {.a = 1}; // CHECK:STDOUT: %i32.loc15_22: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %struct_type.a.b: type = struct_type {.a: %i32, .b: %i32} [concrete = constants.%struct_type.a.b] // CHECK:STDOUT: } -// CHECK:STDOUT: %x: ref %struct_type.a.b = bind_name x, %x.var +// CHECK:STDOUT: %x: ref %struct_type.a.b = bind_name x, %x.var [concrete = %x.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { diff --git a/toolchain/check/testdata/struct/fail_type_assign.carbon b/toolchain/check/testdata/struct/fail_type_assign.carbon index 94bc12a6d375..186885ec1f93 100644 --- a/toolchain/check/testdata/struct/fail_type_assign.carbon +++ b/toolchain/check/testdata/struct/fail_type_assign.carbon @@ -57,7 +57,7 @@ var x: {.a: i32} = {.a: i32}; // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %struct_type.a: type = struct_type {.a: %i32} [concrete = constants.%struct_type.a] // CHECK:STDOUT: } -// CHECK:STDOUT: %x: ref %struct_type.a = bind_name x, %x.var +// CHECK:STDOUT: %x: ref %struct_type.a = bind_name x, %x.var [concrete = %x.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { diff --git a/toolchain/check/testdata/struct/fail_value_as_type.carbon b/toolchain/check/testdata/struct/fail_value_as_type.carbon index d8b924113f26..724fd5102932 100644 --- a/toolchain/check/testdata/struct/fail_value_as_type.carbon +++ b/toolchain/check/testdata/struct/fail_value_as_type.carbon @@ -51,6 +51,6 @@ var x: {.a = 1}; // CHECK:STDOUT: %.loc18_15.1: %struct_type.a = struct_literal (%int_1) // CHECK:STDOUT: %.loc18_15.2: type = converted %.loc18_15.1, [concrete = ] // CHECK:STDOUT: } -// CHECK:STDOUT: %x: = bind_name x, +// CHECK:STDOUT: %x: = bind_name x, [concrete = ] // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/struct/import.carbon b/toolchain/check/testdata/struct/import.carbon index cf3ca5c1e071..0e12f03bf27a 100644 --- a/toolchain/check/testdata/struct/import.carbon +++ b/toolchain/check/testdata/struct/import.carbon @@ -151,7 +151,7 @@ var c_bad: C({.a = 3, .b = 4}) = F(); // CHECK:STDOUT: %i32.loc4: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %struct_type.a: type = struct_type {.a: %i32} [concrete = constants.%struct_type.a.ba9] // CHECK:STDOUT: } -// CHECK:STDOUT: %a_ref: ref %struct_type.a.ba9 = bind_name a_ref, %a_ref.var +// CHECK:STDOUT: %a_ref: ref %struct_type.a.ba9 = bind_name a_ref, %a_ref.var [concrete = %a_ref.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %b_ref.patt: %pattern_type.665 = binding_pattern b_ref [concrete] // CHECK:STDOUT: %b_ref.var_patt: %pattern_type.665 = var_pattern %b_ref.patt [concrete] @@ -169,7 +169,7 @@ var c_bad: C({.a = 3, .b = 4}) = F(); // CHECK:STDOUT: %i32.loc5_44: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %struct_type.a.d: type = struct_type {.a: %struct_type.b.c.929, .d: %i32} [concrete = constants.%struct_type.a.d.3d9] // CHECK:STDOUT: } -// CHECK:STDOUT: %b_ref: ref %struct_type.a.d.3d9 = bind_name b_ref, %b_ref.var +// CHECK:STDOUT: %b_ref: ref %struct_type.a.d.3d9 = bind_name b_ref, %b_ref.var [concrete = %b_ref.var] // CHECK:STDOUT: %C.decl: %C.type = class_decl @C [concrete = constants.%C.generic] { // CHECK:STDOUT: %S.patt: %pattern_type.851 = symbolic_binding_pattern S, 0 [concrete] // CHECK:STDOUT: } { @@ -305,14 +305,20 @@ var c_bad: C({.a = 3, .b = 4}) = F(); // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] // CHECK:STDOUT: %struct_type.a: type = struct_type {.a: %i32} [concrete] // CHECK:STDOUT: %pattern_type.b54: type = pattern_type %struct_type.a [concrete] +// CHECK:STDOUT: %.c27: ref %i32 = struct_access imports.%a_ref.var, element0 [concrete] // CHECK:STDOUT: %tuple.type.85c: type = tuple_type (type) [concrete] // CHECK:STDOUT: %tuple.type.dd4: type = tuple_type (%i32) [concrete] // CHECK:STDOUT: %struct_type.b.c: type = struct_type {.b: %i32, .c: %tuple.type.dd4} [concrete] // CHECK:STDOUT: %struct_type.a.d.9db: type = struct_type {.a: %struct_type.b.c, .d: %i32} [concrete] // CHECK:STDOUT: %pattern_type.020: type = pattern_type %struct_type.a.d.9db [concrete] +// CHECK:STDOUT: %.769: ref %struct_type.b.c = struct_access imports.%b_ref.var, element0 [concrete] // CHECK:STDOUT: %.92c: ref %struct_type.b.c = struct_access file.%b.var, element0 [concrete] +// CHECK:STDOUT: %.d8a: ref %i32 = struct_access %.769, element0 [concrete] // CHECK:STDOUT: %.9dd: ref %i32 = struct_access %.92c, element0 [concrete] +// CHECK:STDOUT: %.e5f: ref %tuple.type.dd4 = struct_access %.769, element1 [concrete] // CHECK:STDOUT: %.bbf: ref %tuple.type.dd4 = struct_access %.92c, element1 [concrete] +// CHECK:STDOUT: %tuple.elem0.aa5: ref %i32 = tuple_access %.e5f, element0 [concrete] +// CHECK:STDOUT: %.dfe: ref %i32 = struct_access imports.%b_ref.var, element1 [concrete] // CHECK:STDOUT: %.607: ref %i32 = struct_access file.%b.var, element1 [concrete] // CHECK:STDOUT: %C.type: type = generic_class_type @C [concrete] // CHECK:STDOUT: %C.generic: %C.type = struct_value () [concrete] @@ -345,8 +351,8 @@ var c_bad: C({.a = 3, .b = 4}) = F(); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %Implicit.a_ref: ref %struct_type.a = import_ref Implicit//default, a_ref, loaded -// CHECK:STDOUT: %Implicit.b_ref: ref %struct_type.a.d.9db = import_ref Implicit//default, b_ref, loaded +// CHECK:STDOUT: %Implicit.a_ref: ref %struct_type.a = import_ref Implicit//default, a_ref, loaded [concrete = %a_ref.var] +// CHECK:STDOUT: %Implicit.b_ref: ref %struct_type.a.d.9db = import_ref Implicit//default, b_ref, loaded [concrete = %b_ref.var] // CHECK:STDOUT: %Implicit.C: %C.type = import_ref Implicit//default, C, loaded [concrete = constants.%C.generic] // CHECK:STDOUT: %Implicit.F: %F.type = import_ref Implicit//default, F, loaded [concrete = constants.%F] // CHECK:STDOUT: %Core.ece: = namespace file.%Core.import, [concrete] { @@ -358,6 +364,12 @@ var c_bad: C({.a = 3, .b = 4}) = F(); // CHECK:STDOUT: %Implicit.import_ref.773: @impl.a8d.%Convert.type (%Convert.type.9a6) = import_ref Implicit//default, inst117 [indirect], loaded [symbolic = @impl.a8d.%Convert (constants.%Convert.458)] // CHECK:STDOUT: %ImplicitAs.impl_witness_table.1ad = impl_witness_table (%Implicit.import_ref.773), @impl.a8d [concrete] // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/types/int, Int, loaded [concrete = constants.%Int.generic] +// CHECK:STDOUT: %a_ref.patt: %pattern_type.b54 = binding_pattern a_ref [concrete] +// CHECK:STDOUT: %a_ref.var_patt: %pattern_type.b54 = var_pattern %a_ref.patt [concrete] +// CHECK:STDOUT: %a_ref.var: ref %struct_type.a = var %a_ref.var_patt [concrete] +// CHECK:STDOUT: %b_ref.patt: %pattern_type.020 = binding_pattern b_ref [concrete] +// CHECK:STDOUT: %b_ref.var_patt: %pattern_type.020 = var_pattern %b_ref.patt [concrete] +// CHECK:STDOUT: %b_ref.var: ref %struct_type.a.d.9db = var %b_ref.var_patt [concrete] // CHECK:STDOUT: %Implicit.import_ref.c81: %struct_type.a.b.5ca = import_ref Implicit//default, loc8_9, loaded [symbolic = @C.%S (constants.%S)] // CHECK:STDOUT: %Implicit.import_ref.8f2: = import_ref Implicit//default, loc8_34, loaded [concrete = constants.%complete_type.357] // CHECK:STDOUT: %Implicit.import_ref.b8b = import_ref Implicit//default, inst1424 [no loc], unloaded @@ -388,7 +400,7 @@ var c_bad: C({.a = 3, .b = 4}) = F(); // CHECK:STDOUT: %i32.loc4: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %struct_type.a: type = struct_type {.a: %i32} [concrete = constants.%struct_type.a] // CHECK:STDOUT: } -// CHECK:STDOUT: %a: ref %struct_type.a = bind_name a, %a.var +// CHECK:STDOUT: %a: ref %struct_type.a = bind_name a, %a.var [concrete = %a.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %b.patt: %pattern_type.020 = binding_pattern b [concrete] // CHECK:STDOUT: %b.var_patt: %pattern_type.020 = var_pattern %b.patt [concrete] @@ -406,7 +418,7 @@ var c_bad: C({.a = 3, .b = 4}) = F(); // CHECK:STDOUT: %i32.loc5_40: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %struct_type.a.d: type = struct_type {.a: %struct_type.b.c, .d: %i32} [concrete = constants.%struct_type.a.d.9db] // CHECK:STDOUT: } -// CHECK:STDOUT: %b: ref %struct_type.a.d.9db = bind_name b, %b.var +// CHECK:STDOUT: %b: ref %struct_type.a.d.9db = bind_name b, %b.var [concrete = %b.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %c.patt: %pattern_type.a5a = binding_pattern c [concrete] // CHECK:STDOUT: %c.var_patt: %pattern_type.a5a = var_pattern %c.patt [concrete] @@ -435,7 +447,7 @@ var c_bad: C({.a = 3, .b = 4}) = F(); // CHECK:STDOUT: %.loc6_26.2: %struct_type.a.b.5ca = converted %.loc6_25.1, %struct [concrete = constants.%struct] // CHECK:STDOUT: %C: type = class_type @C, @C(constants.%struct) [concrete = constants.%C.a8a] // CHECK:STDOUT: } -// CHECK:STDOUT: %c: ref %C.a8a = bind_name c, %c.var +// CHECK:STDOUT: %c: ref %C.a8a = bind_name c, %c.var [concrete = %c.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic class @C(imports.%Implicit.import_ref.c81: %struct_type.a.b.5ca) [from "implicit.carbon"] { @@ -455,21 +467,21 @@ var c_bad: C({.a = 3, .b = 4}) = F(); // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %a_ref.ref: ref %struct_type.a = name_ref a_ref, imports.%Implicit.a_ref -// CHECK:STDOUT: %.loc4_20.1: ref %i32 = struct_access %a_ref.ref, element0 +// CHECK:STDOUT: %a_ref.ref: ref %struct_type.a = name_ref a_ref, imports.%Implicit.a_ref [concrete = imports.%a_ref.var] +// CHECK:STDOUT: %.loc4_20.1: ref %i32 = struct_access %a_ref.ref, element0 [concrete = constants.%.c27] // CHECK:STDOUT: %.loc4_20.2: %i32 = bind_value %.loc4_20.1 // CHECK:STDOUT: %.loc4_20.3: init %struct_type.a = struct_init (%.loc4_20.2) to file.%a.var // CHECK:STDOUT: %.loc4_1: init %struct_type.a = converted %a_ref.ref, %.loc4_20.3 // CHECK:STDOUT: assign file.%a.var, %.loc4_1 -// CHECK:STDOUT: %b_ref.ref: ref %struct_type.a.d.9db = name_ref b_ref, imports.%Implicit.b_ref -// CHECK:STDOUT: %.loc5_47.1: ref %struct_type.b.c = struct_access %b_ref.ref, element0 -// CHECK:STDOUT: %.loc5_47.2: ref %i32 = struct_access %.loc5_47.1, element0 +// CHECK:STDOUT: %b_ref.ref: ref %struct_type.a.d.9db = name_ref b_ref, imports.%Implicit.b_ref [concrete = imports.%b_ref.var] +// CHECK:STDOUT: %.loc5_47.1: ref %struct_type.b.c = struct_access %b_ref.ref, element0 [concrete = constants.%.769] +// CHECK:STDOUT: %.loc5_47.2: ref %i32 = struct_access %.loc5_47.1, element0 [concrete = constants.%.d8a] // CHECK:STDOUT: %.loc5_47.3: %i32 = bind_value %.loc5_47.2 // CHECK:STDOUT: %.loc5_47.4: ref %struct_type.b.c = struct_access file.%b.var, element0 [concrete = constants.%.92c] // CHECK:STDOUT: %.loc5_47.5: ref %i32 = struct_access %.loc5_47.4, element0 [concrete = constants.%.9dd] // CHECK:STDOUT: %.loc5_47.6: init %i32 = initialize_from %.loc5_47.3 to %.loc5_47.5 -// CHECK:STDOUT: %.loc5_47.7: ref %tuple.type.dd4 = struct_access %.loc5_47.1, element1 -// CHECK:STDOUT: %tuple.elem0: ref %i32 = tuple_access %.loc5_47.7, element0 +// CHECK:STDOUT: %.loc5_47.7: ref %tuple.type.dd4 = struct_access %.loc5_47.1, element1 [concrete = constants.%.e5f] +// CHECK:STDOUT: %tuple.elem0: ref %i32 = tuple_access %.loc5_47.7, element0 [concrete = constants.%tuple.elem0.aa5] // CHECK:STDOUT: %.loc5_47.8: %i32 = bind_value %tuple.elem0 // CHECK:STDOUT: %.loc5_47.9: ref %tuple.type.dd4 = struct_access %.loc5_47.4, element1 [concrete = constants.%.bbf] // CHECK:STDOUT: %.loc5_47.10: init %tuple.type.dd4 = tuple_init (%.loc5_47.8) to %.loc5_47.9 @@ -477,7 +489,7 @@ var c_bad: C({.a = 3, .b = 4}) = F(); // CHECK:STDOUT: %.loc5_47.12: init %tuple.type.dd4 = initialize_from %.loc5_47.11 to %.loc5_47.9 // CHECK:STDOUT: %.loc5_47.13: init %struct_type.b.c = struct_init (%.loc5_47.6, %.loc5_47.12) to %.loc5_47.4 // CHECK:STDOUT: %.loc5_47.14: init %struct_type.b.c = converted %.loc5_47.1, %.loc5_47.13 -// CHECK:STDOUT: %.loc5_47.15: ref %i32 = struct_access %b_ref.ref, element1 +// CHECK:STDOUT: %.loc5_47.15: ref %i32 = struct_access %b_ref.ref, element1 [concrete = constants.%.dfe] // CHECK:STDOUT: %.loc5_47.16: %i32 = bind_value %.loc5_47.15 // CHECK:STDOUT: %.loc5_47.17: ref %i32 = struct_access file.%b.var, element1 [concrete = constants.%.607] // CHECK:STDOUT: %.loc5_47.18: init %i32 = initialize_from %.loc5_47.16 to %.loc5_47.17 @@ -560,7 +572,7 @@ var c_bad: C({.a = 3, .b = 4}) = F(); // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] // CHECK:STDOUT: %.loc11: %struct_type.c.d = struct_literal (%int_1, %int_2) // CHECK:STDOUT: } -// CHECK:STDOUT: %c_bad: = bind_name c_bad, +// CHECK:STDOUT: %c_bad: = bind_name c_bad, [concrete = ] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic class @C(imports.%Implicit.import_ref.c81: %struct_type.a.b) [from "implicit.carbon"] { @@ -699,7 +711,7 @@ var c_bad: C({.a = 3, .b = 4}) = F(); // CHECK:STDOUT: %.loc10_30.2: %struct_type.a.b.5ca = converted %.loc10_29.1, %struct [concrete = constants.%struct.8e6] // CHECK:STDOUT: %C: type = class_type @C, @C(constants.%struct.8e6) [concrete = constants.%C.5a7] // CHECK:STDOUT: } -// CHECK:STDOUT: %c_bad: ref %C.5a7 = bind_name c_bad, %c_bad.var +// CHECK:STDOUT: %c_bad: ref %C.5a7 = bind_name c_bad, %c_bad.var [concrete = %c_bad.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic class @C(imports.%Implicit.import_ref.c81: %struct_type.a.b.5ca) [from "implicit.carbon"] { diff --git a/toolchain/check/testdata/struct/member_access.carbon b/toolchain/check/testdata/struct/member_access.carbon index 4c60f2a324be..9894389fb273 100644 --- a/toolchain/check/testdata/struct/member_access.carbon +++ b/toolchain/check/testdata/struct/member_access.carbon @@ -86,7 +86,7 @@ var z: i32 = y; // CHECK:STDOUT: %i32.loc11: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %struct_type.a.b: type = struct_type {.a: f64, .b: %i32} [concrete = constants.%struct_type.a.b.ddf] // CHECK:STDOUT: } -// CHECK:STDOUT: %x: ref %struct_type.a.b.ddf = bind_name x, %x.var +// CHECK:STDOUT: %x: ref %struct_type.a.b.ddf = bind_name x, %x.var [concrete = %x.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %y.patt: %pattern_type.7ce = binding_pattern y [concrete] // CHECK:STDOUT: %y.var_patt: %pattern_type.7ce = var_pattern %y.patt [concrete] @@ -96,7 +96,7 @@ var z: i32 = y; // CHECK:STDOUT: %int_32.loc12: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc12: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %y: ref %i32 = bind_name y, %y.var +// CHECK:STDOUT: %y: ref %i32 = bind_name y, %y.var [concrete = %y.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %z.patt: %pattern_type.7ce = binding_pattern z [concrete] // CHECK:STDOUT: %z.var_patt: %pattern_type.7ce = var_pattern %z.patt [concrete] @@ -106,7 +106,7 @@ var z: i32 = y; // CHECK:STDOUT: %int_32.loc13: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc13: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %z: ref %i32 = bind_name z, %z.var +// CHECK:STDOUT: %z: ref %i32 = bind_name z, %z.var [concrete = %z.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -127,11 +127,11 @@ var z: i32 = y; // CHECK:STDOUT: %.loc11_46.7: init %struct_type.a.b.ddf = struct_init (%.loc11_46.3, %.loc11_46.6) to file.%x.var [concrete = constants.%struct] // CHECK:STDOUT: %.loc11_1: init %struct_type.a.b.ddf = converted %.loc11_46.1, %.loc11_46.7 [concrete = constants.%struct] // CHECK:STDOUT: assign file.%x.var, %.loc11_1 -// CHECK:STDOUT: %x.ref: ref %struct_type.a.b.ddf = name_ref x, file.%x -// CHECK:STDOUT: %.loc12_15.1: ref %i32 = struct_access %x.ref, element1 +// CHECK:STDOUT: %x.ref: ref %struct_type.a.b.ddf = name_ref x, file.%x [concrete = file.%x.var] +// CHECK:STDOUT: %.loc12_15.1: ref %i32 = struct_access %x.ref, element1 [concrete = constants.%.865] // CHECK:STDOUT: %.loc12_15.2: %i32 = bind_value %.loc12_15.1 // CHECK:STDOUT: assign file.%y.var, %.loc12_15.2 -// CHECK:STDOUT: %y.ref: ref %i32 = name_ref y, file.%y +// CHECK:STDOUT: %y.ref: ref %i32 = name_ref y, file.%y [concrete = file.%y.var] // CHECK:STDOUT: %.loc13: %i32 = bind_value %y.ref // CHECK:STDOUT: assign file.%z.var, %.loc13 // CHECK:STDOUT: return diff --git a/toolchain/check/testdata/struct/no_prelude/empty.carbon b/toolchain/check/testdata/struct/no_prelude/empty.carbon index dba6edb0bea1..c7cba30aae38 100644 --- a/toolchain/check/testdata/struct/no_prelude/empty.carbon +++ b/toolchain/check/testdata/struct/no_prelude/empty.carbon @@ -33,7 +33,7 @@ var y: {} = x; // CHECK:STDOUT: %.loc11_9.2: %empty_struct_type = struct_literal () // CHECK:STDOUT: %.loc11_9.3: type = converted %.loc11_9.2, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: } -// CHECK:STDOUT: %x: ref %empty_struct_type = bind_name x, %x.var +// CHECK:STDOUT: %x: ref %empty_struct_type = bind_name x, %x.var [concrete = %x.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %y.patt: %pattern_type = binding_pattern y [concrete] // CHECK:STDOUT: %y.var_patt: %pattern_type = var_pattern %y.patt [concrete] @@ -43,7 +43,7 @@ var y: {} = x; // CHECK:STDOUT: %.loc12_9.2: %empty_struct_type = struct_literal () // CHECK:STDOUT: %.loc12_9.3: type = converted %.loc12_9.2, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: } -// CHECK:STDOUT: %y: ref %empty_struct_type = bind_name y, %y.var +// CHECK:STDOUT: %y: ref %empty_struct_type = bind_name y, %y.var [concrete = %y.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -52,7 +52,7 @@ var y: {} = x; // CHECK:STDOUT: %.loc11_14.2: init %empty_struct_type = struct_init () to file.%x.var [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc11_1: init %empty_struct_type = converted %.loc11_14.1, %.loc11_14.2 [concrete = constants.%empty_struct] // CHECK:STDOUT: assign file.%x.var, %.loc11_1 -// CHECK:STDOUT: %x.ref: ref %empty_struct_type = name_ref x, file.%x +// CHECK:STDOUT: %x.ref: ref %empty_struct_type = name_ref x, file.%x [concrete = file.%x.var] // CHECK:STDOUT: %.loc12_13: init %empty_struct_type = struct_init () to file.%y.var [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc12_1: init %empty_struct_type = converted %x.ref, %.loc12_13 [concrete = constants.%empty_struct] // CHECK:STDOUT: assign file.%y.var, %.loc12_1 diff --git a/toolchain/check/testdata/struct/no_prelude/fail_assign_nested.carbon b/toolchain/check/testdata/struct/no_prelude/fail_assign_nested.carbon index 7f9484181c56..1c71e027fad2 100644 --- a/toolchain/check/testdata/struct/no_prelude/fail_assign_nested.carbon +++ b/toolchain/check/testdata/struct/no_prelude/fail_assign_nested.carbon @@ -37,7 +37,7 @@ var x: {.a: {}} = {.b = {}}; // CHECK:STDOUT: %.loc15_14.2: type = converted %.loc15_14.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %struct_type.a: type = struct_type {.a: %empty_struct_type} [concrete = constants.%struct_type.a.225] // CHECK:STDOUT: } -// CHECK:STDOUT: %x: ref %struct_type.a.225 = bind_name x, %x.var +// CHECK:STDOUT: %x: ref %struct_type.a.225 = bind_name x, %x.var [concrete = %x.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { diff --git a/toolchain/check/testdata/struct/no_prelude/fail_nested_incomplete.carbon b/toolchain/check/testdata/struct/no_prelude/fail_nested_incomplete.carbon index 80c2257cb8d4..5e7a37b57c63 100644 --- a/toolchain/check/testdata/struct/no_prelude/fail_nested_incomplete.carbon +++ b/toolchain/check/testdata/struct/no_prelude/fail_nested_incomplete.carbon @@ -46,7 +46,7 @@ var p: Incomplete* = &s.a; // CHECK:STDOUT: %Incomplete.ref.loc20: type = name_ref Incomplete, %Incomplete.decl [concrete = constants.%Incomplete] // CHECK:STDOUT: %struct_type.a: type = struct_type {.a: %Incomplete} [concrete = constants.%struct_type.a] // CHECK:STDOUT: } -// CHECK:STDOUT: %s: = bind_name s, +// CHECK:STDOUT: %s: = bind_name s, [concrete = ] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %p.patt: %pattern_type = binding_pattern p [concrete] // CHECK:STDOUT: %p.var_patt: %pattern_type = var_pattern %p.patt [concrete] @@ -56,7 +56,7 @@ var p: Incomplete* = &s.a; // CHECK:STDOUT: %Incomplete.ref.loc22: type = name_ref Incomplete, %Incomplete.decl [concrete = constants.%Incomplete] // CHECK:STDOUT: %ptr: type = ptr_type %Incomplete.ref.loc22 [concrete = constants.%ptr] // CHECK:STDOUT: } -// CHECK:STDOUT: %p: ref %ptr = bind_name p, %p.var +// CHECK:STDOUT: %p: ref %ptr = bind_name p, %p.var [concrete = %p.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Incomplete; diff --git a/toolchain/check/testdata/struct/one_entry.carbon b/toolchain/check/testdata/struct/one_entry.carbon index ef14fb935a79..1b741eccf198 100644 --- a/toolchain/check/testdata/struct/one_entry.carbon +++ b/toolchain/check/testdata/struct/one_entry.carbon @@ -22,6 +22,7 @@ var y: {.a: i32} = x; // CHECK:STDOUT: %pattern_type.268: type = pattern_type %struct_type.a.ba9 [concrete] // CHECK:STDOUT: %int_4.0c1: Core.IntLiteral = int_value 4 [concrete] // CHECK:STDOUT: %struct_type.a.a6c: type = struct_type {.a: Core.IntLiteral} [concrete] +// CHECK:STDOUT: %.499: ref %i32 = struct_access file.%x.var, element0 [concrete] // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] @@ -71,7 +72,7 @@ var y: {.a: i32} = x; // CHECK:STDOUT: %i32.loc11: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %struct_type.a.loc11: type = struct_type {.a: %i32} [concrete = constants.%struct_type.a.ba9] // CHECK:STDOUT: } -// CHECK:STDOUT: %x: ref %struct_type.a.ba9 = bind_name x, %x.var +// CHECK:STDOUT: %x: ref %struct_type.a.ba9 = bind_name x, %x.var [concrete = %x.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %y.patt: %pattern_type.268 = binding_pattern y [concrete] // CHECK:STDOUT: %y.var_patt: %pattern_type.268 = var_pattern %y.patt [concrete] @@ -82,7 +83,7 @@ var y: {.a: i32} = x; // CHECK:STDOUT: %i32.loc12: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %struct_type.a.loc12: type = struct_type {.a: %i32} [concrete = constants.%struct_type.a.ba9] // CHECK:STDOUT: } -// CHECK:STDOUT: %y: ref %struct_type.a.ba9 = bind_name y, %y.var +// CHECK:STDOUT: %y: ref %struct_type.a.ba9 = bind_name y, %y.var [concrete = %y.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -98,8 +99,8 @@ var y: {.a: i32} = x; // CHECK:STDOUT: %.loc11_27.3: init %struct_type.a.ba9 = struct_init (%.loc11_27.2) to file.%x.var [concrete = constants.%struct] // CHECK:STDOUT: %.loc11_1: init %struct_type.a.ba9 = converted %.loc11_27.1, %.loc11_27.3 [concrete = constants.%struct] // CHECK:STDOUT: assign file.%x.var, %.loc11_1 -// CHECK:STDOUT: %x.ref: ref %struct_type.a.ba9 = name_ref x, file.%x -// CHECK:STDOUT: %.loc12_20.1: ref %i32 = struct_access %x.ref, element0 +// CHECK:STDOUT: %x.ref: ref %struct_type.a.ba9 = name_ref x, file.%x [concrete = file.%x.var] +// CHECK:STDOUT: %.loc12_20.1: ref %i32 = struct_access %x.ref, element0 [concrete = constants.%.499] // CHECK:STDOUT: %.loc12_20.2: %i32 = bind_value %.loc12_20.1 // CHECK:STDOUT: %.loc12_20.3: init %struct_type.a.ba9 = struct_init (%.loc12_20.2) to file.%y.var // CHECK:STDOUT: %.loc12_1: init %struct_type.a.ba9 = converted %x.ref, %.loc12_20.3 diff --git a/toolchain/check/testdata/struct/tuple_as_element.carbon b/toolchain/check/testdata/struct/tuple_as_element.carbon index e69423e5a419..42c04de1dc80 100644 --- a/toolchain/check/testdata/struct/tuple_as_element.carbon +++ b/toolchain/check/testdata/struct/tuple_as_element.carbon @@ -44,6 +44,7 @@ var y: {.a: i32, .b: (i32,)} = x; // CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] // CHECK:STDOUT: %.dd9: ref %tuple.type.a1c = struct_access file.%x.var, element1 [concrete] +// CHECK:STDOUT: %tuple.elem0.2a6: ref %i32 = tuple_access %.dd9, element0 [concrete] // CHECK:STDOUT: %Convert.bound.ef9: = bound_method %int_2.ecc, %Convert.956 [concrete] // CHECK:STDOUT: %bound_method.b92: = bound_method %int_2.ecc, %Convert.specific_fn [concrete] // CHECK:STDOUT: %int_2.ef8: %i32 = int_value 2 [concrete] @@ -87,7 +88,7 @@ var y: {.a: i32, .b: (i32,)} = x; // CHECK:STDOUT: %.loc11_27.2: type = converted %.loc11_27.1, constants.%tuple.type.a1c [concrete = constants.%tuple.type.a1c] // CHECK:STDOUT: %struct_type.a.b.loc11: type = struct_type {.a: %i32, .b: %tuple.type.a1c} [concrete = constants.%struct_type.a.b.3d5] // CHECK:STDOUT: } -// CHECK:STDOUT: %x: ref %struct_type.a.b.3d5 = bind_name x, %x.var +// CHECK:STDOUT: %x: ref %struct_type.a.b.3d5 = bind_name x, %x.var [concrete = %x.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %y.patt: %pattern_type.b4d = binding_pattern y [concrete] // CHECK:STDOUT: %y.var_patt: %pattern_type.b4d = var_pattern %y.patt [concrete] @@ -102,7 +103,7 @@ var y: {.a: i32, .b: (i32,)} = x; // CHECK:STDOUT: %.loc12_27.2: type = converted %.loc12_27.1, constants.%tuple.type.a1c [concrete = constants.%tuple.type.a1c] // CHECK:STDOUT: %struct_type.a.b.loc12: type = struct_type {.a: %i32, .b: %tuple.type.a1c} [concrete = constants.%struct_type.a.b.3d5] // CHECK:STDOUT: } -// CHECK:STDOUT: %y: ref %struct_type.a.b.3d5 = bind_name y, %y.var +// CHECK:STDOUT: %y: ref %struct_type.a.b.3d5 = bind_name y, %y.var [concrete = %y.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -132,13 +133,13 @@ var y: {.a: i32, .b: (i32,)} = x; // CHECK:STDOUT: %.loc11_50.8: init %struct_type.a.b.3d5 = struct_init (%.loc11_50.4, %.loc11_50.7) to file.%x.var [concrete = constants.%struct] // CHECK:STDOUT: %.loc11_1: init %struct_type.a.b.3d5 = converted %.loc11_50.1, %.loc11_50.8 [concrete = constants.%struct] // CHECK:STDOUT: assign file.%x.var, %.loc11_1 -// CHECK:STDOUT: %x.ref: ref %struct_type.a.b.3d5 = name_ref x, file.%x -// CHECK:STDOUT: %.loc12_32.1: ref %i32 = struct_access %x.ref, element0 +// CHECK:STDOUT: %x.ref: ref %struct_type.a.b.3d5 = name_ref x, file.%x [concrete = file.%x.var] +// CHECK:STDOUT: %.loc12_32.1: ref %i32 = struct_access %x.ref, element0 [concrete = constants.%.b14] // CHECK:STDOUT: %.loc12_32.2: %i32 = bind_value %.loc12_32.1 // CHECK:STDOUT: %.loc12_32.3: ref %i32 = struct_access file.%y.var, element0 [concrete = constants.%.f15] // CHECK:STDOUT: %.loc12_32.4: init %i32 = initialize_from %.loc12_32.2 to %.loc12_32.3 -// CHECK:STDOUT: %.loc12_32.5: ref %tuple.type.a1c = struct_access %x.ref, element1 -// CHECK:STDOUT: %tuple.elem0: ref %i32 = tuple_access %.loc12_32.5, element0 +// CHECK:STDOUT: %.loc12_32.5: ref %tuple.type.a1c = struct_access %x.ref, element1 [concrete = constants.%.dd9] +// CHECK:STDOUT: %tuple.elem0: ref %i32 = tuple_access %.loc12_32.5, element0 [concrete = constants.%tuple.elem0.2a6] // CHECK:STDOUT: %.loc12_32.6: %i32 = bind_value %tuple.elem0 // CHECK:STDOUT: %.loc12_32.7: ref %tuple.type.a1c = struct_access file.%y.var, element1 [concrete = constants.%.413] // CHECK:STDOUT: %.loc12_32.8: init %tuple.type.a1c = tuple_init (%.loc12_32.6) to %.loc12_32.7 diff --git a/toolchain/check/testdata/struct/two_entries.carbon b/toolchain/check/testdata/struct/two_entries.carbon index 81475de0f2f8..c7510585742d 100644 --- a/toolchain/check/testdata/struct/two_entries.carbon +++ b/toolchain/check/testdata/struct/two_entries.carbon @@ -124,7 +124,7 @@ var y: {.a: i32, .b: i32} = x; // CHECK:STDOUT: %i32.loc14_22: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %struct_type.a.b.loc14: type = struct_type {.a: %i32, .b: %i32} [concrete = constants.%struct_type.a.b.501] // CHECK:STDOUT: } -// CHECK:STDOUT: %x: ref %struct_type.a.b.501 = bind_name x, %x.var +// CHECK:STDOUT: %x: ref %struct_type.a.b.501 = bind_name x, %x.var [concrete = %x.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %y.patt: %pattern_type.851 = binding_pattern y [concrete] // CHECK:STDOUT: %y.var_patt: %pattern_type.851 = var_pattern %y.patt [concrete] @@ -137,7 +137,7 @@ var y: {.a: i32, .b: i32} = x; // CHECK:STDOUT: %i32.loc15_22: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %struct_type.a.b.loc15: type = struct_type {.a: %i32, .b: %i32} [concrete = constants.%struct_type.a.b.501] // CHECK:STDOUT: } -// CHECK:STDOUT: %y: ref %struct_type.a.b.501 = bind_name y, %y.var +// CHECK:STDOUT: %y: ref %struct_type.a.b.501 = bind_name y, %y.var [concrete = %y.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -168,12 +168,12 @@ var y: {.a: i32, .b: i32} = x; // CHECK:STDOUT: %.loc14_44.8: init %struct_type.a.b.501 = struct_init (%.loc14_44.4, %.loc14_44.7) to file.%x.var [concrete = constants.%struct] // CHECK:STDOUT: %.loc14_1: init %struct_type.a.b.501 = converted %.loc14_44.1, %.loc14_44.8 [concrete = constants.%struct] // CHECK:STDOUT: assign file.%x.var, %.loc14_1 -// CHECK:STDOUT: %x.ref: ref %struct_type.a.b.501 = name_ref x, file.%x -// CHECK:STDOUT: %.loc15_29.1: ref %i32 = struct_access %x.ref, element0 +// CHECK:STDOUT: %x.ref: ref %struct_type.a.b.501 = name_ref x, file.%x [concrete = file.%x.var] +// CHECK:STDOUT: %.loc15_29.1: ref %i32 = struct_access %x.ref, element0 [concrete = constants.%.22f] // CHECK:STDOUT: %.loc15_29.2: %i32 = bind_value %.loc15_29.1 // CHECK:STDOUT: %.loc15_29.3: ref %i32 = struct_access file.%y.var, element0 [concrete = constants.%.4ca] // CHECK:STDOUT: %.loc15_29.4: init %i32 = initialize_from %.loc15_29.2 to %.loc15_29.3 -// CHECK:STDOUT: %.loc15_29.5: ref %i32 = struct_access %x.ref, element1 +// CHECK:STDOUT: %.loc15_29.5: ref %i32 = struct_access %x.ref, element1 [concrete = constants.%.5fc] // CHECK:STDOUT: %.loc15_29.6: %i32 = bind_value %.loc15_29.5 // CHECK:STDOUT: %.loc15_29.7: ref %i32 = struct_access file.%y.var, element1 [concrete = constants.%.86e] // CHECK:STDOUT: %.loc15_29.8: init %i32 = initialize_from %.loc15_29.6 to %.loc15_29.7 diff --git a/toolchain/check/testdata/tuple/access/element_access.carbon b/toolchain/check/testdata/tuple/access/element_access.carbon index 5b4ca8297748..2e3956ddb81c 100644 --- a/toolchain/check/testdata/tuple/access/element_access.carbon +++ b/toolchain/check/testdata/tuple/access/element_access.carbon @@ -24,6 +24,7 @@ var c: i32 = b.0; // CHECK:STDOUT: %pattern_type.b74: type = pattern_type %tuple.type.a1c [concrete] // CHECK:STDOUT: %int_12.6a3: Core.IntLiteral = int_value 12 [concrete] // CHECK:STDOUT: %tuple.type.985: type = tuple_type (Core.IntLiteral) [concrete] +// CHECK:STDOUT: %tuple.elem0.f29: ref %i32 = tuple_access file.%a.var, element0 [concrete] // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] @@ -42,6 +43,7 @@ var c: i32 = b.0; // CHECK:STDOUT: %bound_method: = bound_method %int_12.6a3, %Convert.specific_fn [concrete] // CHECK:STDOUT: %int_12.1e1: %i32 = int_value 12 [concrete] // CHECK:STDOUT: %tuple: %tuple.type.a1c = tuple_value (%int_12.1e1) [concrete] +// CHECK:STDOUT: %tuple.elem0.4d5: ref %i32 = tuple_access file.%b.var, element0 [concrete] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -77,7 +79,7 @@ var c: i32 = b.0; // CHECK:STDOUT: %.loc11_13.2: %tuple.type.85c = tuple_literal (%i32.loc11) // CHECK:STDOUT: %.loc11_13.3: type = converted %.loc11_13.2, constants.%tuple.type.a1c [concrete = constants.%tuple.type.a1c] // CHECK:STDOUT: } -// CHECK:STDOUT: %a: ref %tuple.type.a1c = bind_name a, %a.var +// CHECK:STDOUT: %a: ref %tuple.type.a1c = bind_name a, %a.var [concrete = %a.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %b.patt: %pattern_type.b74 = binding_pattern b [concrete] // CHECK:STDOUT: %b.var_patt: %pattern_type.b74 = var_pattern %b.patt [concrete] @@ -89,7 +91,7 @@ var c: i32 = b.0; // CHECK:STDOUT: %.loc12_13.2: %tuple.type.85c = tuple_literal (%i32.loc12) // CHECK:STDOUT: %.loc12_13.3: type = converted %.loc12_13.2, constants.%tuple.type.a1c [concrete = constants.%tuple.type.a1c] // CHECK:STDOUT: } -// CHECK:STDOUT: %b: ref %tuple.type.a1c = bind_name b, %b.var +// CHECK:STDOUT: %b: ref %tuple.type.a1c = bind_name b, %b.var [concrete = %b.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %c.patt: %pattern_type.7ce = binding_pattern c [concrete] // CHECK:STDOUT: %c.var_patt: %pattern_type.7ce = var_pattern %c.patt [concrete] @@ -99,7 +101,7 @@ var c: i32 = b.0; // CHECK:STDOUT: %int_32.loc13: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc13: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %c: ref %i32 = bind_name c, %c.var +// CHECK:STDOUT: %c: ref %i32 = bind_name c, %c.var [concrete = %c.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -115,15 +117,15 @@ var c: i32 = b.0; // CHECK:STDOUT: %.loc11_21.3: init %tuple.type.a1c = tuple_init (%.loc11_21.2) to file.%a.var [concrete = constants.%tuple] // CHECK:STDOUT: %.loc11_1: init %tuple.type.a1c = converted %.loc11_21.1, %.loc11_21.3 [concrete = constants.%tuple] // CHECK:STDOUT: assign file.%a.var, %.loc11_1 -// CHECK:STDOUT: %a.ref: ref %tuple.type.a1c = name_ref a, file.%a -// CHECK:STDOUT: %tuple.elem0.loc12: ref %i32 = tuple_access %a.ref, element0 +// CHECK:STDOUT: %a.ref: ref %tuple.type.a1c = name_ref a, file.%a [concrete = file.%a.var] +// CHECK:STDOUT: %tuple.elem0.loc12: ref %i32 = tuple_access %a.ref, element0 [concrete = constants.%tuple.elem0.f29] // CHECK:STDOUT: %.loc12_17.1: %i32 = bind_value %tuple.elem0.loc12 // CHECK:STDOUT: %.loc12_17.2: init %tuple.type.a1c = tuple_init (%.loc12_17.1) to file.%b.var // CHECK:STDOUT: %.loc12_1: init %tuple.type.a1c = converted %a.ref, %.loc12_17.2 // CHECK:STDOUT: assign file.%b.var, %.loc12_1 -// CHECK:STDOUT: %b.ref: ref %tuple.type.a1c = name_ref b, file.%b +// CHECK:STDOUT: %b.ref: ref %tuple.type.a1c = name_ref b, file.%b [concrete = file.%b.var] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0] -// CHECK:STDOUT: %tuple.elem0.loc13: ref %i32 = tuple_access %b.ref, element0 +// CHECK:STDOUT: %tuple.elem0.loc13: ref %i32 = tuple_access %b.ref, element0 [concrete = constants.%tuple.elem0.4d5] // CHECK:STDOUT: %.loc13: %i32 = bind_value %tuple.elem0.loc13 // CHECK:STDOUT: assign file.%c.var, %.loc13 // CHECK:STDOUT: return diff --git a/toolchain/check/testdata/tuple/access/fail_access_error.carbon b/toolchain/check/testdata/tuple/access/fail_access_error.carbon index 99e2d28160f8..af52ccf9b582 100644 --- a/toolchain/check/testdata/tuple/access/fail_access_error.carbon +++ b/toolchain/check/testdata/tuple/access/fail_access_error.carbon @@ -87,7 +87,7 @@ var b: i32 = a.(oops); // CHECK:STDOUT: %.loc11_17.2: %tuple.type.24b = tuple_literal (%i32.loc11_9, %i32.loc11_14) // CHECK:STDOUT: %.loc11_17.3: type = converted %.loc11_17.2, constants.%tuple.type.d07 [concrete = constants.%tuple.type.d07] // CHECK:STDOUT: } -// CHECK:STDOUT: %a: ref %tuple.type.d07 = bind_name a, %a.var +// CHECK:STDOUT: %a: ref %tuple.type.d07 = bind_name a, %a.var [concrete = %a.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %b.patt: %pattern_type.7ce = binding_pattern b [concrete] // CHECK:STDOUT: %b.var_patt: %pattern_type.7ce = var_pattern %b.patt [concrete] @@ -97,7 +97,7 @@ var b: i32 = a.(oops); // CHECK:STDOUT: %int_32.loc16: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc16: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %b: ref %i32 = bind_name b, %b.var +// CHECK:STDOUT: %b: ref %i32 = bind_name b, %b.var [concrete = %b.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -124,7 +124,7 @@ var b: i32 = a.(oops); // CHECK:STDOUT: %.loc11_27.6: init %tuple.type.d07 = tuple_init (%.loc11_27.3, %.loc11_27.5) to file.%a.var [concrete = constants.%tuple] // CHECK:STDOUT: %.loc11_1: init %tuple.type.d07 = converted %.loc11_27.1, %.loc11_27.6 [concrete = constants.%tuple] // CHECK:STDOUT: assign file.%a.var, %.loc11_1 -// CHECK:STDOUT: %a.ref: ref %tuple.type.d07 = name_ref a, file.%a +// CHECK:STDOUT: %a.ref: ref %tuple.type.d07 = name_ref a, file.%a [concrete = file.%a.var] // CHECK:STDOUT: %oops.ref: = name_ref oops, [concrete = ] // CHECK:STDOUT: assign file.%b.var, // CHECK:STDOUT: return diff --git a/toolchain/check/testdata/tuple/access/fail_large_index.carbon b/toolchain/check/testdata/tuple/access/fail_large_index.carbon index 0a2f7fea3e20..907ff8ee4505 100644 --- a/toolchain/check/testdata/tuple/access/fail_large_index.carbon +++ b/toolchain/check/testdata/tuple/access/fail_large_index.carbon @@ -33,6 +33,7 @@ var d: i32 = b.(0x7FFF_FFFF); // CHECK:STDOUT: %pattern_type.b74: type = pattern_type %tuple.type.a1c [concrete] // CHECK:STDOUT: %int_12.6a3: Core.IntLiteral = int_value 12 [concrete] // CHECK:STDOUT: %tuple.type.985: type = tuple_type (Core.IntLiteral) [concrete] +// CHECK:STDOUT: %tuple.elem0.f29: ref %i32 = tuple_access file.%a.var, element0 [concrete] // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] @@ -88,7 +89,7 @@ var d: i32 = b.(0x7FFF_FFFF); // CHECK:STDOUT: %.loc11_13.2: %tuple.type.85c = tuple_literal (%i32.loc11) // CHECK:STDOUT: %.loc11_13.3: type = converted %.loc11_13.2, constants.%tuple.type.a1c [concrete = constants.%tuple.type.a1c] // CHECK:STDOUT: } -// CHECK:STDOUT: %a: ref %tuple.type.a1c = bind_name a, %a.var +// CHECK:STDOUT: %a: ref %tuple.type.a1c = bind_name a, %a.var [concrete = %a.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %b.patt: %pattern_type.b74 = binding_pattern b [concrete] // CHECK:STDOUT: %b.var_patt: %pattern_type.b74 = var_pattern %b.patt [concrete] @@ -100,7 +101,7 @@ var d: i32 = b.(0x7FFF_FFFF); // CHECK:STDOUT: %.loc12_13.2: %tuple.type.85c = tuple_literal (%i32.loc12) // CHECK:STDOUT: %.loc12_13.3: type = converted %.loc12_13.2, constants.%tuple.type.a1c [concrete = constants.%tuple.type.a1c] // CHECK:STDOUT: } -// CHECK:STDOUT: %b: ref %tuple.type.a1c = bind_name b, %b.var +// CHECK:STDOUT: %b: ref %tuple.type.a1c = bind_name b, %b.var [concrete = %b.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %c.patt: %pattern_type.7ce = binding_pattern c [concrete] // CHECK:STDOUT: %c.var_patt: %pattern_type.7ce = var_pattern %c.patt [concrete] @@ -110,7 +111,7 @@ var d: i32 = b.(0x7FFF_FFFF); // CHECK:STDOUT: %int_32.loc17: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc17: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %c: ref %i32 = bind_name c, %c.var +// CHECK:STDOUT: %c: ref %i32 = bind_name c, %c.var [concrete = %c.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %d.patt: %pattern_type.7ce = binding_pattern d [concrete] // CHECK:STDOUT: %d.var_patt: %pattern_type.7ce = var_pattern %d.patt [concrete] @@ -120,7 +121,7 @@ var d: i32 = b.(0x7FFF_FFFF); // CHECK:STDOUT: %int_32.loc22: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc22: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %d: ref %i32 = bind_name d, %d.var +// CHECK:STDOUT: %d: ref %i32 = bind_name d, %d.var [concrete = %d.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -136,16 +137,16 @@ var d: i32 = b.(0x7FFF_FFFF); // CHECK:STDOUT: %.loc11_21.3: init %tuple.type.a1c = tuple_init (%.loc11_21.2) to file.%a.var [concrete = constants.%tuple] // CHECK:STDOUT: %.loc11_1: init %tuple.type.a1c = converted %.loc11_21.1, %.loc11_21.3 [concrete = constants.%tuple] // CHECK:STDOUT: assign file.%a.var, %.loc11_1 -// CHECK:STDOUT: %a.ref: ref %tuple.type.a1c = name_ref a, file.%a -// CHECK:STDOUT: %tuple.elem0: ref %i32 = tuple_access %a.ref, element0 +// CHECK:STDOUT: %a.ref: ref %tuple.type.a1c = name_ref a, file.%a [concrete = file.%a.var] +// CHECK:STDOUT: %tuple.elem0: ref %i32 = tuple_access %a.ref, element0 [concrete = constants.%tuple.elem0.f29] // CHECK:STDOUT: %.loc12_17.1: %i32 = bind_value %tuple.elem0 // CHECK:STDOUT: %.loc12_17.2: init %tuple.type.a1c = tuple_init (%.loc12_17.1) to file.%b.var // CHECK:STDOUT: %.loc12_1: init %tuple.type.a1c = converted %a.ref, %.loc12_17.2 // CHECK:STDOUT: assign file.%b.var, %.loc12_1 -// CHECK:STDOUT: %b.ref.loc17: ref %tuple.type.a1c = name_ref b, file.%b +// CHECK:STDOUT: %b.ref.loc17: ref %tuple.type.a1c = name_ref b, file.%b [concrete = file.%b.var] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1] // CHECK:STDOUT: assign file.%c.var, -// CHECK:STDOUT: %b.ref.loc22: ref %tuple.type.a1c = name_ref b, file.%b +// CHECK:STDOUT: %b.ref.loc22: ref %tuple.type.a1c = name_ref b, file.%b [concrete = file.%b.var] // CHECK:STDOUT: %int_2147483647: Core.IntLiteral = int_value 2147483647 [concrete = constants.%int_2147483647] // CHECK:STDOUT: assign file.%d.var, // CHECK:STDOUT: return diff --git a/toolchain/check/testdata/tuple/access/fail_negative_indexing.carbon b/toolchain/check/testdata/tuple/access/fail_negative_indexing.carbon index 71bb7ab67695..c8b806f37192 100644 --- a/toolchain/check/testdata/tuple/access/fail_negative_indexing.carbon +++ b/toolchain/check/testdata/tuple/access/fail_negative_indexing.carbon @@ -100,7 +100,7 @@ var b: i32 = a.(-10); // CHECK:STDOUT: %.loc11_17.2: %tuple.type.24b = tuple_literal (%i32.loc11_9, %i32.loc11_14) // CHECK:STDOUT: %.loc11_17.3: type = converted %.loc11_17.2, constants.%tuple.type.d07 [concrete = constants.%tuple.type.d07] // CHECK:STDOUT: } -// CHECK:STDOUT: %a: ref %tuple.type.d07 = bind_name a, %a.var +// CHECK:STDOUT: %a: ref %tuple.type.d07 = bind_name a, %a.var [concrete = %a.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %b.patt: %pattern_type.7ce = binding_pattern b [concrete] // CHECK:STDOUT: %b.var_patt: %pattern_type.7ce = var_pattern %b.patt [concrete] @@ -110,7 +110,7 @@ var b: i32 = a.(-10); // CHECK:STDOUT: %int_32.loc16: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc16: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %b: ref %i32 = bind_name b, %b.var +// CHECK:STDOUT: %b: ref %i32 = bind_name b, %b.var [concrete = %b.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -137,7 +137,7 @@ var b: i32 = a.(-10); // CHECK:STDOUT: %.loc11_27.6: init %tuple.type.d07 = tuple_init (%.loc11_27.3, %.loc11_27.5) to file.%a.var [concrete = constants.%tuple] // CHECK:STDOUT: %.loc11_1: init %tuple.type.d07 = converted %.loc11_27.1, %.loc11_27.6 [concrete = constants.%tuple] // CHECK:STDOUT: assign file.%a.var, %.loc11_1 -// CHECK:STDOUT: %a.ref: ref %tuple.type.d07 = name_ref a, file.%a +// CHECK:STDOUT: %a.ref: ref %tuple.type.d07 = name_ref a, file.%a [concrete = file.%a.var] // CHECK:STDOUT: %int_10: Core.IntLiteral = int_value 10 [concrete = constants.%int_10] // CHECK:STDOUT: %impl.elem0.loc16: %.63a = impl_witness_access constants.%Negate.impl_witness.561, element0 [concrete = constants.%Op.bba] // CHECK:STDOUT: %bound_method.loc16: = bound_method %int_10, %impl.elem0.loc16 [concrete = constants.%Op.bound] diff --git a/toolchain/check/testdata/tuple/access/fail_non_deterministic_type.carbon b/toolchain/check/testdata/tuple/access/fail_non_deterministic_type.carbon index 2a55641a34cb..48fe43ae0b4d 100644 --- a/toolchain/check/testdata/tuple/access/fail_non_deterministic_type.carbon +++ b/toolchain/check/testdata/tuple/access/fail_non_deterministic_type.carbon @@ -9,7 +9,7 @@ // TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/tuple/access/fail_non_deterministic_type.carbon var a: (i32, i32) = (2, 3); -var b: i32 = 0; +var b: Core.IntLiteral() = 0; // CHECK:STDERR: fail_non_deterministic_type.carbon:[[@LINE+4]]:14: error: tuple index must be a constant [TupleIndexNotConstant] // CHECK:STDERR: var c: i32 = a.(b); // CHECK:STDERR: ^~~~~ @@ -22,6 +22,7 @@ var c: i32 = a.(b); // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] // CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] +// CHECK:STDOUT: %pattern_type.dc0: type = pattern_type Core.IntLiteral [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] // CHECK:STDOUT: %tuple.type.24b: type = tuple_type (type, type) [concrete] // CHECK:STDOUT: %tuple.type.d07: type = tuple_type (%i32, %i32) [concrete] @@ -52,16 +53,16 @@ var c: i32 = a.(b); // CHECK:STDOUT: %bound_method.047: = bound_method %int_3.1ba, %Convert.specific_fn [concrete] // CHECK:STDOUT: %int_3.822: %i32 = int_value 3 [concrete] // CHECK:STDOUT: %tuple: %tuple.type.d07 = tuple_value (%int_2.ef8, %int_3.822) [concrete] -// CHECK:STDOUT: %int_0.5c6: Core.IntLiteral = int_value 0 [concrete] -// CHECK:STDOUT: %Convert.bound.d04: = bound_method %int_0.5c6, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.b6e: = bound_method %int_0.5c6, %Convert.specific_fn [concrete] -// CHECK:STDOUT: %int_0.6a9: %i32 = int_value 0 [concrete] +// CHECK:STDOUT: %IntLiteral.type: type = fn_type @IntLiteral [concrete] +// CHECK:STDOUT: %IntLiteral: %IntLiteral.type = struct_value () [concrete] +// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { // CHECK:STDOUT: .Int = %Core.Int // CHECK:STDOUT: .ImplicitAs = %Core.ImplicitAs +// CHECK:STDOUT: .IntLiteral = %Core.IntLiteral // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -69,6 +70,7 @@ var c: i32 = a.(b); // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/operators/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] // CHECK:STDOUT: %Core.import_ref.a5b: @impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/types/int, loc19_39, loaded [symbolic = @impl.4f9.%Convert (constants.%Convert.f06)] // CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @impl.4f9 [concrete] +// CHECK:STDOUT: %Core.IntLiteral: %IntLiteral.type = import_ref Core//prelude/types/int_literal, IntLiteral, loaded [concrete = constants.%IntLiteral] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -92,17 +94,20 @@ var c: i32 = a.(b); // CHECK:STDOUT: %.loc11_17.2: %tuple.type.24b = tuple_literal (%i32.loc11_9, %i32.loc11_14) // CHECK:STDOUT: %.loc11_17.3: type = converted %.loc11_17.2, constants.%tuple.type.d07 [concrete = constants.%tuple.type.d07] // CHECK:STDOUT: } -// CHECK:STDOUT: %a: ref %tuple.type.d07 = bind_name a, %a.var +// CHECK:STDOUT: %a: ref %tuple.type.d07 = bind_name a, %a.var [concrete = %a.var] // CHECK:STDOUT: name_binding_decl { -// CHECK:STDOUT: %b.patt: %pattern_type.7ce = binding_pattern b [concrete] -// CHECK:STDOUT: %b.var_patt: %pattern_type.7ce = var_pattern %b.patt [concrete] +// CHECK:STDOUT: %b.patt: %pattern_type.dc0 = binding_pattern b [concrete] +// CHECK:STDOUT: %b.var_patt: %pattern_type.dc0 = var_pattern %b.patt [concrete] // CHECK:STDOUT: } -// CHECK:STDOUT: %b.var: ref %i32 = var %b.var_patt [concrete] -// CHECK:STDOUT: %.loc12: type = splice_block %i32.loc12 [concrete = constants.%i32] { -// CHECK:STDOUT: %int_32.loc12: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %i32.loc12: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] +// CHECK:STDOUT: %b.var: ref Core.IntLiteral = var %b.var_patt [concrete] +// CHECK:STDOUT: %.loc12_24.1: type = splice_block %.loc12_24.3 [concrete = Core.IntLiteral] { +// CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [concrete = imports.%Core] +// CHECK:STDOUT: %IntLiteral.ref: %IntLiteral.type = name_ref IntLiteral, imports.%Core.IntLiteral [concrete = constants.%IntLiteral] +// CHECK:STDOUT: %int_literal.make_type: init type = call %IntLiteral.ref() [concrete = Core.IntLiteral] +// CHECK:STDOUT: %.loc12_24.2: type = value_of_initializer %int_literal.make_type [concrete = Core.IntLiteral] +// CHECK:STDOUT: %.loc12_24.3: type = converted %int_literal.make_type, %.loc12_24.2 [concrete = Core.IntLiteral] // CHECK:STDOUT: } -// CHECK:STDOUT: %b: ref %i32 = bind_name b, %b.var +// CHECK:STDOUT: %b: ref Core.IntLiteral = bind_name b, %b.var [concrete = %b.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %c.patt: %pattern_type.7ce = binding_pattern c [concrete] // CHECK:STDOUT: %c.var_patt: %pattern_type.7ce = var_pattern %c.patt [concrete] @@ -112,7 +117,7 @@ var c: i32 = a.(b); // CHECK:STDOUT: %int_32.loc17: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc17: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %c: ref %i32 = bind_name c, %c.var +// CHECK:STDOUT: %c: ref %i32 = bind_name c, %c.var [concrete = %c.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -139,16 +144,11 @@ var c: i32 = a.(b); // CHECK:STDOUT: %.loc11_26.6: init %tuple.type.d07 = tuple_init (%.loc11_26.3, %.loc11_26.5) to file.%a.var [concrete = constants.%tuple] // CHECK:STDOUT: %.loc11_1: init %tuple.type.d07 = converted %.loc11_26.1, %.loc11_26.6 [concrete = constants.%tuple] // CHECK:STDOUT: assign file.%a.var, %.loc11_1 -// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0.5c6] -// CHECK:STDOUT: %impl.elem0.loc12: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc12_1.1: = bound_method %int_0, %impl.elem0.loc12 [concrete = constants.%Convert.bound.d04] -// CHECK:STDOUT: %specific_fn.loc12: = specific_function %impl.elem0.loc12, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] -// CHECK:STDOUT: %bound_method.loc12_1.2: = bound_method %int_0, %specific_fn.loc12 [concrete = constants.%bound_method.b6e] -// CHECK:STDOUT: %int.convert_checked.loc12: init %i32 = call %bound_method.loc12_1.2(%int_0) [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: %.loc12: init %i32 = converted %int_0, %int.convert_checked.loc12 [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: assign file.%b.var, %.loc12 -// CHECK:STDOUT: %a.ref: ref %tuple.type.d07 = name_ref a, file.%a -// CHECK:STDOUT: %b.ref: ref %i32 = name_ref b, file.%b +// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0] +// CHECK:STDOUT: assign file.%b.var, %int_0 +// CHECK:STDOUT: %a.ref: ref %tuple.type.d07 = name_ref a, file.%a [concrete = file.%a.var] +// CHECK:STDOUT: %b.ref: ref Core.IntLiteral = name_ref b, file.%b [concrete = file.%b.var] +// CHECK:STDOUT: %.loc17: Core.IntLiteral = bind_value %b.ref // CHECK:STDOUT: assign file.%c.var, // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/tuple/access/fail_non_int_indexing.carbon b/toolchain/check/testdata/tuple/access/fail_non_int_indexing.carbon index aa1b412e44fc..73d01e271a08 100644 --- a/toolchain/check/testdata/tuple/access/fail_non_int_indexing.carbon +++ b/toolchain/check/testdata/tuple/access/fail_non_int_indexing.carbon @@ -90,7 +90,7 @@ var b: i32 = a.(2.6); // CHECK:STDOUT: %.loc11_17.2: %tuple.type.24b = tuple_literal (%i32.loc11_9, %i32.loc11_14) // CHECK:STDOUT: %.loc11_17.3: type = converted %.loc11_17.2, constants.%tuple.type.d07 [concrete = constants.%tuple.type.d07] // CHECK:STDOUT: } -// CHECK:STDOUT: %a: ref %tuple.type.d07 = bind_name a, %a.var +// CHECK:STDOUT: %a: ref %tuple.type.d07 = bind_name a, %a.var [concrete = %a.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %b.patt: %pattern_type.7ce = binding_pattern b [concrete] // CHECK:STDOUT: %b.var_patt: %pattern_type.7ce = var_pattern %b.patt [concrete] @@ -100,7 +100,7 @@ var b: i32 = a.(2.6); // CHECK:STDOUT: %int_32.loc19: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc19: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %b: ref %i32 = bind_name b, %b.var +// CHECK:STDOUT: %b: ref %i32 = bind_name b, %b.var [concrete = %b.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -127,7 +127,7 @@ var b: i32 = a.(2.6); // CHECK:STDOUT: %.loc11_27.6: init %tuple.type.d07 = tuple_init (%.loc11_27.3, %.loc11_27.5) to file.%a.var [concrete = constants.%tuple] // CHECK:STDOUT: %.loc11_1: init %tuple.type.d07 = converted %.loc11_27.1, %.loc11_27.6 [concrete = constants.%tuple] // CHECK:STDOUT: assign file.%a.var, %.loc11_1 -// CHECK:STDOUT: %a.ref: ref %tuple.type.d07 = name_ref a, file.%a +// CHECK:STDOUT: %a.ref: ref %tuple.type.d07 = name_ref a, file.%a [concrete = file.%a.var] // CHECK:STDOUT: %float: f64 = float_literal 2.6000000000000001 [concrete = constants.%float] // CHECK:STDOUT: %.loc19: Core.IntLiteral = converted %float, [concrete = ] // CHECK:STDOUT: assign file.%b.var, diff --git a/toolchain/check/testdata/tuple/access/fail_out_of_bound_access.carbon b/toolchain/check/testdata/tuple/access/fail_out_of_bound_access.carbon index 02eaec0a914c..76df23196d6a 100644 --- a/toolchain/check/testdata/tuple/access/fail_out_of_bound_access.carbon +++ b/toolchain/check/testdata/tuple/access/fail_out_of_bound_access.carbon @@ -87,7 +87,7 @@ var b: i32 = a.2; // CHECK:STDOUT: %.loc11_17.2: %tuple.type.24b = tuple_literal (%i32.loc11_9, %i32.loc11_14) // CHECK:STDOUT: %.loc11_17.3: type = converted %.loc11_17.2, constants.%tuple.type.d07 [concrete = constants.%tuple.type.d07] // CHECK:STDOUT: } -// CHECK:STDOUT: %a: ref %tuple.type.d07 = bind_name a, %a.var +// CHECK:STDOUT: %a: ref %tuple.type.d07 = bind_name a, %a.var [concrete = %a.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %b.patt: %pattern_type.7ce = binding_pattern b [concrete] // CHECK:STDOUT: %b.var_patt: %pattern_type.7ce = var_pattern %b.patt [concrete] @@ -97,7 +97,7 @@ var b: i32 = a.2; // CHECK:STDOUT: %int_32.loc16: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc16: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %b: ref %i32 = bind_name b, %b.var +// CHECK:STDOUT: %b: ref %i32 = bind_name b, %b.var [concrete = %b.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -124,7 +124,7 @@ var b: i32 = a.2; // CHECK:STDOUT: %.loc11_27.6: init %tuple.type.d07 = tuple_init (%.loc11_27.3, %.loc11_27.5) to file.%a.var [concrete = constants.%tuple] // CHECK:STDOUT: %.loc11_1: init %tuple.type.d07 = converted %.loc11_27.1, %.loc11_27.6 [concrete = constants.%tuple] // CHECK:STDOUT: assign file.%a.var, %.loc11_1 -// CHECK:STDOUT: %a.ref: ref %tuple.type.d07 = name_ref a, file.%a +// CHECK:STDOUT: %a.ref: ref %tuple.type.d07 = name_ref a, file.%a [concrete = file.%a.var] // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2] // CHECK:STDOUT: assign file.%b.var, // CHECK:STDOUT: return diff --git a/toolchain/check/testdata/tuple/access/fail_out_of_bound_not_literal.carbon b/toolchain/check/testdata/tuple/access/fail_out_of_bound_not_literal.carbon index 8355e7200604..12eeaa2ff698 100644 --- a/toolchain/check/testdata/tuple/access/fail_out_of_bound_not_literal.carbon +++ b/toolchain/check/testdata/tuple/access/fail_out_of_bound_not_literal.carbon @@ -89,7 +89,7 @@ var b: i32 = a.({.index = 2}.index); // CHECK:STDOUT: %.loc11_17.2: %tuple.type.24b = tuple_literal (%i32.loc11_9, %i32.loc11_14) // CHECK:STDOUT: %.loc11_17.3: type = converted %.loc11_17.2, constants.%tuple.type.d07 [concrete = constants.%tuple.type.d07] // CHECK:STDOUT: } -// CHECK:STDOUT: %a: ref %tuple.type.d07 = bind_name a, %a.var +// CHECK:STDOUT: %a: ref %tuple.type.d07 = bind_name a, %a.var [concrete = %a.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %b.patt: %pattern_type.7ce = binding_pattern b [concrete] // CHECK:STDOUT: %b.var_patt: %pattern_type.7ce = var_pattern %b.patt [concrete] @@ -99,7 +99,7 @@ var b: i32 = a.({.index = 2}.index); // CHECK:STDOUT: %int_32.loc16: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc16: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %b: ref %i32 = bind_name b, %b.var +// CHECK:STDOUT: %b: ref %i32 = bind_name b, %b.var [concrete = %b.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -126,7 +126,7 @@ var b: i32 = a.({.index = 2}.index); // CHECK:STDOUT: %.loc11_28.6: init %tuple.type.d07 = tuple_init (%.loc11_28.3, %.loc11_28.5) to file.%a.var [concrete = constants.%tuple] // CHECK:STDOUT: %.loc11_1: init %tuple.type.d07 = converted %.loc11_28.1, %.loc11_28.6 [concrete = constants.%tuple] // CHECK:STDOUT: assign file.%a.var, %.loc11_1 -// CHECK:STDOUT: %a.ref: ref %tuple.type.d07 = name_ref a, file.%a +// CHECK:STDOUT: %a.ref: ref %tuple.type.d07 = name_ref a, file.%a [concrete = file.%a.var] // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2] // CHECK:STDOUT: %.loc16_28.1: %struct_type.index = struct_literal (%int_2) // CHECK:STDOUT: %struct: %struct_type.index = struct_value (%int_2) [concrete = constants.%struct] diff --git a/toolchain/check/testdata/tuple/access/index_not_literal.carbon b/toolchain/check/testdata/tuple/access/index_not_literal.carbon index e04878b2d025..b03c5216a687 100644 --- a/toolchain/check/testdata/tuple/access/index_not_literal.carbon +++ b/toolchain/check/testdata/tuple/access/index_not_literal.carbon @@ -134,7 +134,7 @@ var d: i32 = a.({.index = 1 as i32}.index); // CHECK:STDOUT: %.loc11_18.4: type = converted %bool.make_type.loc11, %.loc11_18.3 [concrete = bool] // CHECK:STDOUT: %.loc11_18.5: type = converted %.loc11_18.2, constants.%tuple.type.261 [concrete = constants.%tuple.type.261] // CHECK:STDOUT: } -// CHECK:STDOUT: %a: ref %tuple.type.261 = bind_name a, %a.var +// CHECK:STDOUT: %a: ref %tuple.type.261 = bind_name a, %a.var [concrete = %a.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %b.patt: %pattern_type.7ce = binding_pattern b [concrete] // CHECK:STDOUT: %b.var_patt: %pattern_type.7ce = var_pattern %b.patt [concrete] @@ -144,7 +144,7 @@ var d: i32 = a.({.index = 1 as i32}.index); // CHECK:STDOUT: %int_32.loc12: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc12: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %b: ref %i32 = bind_name b, %b.var +// CHECK:STDOUT: %b: ref %i32 = bind_name b, %b.var [concrete = %b.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %c.patt: %pattern_type.831 = binding_pattern c [concrete] // CHECK:STDOUT: %c.var_patt: %pattern_type.831 = var_pattern %c.patt [concrete] @@ -155,7 +155,7 @@ var d: i32 = a.({.index = 1 as i32}.index); // CHECK:STDOUT: %.loc13_8.2: type = value_of_initializer %bool.make_type.loc13 [concrete = bool] // CHECK:STDOUT: %.loc13_8.3: type = converted %bool.make_type.loc13, %.loc13_8.2 [concrete = bool] // CHECK:STDOUT: } -// CHECK:STDOUT: %c: ref bool = bind_name c, %c.var +// CHECK:STDOUT: %c: ref bool = bind_name c, %c.var [concrete = %c.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %d.patt: %pattern_type.7ce = binding_pattern d [concrete] // CHECK:STDOUT: %d.var_patt: %pattern_type.7ce = var_pattern %d.patt [concrete] @@ -165,7 +165,7 @@ var d: i32 = a.({.index = 1 as i32}.index); // CHECK:STDOUT: %int_32.loc14: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc14: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %d: ref %i32 = bind_name d, %d.var +// CHECK:STDOUT: %d: ref %i32 = bind_name d, %d.var [concrete = %d.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -186,16 +186,16 @@ var d: i32 = a.({.index = 1 as i32}.index); // CHECK:STDOUT: %.loc11_31.5: init %tuple.type.261 = tuple_init (%.loc11_31.2, %.loc11_31.4) to file.%a.var [concrete = constants.%tuple] // CHECK:STDOUT: %.loc11_1: init %tuple.type.261 = converted %.loc11_31.1, %.loc11_31.5 [concrete = constants.%tuple] // CHECK:STDOUT: assign file.%a.var, %.loc11_1 -// CHECK:STDOUT: %a.ref.loc12: ref %tuple.type.261 = name_ref a, file.%a +// CHECK:STDOUT: %a.ref.loc12: ref %tuple.type.261 = name_ref a, file.%a [concrete = file.%a.var] // CHECK:STDOUT: %int_1.loc12: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %.loc12_28.1: %struct_type.index.b1b = struct_literal (%int_1.loc12) // CHECK:STDOUT: %struct.loc12: %struct_type.index.b1b = struct_value (%int_1.loc12) [concrete = constants.%struct.972] // CHECK:STDOUT: %.loc12_28.2: %struct_type.index.b1b = converted %.loc12_28.1, %struct.loc12 [concrete = constants.%struct.972] // CHECK:STDOUT: %.loc12_29: Core.IntLiteral = struct_access %.loc12_28.2, element0 [concrete = constants.%int_1.5b8] -// CHECK:STDOUT: %tuple.elem1.loc12: ref %i32 = tuple_access %a.ref.loc12, element1 +// CHECK:STDOUT: %tuple.elem1.loc12: ref %i32 = tuple_access %a.ref.loc12, element1 [concrete = constants.%tuple.elem1] // CHECK:STDOUT: %.loc12_15: %i32 = bind_value %tuple.elem1.loc12 // CHECK:STDOUT: assign file.%b.var, %.loc12_15 -// CHECK:STDOUT: %a.ref.loc13: ref %tuple.type.261 = name_ref a, file.%a +// CHECK:STDOUT: %a.ref.loc13: ref %tuple.type.261 = name_ref a, file.%a [concrete = file.%a.var] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0.5c6] // CHECK:STDOUT: %int_32.loc13: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc13: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] @@ -213,10 +213,10 @@ var d: i32 = a.({.index = 1 as i32}.index); // CHECK:STDOUT: %int.convert_checked.loc13_20.2: init Core.IntLiteral = call %bound_method.loc13_20.4(%.loc13_20.2) [concrete = constants.%int_0.5c6] // CHECK:STDOUT: %.loc13_20.3: Core.IntLiteral = value_of_initializer %int.convert_checked.loc13_20.2 [concrete = constants.%int_0.5c6] // CHECK:STDOUT: %.loc13_20.4: Core.IntLiteral = converted %.loc13_20.2, %.loc13_20.3 [concrete = constants.%int_0.5c6] -// CHECK:STDOUT: %tuple.elem0.loc13: ref bool = tuple_access %a.ref.loc13, element0 +// CHECK:STDOUT: %tuple.elem0.loc13: ref bool = tuple_access %a.ref.loc13, element0 [concrete = constants.%tuple.elem0] // CHECK:STDOUT: %.loc13_16: bool = bind_value %tuple.elem0.loc13 // CHECK:STDOUT: assign file.%c.var, %.loc13_16 -// CHECK:STDOUT: %a.ref.loc14: ref %tuple.type.261 = name_ref a, file.%a +// CHECK:STDOUT: %a.ref.loc14: ref %tuple.type.261 = name_ref a, file.%a [concrete = file.%a.var] // CHECK:STDOUT: %int_1.loc14: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %int_32.loc14: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc14: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] @@ -238,7 +238,7 @@ var d: i32 = a.({.index = 1 as i32}.index); // CHECK:STDOUT: %int.convert_checked.loc14_36: init Core.IntLiteral = call %bound_method.loc14_36.2(%.loc14_36.1) [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %.loc14_36.2: Core.IntLiteral = value_of_initializer %int.convert_checked.loc14_36 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %.loc14_36.3: Core.IntLiteral = converted %.loc14_36.1, %.loc14_36.2 [concrete = constants.%int_1.5b8] -// CHECK:STDOUT: %tuple.elem1.loc14: ref %i32 = tuple_access %a.ref.loc14, element1 +// CHECK:STDOUT: %tuple.elem1.loc14: ref %i32 = tuple_access %a.ref.loc14, element1 [concrete = constants.%tuple.elem1] // CHECK:STDOUT: %.loc14_15: %i32 = bind_value %tuple.elem1.loc14 // CHECK:STDOUT: assign file.%d.var, %.loc14_15 // CHECK:STDOUT: return diff --git a/toolchain/check/testdata/tuple/fail_assign_nested.carbon b/toolchain/check/testdata/tuple/fail_assign_nested.carbon index 5ecdec186829..a6dadfb0f135 100644 --- a/toolchain/check/testdata/tuple/fail_assign_nested.carbon +++ b/toolchain/check/testdata/tuple/fail_assign_nested.carbon @@ -72,7 +72,7 @@ var x: ((i32, i32), (i32, i32)) = ((1, 2, 3), (4, 5, 6)); // CHECK:STDOUT: %.loc15_31.4: type = converted %.loc15_30, constants.%tuple.type.d07 [concrete = constants.%tuple.type.d07] // CHECK:STDOUT: %.loc15_31.5: type = converted %.loc15_31.2, constants.%tuple.type.ff1 [concrete = constants.%tuple.type.ff1] // CHECK:STDOUT: } -// CHECK:STDOUT: %x: ref %tuple.type.ff1 = bind_name x, %x.var +// CHECK:STDOUT: %x: ref %tuple.type.ff1 = bind_name x, %x.var [concrete = %x.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { diff --git a/toolchain/check/testdata/tuple/fail_element_type_mismatch.carbon b/toolchain/check/testdata/tuple/fail_element_type_mismatch.carbon index 027417c3e18e..0381a40fe2b0 100644 --- a/toolchain/check/testdata/tuple/fail_element_type_mismatch.carbon +++ b/toolchain/check/testdata/tuple/fail_element_type_mismatch.carbon @@ -81,7 +81,7 @@ var x: (i32, i32) = (2, 65.89); // CHECK:STDOUT: %.loc18_17.2: %tuple.type.24b = tuple_literal (%i32.loc18_9, %i32.loc18_14) // CHECK:STDOUT: %.loc18_17.3: type = converted %.loc18_17.2, constants.%tuple.type.d07 [concrete = constants.%tuple.type.d07] // CHECK:STDOUT: } -// CHECK:STDOUT: %x: ref %tuple.type.d07 = bind_name x, %x.var +// CHECK:STDOUT: %x: ref %tuple.type.d07 = bind_name x, %x.var [concrete = %x.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { diff --git a/toolchain/check/testdata/tuple/fail_nested_incomplete.carbon b/toolchain/check/testdata/tuple/fail_nested_incomplete.carbon index 8a6ea87077be..5a97a7dc7993 100644 --- a/toolchain/check/testdata/tuple/fail_nested_incomplete.carbon +++ b/toolchain/check/testdata/tuple/fail_nested_incomplete.carbon @@ -66,7 +66,7 @@ var p: Incomplete* = &t[1]; // CHECK:STDOUT: %.loc20_24.2: %tuple.type.24b = tuple_literal (%i32, %Incomplete.ref.loc20) // CHECK:STDOUT: %.loc20_24.3: type = converted %.loc20_24.2, constants.%tuple.type.8a4 [concrete = constants.%tuple.type.8a4] // CHECK:STDOUT: } -// CHECK:STDOUT: %t: = bind_name t, +// CHECK:STDOUT: %t: = bind_name t, [concrete = ] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %p.patt: %pattern_type.275 = binding_pattern p [concrete] // CHECK:STDOUT: %p.var_patt: %pattern_type.275 = var_pattern %p.patt [concrete] @@ -76,7 +76,7 @@ var p: Incomplete* = &t[1]; // CHECK:STDOUT: %Incomplete.ref.loc22: type = name_ref Incomplete, %Incomplete.decl [concrete = constants.%Incomplete] // CHECK:STDOUT: %ptr: type = ptr_type %Incomplete.ref.loc22 [concrete = constants.%ptr] // CHECK:STDOUT: } -// CHECK:STDOUT: %p: ref %ptr = bind_name p, %p.var +// CHECK:STDOUT: %p: ref %ptr = bind_name p, %p.var [concrete = %p.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Incomplete; diff --git a/toolchain/check/testdata/tuple/fail_too_few_element.carbon b/toolchain/check/testdata/tuple/fail_too_few_element.carbon index 5814650bf56f..9e6d380e0460 100644 --- a/toolchain/check/testdata/tuple/fail_too_few_element.carbon +++ b/toolchain/check/testdata/tuple/fail_too_few_element.carbon @@ -56,7 +56,7 @@ var x: (i32, i32) = (2, ); // CHECK:STDOUT: %.loc15_17.2: %tuple.type.24b = tuple_literal (%i32.loc15_9, %i32.loc15_14) // CHECK:STDOUT: %.loc15_17.3: type = converted %.loc15_17.2, constants.%tuple.type.d07 [concrete = constants.%tuple.type.d07] // CHECK:STDOUT: } -// CHECK:STDOUT: %x: ref %tuple.type.d07 = bind_name x, %x.var +// CHECK:STDOUT: %x: ref %tuple.type.d07 = bind_name x, %x.var [concrete = %x.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { diff --git a/toolchain/check/testdata/tuple/fail_type_assign.carbon b/toolchain/check/testdata/tuple/fail_type_assign.carbon index 6ffaee7b0b35..6be7050eeaf1 100644 --- a/toolchain/check/testdata/tuple/fail_type_assign.carbon +++ b/toolchain/check/testdata/tuple/fail_type_assign.carbon @@ -59,7 +59,7 @@ var x: (i32, ) = (i32, ); // CHECK:STDOUT: %.loc18_14.2: %tuple.type.85c = tuple_literal (%i32) // CHECK:STDOUT: %.loc18_14.3: type = converted %.loc18_14.2, constants.%tuple.type.a1c [concrete = constants.%tuple.type.a1c] // CHECK:STDOUT: } -// CHECK:STDOUT: %x: ref %tuple.type.a1c = bind_name x, %x.var +// CHECK:STDOUT: %x: ref %tuple.type.a1c = bind_name x, %x.var [concrete = %x.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { diff --git a/toolchain/check/testdata/tuple/fail_value_as_type.carbon b/toolchain/check/testdata/tuple/fail_value_as_type.carbon index 414bdd30f6e8..e0d0b8d98343 100644 --- a/toolchain/check/testdata/tuple/fail_value_as_type.carbon +++ b/toolchain/check/testdata/tuple/fail_value_as_type.carbon @@ -51,6 +51,6 @@ var x: (1, ); // CHECK:STDOUT: %.loc18_12.1: %tuple.type = tuple_literal (%int_1) // CHECK:STDOUT: %.loc18_12.2: type = converted %int_1, [concrete = ] // CHECK:STDOUT: } -// CHECK:STDOUT: %x: = bind_name x, +// CHECK:STDOUT: %x: = bind_name x, [concrete = ] // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/tuple/import.carbon b/toolchain/check/testdata/tuple/import.carbon index 9b19f51764fe..969ef6e2a1c1 100644 --- a/toolchain/check/testdata/tuple/import.carbon +++ b/toolchain/check/testdata/tuple/import.carbon @@ -161,7 +161,7 @@ var c_bad: C((3, 4)) = F(); // CHECK:STDOUT: %.loc4_17.2: %tuple.type.85c = tuple_literal (%i32.loc4) // CHECK:STDOUT: %.loc4_17.3: type = converted %.loc4_17.2, constants.%tuple.type.a1c [concrete = constants.%tuple.type.a1c] // CHECK:STDOUT: } -// CHECK:STDOUT: %a_ref: ref %tuple.type.a1c = bind_name a_ref, %a_ref.var +// CHECK:STDOUT: %a_ref: ref %tuple.type.a1c = bind_name a_ref, %a_ref.var [concrete = %a_ref.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %b_ref.patt: %pattern_type.811 = binding_pattern b_ref [concrete] // CHECK:STDOUT: %b_ref.var_patt: %pattern_type.811 = var_pattern %b_ref.patt [concrete] @@ -185,7 +185,7 @@ var c_bad: C((3, 4)) = F(); // CHECK:STDOUT: %.loc5_38.5: type = converted %.loc5_37, constants.%tuple.type.d07 [concrete = constants.%tuple.type.d07] // CHECK:STDOUT: %.loc5_38.6: type = converted %.loc5_38.2, constants.%tuple.type.fc1 [concrete = constants.%tuple.type.fc1] // CHECK:STDOUT: } -// CHECK:STDOUT: %b_ref: ref %tuple.type.fc1 = bind_name b_ref, %b_ref.var +// CHECK:STDOUT: %b_ref: ref %tuple.type.fc1 = bind_name b_ref, %b_ref.var [concrete = %b_ref.var] // CHECK:STDOUT: %C.decl: %C.type = class_decl @C [concrete = constants.%C.generic] { // CHECK:STDOUT: %X.patt: %pattern_type.511 = symbolic_binding_pattern X, 0 [concrete] // CHECK:STDOUT: } { @@ -336,6 +336,7 @@ var c_bad: C((3, 4)) = F(); // CHECK:STDOUT: %tuple.type.85c: type = tuple_type (type) [concrete] // CHECK:STDOUT: %tuple.type.dd4: type = tuple_type (%i32) [concrete] // CHECK:STDOUT: %pattern_type.2e8: type = pattern_type %tuple.type.dd4 [concrete] +// CHECK:STDOUT: %tuple.elem0.994: ref %i32 = tuple_access imports.%a_ref.var, element0 [concrete] // CHECK:STDOUT: %tuple.type.8c7: type = tuple_type (%tuple.type.85c, type) [concrete] // CHECK:STDOUT: %tuple.type.24b: type = tuple_type (type, type) [concrete] // CHECK:STDOUT: %tuple.type.58c: type = tuple_type (%tuple.type.8c7, %tuple.type.24b) [concrete] @@ -343,11 +344,18 @@ var c_bad: C((3, 4)) = F(); // CHECK:STDOUT: %tuple.type.c2c: type = tuple_type (%i32, %i32) [concrete] // CHECK:STDOUT: %tuple.type.cfa: type = tuple_type (%tuple.type.154, %tuple.type.c2c) [concrete] // CHECK:STDOUT: %pattern_type.ab9: type = pattern_type %tuple.type.cfa [concrete] +// CHECK:STDOUT: %tuple.elem0.693: ref %tuple.type.154 = tuple_access imports.%b_ref.var, element0 [concrete] // CHECK:STDOUT: %tuple.elem0.76a: ref %tuple.type.154 = tuple_access file.%b.var, element0 [concrete] +// CHECK:STDOUT: %tuple.elem0.4c9: ref %tuple.type.dd4 = tuple_access %tuple.elem0.693, element0 [concrete] // CHECK:STDOUT: %tuple.elem0.6fd: ref %tuple.type.dd4 = tuple_access %tuple.elem0.76a, element0 [concrete] +// CHECK:STDOUT: %tuple.elem0.390: ref %i32 = tuple_access %tuple.elem0.4c9, element0 [concrete] +// CHECK:STDOUT: %tuple.elem1.723: ref %i32 = tuple_access %tuple.elem0.693, element1 [concrete] // CHECK:STDOUT: %tuple.elem1.ae3: ref %i32 = tuple_access %tuple.elem0.76a, element1 [concrete] +// CHECK:STDOUT: %tuple.elem1.92b: ref %tuple.type.c2c = tuple_access imports.%b_ref.var, element1 [concrete] // CHECK:STDOUT: %tuple.elem1.4f3: ref %tuple.type.c2c = tuple_access file.%b.var, element1 [concrete] +// CHECK:STDOUT: %tuple.elem0.2ff: ref %i32 = tuple_access %tuple.elem1.92b, element0 [concrete] // CHECK:STDOUT: %tuple.elem0.790: ref %i32 = tuple_access %tuple.elem1.4f3, element0 [concrete] +// CHECK:STDOUT: %tuple.elem1.282: ref %i32 = tuple_access %tuple.elem1.92b, element1 [concrete] // CHECK:STDOUT: %tuple.elem1.822: ref %i32 = tuple_access %tuple.elem1.4f3, element1 [concrete] // CHECK:STDOUT: %C.type: type = generic_class_type @C [concrete] // CHECK:STDOUT: %C.generic: %C.type = struct_value () [concrete] @@ -379,8 +387,8 @@ var c_bad: C((3, 4)) = F(); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %Implicit.a_ref: ref %tuple.type.dd4 = import_ref Implicit//default, a_ref, loaded -// CHECK:STDOUT: %Implicit.b_ref: ref %tuple.type.cfa = import_ref Implicit//default, b_ref, loaded +// CHECK:STDOUT: %Implicit.a_ref: ref %tuple.type.dd4 = import_ref Implicit//default, a_ref, loaded [concrete = %a_ref.var] +// CHECK:STDOUT: %Implicit.b_ref: ref %tuple.type.cfa = import_ref Implicit//default, b_ref, loaded [concrete = %b_ref.var] // CHECK:STDOUT: %Implicit.C: %C.type = import_ref Implicit//default, C, loaded [concrete = constants.%C.generic] // CHECK:STDOUT: %Implicit.F: %F.type = import_ref Implicit//default, F, loaded [concrete = constants.%F] // CHECK:STDOUT: %Core.ece: = namespace file.%Core.import, [concrete] { @@ -392,6 +400,12 @@ var c_bad: C((3, 4)) = F(); // CHECK:STDOUT: %Implicit.import_ref.773: @impl.a8d.%Convert.type (%Convert.type.9a6) = import_ref Implicit//default, inst119 [indirect], loaded [symbolic = @impl.a8d.%Convert (constants.%Convert.458)] // CHECK:STDOUT: %ImplicitAs.impl_witness_table.1ad = impl_witness_table (%Implicit.import_ref.773), @impl.a8d [concrete] // CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/types/int, Int, loaded [concrete = constants.%Int.generic] +// CHECK:STDOUT: %a_ref.patt: %pattern_type.2e8 = binding_pattern a_ref [concrete] +// CHECK:STDOUT: %a_ref.var_patt: %pattern_type.2e8 = var_pattern %a_ref.patt [concrete] +// CHECK:STDOUT: %a_ref.var: ref %tuple.type.dd4 = var %a_ref.var_patt [concrete] +// CHECK:STDOUT: %b_ref.patt: %pattern_type.ab9 = binding_pattern b_ref [concrete] +// CHECK:STDOUT: %b_ref.var_patt: %pattern_type.ab9 = var_pattern %b_ref.patt [concrete] +// CHECK:STDOUT: %b_ref.var: ref %tuple.type.cfa = var %b_ref.var_patt [concrete] // CHECK:STDOUT: %Implicit.import_ref.48d: %tuple.type.c2c = import_ref Implicit//default, loc7_9, loaded [symbolic = @C.%X (constants.%X)] // CHECK:STDOUT: %Implicit.import_ref.8f2: = import_ref Implicit//default, loc7_26, loaded [concrete = constants.%complete_type.357] // CHECK:STDOUT: %Implicit.import_ref.964 = import_ref Implicit//default, inst1463 [no loc], unloaded @@ -423,7 +437,7 @@ var c_bad: C((3, 4)) = F(); // CHECK:STDOUT: %.loc4_13.2: %tuple.type.85c = tuple_literal (%i32.loc4) // CHECK:STDOUT: %.loc4_13.3: type = converted %.loc4_13.2, constants.%tuple.type.dd4 [concrete = constants.%tuple.type.dd4] // CHECK:STDOUT: } -// CHECK:STDOUT: %a: ref %tuple.type.dd4 = bind_name a, %a.var +// CHECK:STDOUT: %a: ref %tuple.type.dd4 = bind_name a, %a.var [concrete = %a.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %b.patt: %pattern_type.ab9 = binding_pattern b [concrete] // CHECK:STDOUT: %b.var_patt: %pattern_type.ab9 = var_pattern %b.patt [concrete] @@ -447,7 +461,7 @@ var c_bad: C((3, 4)) = F(); // CHECK:STDOUT: %.loc5_34.5: type = converted %.loc5_33, constants.%tuple.type.c2c [concrete = constants.%tuple.type.c2c] // CHECK:STDOUT: %.loc5_34.6: type = converted %.loc5_34.2, constants.%tuple.type.cfa [concrete = constants.%tuple.type.cfa] // CHECK:STDOUT: } -// CHECK:STDOUT: %b: ref %tuple.type.cfa = bind_name b, %b.var +// CHECK:STDOUT: %b: ref %tuple.type.cfa = bind_name b, %b.var [concrete = %b.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %c.patt: %pattern_type.7e2 = binding_pattern c [concrete] // CHECK:STDOUT: %c.var_patt: %pattern_type.7e2 = var_pattern %c.patt [concrete] @@ -476,7 +490,7 @@ var c_bad: C((3, 4)) = F(); // CHECK:STDOUT: %.loc6_16.2: %tuple.type.c2c = converted %.loc6_15.1, %tuple [concrete = constants.%tuple] // CHECK:STDOUT: %C: type = class_type @C, @C(constants.%tuple) [concrete = constants.%C.cf0] // CHECK:STDOUT: } -// CHECK:STDOUT: %c: ref %C.cf0 = bind_name c, %c.var +// CHECK:STDOUT: %c: ref %C.cf0 = bind_name c, %c.var [concrete = %c.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic class @C(imports.%Implicit.import_ref.48d: %tuple.type.c2c) [from "implicit.carbon"] { @@ -496,35 +510,35 @@ var c_bad: C((3, 4)) = F(); // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %a_ref.ref: ref %tuple.type.dd4 = name_ref a_ref, imports.%Implicit.a_ref -// CHECK:STDOUT: %tuple.elem0.loc4: ref %i32 = tuple_access %a_ref.ref, element0 +// CHECK:STDOUT: %a_ref.ref: ref %tuple.type.dd4 = name_ref a_ref, imports.%Implicit.a_ref [concrete = imports.%a_ref.var] +// CHECK:STDOUT: %tuple.elem0.loc4: ref %i32 = tuple_access %a_ref.ref, element0 [concrete = constants.%tuple.elem0.994] // CHECK:STDOUT: %.loc4_17.1: %i32 = bind_value %tuple.elem0.loc4 // CHECK:STDOUT: %.loc4_17.2: init %tuple.type.dd4 = tuple_init (%.loc4_17.1) to file.%a.var // CHECK:STDOUT: %.loc4_1: init %tuple.type.dd4 = converted %a_ref.ref, %.loc4_17.2 // CHECK:STDOUT: assign file.%a.var, %.loc4_1 -// CHECK:STDOUT: %b_ref.ref: ref %tuple.type.cfa = name_ref b_ref, imports.%Implicit.b_ref -// CHECK:STDOUT: %tuple.elem0.loc5_38.1: ref %tuple.type.154 = tuple_access %b_ref.ref, element0 -// CHECK:STDOUT: %tuple.elem0.loc5_38.2: ref %tuple.type.dd4 = tuple_access %tuple.elem0.loc5_38.1, element0 -// CHECK:STDOUT: %tuple.elem0.loc5_38.3: ref %i32 = tuple_access %tuple.elem0.loc5_38.2, element0 +// CHECK:STDOUT: %b_ref.ref: ref %tuple.type.cfa = name_ref b_ref, imports.%Implicit.b_ref [concrete = imports.%b_ref.var] +// CHECK:STDOUT: %tuple.elem0.loc5_38.1: ref %tuple.type.154 = tuple_access %b_ref.ref, element0 [concrete = constants.%tuple.elem0.693] +// CHECK:STDOUT: %tuple.elem0.loc5_38.2: ref %tuple.type.dd4 = tuple_access %tuple.elem0.loc5_38.1, element0 [concrete = constants.%tuple.elem0.4c9] +// CHECK:STDOUT: %tuple.elem0.loc5_38.3: ref %i32 = tuple_access %tuple.elem0.loc5_38.2, element0 [concrete = constants.%tuple.elem0.390] // CHECK:STDOUT: %.loc5_38.1: %i32 = bind_value %tuple.elem0.loc5_38.3 // CHECK:STDOUT: %tuple.elem0.loc5_38.4: ref %tuple.type.154 = tuple_access file.%b.var, element0 [concrete = constants.%tuple.elem0.76a] // CHECK:STDOUT: %tuple.elem0.loc5_38.5: ref %tuple.type.dd4 = tuple_access %tuple.elem0.loc5_38.4, element0 [concrete = constants.%tuple.elem0.6fd] // CHECK:STDOUT: %.loc5_38.2: init %tuple.type.dd4 = tuple_init (%.loc5_38.1) to %tuple.elem0.loc5_38.5 // CHECK:STDOUT: %.loc5_38.3: init %tuple.type.dd4 = converted %tuple.elem0.loc5_38.2, %.loc5_38.2 // CHECK:STDOUT: %.loc5_38.4: init %tuple.type.dd4 = initialize_from %.loc5_38.3 to %tuple.elem0.loc5_38.5 -// CHECK:STDOUT: %tuple.elem1.loc5_38.1: ref %i32 = tuple_access %tuple.elem0.loc5_38.1, element1 +// CHECK:STDOUT: %tuple.elem1.loc5_38.1: ref %i32 = tuple_access %tuple.elem0.loc5_38.1, element1 [concrete = constants.%tuple.elem1.723] // CHECK:STDOUT: %.loc5_38.5: %i32 = bind_value %tuple.elem1.loc5_38.1 // CHECK:STDOUT: %tuple.elem1.loc5_38.2: ref %i32 = tuple_access %tuple.elem0.loc5_38.4, element1 [concrete = constants.%tuple.elem1.ae3] // CHECK:STDOUT: %.loc5_38.6: init %i32 = initialize_from %.loc5_38.5 to %tuple.elem1.loc5_38.2 // CHECK:STDOUT: %.loc5_38.7: init %tuple.type.154 = tuple_init (%.loc5_38.4, %.loc5_38.6) to %tuple.elem0.loc5_38.4 // CHECK:STDOUT: %.loc5_38.8: init %tuple.type.154 = converted %tuple.elem0.loc5_38.1, %.loc5_38.7 -// CHECK:STDOUT: %tuple.elem1.loc5_38.3: ref %tuple.type.c2c = tuple_access %b_ref.ref, element1 -// CHECK:STDOUT: %tuple.elem0.loc5_38.6: ref %i32 = tuple_access %tuple.elem1.loc5_38.3, element0 +// CHECK:STDOUT: %tuple.elem1.loc5_38.3: ref %tuple.type.c2c = tuple_access %b_ref.ref, element1 [concrete = constants.%tuple.elem1.92b] +// CHECK:STDOUT: %tuple.elem0.loc5_38.6: ref %i32 = tuple_access %tuple.elem1.loc5_38.3, element0 [concrete = constants.%tuple.elem0.2ff] // CHECK:STDOUT: %.loc5_38.9: %i32 = bind_value %tuple.elem0.loc5_38.6 // CHECK:STDOUT: %tuple.elem1.loc5_38.4: ref %tuple.type.c2c = tuple_access file.%b.var, element1 [concrete = constants.%tuple.elem1.4f3] // CHECK:STDOUT: %tuple.elem0.loc5_38.7: ref %i32 = tuple_access %tuple.elem1.loc5_38.4, element0 [concrete = constants.%tuple.elem0.790] // CHECK:STDOUT: %.loc5_38.10: init %i32 = initialize_from %.loc5_38.9 to %tuple.elem0.loc5_38.7 -// CHECK:STDOUT: %tuple.elem1.loc5_38.5: ref %i32 = tuple_access %tuple.elem1.loc5_38.3, element1 +// CHECK:STDOUT: %tuple.elem1.loc5_38.5: ref %i32 = tuple_access %tuple.elem1.loc5_38.3, element1 [concrete = constants.%tuple.elem1.282] // CHECK:STDOUT: %.loc5_38.11: %i32 = bind_value %tuple.elem1.loc5_38.5 // CHECK:STDOUT: %tuple.elem1.loc5_38.6: ref %i32 = tuple_access %tuple.elem1.loc5_38.4, element1 [concrete = constants.%tuple.elem1.822] // CHECK:STDOUT: %.loc5_38.12: init %i32 = initialize_from %.loc5_38.11 to %tuple.elem1.loc5_38.6 @@ -611,7 +625,7 @@ var c_bad: C((3, 4)) = F(); // CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [concrete = constants.%int_3] // CHECK:STDOUT: %.loc12: %tuple.type.37f = tuple_literal (%int_1, %int_2, %int_3) // CHECK:STDOUT: } -// CHECK:STDOUT: %c_bad: = bind_name c_bad, +// CHECK:STDOUT: %c_bad: = bind_name c_bad, [concrete = ] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic class @C(imports.%Implicit.import_ref.48d: %tuple.type.c2c) [from "implicit.carbon"] { @@ -750,7 +764,7 @@ var c_bad: C((3, 4)) = F(); // CHECK:STDOUT: %.loc11_20.2: %tuple.type.c2c = converted %.loc11_19.1, %tuple [concrete = constants.%tuple.5de] // CHECK:STDOUT: %C: type = class_type @C, @C(constants.%tuple.5de) [concrete = constants.%C.ed5] // CHECK:STDOUT: } -// CHECK:STDOUT: %c_bad: ref %C.ed5 = bind_name c_bad, %c_bad.var +// CHECK:STDOUT: %c_bad: ref %C.ed5 = bind_name c_bad, %c_bad.var [concrete = %c_bad.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic class @C(imports.%Implicit.import_ref.48d: %tuple.type.c2c) [from "implicit.carbon"] { diff --git a/toolchain/check/testdata/tuple/nested_tuple.carbon b/toolchain/check/testdata/tuple/nested_tuple.carbon index 3d3439fb24bd..6a9c5dd1ea22 100644 --- a/toolchain/check/testdata/tuple/nested_tuple.carbon +++ b/toolchain/check/testdata/tuple/nested_tuple.carbon @@ -93,7 +93,7 @@ var x: ((i32, i32), i32) = ((12, 76), 6); // CHECK:STDOUT: %.loc11_24.3: type = converted %.loc11_18, constants.%tuple.type.d07 [concrete = constants.%tuple.type.d07] // CHECK:STDOUT: %.loc11_24.4: type = converted %.loc11_24.2, constants.%tuple.type.f72 [concrete = constants.%tuple.type.f72] // CHECK:STDOUT: } -// CHECK:STDOUT: %x: ref %tuple.type.f72 = bind_name x, %x.var +// CHECK:STDOUT: %x: ref %tuple.type.f72 = bind_name x, %x.var [concrete = %x.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { diff --git a/toolchain/check/testdata/tuple/no_prelude/empty.carbon b/toolchain/check/testdata/tuple/no_prelude/empty.carbon index af250a2f6489..cd6fa9d2d56b 100644 --- a/toolchain/check/testdata/tuple/no_prelude/empty.carbon +++ b/toolchain/check/testdata/tuple/no_prelude/empty.carbon @@ -33,7 +33,7 @@ var y: () = x; // CHECK:STDOUT: %.loc11_9.2: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc11_9.3: type = converted %.loc11_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %x: ref %empty_tuple.type = bind_name x, %x.var +// CHECK:STDOUT: %x: ref %empty_tuple.type = bind_name x, %x.var [concrete = %x.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %y.patt: %pattern_type = binding_pattern y [concrete] // CHECK:STDOUT: %y.var_patt: %pattern_type = var_pattern %y.patt [concrete] @@ -43,7 +43,7 @@ var y: () = x; // CHECK:STDOUT: %.loc12_9.2: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc12_9.3: type = converted %.loc12_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %y: ref %empty_tuple.type = bind_name y, %y.var +// CHECK:STDOUT: %y: ref %empty_tuple.type = bind_name y, %y.var [concrete = %y.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -52,7 +52,7 @@ var y: () = x; // CHECK:STDOUT: %.loc11_14.2: init %empty_tuple.type = tuple_init () to file.%x.var [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc11_1: init %empty_tuple.type = converted %.loc11_14.1, %.loc11_14.2 [concrete = constants.%empty_tuple] // CHECK:STDOUT: assign file.%x.var, %.loc11_1 -// CHECK:STDOUT: %x.ref: ref %empty_tuple.type = name_ref x, file.%x +// CHECK:STDOUT: %x.ref: ref %empty_tuple.type = name_ref x, file.%x [concrete = file.%x.var] // CHECK:STDOUT: %.loc12_13: init %empty_tuple.type = tuple_init () to file.%y.var [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc12_1: init %empty_tuple.type = converted %x.ref, %.loc12_13 [concrete = constants.%empty_tuple] // CHECK:STDOUT: assign file.%y.var, %.loc12_1 diff --git a/toolchain/check/testdata/tuple/no_prelude/fail_assign_empty.carbon b/toolchain/check/testdata/tuple/no_prelude/fail_assign_empty.carbon index 0b1272797ee0..7eb7d9552e26 100644 --- a/toolchain/check/testdata/tuple/no_prelude/fail_assign_empty.carbon +++ b/toolchain/check/testdata/tuple/no_prelude/fail_assign_empty.carbon @@ -37,7 +37,7 @@ var x: ((),) = (); // CHECK:STDOUT: %.loc15_12.3: type = converted %.loc15_10, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %.loc15_12.4: type = converted %.loc15_12.2, constants.%tuple.type [concrete = constants.%tuple.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %x: ref %tuple.type = bind_name x, %x.var +// CHECK:STDOUT: %x: ref %tuple.type = bind_name x, %x.var [concrete = %x.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { diff --git a/toolchain/check/testdata/tuple/no_prelude/fail_assign_to_empty.carbon b/toolchain/check/testdata/tuple/no_prelude/fail_assign_to_empty.carbon index eb79716dbf7f..8871352f7af2 100644 --- a/toolchain/check/testdata/tuple/no_prelude/fail_assign_to_empty.carbon +++ b/toolchain/check/testdata/tuple/no_prelude/fail_assign_to_empty.carbon @@ -35,7 +35,7 @@ var x: () = ((),); // CHECK:STDOUT: %.loc15_9.2: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc15_9.3: type = converted %.loc15_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %x: ref %empty_tuple.type = bind_name x, %x.var +// CHECK:STDOUT: %x: ref %empty_tuple.type = bind_name x, %x.var [concrete = %x.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { diff --git a/toolchain/check/testdata/tuple/one_element.carbon b/toolchain/check/testdata/tuple/one_element.carbon index c61faf937d48..f58d05f9064f 100644 --- a/toolchain/check/testdata/tuple/one_element.carbon +++ b/toolchain/check/testdata/tuple/one_element.carbon @@ -23,6 +23,7 @@ var y: (i32,) = x; // CHECK:STDOUT: %pattern_type.b74: type = pattern_type %tuple.type.a1c [concrete] // CHECK:STDOUT: %int_4.0c1: Core.IntLiteral = int_value 4 [concrete] // CHECK:STDOUT: %tuple.type.985: type = tuple_type (Core.IntLiteral) [concrete] +// CHECK:STDOUT: %tuple.elem0.7a5: ref %i32 = tuple_access file.%x.var, element0 [concrete] // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] @@ -73,7 +74,7 @@ var y: (i32,) = x; // CHECK:STDOUT: %.loc11_13.2: %tuple.type.85c = tuple_literal (%i32.loc11) // CHECK:STDOUT: %.loc11_13.3: type = converted %.loc11_13.2, constants.%tuple.type.a1c [concrete = constants.%tuple.type.a1c] // CHECK:STDOUT: } -// CHECK:STDOUT: %x: ref %tuple.type.a1c = bind_name x, %x.var +// CHECK:STDOUT: %x: ref %tuple.type.a1c = bind_name x, %x.var [concrete = %x.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %y.patt: %pattern_type.b74 = binding_pattern y [concrete] // CHECK:STDOUT: %y.var_patt: %pattern_type.b74 = var_pattern %y.patt [concrete] @@ -85,7 +86,7 @@ var y: (i32,) = x; // CHECK:STDOUT: %.loc12_13.2: %tuple.type.85c = tuple_literal (%i32.loc12) // CHECK:STDOUT: %.loc12_13.3: type = converted %.loc12_13.2, constants.%tuple.type.a1c [concrete = constants.%tuple.type.a1c] // CHECK:STDOUT: } -// CHECK:STDOUT: %y: ref %tuple.type.a1c = bind_name y, %y.var +// CHECK:STDOUT: %y: ref %tuple.type.a1c = bind_name y, %y.var [concrete = %y.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -101,8 +102,8 @@ var y: (i32,) = x; // CHECK:STDOUT: %.loc11_20.3: init %tuple.type.a1c = tuple_init (%.loc11_20.2) to file.%x.var [concrete = constants.%tuple] // CHECK:STDOUT: %.loc11_1: init %tuple.type.a1c = converted %.loc11_20.1, %.loc11_20.3 [concrete = constants.%tuple] // CHECK:STDOUT: assign file.%x.var, %.loc11_1 -// CHECK:STDOUT: %x.ref: ref %tuple.type.a1c = name_ref x, file.%x -// CHECK:STDOUT: %tuple.elem0: ref %i32 = tuple_access %x.ref, element0 +// CHECK:STDOUT: %x.ref: ref %tuple.type.a1c = name_ref x, file.%x [concrete = file.%x.var] +// CHECK:STDOUT: %tuple.elem0: ref %i32 = tuple_access %x.ref, element0 [concrete = constants.%tuple.elem0.7a5] // CHECK:STDOUT: %.loc12_17.1: %i32 = bind_value %tuple.elem0 // CHECK:STDOUT: %.loc12_17.2: init %tuple.type.a1c = tuple_init (%.loc12_17.1) to file.%y.var // CHECK:STDOUT: %.loc12_1: init %tuple.type.a1c = converted %x.ref, %.loc12_17.2 diff --git a/toolchain/check/testdata/tuple/two_elements.carbon b/toolchain/check/testdata/tuple/two_elements.carbon index 083cea51a869..2a64f4b157f6 100644 --- a/toolchain/check/testdata/tuple/two_elements.carbon +++ b/toolchain/check/testdata/tuple/two_elements.carbon @@ -128,7 +128,7 @@ var y: (i32, i32) = x; // CHECK:STDOUT: %.loc14_17.2: %tuple.type.24b = tuple_literal (%i32.loc14_9, %i32.loc14_14) // CHECK:STDOUT: %.loc14_17.3: type = converted %.loc14_17.2, constants.%tuple.type.d07 [concrete = constants.%tuple.type.d07] // CHECK:STDOUT: } -// CHECK:STDOUT: %x: ref %tuple.type.d07 = bind_name x, %x.var +// CHECK:STDOUT: %x: ref %tuple.type.d07 = bind_name x, %x.var [concrete = %x.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %y.patt: %pattern_type.511 = binding_pattern y [concrete] // CHECK:STDOUT: %y.var_patt: %pattern_type.511 = var_pattern %y.patt [concrete] @@ -142,7 +142,7 @@ var y: (i32, i32) = x; // CHECK:STDOUT: %.loc15_17.2: %tuple.type.24b = tuple_literal (%i32.loc15_9, %i32.loc15_14) // CHECK:STDOUT: %.loc15_17.3: type = converted %.loc15_17.2, constants.%tuple.type.d07 [concrete = constants.%tuple.type.d07] // CHECK:STDOUT: } -// CHECK:STDOUT: %y: ref %tuple.type.d07 = bind_name y, %y.var +// CHECK:STDOUT: %y: ref %tuple.type.d07 = bind_name y, %y.var [concrete = %y.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -173,12 +173,12 @@ var y: (i32, i32) = x; // CHECK:STDOUT: %.loc14_28.6: init %tuple.type.d07 = tuple_init (%.loc14_28.3, %.loc14_28.5) to file.%x.var [concrete = constants.%tuple] // CHECK:STDOUT: %.loc14_1: init %tuple.type.d07 = converted %.loc14_28.1, %.loc14_28.6 [concrete = constants.%tuple] // CHECK:STDOUT: assign file.%x.var, %.loc14_1 -// CHECK:STDOUT: %x.ref: ref %tuple.type.d07 = name_ref x, file.%x -// CHECK:STDOUT: %tuple.elem0.loc15_21.1: ref %i32 = tuple_access %x.ref, element0 +// CHECK:STDOUT: %x.ref: ref %tuple.type.d07 = name_ref x, file.%x [concrete = file.%x.var] +// CHECK:STDOUT: %tuple.elem0.loc15_21.1: ref %i32 = tuple_access %x.ref, element0 [concrete = constants.%tuple.elem0.466] // CHECK:STDOUT: %.loc15_21.1: %i32 = bind_value %tuple.elem0.loc15_21.1 // CHECK:STDOUT: %tuple.elem0.loc15_21.2: ref %i32 = tuple_access file.%y.var, element0 [concrete = constants.%tuple.elem0.a37] // CHECK:STDOUT: %.loc15_21.2: init %i32 = initialize_from %.loc15_21.1 to %tuple.elem0.loc15_21.2 -// CHECK:STDOUT: %tuple.elem1.loc15_21.1: ref %i32 = tuple_access %x.ref, element1 +// CHECK:STDOUT: %tuple.elem1.loc15_21.1: ref %i32 = tuple_access %x.ref, element1 [concrete = constants.%tuple.elem1.d07] // CHECK:STDOUT: %.loc15_21.3: %i32 = bind_value %tuple.elem1.loc15_21.1 // CHECK:STDOUT: %tuple.elem1.loc15_21.2: ref %i32 = tuple_access file.%y.var, element1 [concrete = constants.%tuple.elem1.45d] // CHECK:STDOUT: %.loc15_21.4: init %i32 = initialize_from %.loc15_21.3 to %tuple.elem1.loc15_21.2 diff --git a/toolchain/check/testdata/var/fail_storage_is_literal.carbon b/toolchain/check/testdata/var/fail_storage_is_literal.carbon index d90709260224..e060224167bc 100644 --- a/toolchain/check/testdata/var/fail_storage_is_literal.carbon +++ b/toolchain/check/testdata/var/fail_storage_is_literal.carbon @@ -60,7 +60,7 @@ fn Main() { // CHECK:STDOUT: %int_1.loc19_10: Core.IntLiteral = int_value 1 [concrete = constants.%int_1] // CHECK:STDOUT: %.loc19: type = converted %int_1.loc19_10, [concrete = ] // CHECK:STDOUT: } -// CHECK:STDOUT: %x: = bind_name x, +// CHECK:STDOUT: %x: = bind_name x, [concrete = ] // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/var/min_prelude/fail_lookup_outside_scope.carbon b/toolchain/check/testdata/var/min_prelude/fail_lookup_outside_scope.carbon index a912f8219671..0862f5af2281 100644 --- a/toolchain/check/testdata/var/min_prelude/fail_lookup_outside_scope.carbon +++ b/toolchain/check/testdata/var/min_prelude/fail_lookup_outside_scope.carbon @@ -55,7 +55,7 @@ var y: () = x; // CHECK:STDOUT: %.loc10_9.2: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc10_9.3: type = converted %.loc10_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %y: ref %empty_tuple.type = bind_name y, %y.var +// CHECK:STDOUT: %y: ref %empty_tuple.type = bind_name y, %y.var [concrete = %y.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Main() { diff --git a/toolchain/check/testdata/var/min_prelude/global_lookup_in_scope.carbon b/toolchain/check/testdata/var/min_prelude/global_lookup_in_scope.carbon index f4e03bfecec8..9b3dd2c2d8b5 100644 --- a/toolchain/check/testdata/var/min_prelude/global_lookup_in_scope.carbon +++ b/toolchain/check/testdata/var/min_prelude/global_lookup_in_scope.carbon @@ -54,7 +54,7 @@ fn Main() { // CHECK:STDOUT: %.loc2_14.2: type = converted %.loc2_14.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %struct_type.v: type = struct_type {.v: %empty_tuple.type} [concrete = constants.%struct_type.v] // CHECK:STDOUT: } -// CHECK:STDOUT: %x: ref %struct_type.v = bind_name x, %x.var +// CHECK:STDOUT: %x: ref %struct_type.v = bind_name x, %x.var [concrete = %x.var] // CHECK:STDOUT: %Main.decl: %Main.type = fn_decl @Main [concrete = constants.%Main] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: @@ -65,8 +65,8 @@ fn Main() { // CHECK:STDOUT: %y.var_patt: %pattern_type = var_pattern %y.patt [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %y.var: ref %struct_type.v = var %y.var_patt -// CHECK:STDOUT: %x.ref: ref %struct_type.v = name_ref x, file.%x -// CHECK:STDOUT: %.loc5_21.1: ref %empty_tuple.type = struct_access %x.ref, element0 +// CHECK:STDOUT: %x.ref: ref %struct_type.v = name_ref x, file.%x [concrete = file.%x.var] +// CHECK:STDOUT: %.loc5_21.1: ref %empty_tuple.type = struct_access %x.ref, element0 [concrete = constants.%.01b] // CHECK:STDOUT: %.loc5_21.2: ref %empty_tuple.type = struct_access %y.var, element0 // CHECK:STDOUT: %.loc5_21.3: init %empty_tuple.type = tuple_init () to %.loc5_21.2 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc5_21.4: init %empty_tuple.type = converted %.loc5_21.1, %.loc5_21.3 [concrete = constants.%empty_tuple] diff --git a/toolchain/check/testdata/var/no_prelude/export_name.carbon b/toolchain/check/testdata/var/no_prelude/export_name.carbon index 7fc4bc988ba5..4cf403eca8b0 100644 --- a/toolchain/check/testdata/var/no_prelude/export_name.carbon +++ b/toolchain/check/testdata/var/no_prelude/export_name.carbon @@ -30,16 +30,10 @@ export v; // Test files // ============================================================================ -// --- fail_todo_use_export.carbon +// --- use_export.carbon library "[[@TEST_NAME]]"; -// CHECK:STDERR: fail_todo_use_export.carbon:[[@LINE+6]]:1: in import [InImport] -// CHECK:STDERR: export.carbon:4:1: in import [InImport] -// CHECK:STDERR: base.carbon:4:5: error: semantics TODO: `Non-constant ImportRefLoaded (comes up with var)` [SemanticsTodo] -// CHECK:STDERR: var v: (); -// CHECK:STDERR: ^ -// CHECK:STDERR: import library "export"; var w: () = v; @@ -64,17 +58,21 @@ var w: () = v; // CHECK:STDOUT: %.loc4_9.2: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc4_9.3: type = converted %.loc4_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %v: ref %empty_tuple.type = bind_name v, %v.var +// CHECK:STDOUT: %v: ref %empty_tuple.type = bind_name v, %v.var [concrete = %v.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- export.carbon // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %pattern_type: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %Main.v: ref %empty_tuple.type = import_ref Main//base, v, loaded +// CHECK:STDOUT: %Main.v: ref %empty_tuple.type = import_ref Main//base, v, loaded [concrete = %v.var] +// CHECK:STDOUT: %v.patt: %pattern_type = binding_pattern v [concrete] +// CHECK:STDOUT: %v.var_patt: %pattern_type = var_pattern %v.patt [concrete] +// CHECK:STDOUT: %v.var: ref %empty_tuple.type = var %v.var_patt [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -82,10 +80,10 @@ var w: () = v; // CHECK:STDOUT: .v = %v // CHECK:STDOUT: } // CHECK:STDOUT: %default.import = import -// CHECK:STDOUT: %v: ref %empty_tuple.type = export v, imports.%Main.v +// CHECK:STDOUT: %v: ref %empty_tuple.type = export v, imports.%Main.v [concrete = imports.%v.var] // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: --- fail_todo_use_export.carbon +// CHECK:STDOUT: --- use_export.carbon // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] @@ -94,7 +92,10 @@ var w: () = v; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %Main.v: ref %empty_tuple.type = import_ref Main//export, v, loaded +// CHECK:STDOUT: %Main.v: ref %empty_tuple.type = import_ref Main//export, v, loaded [concrete = %v.var] +// CHECK:STDOUT: %v.patt: %pattern_type = binding_pattern v [concrete] +// CHECK:STDOUT: %v.var_patt: %pattern_type = var_pattern %v.patt [concrete] +// CHECK:STDOUT: %v.var: ref %empty_tuple.type = var %v.var_patt [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -108,19 +109,19 @@ var w: () = v; // CHECK:STDOUT: %w.var_patt: %pattern_type = var_pattern %w.patt [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %w.var: ref %empty_tuple.type = var %w.var_patt [concrete] -// CHECK:STDOUT: %.loc12_9.1: type = splice_block %.loc12_9.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc12_9.2: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc12_9.3: type = converted %.loc12_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %.loc6_9.1: type = splice_block %.loc6_9.3 [concrete = constants.%empty_tuple.type] { +// CHECK:STDOUT: %.loc6_9.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc6_9.3: type = converted %.loc6_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %w: ref %empty_tuple.type = bind_name w, %w.var +// CHECK:STDOUT: %w: ref %empty_tuple.type = bind_name w, %w.var [concrete = %w.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %v.ref: ref %empty_tuple.type = name_ref v, imports.%Main.v -// CHECK:STDOUT: %.loc12_13: init %empty_tuple.type = tuple_init () to file.%w.var [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc12_1: init %empty_tuple.type = converted %v.ref, %.loc12_13 [concrete = constants.%empty_tuple] -// CHECK:STDOUT: assign file.%w.var, %.loc12_1 +// CHECK:STDOUT: %v.ref: ref %empty_tuple.type = name_ref v, imports.%Main.v [concrete = imports.%v.var] +// CHECK:STDOUT: %.loc6_13: init %empty_tuple.type = tuple_init () to file.%w.var [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc6_1: init %empty_tuple.type = converted %v.ref, %.loc6_13 [concrete = constants.%empty_tuple] +// CHECK:STDOUT: assign file.%w.var, %.loc6_1 // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/var/no_prelude/fail_init_type_mismatch.carbon b/toolchain/check/testdata/var/no_prelude/fail_init_type_mismatch.carbon index 7a1980d3de27..754c505a5686 100644 --- a/toolchain/check/testdata/var/no_prelude/fail_init_type_mismatch.carbon +++ b/toolchain/check/testdata/var/no_prelude/fail_init_type_mismatch.carbon @@ -36,7 +36,7 @@ var x: {} = (); // CHECK:STDOUT: %.loc15_9.2: %empty_struct_type = struct_literal () // CHECK:STDOUT: %.loc15_9.3: type = converted %.loc15_9.2, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: } -// CHECK:STDOUT: %x: ref %empty_struct_type = bind_name x, %x.var +// CHECK:STDOUT: %x: ref %empty_struct_type = bind_name x, %x.var [concrete = %x.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { diff --git a/toolchain/check/testdata/var/no_prelude/fail_modifiers.carbon b/toolchain/check/testdata/var/no_prelude/fail_modifiers.carbon index e02f580720b0..c0c7deb5157f 100644 --- a/toolchain/check/testdata/var/no_prelude/fail_modifiers.carbon +++ b/toolchain/check/testdata/var/no_prelude/fail_modifiers.carbon @@ -65,7 +65,7 @@ abstract var e: (); // CHECK:STDOUT: %.loc15_19.2: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc15_19.3: type = converted %.loc15_19.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %b: ref %empty_tuple.type = bind_name b, %b.var +// CHECK:STDOUT: %b: ref %empty_tuple.type = bind_name b, %b.var [concrete = %b.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %c.patt: %pattern_type = binding_pattern c [concrete] // CHECK:STDOUT: %c.var_patt: %pattern_type = var_pattern %c.patt [concrete] @@ -75,7 +75,7 @@ abstract var e: (); // CHECK:STDOUT: %.loc24_27.2: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc24_27.3: type = converted %.loc24_27.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %c: ref %empty_tuple.type = bind_name c, %c.var +// CHECK:STDOUT: %c: ref %empty_tuple.type = bind_name c, %c.var [concrete = %c.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %d.patt: %pattern_type = binding_pattern d [concrete] // CHECK:STDOUT: %d.var_patt: %pattern_type = var_pattern %d.patt [concrete] @@ -85,7 +85,7 @@ abstract var e: (); // CHECK:STDOUT: %.loc37_29.2: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc37_29.3: type = converted %.loc37_29.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %d: ref %empty_tuple.type = bind_name d, %d.var +// CHECK:STDOUT: %d: ref %empty_tuple.type = bind_name d, %d.var [concrete = %d.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %e.patt: %pattern_type = binding_pattern e [concrete] // CHECK:STDOUT: %e.var_patt: %pattern_type = var_pattern %e.patt [concrete] @@ -95,6 +95,6 @@ abstract var e: (); // CHECK:STDOUT: %.loc43_18.2: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc43_18.3: type = converted %.loc43_18.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %e: ref %empty_tuple.type = bind_name e, %e.var +// CHECK:STDOUT: %e: ref %empty_tuple.type = bind_name e, %e.var [concrete = %e.var] // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/var/no_prelude/fail_namespace_conflict.carbon b/toolchain/check/testdata/var/no_prelude/fail_namespace_conflict.carbon index 240f81102b0b..ab19276dadc0 100644 --- a/toolchain/check/testdata/var/no_prelude/fail_namespace_conflict.carbon +++ b/toolchain/check/testdata/var/no_prelude/fail_namespace_conflict.carbon @@ -50,7 +50,7 @@ var A: () = (); // CHECK:STDOUT: %.loc20_9.2: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc20_9.3: type = converted %.loc20_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %A.loc20: ref %empty_tuple.type = bind_name A, %A.var.loc20 +// CHECK:STDOUT: %A.loc20: ref %empty_tuple.type = bind_name A, %A.var.loc20 [concrete = %A.var.loc20] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %A.patt.loc29: %pattern_type = binding_pattern A [concrete] // CHECK:STDOUT: %A.var_patt.loc29: %pattern_type = var_pattern %A.patt.loc29 [concrete] @@ -60,7 +60,7 @@ var A: () = (); // CHECK:STDOUT: %.loc29_9.2: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc29_9.3: type = converted %.loc29_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %A.loc29: ref %empty_tuple.type = bind_name A, %A.var.loc29 +// CHECK:STDOUT: %A.loc29: ref %empty_tuple.type = bind_name A, %A.var.loc29 [concrete = %A.var.loc29] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { diff --git a/toolchain/check/testdata/var/no_prelude/global_decl.carbon b/toolchain/check/testdata/var/no_prelude/global_decl.carbon index c2e278861df2..2c693bd62ab4 100644 --- a/toolchain/check/testdata/var/no_prelude/global_decl.carbon +++ b/toolchain/check/testdata/var/no_prelude/global_decl.carbon @@ -32,6 +32,6 @@ var x: {.v: ()}; // CHECK:STDOUT: %.loc11_14.2: type = converted %.loc11_14.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %struct_type.v: type = struct_type {.v: %empty_tuple.type} [concrete = constants.%struct_type.v] // CHECK:STDOUT: } -// CHECK:STDOUT: %x: ref %struct_type.v = bind_name x, %x.var +// CHECK:STDOUT: %x: ref %struct_type.v = bind_name x, %x.var [concrete = %x.var] // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/var/no_prelude/global_decl_import.carbon b/toolchain/check/testdata/var/no_prelude/global_decl_import.carbon new file mode 100644 index 000000000000..76a43916ea6c --- /dev/null +++ b/toolchain/check/testdata/var/no_prelude/global_decl_import.carbon @@ -0,0 +1,100 @@ +// 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 +// +// AUTOUPDATE +// TIP: To test this file alone, run: +// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/var/no_prelude/global_decl_import.carbon +// TIP: To dump output, run: +// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/var/no_prelude/global_decl_import.carbon + +// --- decl.carbon + +library "[[@TEST_NAME]]"; + +var x: {.v: ()}; + +// --- import.carbon + +library "[[@TEST_NAME]]"; + +import library "decl"; + +fn G() -> {.v: ()} { + return x; +} + +// CHECK:STDOUT: --- decl.carbon +// CHECK:STDOUT: +// CHECK:STDOUT: constants { +// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %struct_type.v: type = struct_type {.v: %empty_tuple.type} [concrete] +// CHECK:STDOUT: %pattern_type: type = pattern_type %struct_type.v [concrete] +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace [concrete] { +// CHECK:STDOUT: .x = %x +// CHECK:STDOUT: } +// CHECK:STDOUT: name_binding_decl { +// CHECK:STDOUT: %x.patt: %pattern_type = binding_pattern x [concrete] +// CHECK:STDOUT: %x.var_patt: %pattern_type = var_pattern %x.patt [concrete] +// CHECK:STDOUT: } +// CHECK:STDOUT: %x.var: ref %struct_type.v = var %x.var_patt [concrete] +// CHECK:STDOUT: %.loc4_15: type = splice_block %struct_type.v [concrete = constants.%struct_type.v] { +// CHECK:STDOUT: %.loc4_14.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc4_14.2: type = converted %.loc4_14.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %struct_type.v: type = struct_type {.v: %empty_tuple.type} [concrete = constants.%struct_type.v] +// CHECK:STDOUT: } +// CHECK:STDOUT: %x: ref %struct_type.v = bind_name x, %x.var [concrete = %x.var] +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: --- import.carbon +// CHECK:STDOUT: +// CHECK:STDOUT: constants { +// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %struct_type.v: type = struct_type {.v: %empty_tuple.type} [concrete] +// CHECK:STDOUT: %pattern_type: type = pattern_type %struct_type.v [concrete] +// CHECK:STDOUT: %G.type: type = fn_type @G [concrete] +// CHECK:STDOUT: %G: %G.type = struct_value () [concrete] +// CHECK:STDOUT: %.01b: ref %empty_tuple.type = struct_access imports.%x.var, element0 [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %struct: %struct_type.v = struct_value (%empty_tuple) [concrete] +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: imports { +// CHECK:STDOUT: %Main.x: ref %struct_type.v = import_ref Main//decl, x, loaded [concrete = %x.var] +// CHECK:STDOUT: %x.patt: %pattern_type = binding_pattern x [concrete] +// CHECK:STDOUT: %x.var_patt: %pattern_type = var_pattern %x.patt [concrete] +// CHECK:STDOUT: %x.var: ref %struct_type.v = var %x.var_patt [concrete] +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace [concrete] { +// CHECK:STDOUT: .x = imports.%Main.x +// CHECK:STDOUT: .G = %G.decl +// CHECK:STDOUT: } +// CHECK:STDOUT: %default.import = import +// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] { +// CHECK:STDOUT: %return.patt: %pattern_type = return_slot_pattern [concrete] +// CHECK:STDOUT: %return.param_patt: %pattern_type = out_param_pattern %return.patt, call_param0 [concrete] +// CHECK:STDOUT: } { +// CHECK:STDOUT: %.loc6_17.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc6_17.2: type = converted %.loc6_17.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %struct_type.v: type = struct_type {.v: %empty_tuple.type} [concrete = constants.%struct_type.v] +// CHECK:STDOUT: %return.param: ref %struct_type.v = out_param call_param0 +// CHECK:STDOUT: %return: ref %struct_type.v = return_slot %return.param +// CHECK:STDOUT: } +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: fn @G() -> %struct_type.v { +// CHECK:STDOUT: !entry: +// CHECK:STDOUT: %x.ref: ref %struct_type.v = name_ref x, imports.%Main.x [concrete = imports.%x.var] +// CHECK:STDOUT: %.loc7_10.1: ref %empty_tuple.type = struct_access %x.ref, element0 [concrete = constants.%.01b] +// CHECK:STDOUT: %tuple: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc7_10.2: %empty_tuple.type = converted %.loc7_10.1, %tuple [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %struct: %struct_type.v = struct_value (%.loc7_10.2) [concrete = constants.%struct] +// CHECK:STDOUT: %.loc7_11: %struct_type.v = converted %x.ref, %struct [concrete = constants.%struct] +// CHECK:STDOUT: return %.loc7_11 +// CHECK:STDOUT: } +// CHECK:STDOUT: diff --git a/toolchain/check/testdata/var/no_prelude/global_decl_with_init.carbon b/toolchain/check/testdata/var/no_prelude/global_decl_with_init.carbon index 85799bced59a..42f67d664ad9 100644 --- a/toolchain/check/testdata/var/no_prelude/global_decl_with_init.carbon +++ b/toolchain/check/testdata/var/no_prelude/global_decl_with_init.carbon @@ -51,7 +51,7 @@ var (x: (), y: ()) = ((), ()); // CHECK:STDOUT: %.loc4_14.2: type = converted %.loc4_14.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %struct_type.v: type = struct_type {.v: %empty_tuple.type} [concrete = constants.%struct_type.v] // CHECK:STDOUT: } -// CHECK:STDOUT: %x: ref %struct_type.v = bind_name x, %x.var +// CHECK:STDOUT: %x: ref %struct_type.v = bind_name x, %x.var [concrete = %x.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -100,7 +100,7 @@ var (x: (), y: ()) = ((), ()); // CHECK:STDOUT: %.loc4_21.2: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc4_21.3: type = converted %.loc4_21.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %y: ref %empty_tuple.type = bind_name y, %y.var +// CHECK:STDOUT: %y: ref %empty_tuple.type = bind_name y, %y.var [concrete = %y.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -145,12 +145,12 @@ var (x: (), y: ()) = ((), ()); // CHECK:STDOUT: %.loc4_10.2: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc4_10.3: type = converted %.loc4_10.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %x: ref %empty_tuple.type = bind_name x, %tuple.elem0 +// CHECK:STDOUT: %x: ref %empty_tuple.type = bind_name x, %tuple.elem0 [concrete = constants.%tuple.elem0] // CHECK:STDOUT: %.loc4_17.1: type = splice_block %.loc4_17.3 [concrete = constants.%empty_tuple.type] { // CHECK:STDOUT: %.loc4_17.2: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc4_17.3: type = converted %.loc4_17.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %y: ref %empty_tuple.type = bind_name y, %tuple.elem1 +// CHECK:STDOUT: %y: ref %empty_tuple.type = bind_name y, %tuple.elem1 [concrete = constants.%tuple.elem1] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { diff --git a/toolchain/check/testdata/var/no_prelude/global_lookup.carbon b/toolchain/check/testdata/var/no_prelude/global_lookup.carbon index c59d3f741246..d06413f30ebf 100644 --- a/toolchain/check/testdata/var/no_prelude/global_lookup.carbon +++ b/toolchain/check/testdata/var/no_prelude/global_lookup.carbon @@ -38,7 +38,7 @@ var y: {.v: ()} = x; // CHECK:STDOUT: %.loc11_14.2: type = converted %.loc11_14.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %struct_type.v.loc11: type = struct_type {.v: %empty_tuple.type} [concrete = constants.%struct_type.v] // CHECK:STDOUT: } -// CHECK:STDOUT: %x: ref %struct_type.v = bind_name x, %x.var +// CHECK:STDOUT: %x: ref %struct_type.v = bind_name x, %x.var [concrete = %x.var] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %y.patt: %pattern_type = binding_pattern y [concrete] // CHECK:STDOUT: %y.var_patt: %pattern_type = var_pattern %y.patt [concrete] @@ -49,7 +49,7 @@ var y: {.v: ()} = x; // CHECK:STDOUT: %.loc12_14.2: type = converted %.loc12_14.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %struct_type.v.loc12: type = struct_type {.v: %empty_tuple.type} [concrete = constants.%struct_type.v] // CHECK:STDOUT: } -// CHECK:STDOUT: %y: ref %struct_type.v = bind_name y, %y.var +// CHECK:STDOUT: %y: ref %struct_type.v = bind_name y, %y.var [concrete = %y.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -62,8 +62,8 @@ var y: {.v: ()} = x; // CHECK:STDOUT: %.loc11_27.4: init %struct_type.v = struct_init (%.loc11_27.3) to file.%x.var [concrete = constants.%struct] // CHECK:STDOUT: %.loc11_1: init %struct_type.v = converted %.loc11_27.1, %.loc11_27.4 [concrete = constants.%struct] // CHECK:STDOUT: assign file.%x.var, %.loc11_1 -// CHECK:STDOUT: %x.ref: ref %struct_type.v = name_ref x, file.%x -// CHECK:STDOUT: %.loc12_19.1: ref %empty_tuple.type = struct_access %x.ref, element0 +// CHECK:STDOUT: %x.ref: ref %struct_type.v = name_ref x, file.%x [concrete = file.%x.var] +// CHECK:STDOUT: %.loc12_19.1: ref %empty_tuple.type = struct_access %x.ref, element0 [concrete = constants.%.01b] // CHECK:STDOUT: %.loc12_19.2: ref %empty_tuple.type = struct_access file.%y.var, element0 [concrete = constants.%.333] // CHECK:STDOUT: %.loc12_19.3: init %empty_tuple.type = tuple_init () to %.loc12_19.2 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc12_19.4: init %empty_tuple.type = converted %.loc12_19.1, %.loc12_19.3 [concrete = constants.%empty_tuple] diff --git a/toolchain/check/testdata/var/no_prelude/import.carbon b/toolchain/check/testdata/var/no_prelude/import.carbon index af7ca7efae37..2f4f17719ee5 100644 --- a/toolchain/check/testdata/var/no_prelude/import.carbon +++ b/toolchain/check/testdata/var/no_prelude/import.carbon @@ -41,7 +41,7 @@ var a: () = a_ref; // CHECK:STDOUT: %.loc4_13.2: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc4_13.3: type = converted %.loc4_13.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %a_ref: ref %empty_tuple.type = bind_name a_ref, %a_ref.var +// CHECK:STDOUT: %a_ref: ref %empty_tuple.type = bind_name a_ref, %a_ref.var [concrete = %a_ref.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -62,7 +62,10 @@ var a: () = a_ref; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %Implicit.a_ref: ref %empty_tuple.type = import_ref Implicit//default, a_ref, loaded +// CHECK:STDOUT: %Implicit.a_ref: ref %empty_tuple.type = import_ref Implicit//default, a_ref, loaded [concrete = %a_ref.var] +// CHECK:STDOUT: %a_ref.patt: %pattern_type = binding_pattern a_ref [concrete] +// CHECK:STDOUT: %a_ref.var_patt: %pattern_type = var_pattern %a_ref.patt [concrete] +// CHECK:STDOUT: %a_ref.var: ref %empty_tuple.type = var %a_ref.var_patt [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -81,12 +84,12 @@ var a: () = a_ref; // CHECK:STDOUT: %.loc4_9.2: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc4_9.3: type = converted %.loc4_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %a: ref %empty_tuple.type = bind_name a, %a.var +// CHECK:STDOUT: %a: ref %empty_tuple.type = bind_name a, %a.var [concrete = %a.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %a_ref.ref: ref %empty_tuple.type = name_ref a_ref, imports.%Implicit.a_ref +// CHECK:STDOUT: %a_ref.ref: ref %empty_tuple.type = name_ref a_ref, imports.%Implicit.a_ref [concrete = imports.%a_ref.var] // CHECK:STDOUT: %.loc4_13: init %empty_tuple.type = tuple_init () to file.%a.var [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc4_1: init %empty_tuple.type = converted %a_ref.ref, %.loc4_13 [concrete = constants.%empty_tuple] // CHECK:STDOUT: assign file.%a.var, %.loc4_1 diff --git a/toolchain/check/testdata/var/no_prelude/import_access.carbon b/toolchain/check/testdata/var/no_prelude/import_access.carbon index 75b4da01f631..b8cde91bb170 100644 --- a/toolchain/check/testdata/var/no_prelude/import_access.carbon +++ b/toolchain/check/testdata/var/no_prelude/import_access.carbon @@ -73,7 +73,7 @@ var v2: () = Test.v; // CHECK:STDOUT: %.loc4_17.2: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc4_17.3: type = converted %.loc4_17.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %v: ref %empty_tuple.type = bind_name v, %v.var +// CHECK:STDOUT: %v: ref %empty_tuple.type = bind_name v, %v.var [concrete = %v.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -94,7 +94,10 @@ var v2: () = Test.v; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %Test.v: ref %empty_tuple.type = import_ref Test//def, v, loaded +// CHECK:STDOUT: %Test.v: ref %empty_tuple.type = import_ref Test//def, v, loaded [concrete = %v.var] +// CHECK:STDOUT: %v.patt: %pattern_type = binding_pattern v [concrete] +// CHECK:STDOUT: %v.var_patt: %pattern_type = var_pattern %v.patt [concrete] +// CHECK:STDOUT: %v.var: ref %empty_tuple.type = var %v.var_patt [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -113,12 +116,12 @@ var v2: () = Test.v; // CHECK:STDOUT: %.loc4_10.2: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc4_10.3: type = converted %.loc4_10.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %v2: ref %empty_tuple.type = bind_name v2, %v2.var +// CHECK:STDOUT: %v2: ref %empty_tuple.type = bind_name v2, %v2.var [concrete = %v2.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %v.ref: ref %empty_tuple.type = name_ref v, imports.%Test.v +// CHECK:STDOUT: %v.ref: ref %empty_tuple.type = name_ref v, imports.%Test.v [concrete = imports.%v.var] // CHECK:STDOUT: %.loc4_14: init %empty_tuple.type = tuple_init () to file.%v2.var [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc4_1: init %empty_tuple.type = converted %v.ref, %.loc4_14 [concrete = constants.%empty_tuple] // CHECK:STDOUT: assign file.%v2.var, %.loc4_1 @@ -147,7 +150,7 @@ var v2: () = Test.v; // CHECK:STDOUT: %.loc10_10.2: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc10_10.3: type = converted %.loc10_10.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %v2: ref %empty_tuple.type = bind_name v2, %v2.var +// CHECK:STDOUT: %v2: ref %empty_tuple.type = bind_name v2, %v2.var [concrete = %v2.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -186,7 +189,7 @@ var v2: () = Test.v; // CHECK:STDOUT: %.loc10_10.2: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc10_10.3: type = converted %.loc10_10.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %v2: ref %empty_tuple.type = bind_name v2, %v2.var +// CHECK:STDOUT: %v2: ref %empty_tuple.type = bind_name v2, %v2.var [concrete = %v2.var] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { diff --git a/toolchain/check/testdata/where_expr/equal_rewrite.carbon b/toolchain/check/testdata/where_expr/equal_rewrite.carbon index f95b35193270..b3b54e5dc8ed 100644 --- a/toolchain/check/testdata/where_expr/equal_rewrite.carbon +++ b/toolchain/check/testdata/where_expr/equal_rewrite.carbon @@ -1602,7 +1602,7 @@ let K: (E where .F = .Self.G) = bool; // CHECK:STDOUT: requirement_rewrite %impl.elem1.loc15, %.loc15_37.2 // CHECK:STDOUT: } // CHECK:STDOUT: } -// CHECK:STDOUT: %H: %E_where.type.82c = bind_name H, +// CHECK:STDOUT: %H: %E_where.type.82c = bind_name H, [concrete = ] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %J.patt: %pattern_type.562 = binding_pattern J [concrete] // CHECK:STDOUT: } @@ -1631,7 +1631,7 @@ let K: (E where .F = .Self.G) = bool; // CHECK:STDOUT: requirement_rewrite %impl.elem1.loc21, %i32 // CHECK:STDOUT: } // CHECK:STDOUT: } -// CHECK:STDOUT: %J: %E_where.type.a0d = bind_name J, +// CHECK:STDOUT: %J: %E_where.type.a0d = bind_name J, [concrete = ] // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %K.patt: %pattern_type.e21 = binding_pattern K [concrete] // CHECK:STDOUT: } @@ -1652,7 +1652,7 @@ let K: (E where .F = .Self.G) = bool; // CHECK:STDOUT: requirement_rewrite %impl.elem0.loc27, %impl.elem1.loc27 // CHECK:STDOUT: } // CHECK:STDOUT: } -// CHECK:STDOUT: %K: %E_where.type.0ba = bind_name K, +// CHECK:STDOUT: %K: %E_where.type.0ba = bind_name K, [concrete = ] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @E { diff --git a/toolchain/check/testdata/where_expr/fail_not_facet.carbon b/toolchain/check/testdata/where_expr/fail_not_facet.carbon index 81e25c998b86..7928ca76ed8f 100644 --- a/toolchain/check/testdata/where_expr/fail_not_facet.carbon +++ b/toolchain/check/testdata/where_expr/fail_not_facet.carbon @@ -173,6 +173,6 @@ var v: e where .x = 3; // CHECK:STDOUT: requirement_rewrite %x.ref, // CHECK:STDOUT: } // CHECK:STDOUT: } -// CHECK:STDOUT: %v: = bind_name v, +// CHECK:STDOUT: %v: = bind_name v, [concrete = ] // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/lower/constant.cpp b/toolchain/lower/constant.cpp index ac8153bd96d5..20098d96a265 100644 --- a/toolchain/lower/constant.cpp +++ b/toolchain/lower/constant.cpp @@ -70,9 +70,9 @@ class ConstantContext { return file_context_->GetTypeAsValue(); } - // Returns a lowered address for the given global. - auto GetGlobal(SemIR::InstId inst_id) const -> llvm::Constant* { - return file_context_->global_variables().Lookup(inst_id).value(); + // Returns a lowered global variable declaration. + auto BuildGlobalVariableDecl(SemIR::VarStorage inst) -> llvm::Constant* { + return file_context_->BuildGlobalVariableDecl(inst); } // Sets the index of the constant we most recently lowered. This is used to @@ -145,11 +145,11 @@ static auto EmitAsConstant(ConstantContext& context, SemIR::TupleValue inst) cast(context.GetType(inst.type_id))); } -static auto EmitAsConstant(ConstantContext& /*context*/, SemIR::AddrOf /*inst*/) +static auto EmitAsConstant(ConstantContext& context, SemIR::AddrOf inst) -> llvm::Constant* { - // TODO: Constant lvalue support. For now we have no constant lvalues, so we - // should never form a constant AddrOf. - CARBON_FATAL("AddrOf constants not supported yet"); + // A constant reference expression is lowered as a pointer, so `AddrOf` is a + // no-op. + return context.GetConstant(inst.lvalue_id); } static auto EmitAsConstant(ConstantContext& context, @@ -254,11 +254,8 @@ static auto EmitAsConstant(ConstantContext& /*context*/, static auto EmitAsConstant(ConstantContext& context, SemIR::VarStorage inst) -> llvm::Constant* { - // Look up the variable by its `pattern_id`. - // TODO: Look it up by its `inst_id` instead, and stop including a mapping - // from `pattern_id` to global variables in the file context's global - // variables list. - return context.GetGlobal(inst.pattern_id); + // Create the corresponding global variable declaration. + return context.BuildGlobalVariableDecl(inst); } // Tries to emit an LLVM constant value for this constant instruction. Centrally diff --git a/toolchain/lower/file_context.cpp b/toolchain/lower/file_context.cpp index 83c2e45defc2..bccfec19dbfc 100644 --- a/toolchain/lower/file_context.cpp +++ b/toolchain/lower/file_context.cpp @@ -22,6 +22,7 @@ #include "toolchain/lower/mangler.h" #include "toolchain/sem_ir/absolute_node_id.h" #include "toolchain/sem_ir/entry_point.h" +#include "toolchain/sem_ir/expr_info.h" #include "toolchain/sem_ir/file.h" #include "toolchain/sem_ir/function.h" #include "toolchain/sem_ir/generic.h" @@ -92,7 +93,11 @@ auto FileContext::Run() -> std::unique_ptr { // Specific functions are lowered when we emit a reference to them. specific_functions_.resize(sem_ir_->specifics().size()); - // Lower global variable declarations. + // Lower constants. + constants_.resize(sem_ir_->insts().size()); + LowerConstants(*this, constants_); + + // Lower global variable definitions. // TODO: Storing both a `constants_` array and a separate `global_variables_` // map is redundant. for (auto inst_id : @@ -100,18 +105,25 @@ auto FileContext::Run() -> std::unique_ptr { // Only `VarStorage` indicates a global variable declaration in the // top instruction block. if (auto var = sem_ir().insts().TryGetAs(inst_id)) { - auto* var_decl = BuildGlobalVariableDecl(*var); - global_variables_.Insert(inst_id, var_decl); - // Also store the global variable with the ID of the pattern so - // constant lowering can find it. - global_variables_.Insert(var->pattern_id, var_decl); + // Get the global variable declaration. We created this when lowering the + // constant unless the variable is unnamed, in which case we need to + // create it now. + llvm::GlobalVariable* llvm_var = nullptr; + if (sem_ir().constant_values().Get(inst_id).is_constant()) { + llvm_var = cast( + GetGlobal(inst_id, SemIR::SpecificId::None)); + } else { + llvm_var = BuildGlobalVariableDecl(*var); + } + + // Convert the declaration of this variable into a definition by adding an + // initializer. + global_variables_.Insert(inst_id, llvm_var); + llvm_var->setInitializer( + llvm::Constant::getNullValue(llvm_var->getValueType())); } } - // Lower constants. - constants_.resize(sem_ir_->insts().size()); - LowerConstants(*this, constants_); - // Lower function definitions. for (auto [id, _] : sem_ir_->functions().enumerate()) { BuildFunctionDefinition(id); @@ -189,12 +201,27 @@ auto FileContext::GetGlobal(SemIR::InstId inst_id, CARBON_CHECK(const_id.is_concrete(), "Missing value: {0} {1} {2}", inst_id, specific_id, sem_ir().insts().Get(inst_id)); auto const_inst_id = sem_ir().constant_values().GetInstId(const_id); + auto* const_value = constants_[const_inst_id.index]; // For value expressions and initializing expressions, the value produced by // a constant instruction is a value representation of the constant. For // initializing expressions, `FinishInit` will perform a copy if needed. - // TODO: Handle reference expression constants. - auto* const_value = constants_[const_inst_id.index]; + switch (auto cat = SemIR::GetExprCategory(sem_ir(), const_inst_id)) { + case SemIR::ExprCategory::Value: + case SemIR::ExprCategory::Initializing: + break; + + case SemIR::ExprCategory::DurableRef: + case SemIR::ExprCategory::EphemeralRef: + // Constant reference expressions lower to an address. + return const_value; + + case SemIR::ExprCategory::NotExpr: + case SemIR::ExprCategory::Error: + case SemIR::ExprCategory::Mixed: + CARBON_FATAL("Unexpected category {0} for lowered constant {1}", cat, + sem_ir().insts().Get(const_inst_id)); + }; auto value_rep = SemIR::ValueRepr::ForType( sem_ir(), sem_ir().insts().Get(const_inst_id).type_id()); @@ -202,6 +229,8 @@ auto FileContext::GetGlobal(SemIR::InstId inst_id, return const_value; } + // The value representation is a pointer. Generate a variable to hold the + // value, or find and reuse an existing one. if (auto result = global_variables().Lookup(const_inst_id)) { return result.value(); } @@ -783,12 +812,9 @@ auto FileContext::BuildGlobalVariableDecl(SemIR::VarStorage var_storage) } auto* type = GetType(var_storage.type_id); - // TODO: Create a declaration instead of a definition if this variable was - // imported. return new llvm::GlobalVariable(llvm_module(), type, /*isConstant=*/false, linkage, - llvm::Constant::getNullValue(type), - mangled_name); + /*Initializer=*/nullptr, mangled_name); } auto FileContext::GetLocForDI(SemIR::InstId inst_id) -> LocForDI { diff --git a/toolchain/lower/file_context.h b/toolchain/lower/file_context.h index edbf593a8437..b728ad93fcd3 100644 --- a/toolchain/lower/file_context.h +++ b/toolchain/lower/file_context.h @@ -65,6 +65,8 @@ class FileContext { // Returns a lowered type for the given type_id. auto GetType(SemIR::TypeId type_id) -> llvm::Type* { CARBON_CHECK(type_id.has_value(), "Should not be called with `None`"); + CARBON_CHECK(type_id.is_concrete(), "Lowering symbolic type {0}: {1}", + type_id, sem_ir().types().GetAsInst(type_id)); CARBON_CHECK(types_[type_id.index], "Missing type {0}: {1}", type_id, sem_ir().types().GetAsInst(type_id)); return types_[type_id.index]; @@ -128,6 +130,11 @@ class FileContext { auto BuildFunctionTypeInfo(const SemIR::Function& function, SemIR::SpecificId specific_id) -> FunctionTypeInfo; + // Builds the global for the given instruction, which should then be cached by + // the caller. + auto BuildGlobalVariableDecl(SemIR::VarStorage var_storage) + -> llvm::GlobalVariable*; + private: // Builds the declaration for the given function, which should then be cached // by the caller. @@ -158,11 +165,6 @@ class FileContext { // the caller. auto BuildType(SemIR::InstId inst_id) -> llvm::Type*; - // Builds the global for the given instruction, which should then be cached by - // the caller. - auto BuildGlobalVariableDecl(SemIR::VarStorage var_storage) - -> llvm::GlobalVariable*; - auto BuildVtable(const SemIR::Class& class_info) -> llvm::GlobalVariable*; // State for building the LLVM IR. diff --git a/toolchain/lower/function_context.cpp b/toolchain/lower/function_context.cpp index ce7e0ad1229a..2698a3fc7a7f 100644 --- a/toolchain/lower/function_context.cpp +++ b/toolchain/lower/function_context.cpp @@ -77,7 +77,7 @@ static auto LowerInstHelper(FunctionContext& context, SemIR::InstId inst_id, } else if constexpr (InstT::Kind.constant_kind() == SemIR::InstConstantKind::Always || InstT::Kind.constant_kind() == - SemIR::InstConstantKind::Unique) { + SemIR::InstConstantKind::AlwaysUnique) { CARBON_FATAL("Missing constant value for constant instruction {0}", inst); } else if constexpr (InstT::Kind.is_type() == SemIR::InstIsType::Always) { // For instructions that are always of type `type`, produce the trivial diff --git a/toolchain/lower/testdata/var/import.carbon b/toolchain/lower/testdata/var/import.carbon new file mode 100644 index 000000000000..7d28be85bb08 --- /dev/null +++ b/toolchain/lower/testdata/var/import.carbon @@ -0,0 +1,190 @@ +// 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 +// +// AUTOUPDATE +// TIP: To test this file alone, run: +// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/lower/testdata/var/import.carbon +// TIP: To dump output, run: +// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/lower/testdata/var/import.carbon + +// --- simple.carbon + +library "[[@TEST_NAME]]"; + +var v: i32 = 42; + +// --- import_simple.carbon + +library "[[@TEST_NAME]]"; + +import library "simple"; + +fn Run() -> i32 { + return v; +} + +// --- tuple_pattern.carbon + +library "[[@TEST_NAME]]"; + +var (v: i32, w: i32) = (1, 2); + +let (x: i32, var y: i32) = (3, 4); + +var (_: i32, z: i32) = (5, 6); + +// --- import_tuple_pattern.carbon + +library "[[@TEST_NAME]]"; + +import library "tuple_pattern"; + +fn V() -> i32 { return v; } +fn W() -> i32 { return w; } +// TODO: Also test `x`. Right now, lowering a reference to an imported `let` asserts. +fn Y() -> i32 { return y; } +fn Z() -> i32 { return z; } + +// CHECK:STDOUT: ; ModuleID = 'simple.carbon' +// CHECK:STDOUT: source_filename = "simple.carbon" +// CHECK:STDOUT: +// CHECK:STDOUT: @_Cv.Main = global i32 0 +// CHECK:STDOUT: @llvm.global_ctors = appending global [1 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 0, ptr @_C__global_init.Main, ptr null }] +// CHECK:STDOUT: +// CHECK:STDOUT: define void @_C__global_init.Main() !dbg !4 { +// CHECK:STDOUT: entry: +// CHECK:STDOUT: store i32 42, ptr @_Cv.Main, align 4, !dbg !7 +// CHECK:STDOUT: ret void, !dbg !8 +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: !llvm.module.flags = !{!0, !1} +// CHECK:STDOUT: !llvm.dbg.cu = !{!2} +// CHECK:STDOUT: +// CHECK:STDOUT: !0 = !{i32 7, !"Dwarf Version", i32 5} +// CHECK:STDOUT: !1 = !{i32 2, !"Debug Info Version", i32 3} +// CHECK:STDOUT: !2 = distinct !DICompileUnit(language: DW_LANG_C, file: !3, producer: "carbon", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug) +// CHECK:STDOUT: !3 = !DIFile(filename: "simple.carbon", directory: "") +// CHECK:STDOUT: !4 = distinct !DISubprogram(name: "__global_init", linkageName: "_C__global_init.Main", scope: null, file: !3, type: !5, spFlags: DISPFlagDefinition, unit: !2) +// CHECK:STDOUT: !5 = !DISubroutineType(types: !6) +// CHECK:STDOUT: !6 = !{} +// CHECK:STDOUT: !7 = !DILocation(line: 4, column: 1, scope: !4) +// CHECK:STDOUT: !8 = !DILocation(line: 0, scope: !4) +// CHECK:STDOUT: ; ModuleID = 'import_simple.carbon' +// CHECK:STDOUT: source_filename = "import_simple.carbon" +// CHECK:STDOUT: +// CHECK:STDOUT: @_Cv.Main = external global i32 +// CHECK:STDOUT: +// CHECK:STDOUT: define i32 @main() !dbg !4 { +// CHECK:STDOUT: entry: +// CHECK:STDOUT: %.loc7 = load i32, ptr @_Cv.Main, align 4, !dbg !7 +// CHECK:STDOUT: ret i32 %.loc7, !dbg !8 +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: !llvm.module.flags = !{!0, !1} +// CHECK:STDOUT: !llvm.dbg.cu = !{!2} +// CHECK:STDOUT: +// CHECK:STDOUT: !0 = !{i32 7, !"Dwarf Version", i32 5} +// CHECK:STDOUT: !1 = !{i32 2, !"Debug Info Version", i32 3} +// CHECK:STDOUT: !2 = distinct !DICompileUnit(language: DW_LANG_C, file: !3, producer: "carbon", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug) +// CHECK:STDOUT: !3 = !DIFile(filename: "import_simple.carbon", directory: "") +// CHECK:STDOUT: !4 = distinct !DISubprogram(name: "Run", linkageName: "main", scope: null, file: !3, line: 6, type: !5, spFlags: DISPFlagDefinition, unit: !2) +// CHECK:STDOUT: !5 = !DISubroutineType(types: !6) +// CHECK:STDOUT: !6 = !{} +// CHECK:STDOUT: !7 = !DILocation(line: 7, column: 10, scope: !4) +// CHECK:STDOUT: !8 = !DILocation(line: 7, column: 3, scope: !4) +// CHECK:STDOUT: ; ModuleID = 'tuple_pattern.carbon' +// CHECK:STDOUT: source_filename = "tuple_pattern.carbon" +// CHECK:STDOUT: +// CHECK:STDOUT: @_Cv.Main = global { i32, i32 } zeroinitializer +// CHECK:STDOUT: @_Cy.Main = global i32 0 +// CHECK:STDOUT: @_Cz.Main = global { i32, i32 } zeroinitializer +// CHECK:STDOUT: @tuple.21c.loc4_1 = internal constant { i32, i32 } { i32 1, i32 2 } +// CHECK:STDOUT: @tuple.092.loc8_1 = internal constant { i32, i32 } { i32 5, i32 6 } +// CHECK:STDOUT: @llvm.global_ctors = appending global [1 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 0, ptr @_C__global_init.Main, ptr null }] +// CHECK:STDOUT: +// CHECK:STDOUT: define void @_C__global_init.Main() !dbg !4 { +// CHECK:STDOUT: entry: +// CHECK:STDOUT: call void @llvm.memcpy.p0.p0.i64(ptr align 4 @_Cv.Main, ptr align 4 @tuple.21c.loc4_1, i64 8, i1 false), !dbg !7 +// CHECK:STDOUT: store i32 4, ptr @_Cy.Main, align 4, !dbg !8 +// CHECK:STDOUT: call void @llvm.memcpy.p0.p0.i64(ptr align 4 @_Cz.Main, ptr align 4 @tuple.092.loc8_1, i64 8, i1 false), !dbg !9 +// CHECK:STDOUT: ret void, !dbg !10 +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: ; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite) +// CHECK:STDOUT: declare void @llvm.memcpy.p0.p0.i64(ptr noalias writeonly captures(none), ptr noalias readonly captures(none), i64, i1 immarg) #0 +// CHECK:STDOUT: +// CHECK:STDOUT: ; uselistorder directives +// CHECK:STDOUT: uselistorder ptr @llvm.memcpy.p0.p0.i64, { 1, 0 } +// CHECK:STDOUT: +// CHECK:STDOUT: attributes #0 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } +// CHECK:STDOUT: +// CHECK:STDOUT: !llvm.module.flags = !{!0, !1} +// CHECK:STDOUT: !llvm.dbg.cu = !{!2} +// CHECK:STDOUT: +// CHECK:STDOUT: !0 = !{i32 7, !"Dwarf Version", i32 5} +// CHECK:STDOUT: !1 = !{i32 2, !"Debug Info Version", i32 3} +// CHECK:STDOUT: !2 = distinct !DICompileUnit(language: DW_LANG_C, file: !3, producer: "carbon", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug) +// CHECK:STDOUT: !3 = !DIFile(filename: "tuple_pattern.carbon", directory: "") +// CHECK:STDOUT: !4 = distinct !DISubprogram(name: "__global_init", linkageName: "_C__global_init.Main", scope: null, file: !3, type: !5, spFlags: DISPFlagDefinition, unit: !2) +// CHECK:STDOUT: !5 = !DISubroutineType(types: !6) +// CHECK:STDOUT: !6 = !{} +// CHECK:STDOUT: !7 = !DILocation(line: 4, column: 1, scope: !4) +// CHECK:STDOUT: !8 = !DILocation(line: 6, column: 14, scope: !4) +// CHECK:STDOUT: !9 = !DILocation(line: 8, column: 1, scope: !4) +// CHECK:STDOUT: !10 = !DILocation(line: 0, scope: !4) +// CHECK:STDOUT: ; ModuleID = 'import_tuple_pattern.carbon' +// CHECK:STDOUT: source_filename = "import_tuple_pattern.carbon" +// CHECK:STDOUT: +// CHECK:STDOUT: @_Cv.Main = external global { i32, i32 } +// CHECK:STDOUT: @_Cy.Main = external global i32 +// CHECK:STDOUT: @_Cz.Main = external global { i32, i32 } +// CHECK:STDOUT: +// CHECK:STDOUT: define i32 @_CV.Main() !dbg !4 { +// CHECK:STDOUT: entry: +// CHECK:STDOUT: %.loc6 = load i32, ptr @_Cv.Main, align 4, !dbg !7 +// CHECK:STDOUT: ret i32 %.loc6, !dbg !8 +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: define i32 @_CW.Main() !dbg !9 { +// CHECK:STDOUT: entry: +// CHECK:STDOUT: %.loc7 = load i32, ptr getelementptr inbounds nuw ({ i32, i32 }, ptr @_Cv.Main, i32 0, i32 1), align 4, !dbg !10 +// CHECK:STDOUT: ret i32 %.loc7, !dbg !11 +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: define i32 @_CY.Main() !dbg !12 { +// CHECK:STDOUT: entry: +// CHECK:STDOUT: %.loc9 = load i32, ptr @_Cy.Main, align 4, !dbg !13 +// CHECK:STDOUT: ret i32 %.loc9, !dbg !14 +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: define i32 @_CZ.Main() !dbg !15 { +// CHECK:STDOUT: entry: +// CHECK:STDOUT: %.loc10 = load i32, ptr getelementptr inbounds nuw ({ i32, i32 }, ptr @_Cz.Main, i32 0, i32 1), align 4, !dbg !16 +// CHECK:STDOUT: ret i32 %.loc10, !dbg !17 +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: ; uselistorder directives +// CHECK:STDOUT: uselistorder ptr @_Cv.Main, { 1, 0 } +// CHECK:STDOUT: +// CHECK:STDOUT: !llvm.module.flags = !{!0, !1} +// CHECK:STDOUT: !llvm.dbg.cu = !{!2} +// CHECK:STDOUT: +// CHECK:STDOUT: !0 = !{i32 7, !"Dwarf Version", i32 5} +// CHECK:STDOUT: !1 = !{i32 2, !"Debug Info Version", i32 3} +// CHECK:STDOUT: !2 = distinct !DICompileUnit(language: DW_LANG_C, file: !3, producer: "carbon", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug) +// CHECK:STDOUT: !3 = !DIFile(filename: "import_tuple_pattern.carbon", directory: "") +// CHECK:STDOUT: !4 = distinct !DISubprogram(name: "V", linkageName: "_CV.Main", scope: null, file: !3, line: 6, type: !5, spFlags: DISPFlagDefinition, unit: !2) +// CHECK:STDOUT: !5 = !DISubroutineType(types: !6) +// CHECK:STDOUT: !6 = !{} +// CHECK:STDOUT: !7 = !DILocation(line: 6, column: 24, scope: !4) +// CHECK:STDOUT: !8 = !DILocation(line: 6, column: 17, scope: !4) +// CHECK:STDOUT: !9 = distinct !DISubprogram(name: "W", linkageName: "_CW.Main", scope: null, file: !3, line: 7, type: !5, spFlags: DISPFlagDefinition, unit: !2) +// CHECK:STDOUT: !10 = !DILocation(line: 7, column: 24, scope: !9) +// CHECK:STDOUT: !11 = !DILocation(line: 7, column: 17, scope: !9) +// CHECK:STDOUT: !12 = distinct !DISubprogram(name: "Y", linkageName: "_CY.Main", scope: null, file: !3, line: 9, type: !5, spFlags: DISPFlagDefinition, unit: !2) +// CHECK:STDOUT: !13 = !DILocation(line: 9, column: 24, scope: !12) +// CHECK:STDOUT: !14 = !DILocation(line: 9, column: 17, scope: !12) +// CHECK:STDOUT: !15 = distinct !DISubprogram(name: "Z", linkageName: "_CZ.Main", scope: null, file: !3, line: 10, type: !5, spFlags: DISPFlagDefinition, unit: !2) +// CHECK:STDOUT: !16 = !DILocation(line: 10, column: 24, scope: !15) +// CHECK:STDOUT: !17 = !DILocation(line: 10, column: 17, scope: !15) diff --git a/toolchain/sem_ir/expr_info.h b/toolchain/sem_ir/expr_info.h index 2830861ec5e0..0994da10dbd9 100644 --- a/toolchain/sem_ir/expr_info.h +++ b/toolchain/sem_ir/expr_info.h @@ -42,6 +42,11 @@ enum class ExprCategory : int8_t { // Returns the expression category for an instruction. auto GetExprCategory(const File& file, InstId inst_id) -> ExprCategory; +// Returns whether the given expression category is for a reference expression. +inline auto IsRefCategory(ExprCategory cat) -> bool { + return cat == ExprCategory::DurableRef || cat == ExprCategory::EphemeralRef; +} + // Given an initializing expression, find its return slot argument. Returns // `None` if there is no return slot, because the initialization is not // performed in place. diff --git a/toolchain/sem_ir/inst_kind.h b/toolchain/sem_ir/inst_kind.h index 6cddefdb8724..1b45ad6d146d 100644 --- a/toolchain/sem_ir/inst_kind.h +++ b/toolchain/sem_ir/inst_kind.h @@ -73,13 +73,18 @@ enum class InstConstantKind : int8_t { // same as `WheneverPossible`, except that the operands are known in advance // to always be constant. For example, `IntValue`. Always, + // The instruction may be a unique constant, as described below for + // `AlwaysUnique`. Otherwise the instruction is not constant. This is used for + // `VarStorage`, where global variables are `AlwaysUnique` and other variables + // are non-constant. + ConditionalUnique, // This instruction is itself a unique constant. This is used for declarations // whose constant identity is simply themselves. The `ConstantId` for this // instruction will always be a concrete constant whose `InstId` refers // directly back to the instruction, rather than to a separate instruction in // the constants block. // TODO: Decide if this is the model we want for these cases. - Unique, + AlwaysUnique, }; // Whether constant evaluation of an instruction needs the instruction to have @@ -133,7 +138,7 @@ class InstKind : public CARBON_ENUM_BASE(InstKind) { InstIsType is_type = InstIsType::Never; InstConstantKind constant_kind = InstConstantKind::Indirect; InstConstantNeedsInstIdKind constant_needs_inst_id = - constant_kind == InstConstantKind::Unique + constant_kind == InstConstantKind::AlwaysUnique ? InstConstantNeedsInstIdKind::Permanent : InstConstantNeedsInstIdKind::No; TerminatorKind terminator_kind = TerminatorKind::NotTerminator; diff --git a/toolchain/sem_ir/typed_insts.h b/toolchain/sem_ir/typed_insts.h index 59f8f7a341ac..069efabbcd18 100644 --- a/toolchain/sem_ir/typed_insts.h +++ b/toolchain/sem_ir/typed_insts.h @@ -91,7 +91,7 @@ struct AnyFoundationDecl { struct AdaptDecl { static constexpr auto Kind = InstKind::AdaptDecl.Define( {.ir_name = "adapt_decl", - .constant_kind = InstConstantKind::Unique, + .constant_kind = InstConstantKind::AlwaysUnique, .is_lowered = false}); // No type_id; this is not a value. @@ -115,7 +115,7 @@ struct AddrOf { struct AddrPattern { static constexpr auto Kind = InstKind::AddrPattern.Define( {.ir_name = "addr_pattern", - .constant_kind = InstConstantKind::Unique, + .constant_kind = InstConstantKind::AlwaysUnique, .is_lowered = false}); // Always a PatternType whose scrutinee type represents the pointee type @@ -228,7 +228,7 @@ struct AssociatedConstantDecl { InstKind::AssociatedConstantDecl .Define( {.ir_name = "assoc_const_decl", - .constant_kind = InstConstantKind::Unique, + .constant_kind = InstConstantKind::AlwaysUnique, .is_lowered = false}); TypeId type_id; @@ -288,7 +288,8 @@ struct AutoType { // an `UnboundElementType`. struct BaseDecl { static constexpr auto Kind = InstKind::BaseDecl.Define( - {.ir_name = "base_decl", .constant_kind = InstConstantKind::Unique}); + {.ir_name = "base_decl", + .constant_kind = InstConstantKind::AlwaysUnique}); TypeId type_id; TypeInstId base_type_inst_id; @@ -334,7 +335,7 @@ struct BindAlias { struct BindName { // TODO: Make Parse::NodeId more specific. static constexpr auto Kind = InstKind::BindName.Define( - {.ir_name = "bind_name", .constant_kind = InstConstantKind::Never}); + {.ir_name = "bind_name", .constant_kind = InstConstantKind::Indirect}); TypeId type_id; EntityNameId entity_name_id; @@ -387,7 +388,7 @@ struct AnyBindingPattern { struct BindingPattern { static constexpr auto Kind = InstKind::BindingPattern.Define( {.ir_name = "binding_pattern", - .constant_kind = InstConstantKind::Unique, + .constant_kind = InstConstantKind::AlwaysUnique, .is_lowered = false}); TypeId type_id; @@ -399,7 +400,7 @@ struct SymbolicBindingPattern { static constexpr auto Kind = InstKind::SymbolicBindingPattern.Define({ .ir_name = "symbolic_binding_pattern", - .constant_kind = InstConstantKind::Unique, + .constant_kind = InstConstantKind::AlwaysUnique, .is_lowered = false, }); @@ -739,7 +740,8 @@ struct FacetValue { struct FieldDecl { static constexpr auto Kind = InstKind::FieldDecl.Define( - {.ir_name = "field_decl", .constant_kind = InstConstantKind::Unique}); + {.ir_name = "field_decl", + .constant_kind = InstConstantKind::AlwaysUnique}); TypeId type_id; NameId name_id; @@ -871,7 +873,7 @@ struct ImplDecl { {.ir_name = "impl_decl", // TODO: Modeling impls as unique doesn't properly handle impl // redeclarations. - .constant_kind = InstConstantKind::Unique, + .constant_kind = InstConstantKind::AlwaysUnique, .is_lowered = false}); // No type: an impl declaration is not a value. @@ -958,7 +960,7 @@ struct ImplWitnessAssociatedConstant { struct ImplWitnessTable { static constexpr auto Kind = InstKind::ImplWitnessTable.Define( {.ir_name = "impl_witness_table", - .constant_kind = InstConstantKind::Unique, + .constant_kind = InstConstantKind::AlwaysUnique, // TODO: For dynamic dispatch, we might want to lower witness tables as // constants. .is_lowered = false}); @@ -987,7 +989,7 @@ struct ImplWitnessTablePlaceholder { static constexpr auto Kind = InstKind::ImplWitnessTablePlaceholder.Define( {.ir_name = "impl_witness_table_placeholder", - .constant_kind = InstConstantKind::Unique, + .constant_kind = InstConstantKind::AlwaysUnique, .is_lowered = false}); static constexpr auto TypeInstId = MakeSingletonTypeInstId(); @@ -1202,7 +1204,7 @@ struct Namespace { {.ir_name = "namespace", // TODO: Modeling namespaces as unique doesn't properly handle // namespace redeclarations. - .constant_kind = InstConstantKind::Unique}); + .constant_kind = InstConstantKind::AlwaysUnique}); // The file's package namespace is a well-known instruction to help `package.` // qualified names. It will always be immediately after singletons. static constexpr InstId PackageInstId = InstId(SingletonInstKinds.size()); @@ -1298,7 +1300,7 @@ struct OutParamPattern { static constexpr auto Kind = InstKind::OutParamPattern.Define( {.ir_name = "out_param_pattern", - .constant_kind = InstConstantKind::Unique, + .constant_kind = InstConstantKind::AlwaysUnique, .is_lowered = false}); TypeId type_id; @@ -1311,7 +1313,7 @@ struct RefParamPattern { // TODO: Make Parse::NodeId more specific. static constexpr auto Kind = InstKind::RefParamPattern.Define( {.ir_name = "ref_param_pattern", - .constant_kind = InstConstantKind::Unique, + .constant_kind = InstConstantKind::AlwaysUnique, .is_lowered = false}); TypeId type_id; @@ -1325,7 +1327,7 @@ struct ValueParamPattern { static constexpr auto Kind = InstKind::ValueParamPattern.Define( {.ir_name = "value_param_pattern", - .constant_kind = InstConstantKind::Unique, + .constant_kind = InstConstantKind::AlwaysUnique, .is_lowered = false}); TypeId type_id; @@ -1442,7 +1444,7 @@ struct ReturnSlotPattern { static constexpr auto Kind = InstKind::ReturnSlotPattern.Define( {.ir_name = "return_slot_pattern", - .constant_kind = InstConstantKind::Unique, + .constant_kind = InstConstantKind::AlwaysUnique, .is_lowered = false}); // Always a PatternType whose scrutinee type is the return type of the @@ -1740,7 +1742,7 @@ struct TuplePattern { static constexpr auto Kind = InstKind::TuplePattern.Define( {.ir_name = "tuple_pattern", - .constant_kind = InstConstantKind::Unique, + .constant_kind = InstConstantKind::AlwaysUnique, .is_lowered = false}); // Always a PatternType whose scrutinee type is a tuple of the scrutinee @@ -1861,7 +1863,7 @@ struct VarPattern { static constexpr auto Kind = InstKind::VarPattern.Define( {.ir_name = "var_pattern", - .constant_kind = InstConstantKind::Unique, + .constant_kind = InstConstantKind::AlwaysUnique, .is_lowered = false}); // Always a PatternType that represents the same type as the type of @@ -1875,7 +1877,7 @@ struct VarStorage { // TODO: Make Parse::NodeId more specific. static constexpr auto Kind = InstKind::VarStorage.Define( {.ir_name = "var", - .constant_kind = InstConstantKind::Conditional, + .constant_kind = InstConstantKind::ConditionalUnique, .constant_needs_inst_id = InstConstantNeedsInstIdKind::Permanent, .has_cleanup = true});