diff --git a/toolchain/check/context.cpp b/toolchain/check/context.cpp index 5767ad7782d0..60ecab399e20 100644 --- a/toolchain/check/context.cpp +++ b/toolchain/check/context.cpp @@ -73,7 +73,7 @@ auto Context::VerifyOnFinish() const -> void { vtable_stack_.VerifyOnFinish(); region_stack_.VerifyOnFinish(); CARBON_CHECK(impl_lookup_stack_.empty()); - CARBON_CHECK(return_type_inst_id_ == std::nullopt); + CARBON_CHECK(return_form_expr_ == std::nullopt); #ifndef NDEBUG if (auto verify = sem_ir_->Verify(); !verify.ok()) { diff --git a/toolchain/check/context.h b/toolchain/check/context.h index dac1529e3ed0..4b20b70c7d0d 100644 --- a/toolchain/check/context.h +++ b/toolchain/check/context.h @@ -254,23 +254,33 @@ class Context { return rewrites_stack_; } - // Pushes inst_id onto the stack of return type declarations for in-progress + // Data about a form expression. + struct FormExpr { + // The inst ID of the form expression itself. + SemIR::InstId form_inst_id; + // The inst ID of the form expression's type component. + SemIR::TypeInstId type_component_id; + // The type ID corresponding to type_component_id. + SemIR::TypeId type_id; + }; + + // Pushes form_expr onto the stack of return form declarations for in-progress // function declarations. // // Note: the "stack" currently can only have one element, but that restriction // can be relaxed if it becomes possible to have multiple pending return type // declarations. - auto PushReturnTypeInstId(SemIR::TypeInstId inst_id) -> void { - CARBON_CHECK(return_type_inst_id_ == std::nullopt, - "TODO: make return_type_inst_id_ a stack if necessary"); - return_type_inst_id_ = inst_id; + auto PushReturnForm(FormExpr form_expr) -> void { + CARBON_CHECK(return_form_expr_ == std::nullopt, + "TODO: make form_expr_ a stack if necessary"); + return_form_expr_ = form_expr; } - // Pops a TypeInstId off the stack of return type declarations for in-progress + // Pops a FormExpr off the stack of return form declarations for in-progress // function declarations. - auto PopReturnTypeInstId() -> SemIR::TypeInstId { - CARBON_CHECK(return_type_inst_id_ != std::nullopt); - return *std::exchange(return_type_inst_id_, std::nullopt); + auto PopReturnForm() -> FormExpr { + CARBON_CHECK(return_form_expr_ != std::nullopt); + return *std::exchange(return_form_expr_, std::nullopt); } auto core_identifiers() -> CoreIdentifierCache& { return core_identifiers_; } @@ -504,8 +514,8 @@ class Context { // constraints to access values from earlier constraints. llvm::SmallVector> rewrites_stack_; - // Declared return type for the in-progress function declaration, if any. - std::optional return_type_inst_id_; + // Declared return form for the in-progress function declaration, if any. + std::optional return_form_expr_; // See `CoreIdentifierCache` for details. CoreIdentifierCache core_identifiers_; diff --git a/toolchain/check/convert.cpp b/toolchain/check/convert.cpp index 61e5c7a01644..00aea12a2739 100644 --- a/toolchain/check/convert.cpp +++ b/toolchain/check/convert.cpp @@ -42,7 +42,7 @@ namespace Carbon::Check { -// Marks the initializer `init_id` as initializing `target_id`. +// Marks the initializer `init_id` as initializing `target.init_id`. static auto MarkInitializerFor(SemIR::File& sem_ir, SemIR::InstId init_id, ConversionTarget& target) -> void { CARBON_CHECK(target.is_initializer()); @@ -1926,6 +1926,13 @@ auto TypeExpr::ForUnsugared(Context& context, SemIR::TypeId type_id) return {.inst_id = context.types().GetInstId(type_id), .type_id = type_id}; } +static auto DiagnoseTypeExprEvaluationFailure(Context& context, + SemIR::LocId loc_id) -> void { + CARBON_DIAGNOSTIC(TypeExprEvaluationFailure, Error, + "cannot evaluate type expression"); + context.emitter().Emit(loc_id, TypeExprEvaluationFailure); +} + auto ExprAsType(Context& context, SemIR::LocId loc_id, SemIR::InstId value_id, bool diagnose) -> TypeExpr { auto type_inst_id = @@ -1938,9 +1945,7 @@ auto ExprAsType(Context& context, SemIR::LocId loc_id, SemIR::InstId value_id, auto type_const_id = context.constant_values().Get(type_inst_id); if (!type_const_id.is_constant()) { if (diagnose) { - CARBON_DIAGNOSTIC(TypeExprEvaluationFailure, Error, - "cannot evaluate type expression"); - context.emitter().Emit(loc_id, TypeExprEvaluationFailure); + DiagnoseTypeExprEvaluationFailure(context, loc_id); } return {.inst_id = SemIR::ErrorInst::TypeInstId, .type_id = SemIR::ErrorInst::TypeId}; @@ -1950,6 +1955,58 @@ auto ExprAsType(Context& context, SemIR::LocId loc_id, SemIR::InstId value_id, .type_id = context.types().GetTypeIdForTypeConstantId(type_const_id)}; } +auto ExprAsReturnForm(Context& context, SemIR::LocId loc_id, + SemIR::InstId value_id) -> Context::FormExpr { + constexpr Context::FormExpr ErrorFormExpr = { + .form_inst_id = SemIR::ErrorInst::InstId, + .type_component_id = SemIR::ErrorInst::TypeInstId, + .type_id = SemIR::ErrorInst::TypeId}; + auto form_inst_id = SemIR::InstId::None; + auto type_inst_id = SemIR::InstId::None; + if (auto ref_tag = context.insts().TryGetAs(value_id)) { + type_inst_id = ConvertToValueOfType(context, loc_id, ref_tag->expr_id, + SemIR::TypeType::TypeId); + if (type_inst_id == SemIR::ErrorInst::InstId) { + return ErrorFormExpr; + } + if (!context.constant_values().Get(type_inst_id).is_constant()) { + DiagnoseTypeExprEvaluationFailure(context, + SemIR::LocId(ref_tag->expr_id)); + return ErrorFormExpr; + } + form_inst_id = AddInst( + context, + SemIR::LocIdAndInst::UncheckedLoc( + loc_id, SemIR::RefForm{.type_id = SemIR::FormType::TypeId, + .type_component_inst_id = type_inst_id})); + } else { + type_inst_id = ConvertToValueOfType(context, loc_id, value_id, + SemIR::TypeType::TypeId); + if (type_inst_id == SemIR::ErrorInst::InstId) { + return ErrorFormExpr; + } + if (!context.constant_values().Get(type_inst_id).is_constant()) { + DiagnoseTypeExprEvaluationFailure(context, loc_id); + return ErrorFormExpr; + } + form_inst_id = AddInst( + context, + SemIR::LocIdAndInst::UncheckedLoc( + loc_id, + SemIR::InitForm{ + .type_id = SemIR::FormType::TypeId, + .type_component_inst_id = type_inst_id, + .index = context.full_pattern_stack().NextCallParamIndex()})); + } + + auto type_const_id = context.constant_values().Get(type_inst_id); + CARBON_CHECK(type_const_id.is_constant()); + + return {.form_inst_id = form_inst_id, + .type_component_id = context.types().GetAsTypeInstId(type_inst_id), + .type_id = context.types().GetTypeIdForTypeConstantId(type_const_id)}; +} + auto DiscardExpr(Context& context, SemIR::InstId expr_id) -> void { // If we discard an initializing expression, convert it to a value or // reference so that it has something to initialize. diff --git a/toolchain/check/convert.h b/toolchain/check/convert.h index cffb8e21ac01..8d07ce2e9673 100644 --- a/toolchain/check/convert.h +++ b/toolchain/check/convert.h @@ -169,6 +169,11 @@ inline constexpr TypeExpr TypeExpr::None = {.inst_id = SemIR::TypeInstId::None, auto ExprAsType(Context& context, SemIR::LocId loc_id, SemIR::InstId value_id, bool diagnose = true) -> TypeExpr; +// Converts an expression for use as a form. If the expression is a type +// expression, it is interpreted as an initializing form. +auto ExprAsReturnForm(Context& context, SemIR::LocId loc_id, + SemIR::InstId value_id) -> Context::FormExpr; + // Handles an expression whose result value is unused. auto DiscardExpr(Context& context, SemIR::InstId expr_id) -> void; diff --git a/toolchain/check/function.cpp b/toolchain/check/function.cpp index 9c2355dba75a..b55d408084c8 100644 --- a/toolchain/check/function.cpp +++ b/toolchain/check/function.cpp @@ -139,8 +139,6 @@ auto CheckFunctionDefinitionSignature(Context& context, if (function.return_type_inst_id.has_value()) { CheckFunctionReturnType(context, SemIR::LocId(function.return_type_inst_id), function, SemIR::SpecificId::None); - // Don't re-check the return type below. - params_to_complete.consume_back(); } // Check the parameter types are complete. diff --git a/toolchain/check/handle_function.cpp b/toolchain/check/handle_function.cpp index 766f14ee12bf..92e822c0f37a 100644 --- a/toolchain/check/handle_function.cpp +++ b/toolchain/check/handle_function.cpp @@ -53,10 +53,7 @@ auto HandleParseNode(Context& context, Parse::FunctionIntroducerId node_id) } auto HandleParseNode(Context& context, Parse::ReturnTypeId node_id) -> bool { - // Propagate the type expression. auto [type_node_id, type_inst_id] = context.node_stack().PopExprWithNodeId(); - auto as_type = ExprAsType(context, type_node_id, type_inst_id); - context.PushReturnTypeInstId(as_type.inst_id); // If the previous node was `IdentifierNameBeforeParams`, then it would have // caused these entries to be pushed to the pattern stacks. But it's possible @@ -71,16 +68,40 @@ auto HandleParseNode(Context& context, Parse::ReturnTypeId node_id) -> bool { FullPatternStack::Kind::ExplicitParamList); } - auto pattern_type_id = GetPatternType(context, as_type.type_id); - auto return_slot_pattern_id = AddPatternInst( - context, node_id, - {.type_id = pattern_type_id, .type_inst_id = as_type.inst_id}); - auto param_pattern_id = AddPatternInst( - context, node_id, - {.type_id = pattern_type_id, - .subpattern_id = return_slot_pattern_id, - .index = context.full_pattern_stack().NextCallParamIndex()}); - context.node_stack().Push(node_id, param_pattern_id); + // Propagate the type expression. + auto form_expr = ExprAsReturnForm(context, type_node_id, type_inst_id); + context.PushReturnForm(form_expr); + + llvm::SmallVector return_patterns; + auto form_inst = context.insts().Get(form_expr.form_inst_id); + CARBON_KIND_SWITCH(form_inst) { + case SemIR::RefForm::Kind: { + break; + } + case CARBON_KIND(SemIR::InitForm init_form): { + auto pattern_type_id = GetPatternType(context, form_expr.type_id); + auto return_slot_pattern_id = AddPatternInst( + context, node_id, + {.type_id = pattern_type_id, + .type_inst_id = form_expr.type_component_id}); + return_patterns.push_back(AddPatternInst( + context, + SemIR::LocIdAndInst::UncheckedLoc( + type_node_id, + SemIR::OutParamPattern{.type_id = pattern_type_id, + .subpattern_id = return_slot_pattern_id, + .index = init_form.index}))); + break; + } + case SemIR::ErrorInst::Kind: { + break; + } + default: + CARBON_FATAL("unexpected inst kind: {0}", form_inst); + } + + context.node_stack().Push( + node_id, context.inst_blocks().AddCanonical(return_patterns)); return true; } @@ -385,17 +406,16 @@ static auto BuildFunctionDecl(Context& context, Parse::AnyFunctionDeclId node_id, bool is_definition) -> std::pair { - llvm::SmallVector return_patterns; + auto return_patterns_id = SemIR::InstBlockId::None; auto return_type_inst_id = SemIR::TypeInstId::None; - if (auto [return_node, maybe_return_slot_pattern_id] = + if (auto [return_node, maybe_return_patterns_id] = context.node_stack().PopWithNodeIdIf(); - maybe_return_slot_pattern_id) { - return_patterns.push_back(*maybe_return_slot_pattern_id); - return_type_inst_id = context.PopReturnTypeInstId(); + maybe_return_patterns_id) { + return_patterns_id = *maybe_return_patterns_id; + return_type_inst_id = context.PopReturnForm().type_component_id; CARBON_CHECK(return_type_inst_id.has_value()); } - auto return_patterns_id = context.inst_blocks().Add(return_patterns); auto name = PopNameComponent(context, return_patterns_id); auto name_context = context.decl_name_stack().FinishName(name); diff --git a/toolchain/check/import_ref.cpp b/toolchain/check/import_ref.cpp index 663a82a50cfa..af910aebc812 100644 --- a/toolchain/check/import_ref.cpp +++ b/toolchain/check/import_ref.cpp @@ -3236,6 +3236,24 @@ static auto TryResolveTypedInst(ImportRefResolver& resolver, {.elements_id = elements_id, .impl_id = impl_id}); } +static auto TryResolveTypedInst(ImportRefResolver& resolver, + SemIR::InitForm inst) -> ResolveResult { + auto type_const_id = GetLocalConstantId(resolver, inst.type_id); + auto type_component_const_id = + GetLocalConstantId(resolver, inst.type_component_inst_id); + if (resolver.HasNewWork()) { + return ResolveResult::Retry(); + } + return ResolveResult::Deduplicated( + resolver, + SemIR::InitForm{ + .type_id = + resolver.local_types().GetTypeIdForTypeConstantId(type_const_id), + .type_component_inst_id = resolver.local_constant_values().GetInstId( + type_component_const_id), + .index = inst.index}); +} + static auto TryResolveTypedInst(ImportRefResolver& resolver, SemIR::IntValue inst) -> ResolveResult { auto type_id = GetLocalConstantId(resolver, inst.type_id); @@ -3807,6 +3825,9 @@ static auto TryResolveInstCanonical(ImportRefResolver& resolver, case CARBON_KIND(SemIR::ImportRefLoaded inst): { return TryResolveTypedInst(resolver, inst, constant_inst_id); } + case CARBON_KIND(SemIR::InitForm inst): { + return TryResolveTypedInst(resolver, inst); + } case CARBON_KIND(SemIR::IntValue inst): { return TryResolveTypedInst(resolver, inst); } diff --git a/toolchain/check/node_stack.h b/toolchain/check/node_stack.h index f440a9ebd31c..bc8f95946d3a 100644 --- a/toolchain/check/node_stack.h +++ b/toolchain/check/node_stack.h @@ -426,6 +426,7 @@ class NodeStack { case Parse::NodeKind::IfExprIf: case Parse::NodeKind::ImplicitParamList: case Parse::NodeKind::WhileConditionStart: + case Parse::NodeKind::ReturnType: return Id::KindFor(); case Parse::NodeKind::FunctionDefinitionStart: case Parse::NodeKind::BuiltinFunctionDefinitionStart: @@ -446,8 +447,6 @@ class NodeStack { case Parse::NodeKind::DefaultLibrary: case Parse::NodeKind::LibraryName: return Id::KindFor(); - case Parse::NodeKind::ReturnType: - return Id::KindFor(); case Parse::NodeKind::AssociatedConstantInitializer: case Parse::NodeKind::AssociatedConstantIntroducer: case Parse::NodeKind::BuiltinName: diff --git a/toolchain/check/return.cpp b/toolchain/check/return.cpp index 7571c3e55f73..f5efd06c116e 100644 --- a/toolchain/check/return.cpp +++ b/toolchain/check/return.cpp @@ -147,7 +147,8 @@ auto BuildReturnWithExpr(Context& context, SemIR::LocId loc_id, NoteReturnedVar(diag, returned_var_id); diag.Emit(); expr_id = SemIR::ErrorInst::InstId; - } else if (!return_info.is_valid()) { + } else if (!return_info.is_valid() || + return_info.type_id == SemIR::ErrorInst::TypeId) { // We already diagnosed that the return type is invalid. Don't try to // convert to it. expr_id = SemIR::ErrorInst::InstId; diff --git a/toolchain/check/testdata/basics/dump_sem_ir_ranges.carbon b/toolchain/check/testdata/basics/dump_sem_ir_ranges.carbon index f283f4775112..c056d9f6ea1d 100644 --- a/toolchain/check/testdata/basics/dump_sem_ir_ranges.carbon +++ b/toolchain/check/testdata/basics/dump_sem_ir_ranges.carbon @@ -107,6 +107,7 @@ library "[[@TEST_NAME]]"; // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %DestroyOp.type: type = fn_type @DestroyOp [concrete] // CHECK:STDOUT: %DestroyOp: %DestroyOp.type = struct_value () [concrete] +// CHECK:STDOUT: %.62c: form = init_form %empty_tuple.type, call_param0 [concrete] // CHECK:STDOUT: %B.type: type = fn_type @B [concrete] // CHECK:STDOUT: %B: %B.type = struct_value () [concrete] // CHECK:STDOUT: %C.type: type = fn_type @C [concrete] @@ -123,6 +124,7 @@ library "[[@TEST_NAME]]"; // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc17_12.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc17_12.2: type = converted %.loc17_12.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %.loc17_12.3: form = init_form %.loc17_12.2, call_param0 [concrete = constants.%.62c] // CHECK:STDOUT: %return.param: ref %empty_tuple.type = out_param call_param0 // CHECK:STDOUT: %return: ref %empty_tuple.type = return_slot %return.param // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/basics/raw_identifier.carbon b/toolchain/check/testdata/basics/raw_identifier.carbon index 360e7def41ea..00726063e03a 100644 --- a/toolchain/check/testdata/basics/raw_identifier.carbon +++ b/toolchain/check/testdata/basics/raw_identifier.carbon @@ -29,6 +29,7 @@ fn C(r#if: ()) -> () { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %empty_tuple.type [concrete] +// CHECK:STDOUT: %.3e7: form = init_form %empty_tuple.type, call_param1 [concrete] // CHECK:STDOUT: %A.type: type = fn_type @A [concrete] // CHECK:STDOUT: %A: %A.type = struct_value () [concrete] // CHECK:STDOUT: %B.type: type = fn_type @B [concrete] @@ -51,6 +52,7 @@ fn C(r#if: ()) -> () { // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc14_17.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc14_17.2: type = converted %.loc14_17.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %.loc14_17.3: form = init_form %.loc14_17.2, call_param1 [concrete = constants.%.3e7] // CHECK:STDOUT: %n.param: %empty_tuple.type = value_param call_param0 // CHECK:STDOUT: %.loc14_10.1: type = splice_block %.loc14_10.3 [concrete = constants.%empty_tuple.type] { // CHECK:STDOUT: %.loc14_10.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] @@ -68,6 +70,7 @@ fn C(r#if: ()) -> () { // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc18_19.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc18_19.2: type = converted %.loc18_19.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %.loc18_19.3: form = init_form %.loc18_19.2, call_param1 [concrete = constants.%.3e7] // CHECK:STDOUT: %n.param: %empty_tuple.type = value_param call_param0 // CHECK:STDOUT: %.loc18_12.1: type = splice_block %.loc18_12.3 [concrete = constants.%empty_tuple.type] { // CHECK:STDOUT: %.loc18_12.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] @@ -85,6 +88,7 @@ fn C(r#if: ()) -> () { // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc22_20.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc22_20.2: type = converted %.loc22_20.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %.loc22_20.3: form = init_form %.loc22_20.2, call_param1 [concrete = constants.%.3e7] // CHECK:STDOUT: %if.param: %empty_tuple.type = value_param call_param0 // CHECK:STDOUT: %.loc22_13.1: type = splice_block %.loc22_13.3 [concrete = constants.%empty_tuple.type] { // CHECK:STDOUT: %.loc22_13.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] diff --git a/toolchain/check/testdata/basics/raw_sem_ir/builtins.carbon b/toolchain/check/testdata/basics/raw_sem_ir/builtins.carbon index ca14683cff13..117e2a2bbfb3 100644 --- a/toolchain/check/testdata/basics/raw_sem_ir/builtins.carbon +++ b/toolchain/check/testdata/basics/raw_sem_ir/builtins.carbon @@ -20,7 +20,7 @@ // CHECK:STDOUT: import_ir_insts: {} // CHECK:STDOUT: clang_decls: {} // CHECK:STDOUT: name_scopes: -// CHECK:STDOUT: name_scope0: {inst: instE, parent_scope: name_scope, has_error: false, extended_scopes: [], names: {}} +// CHECK:STDOUT: name_scope0: {inst: instF, parent_scope: name_scope, has_error: false, extended_scopes: [], names: {}} // CHECK:STDOUT: entity_names: {} // CHECK:STDOUT: cpp_global_vars: {} // CHECK:STDOUT: functions: {} @@ -32,6 +32,8 @@ // CHECK:STDOUT: types: // CHECK:STDOUT: 'type(TypeType)': // CHECK:STDOUT: value_repr: {kind: copy, type: type(TypeType)} +// CHECK:STDOUT: 'type(inst(FormType))': +// CHECK:STDOUT: value_repr: {kind: copy, type: type(inst(FormType))} // CHECK:STDOUT: 'type(Error)': // CHECK:STDOUT: value_repr: {kind: copy, type: type(Error)} // CHECK:STDOUT: 'type(inst(NamespaceType))': @@ -44,6 +46,7 @@ // CHECK:STDOUT: 'inst(CharLiteralType)': {kind: CharLiteralType, type: type(TypeType)} // CHECK:STDOUT: 'inst(ErrorInst)': {kind: ErrorInst, type: type(Error)} // CHECK:STDOUT: 'inst(FloatLiteralType)': {kind: FloatLiteralType, type: type(TypeType)} +// CHECK:STDOUT: 'inst(FormType)': {kind: FormType, type: type(TypeType)} // CHECK:STDOUT: 'inst(InstType)': {kind: InstType, type: type(TypeType)} // CHECK:STDOUT: 'inst(IntLiteralType)': {kind: IntLiteralType, type: type(TypeType)} // CHECK:STDOUT: 'inst(NamespaceType)': {kind: NamespaceType, type: type(TypeType)} @@ -51,7 +54,7 @@ // CHECK:STDOUT: 'inst(SpecificFunctionType)': {kind: SpecificFunctionType, type: type(TypeType)} // CHECK:STDOUT: 'inst(VtableType)': {kind: VtableType, type: type(TypeType)} // CHECK:STDOUT: 'inst(WitnessType)': {kind: WitnessType, type: type(TypeType)} -// CHECK:STDOUT: instE: {kind: Namespace, arg0: name_scope0, arg1: inst, type: type(inst(NamespaceType))} +// CHECK:STDOUT: instF: {kind: Namespace, arg0: name_scope0, arg1: inst, type: type(inst(NamespaceType))} // CHECK:STDOUT: constant_values: // CHECK:STDOUT: values: // CHECK:STDOUT: 'inst(TypeType)': concrete_constant(inst(TypeType)) @@ -61,6 +64,7 @@ // CHECK:STDOUT: 'inst(CharLiteralType)': concrete_constant(inst(CharLiteralType)) // CHECK:STDOUT: 'inst(ErrorInst)': concrete_constant(inst(ErrorInst)) // CHECK:STDOUT: 'inst(FloatLiteralType)': concrete_constant(inst(FloatLiteralType)) +// CHECK:STDOUT: 'inst(FormType)': concrete_constant(inst(FormType)) // CHECK:STDOUT: 'inst(InstType)': concrete_constant(inst(InstType)) // CHECK:STDOUT: 'inst(IntLiteralType)': concrete_constant(inst(IntLiteralType)) // CHECK:STDOUT: 'inst(NamespaceType)': concrete_constant(inst(NamespaceType)) @@ -68,7 +72,7 @@ // CHECK:STDOUT: 'inst(SpecificFunctionType)': concrete_constant(inst(SpecificFunctionType)) // CHECK:STDOUT: 'inst(VtableType)': concrete_constant(inst(VtableType)) // CHECK:STDOUT: 'inst(WitnessType)': concrete_constant(inst(WitnessType)) -// CHECK:STDOUT: instE: concrete_constant(instE) +// CHECK:STDOUT: instF: concrete_constant(instF) // CHECK:STDOUT: symbolic_constants: {} // CHECK:STDOUT: inst_blocks: // CHECK:STDOUT: inst_block_empty: {} @@ -76,5 +80,5 @@ // CHECK:STDOUT: imports: {} // CHECK:STDOUT: global_init: {} // CHECK:STDOUT: inst_block60000004: -// CHECK:STDOUT: 0: instE +// CHECK:STDOUT: 0: instF // CHECK:STDOUT: ... diff --git a/toolchain/check/testdata/basics/raw_sem_ir/cpp_interop.carbon b/toolchain/check/testdata/basics/raw_sem_ir/cpp_interop.carbon index e4b16c814cbf..f40195333dda 100644 --- a/toolchain/check/testdata/basics/raw_sem_ir/cpp_interop.carbon +++ b/toolchain/check/testdata/basics/raw_sem_ir/cpp_interop.carbon @@ -43,18 +43,18 @@ fn G(x: Cpp.X) { // CHECK:STDOUT: import_ir_inst1: {ir_id: import_ir(Cpp), clang_source_loc_id: clang_source_loc60000001} // CHECK:STDOUT: import_ir_inst2: {ir_id: import_ir(Cpp), clang_source_loc_id: clang_source_loc60000002} // CHECK:STDOUT: clang_decls: -// CHECK:STDOUT: clang_decl_id60000000: {key: "", inst_id: inst60000010} -// CHECK:STDOUT: clang_decl_id60000001: {key: "struct X {}", inst_id: inst60000013} -// CHECK:STDOUT: clang_decl_id60000002: {key: "X * _Nonnull p", inst_id: inst60000021} -// CHECK:STDOUT: clang_decl_id60000003: {key: {decl: "void f(X x = {})", num_params: 0}, inst_id: inst6000002C} -// CHECK:STDOUT: clang_decl_id60000004: {key: {decl: "extern void f__carbon_thunk()", num_params: 0}, inst_id: inst6000002F} -// CHECK:STDOUT: clang_decl_id60000005: {key: {decl: "void f(X x = {})", num_params: 1}, inst_id: inst6000003A} -// CHECK:STDOUT: clang_decl_id60000006: {key: {decl: "extern void f__carbon_thunk(X * _Nonnull x)", num_params: 1}, inst_id: inst60000042} -// CHECK:STDOUT: clang_decl_id60000007: {key: "X * _Nonnull global", inst_id: inst6000004B} +// CHECK:STDOUT: clang_decl_id60000000: {key: "", inst_id: inst60000011} +// CHECK:STDOUT: clang_decl_id60000001: {key: "struct X {}", inst_id: inst60000014} +// CHECK:STDOUT: clang_decl_id60000002: {key: "X * _Nonnull p", inst_id: inst60000022} +// CHECK:STDOUT: clang_decl_id60000003: {key: {decl: "void f(X x = {})", num_params: 0}, inst_id: inst6000002D} +// CHECK:STDOUT: clang_decl_id60000004: {key: {decl: "extern void f__carbon_thunk()", num_params: 0}, inst_id: inst60000030} +// CHECK:STDOUT: clang_decl_id60000005: {key: {decl: "void f(X x = {})", num_params: 1}, inst_id: inst6000003B} +// CHECK:STDOUT: clang_decl_id60000006: {key: {decl: "extern void f__carbon_thunk(X * _Nonnull x)", num_params: 1}, inst_id: inst60000043} +// CHECK:STDOUT: clang_decl_id60000007: {key: "X * _Nonnull global", inst_id: inst6000004C} // CHECK:STDOUT: name_scopes: -// CHECK:STDOUT: name_scope0: {inst: instE, parent_scope: name_scope, has_error: false, extended_scopes: [], names: {name(Cpp): inst60000010, name0: inst6000001C}} -// CHECK:STDOUT: name_scope60000001: {inst: inst60000010, parent_scope: name_scope0, has_error: false, extended_scopes: [], names: {name2: inst60000013, name3: inst60000029, name4: inst6000004B}} -// CHECK:STDOUT: name_scope60000002: {inst: inst60000013, parent_scope: name_scope60000001, has_error: false, extended_scopes: [], names: {}} +// CHECK:STDOUT: name_scope0: {inst: instF, parent_scope: name_scope, has_error: false, extended_scopes: [], names: {name(Cpp): inst60000011, name0: inst6000001D}} +// CHECK:STDOUT: name_scope60000001: {inst: inst60000011, parent_scope: name_scope0, has_error: false, extended_scopes: [], names: {name2: inst60000014, name3: inst6000002A, name4: inst6000004C}} +// CHECK:STDOUT: name_scope60000002: {inst: inst60000014, parent_scope: name_scope60000001, has_error: false, extended_scopes: [], names: {}} // CHECK:STDOUT: entity_names: // CHECK:STDOUT: entity_name60000000: {name: name1, parent_scope: name_scope, index: -1, is_template: 0} // CHECK:STDOUT: entity_name60000001: {name: name1, parent_scope: name_scope, index: -1, is_template: 0} @@ -63,54 +63,56 @@ fn G(x: Cpp.X) { // CHECK:STDOUT: cpp_global_vars: // CHECK:STDOUT: cpp_global_var60000000: {key: {entity_name_id: entity_name60000003}, clang_decl_id: clang_decl_id60000007} // CHECK:STDOUT: functions: -// CHECK:STDOUT: function60000000: {name: name0, parent_scope: name_scope0, call_params_id: inst_block60000006, return_patterns_id: inst_block_empty, body: [inst_block60000009]} +// CHECK:STDOUT: function60000000: {name: name0, parent_scope: name_scope0, call_params_id: inst_block60000006, body: [inst_block60000009]} // CHECK:STDOUT: function60000001: {name: name3, parent_scope: name_scope60000001, call_params_id: inst_block_empty} // CHECK:STDOUT: function60000002: {name: name6, parent_scope: name_scope60000001, call_params_id: inst_block_empty} // CHECK:STDOUT: function60000003: {name: name3, parent_scope: name_scope60000001, call_params_id: inst_block6000000D} // CHECK:STDOUT: function60000004: {name: name6, parent_scope: name_scope60000001, call_params_id: inst_block60000012} // CHECK:STDOUT: classes: -// CHECK:STDOUT: class60000000: {name: name2, parent_scope: name_scope60000001, self_type_id: type(inst60000014), inheritance_kind: Base, is_dynamic: 0, scope_id: name_scope60000002, body_block_id: inst_block6000000A, adapt_id: inst, base_id: inst, complete_type_witness_id: inst60000024, vtable_decl_id: inst}} +// CHECK:STDOUT: class60000000: {name: name2, parent_scope: name_scope60000001, self_type_id: type(inst60000015), inheritance_kind: Base, is_dynamic: 0, scope_id: name_scope60000002, body_block_id: inst_block6000000A, adapt_id: inst, base_id: inst, complete_type_witness_id: inst60000025, vtable_decl_id: inst}} // CHECK:STDOUT: generics: {} // CHECK:STDOUT: specifics: {} // CHECK:STDOUT: struct_type_fields: // CHECK:STDOUT: struct_type_fields_empty: {} // CHECK:STDOUT: struct_type_fields60000001: -// CHECK:STDOUT: 0: {name_id: name5, type_inst_id: inst6000001F} +// CHECK:STDOUT: 0: {name_id: name5, type_inst_id: inst60000020} // CHECK:STDOUT: struct_type_fields60000002: -// CHECK:STDOUT: 0: {name_id: name5, type_inst_id: inst6000001F} +// CHECK:STDOUT: 0: {name_id: name5, type_inst_id: inst60000020} // CHECK:STDOUT: types: // CHECK:STDOUT: 'type(TypeType)': // CHECK:STDOUT: value_repr: {kind: copy, type: type(TypeType)} +// CHECK:STDOUT: 'type(inst(FormType))': +// CHECK:STDOUT: value_repr: {kind: copy, type: type(inst(FormType))} // CHECK:STDOUT: 'type(Error)': // CHECK:STDOUT: value_repr: {kind: copy, type: type(Error)} // CHECK:STDOUT: 'type(inst(NamespaceType))': // CHECK:STDOUT: value_repr: {kind: copy, type: type(inst(NamespaceType))} // CHECK:STDOUT: 'type(inst(InstType))': -// CHECK:STDOUT: value_repr: {kind: none, type: type(inst60000012)} -// CHECK:STDOUT: 'type(inst60000012)': -// CHECK:STDOUT: value_repr: {kind: none, type: type(inst60000012)} -// CHECK:STDOUT: 'type(inst6000001D)': -// CHECK:STDOUT: value_repr: {kind: none, type: type(inst60000012)} -// CHECK:STDOUT: 'type(inst6000001F)': -// CHECK:STDOUT: value_repr: {kind: copy, type: type(inst6000001F)} +// CHECK:STDOUT: value_repr: {kind: none, type: type(inst60000013)} +// CHECK:STDOUT: 'type(inst60000013)': +// CHECK:STDOUT: value_repr: {kind: none, type: type(inst60000013)} +// CHECK:STDOUT: 'type(inst6000001E)': +// CHECK:STDOUT: value_repr: {kind: none, type: type(inst60000013)} +// CHECK:STDOUT: 'type(inst60000020)': +// CHECK:STDOUT: value_repr: {kind: copy, type: type(inst60000020)} // CHECK:STDOUT: 'type(inst(WitnessType))': // CHECK:STDOUT: value_repr: {kind: copy, type: type(inst(WitnessType))} -// CHECK:STDOUT: 'type(inst60000026)': -// CHECK:STDOUT: value_repr: {kind: copy, type: type(inst60000026)} -// CHECK:STDOUT: 'type(inst60000023)': -// CHECK:STDOUT: value_repr: {kind: pointer, type: type(inst60000026)} -// CHECK:STDOUT: 'type(inst60000014)': -// CHECK:STDOUT: value_repr: {kind: pointer, type: type(inst60000026)} -// CHECK:STDOUT: 'type(inst60000028)': -// CHECK:STDOUT: value_repr: {kind: none, type: type(inst60000012)} -// CHECK:STDOUT: 'type(inst6000002D)': -// CHECK:STDOUT: value_repr: {kind: none, type: type(inst60000012)} -// CHECK:STDOUT: 'type(inst60000030)': -// CHECK:STDOUT: value_repr: {kind: none, type: type(inst60000012)} -// CHECK:STDOUT: 'type(inst6000003B)': -// CHECK:STDOUT: value_repr: {kind: none, type: type(inst60000012)} -// CHECK:STDOUT: 'type(inst60000043)': -// CHECK:STDOUT: value_repr: {kind: none, type: type(inst60000012)} +// CHECK:STDOUT: 'type(inst60000027)': +// CHECK:STDOUT: value_repr: {kind: copy, type: type(inst60000027)} +// CHECK:STDOUT: 'type(inst60000024)': +// CHECK:STDOUT: value_repr: {kind: pointer, type: type(inst60000027)} +// CHECK:STDOUT: 'type(inst60000015)': +// CHECK:STDOUT: value_repr: {kind: pointer, type: type(inst60000027)} +// CHECK:STDOUT: 'type(inst60000029)': +// CHECK:STDOUT: value_repr: {kind: none, type: type(inst60000013)} +// CHECK:STDOUT: 'type(inst6000002E)': +// CHECK:STDOUT: value_repr: {kind: none, type: type(inst60000013)} +// CHECK:STDOUT: 'type(inst60000031)': +// CHECK:STDOUT: value_repr: {kind: none, type: type(inst60000013)} +// CHECK:STDOUT: 'type(inst6000003C)': +// CHECK:STDOUT: value_repr: {kind: none, type: type(inst60000013)} +// CHECK:STDOUT: 'type(inst60000044)': +// CHECK:STDOUT: value_repr: {kind: none, type: type(inst60000013)} // CHECK:STDOUT: insts: // CHECK:STDOUT: 'inst(TypeType)': {kind: TypeType, type: type(TypeType)} // CHECK:STDOUT: 'inst(AutoType)': {kind: AutoType, type: type(TypeType)} @@ -119,6 +121,7 @@ fn G(x: Cpp.X) { // CHECK:STDOUT: 'inst(CharLiteralType)': {kind: CharLiteralType, type: type(TypeType)} // CHECK:STDOUT: 'inst(ErrorInst)': {kind: ErrorInst, type: type(Error)} // CHECK:STDOUT: 'inst(FloatLiteralType)': {kind: FloatLiteralType, type: type(TypeType)} +// CHECK:STDOUT: 'inst(FormType)': {kind: FormType, type: type(TypeType)} // CHECK:STDOUT: 'inst(InstType)': {kind: InstType, type: type(TypeType)} // CHECK:STDOUT: 'inst(IntLiteralType)': {kind: IntLiteralType, type: type(TypeType)} // CHECK:STDOUT: 'inst(NamespaceType)': {kind: NamespaceType, type: type(TypeType)} @@ -126,79 +129,79 @@ fn G(x: Cpp.X) { // CHECK:STDOUT: 'inst(SpecificFunctionType)': {kind: SpecificFunctionType, type: type(TypeType)} // CHECK:STDOUT: 'inst(VtableType)': {kind: VtableType, type: type(TypeType)} // CHECK:STDOUT: 'inst(WitnessType)': {kind: WitnessType, type: type(TypeType)} -// CHECK:STDOUT: instE: {kind: Namespace, arg0: name_scope0, arg1: inst, type: type(inst(NamespaceType))} -// CHECK:STDOUT: inst6000000F: {kind: ImportCppDecl} -// CHECK:STDOUT: inst60000010: {kind: Namespace, arg0: name_scope60000001, arg1: inst6000000F, type: type(inst(NamespaceType))} -// CHECK:STDOUT: inst60000011: {kind: NameRef, arg0: name(Cpp), arg1: inst60000010, type: type(inst(NamespaceType))} -// CHECK:STDOUT: inst60000012: {kind: TupleType, arg0: inst_block_empty, type: type(TypeType)} -// CHECK:STDOUT: inst60000013: {kind: ClassDecl, arg0: class60000000, arg1: inst_block, type: type(TypeType)} -// CHECK:STDOUT: inst60000014: {kind: ClassType, arg0: class60000000, arg1: specific, type: type(TypeType)} -// CHECK:STDOUT: inst60000015: {kind: NameRef, arg0: name2, arg1: inst60000013, type: type(TypeType)} -// CHECK:STDOUT: inst60000016: {kind: ValueBinding, arg0: entity_name60000000, arg1: inst6000001A, type: type(inst60000014)} -// CHECK:STDOUT: inst60000017: {kind: PatternType, arg0: inst60000014, type: type(TypeType)} -// CHECK:STDOUT: inst60000018: {kind: ValueBindingPattern, arg0: entity_name60000000, type: type(inst60000017)} -// CHECK:STDOUT: inst60000019: {kind: ValueParamPattern, arg0: inst60000018, arg1: call_param0, type: type(inst60000017)} -// CHECK:STDOUT: inst6000001A: {kind: ValueParam, arg0: call_param0, arg1: name1, type: type(inst60000014)} -// CHECK:STDOUT: inst6000001B: {kind: SpliceBlock, arg0: inst_block60000004, arg1: inst60000015, type: type(TypeType)} -// CHECK:STDOUT: inst6000001C: {kind: FunctionDecl, arg0: function60000000, arg1: inst_block60000008, type: type(inst6000001D)} -// CHECK:STDOUT: inst6000001D: {kind: FunctionType, arg0: function60000000, arg1: specific, type: type(TypeType)} -// CHECK:STDOUT: inst6000001E: {kind: StructValue, arg0: inst_block_empty, type: type(inst6000001D)} -// CHECK:STDOUT: inst6000001F: {kind: PointerType, arg0: inst60000014, type: type(TypeType)} -// CHECK:STDOUT: inst60000020: {kind: UnboundElementType, arg0: inst60000014, arg1: inst6000001F, type: type(TypeType)} -// CHECK:STDOUT: inst60000021: {kind: FieldDecl, arg0: name5, arg1: element0, type: type(inst60000020)} -// CHECK:STDOUT: inst60000022: {kind: CustomLayoutType, arg0: struct_type_fields60000001, arg1: custom_layout60000001, type: type(TypeType)} -// CHECK:STDOUT: inst60000023: {kind: CustomLayoutType, arg0: struct_type_fields60000002, arg1: custom_layout60000001, type: type(TypeType)} -// CHECK:STDOUT: inst60000024: {kind: CompleteTypeWitness, arg0: inst60000022, type: type(inst(WitnessType))} +// CHECK:STDOUT: instF: {kind: Namespace, arg0: name_scope0, arg1: inst, type: type(inst(NamespaceType))} +// CHECK:STDOUT: inst60000010: {kind: ImportCppDecl} +// CHECK:STDOUT: inst60000011: {kind: Namespace, arg0: name_scope60000001, arg1: inst60000010, type: type(inst(NamespaceType))} +// CHECK:STDOUT: inst60000012: {kind: NameRef, arg0: name(Cpp), arg1: inst60000011, type: type(inst(NamespaceType))} +// CHECK:STDOUT: inst60000013: {kind: TupleType, arg0: inst_block_empty, type: type(TypeType)} +// CHECK:STDOUT: inst60000014: {kind: ClassDecl, arg0: class60000000, arg1: inst_block, type: type(TypeType)} +// CHECK:STDOUT: inst60000015: {kind: ClassType, arg0: class60000000, arg1: specific, type: type(TypeType)} +// CHECK:STDOUT: inst60000016: {kind: NameRef, arg0: name2, arg1: inst60000014, type: type(TypeType)} +// CHECK:STDOUT: inst60000017: {kind: ValueBinding, arg0: entity_name60000000, arg1: inst6000001B, type: type(inst60000015)} +// CHECK:STDOUT: inst60000018: {kind: PatternType, arg0: inst60000015, type: type(TypeType)} +// CHECK:STDOUT: inst60000019: {kind: ValueBindingPattern, arg0: entity_name60000000, type: type(inst60000018)} +// CHECK:STDOUT: inst6000001A: {kind: ValueParamPattern, arg0: inst60000019, arg1: call_param0, type: type(inst60000018)} +// CHECK:STDOUT: inst6000001B: {kind: ValueParam, arg0: call_param0, arg1: name1, type: type(inst60000015)} +// CHECK:STDOUT: inst6000001C: {kind: SpliceBlock, arg0: inst_block60000004, arg1: inst60000016, type: type(TypeType)} +// CHECK:STDOUT: inst6000001D: {kind: FunctionDecl, arg0: function60000000, arg1: inst_block60000008, type: type(inst6000001E)} +// CHECK:STDOUT: inst6000001E: {kind: FunctionType, arg0: function60000000, arg1: specific, type: type(TypeType)} +// CHECK:STDOUT: inst6000001F: {kind: StructValue, arg0: inst_block_empty, type: type(inst6000001E)} +// CHECK:STDOUT: inst60000020: {kind: PointerType, arg0: inst60000015, type: type(TypeType)} +// CHECK:STDOUT: inst60000021: {kind: UnboundElementType, arg0: inst60000015, arg1: inst60000020, type: type(TypeType)} +// CHECK:STDOUT: inst60000022: {kind: FieldDecl, arg0: name5, arg1: element0, type: type(inst60000021)} +// CHECK:STDOUT: inst60000023: {kind: CustomLayoutType, arg0: struct_type_fields60000001, arg1: custom_layout60000001, type: type(TypeType)} +// CHECK:STDOUT: inst60000024: {kind: CustomLayoutType, arg0: struct_type_fields60000002, arg1: custom_layout60000001, type: type(TypeType)} // CHECK:STDOUT: inst60000025: {kind: CompleteTypeWitness, arg0: inst60000023, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst60000026: {kind: PointerType, arg0: inst60000023, type: type(TypeType)} -// CHECK:STDOUT: inst60000027: {kind: NameRef, arg0: name(Cpp), arg1: inst60000010, type: type(inst(NamespaceType))} -// CHECK:STDOUT: inst60000028: {kind: CppOverloadSetType, arg0: cpp_overload_set60000000, arg1: specific, type: type(TypeType)} -// CHECK:STDOUT: inst60000029: {kind: CppOverloadSetValue, arg0: cpp_overload_set60000000, type: type(inst60000028)} -// CHECK:STDOUT: inst6000002A: {kind: CppOverloadSetValue, arg0: cpp_overload_set60000000, type: type(inst60000028)} -// CHECK:STDOUT: inst6000002B: {kind: NameRef, arg0: name3, arg1: inst60000029, type: type(inst60000028)} -// CHECK:STDOUT: inst6000002C: {kind: FunctionDecl, arg0: function60000001, arg1: inst_block_empty, type: type(inst6000002D)} -// CHECK:STDOUT: inst6000002D: {kind: FunctionType, arg0: function60000001, arg1: specific, type: type(TypeType)} -// CHECK:STDOUT: inst6000002E: {kind: StructValue, arg0: inst_block_empty, type: type(inst6000002D)} -// CHECK:STDOUT: inst6000002F: {kind: FunctionDecl, arg0: function60000002, arg1: inst_block_empty, type: type(inst60000030)} -// CHECK:STDOUT: inst60000030: {kind: FunctionType, arg0: function60000002, arg1: specific, type: type(TypeType)} -// CHECK:STDOUT: inst60000031: {kind: StructValue, arg0: inst_block_empty, type: type(inst60000030)} -// CHECK:STDOUT: inst60000032: {kind: Call, arg0: inst6000002F, arg1: inst_block_empty, type: type(inst60000012)} -// CHECK:STDOUT: inst60000033: {kind: NameRef, arg0: name(Cpp), arg1: inst60000010, type: type(inst(NamespaceType))} -// CHECK:STDOUT: inst60000034: {kind: NameRef, arg0: name3, arg1: inst60000029, type: type(inst60000028)} -// CHECK:STDOUT: inst60000035: {kind: NameRef, arg0: name1, arg1: inst60000016, type: type(inst60000014)} -// CHECK:STDOUT: inst60000036: {kind: ValueBinding, arg0: entity_name60000001, arg1: inst60000039, type: type(inst60000014)} -// CHECK:STDOUT: inst60000037: {kind: ValueBindingPattern, arg0: entity_name60000001, type: type(inst60000017)} -// CHECK:STDOUT: inst60000038: {kind: ValueParamPattern, arg0: inst60000037, arg1: call_param0, type: type(inst60000017)} -// CHECK:STDOUT: inst60000039: {kind: ValueParam, arg0: call_param0, arg1: name1, type: type(inst60000014)} -// CHECK:STDOUT: inst6000003A: {kind: FunctionDecl, arg0: function60000003, arg1: inst_block6000000F, type: type(inst6000003B)} -// CHECK:STDOUT: inst6000003B: {kind: FunctionType, arg0: function60000003, arg1: specific, type: type(TypeType)} -// CHECK:STDOUT: inst6000003C: {kind: StructValue, arg0: inst_block_empty, type: type(inst6000003B)} -// CHECK:STDOUT: inst6000003D: {kind: ValueBinding, arg0: entity_name60000002, arg1: inst60000041, type: type(inst6000001F)} -// CHECK:STDOUT: inst6000003E: {kind: PatternType, arg0: inst6000001F, type: type(TypeType)} -// CHECK:STDOUT: inst6000003F: {kind: ValueBindingPattern, arg0: entity_name60000002, type: type(inst6000003E)} -// CHECK:STDOUT: inst60000040: {kind: ValueParamPattern, arg0: inst6000003F, arg1: call_param0, type: type(inst6000003E)} -// CHECK:STDOUT: inst60000041: {kind: ValueParam, arg0: call_param0, arg1: name1, type: type(inst6000001F)} -// CHECK:STDOUT: inst60000042: {kind: FunctionDecl, arg0: function60000004, arg1: inst_block60000014, type: type(inst60000043)} -// CHECK:STDOUT: inst60000043: {kind: FunctionType, arg0: function60000004, arg1: specific, type: type(TypeType)} -// CHECK:STDOUT: inst60000044: {kind: StructValue, arg0: inst_block_empty, type: type(inst60000043)} -// CHECK:STDOUT: inst60000045: {kind: ValueAsRef, arg0: inst60000035, type: type(inst60000014)} -// CHECK:STDOUT: inst60000046: {kind: AddrOf, arg0: inst60000045, type: type(inst6000001F)} -// CHECK:STDOUT: inst60000047: {kind: Call, arg0: inst60000042, arg1: inst_block60000016, type: type(inst60000012)} -// CHECK:STDOUT: inst60000048: {kind: NameRef, arg0: name(Cpp), arg1: inst60000010, type: type(inst(NamespaceType))} -// CHECK:STDOUT: inst60000049: {kind: NameRef, arg0: name3, arg1: inst60000029, type: type(inst60000028)} -// CHECK:STDOUT: inst6000004A: {kind: NameRef, arg0: name(Cpp), arg1: inst60000010, type: type(inst(NamespaceType))} -// CHECK:STDOUT: inst6000004B: {kind: VarStorage, arg0: inst6000004D, type: type(inst6000001F)} -// CHECK:STDOUT: inst6000004C: {kind: RefBindingPattern, arg0: entity_name60000003, type: type(inst6000003E)} -// CHECK:STDOUT: inst6000004D: {kind: VarPattern, arg0: inst6000004C, type: type(inst6000003E)} -// CHECK:STDOUT: inst6000004E: {kind: NameBindingDecl, arg0: inst_block60000017} -// CHECK:STDOUT: inst6000004F: {kind: NameRef, arg0: name4, arg1: inst6000004B, type: type(inst6000001F)} -// CHECK:STDOUT: inst60000050: {kind: AcquireValue, arg0: inst6000004F, type: type(inst6000001F)} -// CHECK:STDOUT: inst60000051: {kind: Deref, arg0: inst60000050, type: type(inst60000014)} -// CHECK:STDOUT: inst60000052: {kind: AcquireValue, arg0: inst60000051, type: type(inst60000014)} -// CHECK:STDOUT: inst60000053: {kind: ValueAsRef, arg0: inst60000052, type: type(inst60000014)} -// CHECK:STDOUT: inst60000054: {kind: AddrOf, arg0: inst60000053, type: type(inst6000001F)} -// CHECK:STDOUT: inst60000055: {kind: Call, arg0: inst60000042, arg1: inst_block60000019, type: type(inst60000012)} -// CHECK:STDOUT: inst60000056: {kind: Return} +// CHECK:STDOUT: inst60000026: {kind: CompleteTypeWitness, arg0: inst60000024, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst60000027: {kind: PointerType, arg0: inst60000024, type: type(TypeType)} +// CHECK:STDOUT: inst60000028: {kind: NameRef, arg0: name(Cpp), arg1: inst60000011, type: type(inst(NamespaceType))} +// CHECK:STDOUT: inst60000029: {kind: CppOverloadSetType, arg0: cpp_overload_set60000000, arg1: specific, type: type(TypeType)} +// CHECK:STDOUT: inst6000002A: {kind: CppOverloadSetValue, arg0: cpp_overload_set60000000, type: type(inst60000029)} +// CHECK:STDOUT: inst6000002B: {kind: CppOverloadSetValue, arg0: cpp_overload_set60000000, type: type(inst60000029)} +// CHECK:STDOUT: inst6000002C: {kind: NameRef, arg0: name3, arg1: inst6000002A, type: type(inst60000029)} +// CHECK:STDOUT: inst6000002D: {kind: FunctionDecl, arg0: function60000001, arg1: inst_block_empty, type: type(inst6000002E)} +// CHECK:STDOUT: inst6000002E: {kind: FunctionType, arg0: function60000001, arg1: specific, type: type(TypeType)} +// CHECK:STDOUT: inst6000002F: {kind: StructValue, arg0: inst_block_empty, type: type(inst6000002E)} +// CHECK:STDOUT: inst60000030: {kind: FunctionDecl, arg0: function60000002, arg1: inst_block_empty, type: type(inst60000031)} +// CHECK:STDOUT: inst60000031: {kind: FunctionType, arg0: function60000002, arg1: specific, type: type(TypeType)} +// CHECK:STDOUT: inst60000032: {kind: StructValue, arg0: inst_block_empty, type: type(inst60000031)} +// CHECK:STDOUT: inst60000033: {kind: Call, arg0: inst60000030, arg1: inst_block_empty, type: type(inst60000013)} +// CHECK:STDOUT: inst60000034: {kind: NameRef, arg0: name(Cpp), arg1: inst60000011, type: type(inst(NamespaceType))} +// CHECK:STDOUT: inst60000035: {kind: NameRef, arg0: name3, arg1: inst6000002A, type: type(inst60000029)} +// CHECK:STDOUT: inst60000036: {kind: NameRef, arg0: name1, arg1: inst60000017, type: type(inst60000015)} +// CHECK:STDOUT: inst60000037: {kind: ValueBinding, arg0: entity_name60000001, arg1: inst6000003A, type: type(inst60000015)} +// CHECK:STDOUT: inst60000038: {kind: ValueBindingPattern, arg0: entity_name60000001, type: type(inst60000018)} +// CHECK:STDOUT: inst60000039: {kind: ValueParamPattern, arg0: inst60000038, arg1: call_param0, type: type(inst60000018)} +// CHECK:STDOUT: inst6000003A: {kind: ValueParam, arg0: call_param0, arg1: name1, type: type(inst60000015)} +// CHECK:STDOUT: inst6000003B: {kind: FunctionDecl, arg0: function60000003, arg1: inst_block6000000F, type: type(inst6000003C)} +// CHECK:STDOUT: inst6000003C: {kind: FunctionType, arg0: function60000003, arg1: specific, type: type(TypeType)} +// CHECK:STDOUT: inst6000003D: {kind: StructValue, arg0: inst_block_empty, type: type(inst6000003C)} +// CHECK:STDOUT: inst6000003E: {kind: ValueBinding, arg0: entity_name60000002, arg1: inst60000042, type: type(inst60000020)} +// CHECK:STDOUT: inst6000003F: {kind: PatternType, arg0: inst60000020, type: type(TypeType)} +// CHECK:STDOUT: inst60000040: {kind: ValueBindingPattern, arg0: entity_name60000002, type: type(inst6000003F)} +// CHECK:STDOUT: inst60000041: {kind: ValueParamPattern, arg0: inst60000040, arg1: call_param0, type: type(inst6000003F)} +// CHECK:STDOUT: inst60000042: {kind: ValueParam, arg0: call_param0, arg1: name1, type: type(inst60000020)} +// CHECK:STDOUT: inst60000043: {kind: FunctionDecl, arg0: function60000004, arg1: inst_block60000014, type: type(inst60000044)} +// CHECK:STDOUT: inst60000044: {kind: FunctionType, arg0: function60000004, arg1: specific, type: type(TypeType)} +// CHECK:STDOUT: inst60000045: {kind: StructValue, arg0: inst_block_empty, type: type(inst60000044)} +// CHECK:STDOUT: inst60000046: {kind: ValueAsRef, arg0: inst60000036, type: type(inst60000015)} +// CHECK:STDOUT: inst60000047: {kind: AddrOf, arg0: inst60000046, type: type(inst60000020)} +// CHECK:STDOUT: inst60000048: {kind: Call, arg0: inst60000043, arg1: inst_block60000016, type: type(inst60000013)} +// CHECK:STDOUT: inst60000049: {kind: NameRef, arg0: name(Cpp), arg1: inst60000011, type: type(inst(NamespaceType))} +// CHECK:STDOUT: inst6000004A: {kind: NameRef, arg0: name3, arg1: inst6000002A, type: type(inst60000029)} +// CHECK:STDOUT: inst6000004B: {kind: NameRef, arg0: name(Cpp), arg1: inst60000011, type: type(inst(NamespaceType))} +// CHECK:STDOUT: inst6000004C: {kind: VarStorage, arg0: inst6000004E, type: type(inst60000020)} +// CHECK:STDOUT: inst6000004D: {kind: RefBindingPattern, arg0: entity_name60000003, type: type(inst6000003F)} +// CHECK:STDOUT: inst6000004E: {kind: VarPattern, arg0: inst6000004D, type: type(inst6000003F)} +// CHECK:STDOUT: inst6000004F: {kind: NameBindingDecl, arg0: inst_block60000017} +// CHECK:STDOUT: inst60000050: {kind: NameRef, arg0: name4, arg1: inst6000004C, type: type(inst60000020)} +// CHECK:STDOUT: inst60000051: {kind: AcquireValue, arg0: inst60000050, type: type(inst60000020)} +// CHECK:STDOUT: inst60000052: {kind: Deref, arg0: inst60000051, type: type(inst60000015)} +// CHECK:STDOUT: inst60000053: {kind: AcquireValue, arg0: inst60000052, type: type(inst60000015)} +// CHECK:STDOUT: inst60000054: {kind: ValueAsRef, arg0: inst60000053, type: type(inst60000015)} +// CHECK:STDOUT: inst60000055: {kind: AddrOf, arg0: inst60000054, type: type(inst60000020)} +// CHECK:STDOUT: inst60000056: {kind: Call, arg0: inst60000043, arg1: inst_block60000019, type: type(inst60000013)} +// CHECK:STDOUT: inst60000057: {kind: Return} // CHECK:STDOUT: constant_values: // CHECK:STDOUT: values: // CHECK:STDOUT: 'inst(TypeType)': concrete_constant(inst(TypeType)) @@ -208,6 +211,7 @@ fn G(x: Cpp.X) { // CHECK:STDOUT: 'inst(CharLiteralType)': concrete_constant(inst(CharLiteralType)) // CHECK:STDOUT: 'inst(ErrorInst)': concrete_constant(inst(ErrorInst)) // CHECK:STDOUT: 'inst(FloatLiteralType)': concrete_constant(inst(FloatLiteralType)) +// CHECK:STDOUT: 'inst(FormType)': concrete_constant(inst(FormType)) // CHECK:STDOUT: 'inst(InstType)': concrete_constant(inst(InstType)) // CHECK:STDOUT: 'inst(IntLiteralType)': concrete_constant(inst(IntLiteralType)) // CHECK:STDOUT: 'inst(NamespaceType)': concrete_constant(inst(NamespaceType)) @@ -215,149 +219,149 @@ fn G(x: Cpp.X) { // CHECK:STDOUT: 'inst(SpecificFunctionType)': concrete_constant(inst(SpecificFunctionType)) // CHECK:STDOUT: 'inst(VtableType)': concrete_constant(inst(VtableType)) // CHECK:STDOUT: 'inst(WitnessType)': concrete_constant(inst(WitnessType)) -// CHECK:STDOUT: instE: concrete_constant(instE) -// CHECK:STDOUT: inst60000010: concrete_constant(inst60000010) -// CHECK:STDOUT: inst60000011: concrete_constant(inst60000010) -// CHECK:STDOUT: inst60000012: concrete_constant(inst60000012) -// CHECK:STDOUT: inst60000013: concrete_constant(inst60000014) -// CHECK:STDOUT: inst60000014: concrete_constant(inst60000014) -// CHECK:STDOUT: inst60000015: concrete_constant(inst60000014) -// CHECK:STDOUT: inst60000017: concrete_constant(inst60000017) +// CHECK:STDOUT: instF: concrete_constant(instF) +// CHECK:STDOUT: inst60000011: concrete_constant(inst60000011) +// CHECK:STDOUT: inst60000012: concrete_constant(inst60000011) +// CHECK:STDOUT: inst60000013: concrete_constant(inst60000013) +// CHECK:STDOUT: inst60000014: concrete_constant(inst60000015) +// CHECK:STDOUT: inst60000015: concrete_constant(inst60000015) +// CHECK:STDOUT: inst60000016: concrete_constant(inst60000015) // CHECK:STDOUT: inst60000018: concrete_constant(inst60000018) // CHECK:STDOUT: inst60000019: concrete_constant(inst60000019) -// CHECK:STDOUT: inst6000001B: concrete_constant(inst60000014) -// CHECK:STDOUT: inst6000001C: concrete_constant(inst6000001E) -// CHECK:STDOUT: inst6000001D: concrete_constant(inst6000001D) +// CHECK:STDOUT: inst6000001A: concrete_constant(inst6000001A) +// CHECK:STDOUT: inst6000001C: concrete_constant(inst60000015) +// CHECK:STDOUT: inst6000001D: concrete_constant(inst6000001F) // CHECK:STDOUT: inst6000001E: concrete_constant(inst6000001E) // CHECK:STDOUT: inst6000001F: concrete_constant(inst6000001F) // CHECK:STDOUT: inst60000020: concrete_constant(inst60000020) // CHECK:STDOUT: inst60000021: concrete_constant(inst60000021) -// CHECK:STDOUT: inst60000022: concrete_constant(inst60000023) -// CHECK:STDOUT: inst60000023: concrete_constant(inst60000023) -// CHECK:STDOUT: inst60000024: concrete_constant(inst60000025) -// CHECK:STDOUT: inst60000025: concrete_constant(inst60000025) +// CHECK:STDOUT: inst60000022: concrete_constant(inst60000022) +// CHECK:STDOUT: inst60000023: concrete_constant(inst60000024) +// CHECK:STDOUT: inst60000024: concrete_constant(inst60000024) +// CHECK:STDOUT: inst60000025: concrete_constant(inst60000026) // CHECK:STDOUT: inst60000026: concrete_constant(inst60000026) -// CHECK:STDOUT: inst60000027: concrete_constant(inst60000010) -// CHECK:STDOUT: inst60000028: concrete_constant(inst60000028) -// CHECK:STDOUT: inst60000029: concrete_constant(inst6000002A) -// CHECK:STDOUT: inst6000002A: concrete_constant(inst6000002A) -// CHECK:STDOUT: inst6000002B: concrete_constant(inst6000002A) -// CHECK:STDOUT: inst6000002C: concrete_constant(inst6000002E) -// CHECK:STDOUT: inst6000002D: concrete_constant(inst6000002D) +// CHECK:STDOUT: inst60000027: concrete_constant(inst60000027) +// CHECK:STDOUT: inst60000028: concrete_constant(inst60000011) +// CHECK:STDOUT: inst60000029: concrete_constant(inst60000029) +// CHECK:STDOUT: inst6000002A: concrete_constant(inst6000002B) +// CHECK:STDOUT: inst6000002B: concrete_constant(inst6000002B) +// CHECK:STDOUT: inst6000002C: concrete_constant(inst6000002B) +// CHECK:STDOUT: inst6000002D: concrete_constant(inst6000002F) // CHECK:STDOUT: inst6000002E: concrete_constant(inst6000002E) -// CHECK:STDOUT: inst6000002F: concrete_constant(inst60000031) -// CHECK:STDOUT: inst60000030: concrete_constant(inst60000030) +// CHECK:STDOUT: inst6000002F: concrete_constant(inst6000002F) +// CHECK:STDOUT: inst60000030: concrete_constant(inst60000032) // CHECK:STDOUT: inst60000031: concrete_constant(inst60000031) -// CHECK:STDOUT: inst60000033: concrete_constant(inst60000010) -// CHECK:STDOUT: inst60000034: concrete_constant(inst6000002A) -// CHECK:STDOUT: inst60000037: concrete_constant(inst60000037) +// CHECK:STDOUT: inst60000032: concrete_constant(inst60000032) +// CHECK:STDOUT: inst60000034: concrete_constant(inst60000011) +// CHECK:STDOUT: inst60000035: concrete_constant(inst6000002B) // CHECK:STDOUT: inst60000038: concrete_constant(inst60000038) -// CHECK:STDOUT: inst6000003A: concrete_constant(inst6000003C) -// CHECK:STDOUT: inst6000003B: concrete_constant(inst6000003B) +// CHECK:STDOUT: inst60000039: concrete_constant(inst60000039) +// CHECK:STDOUT: inst6000003B: concrete_constant(inst6000003D) // CHECK:STDOUT: inst6000003C: concrete_constant(inst6000003C) -// CHECK:STDOUT: inst6000003E: concrete_constant(inst6000003E) +// CHECK:STDOUT: inst6000003D: concrete_constant(inst6000003D) // CHECK:STDOUT: inst6000003F: concrete_constant(inst6000003F) // CHECK:STDOUT: inst60000040: concrete_constant(inst60000040) -// CHECK:STDOUT: inst60000042: concrete_constant(inst60000044) -// CHECK:STDOUT: inst60000043: concrete_constant(inst60000043) +// CHECK:STDOUT: inst60000041: concrete_constant(inst60000041) +// CHECK:STDOUT: inst60000043: concrete_constant(inst60000045) // CHECK:STDOUT: inst60000044: concrete_constant(inst60000044) -// CHECK:STDOUT: inst60000048: concrete_constant(inst60000010) -// CHECK:STDOUT: inst60000049: concrete_constant(inst6000002A) -// CHECK:STDOUT: inst6000004A: concrete_constant(inst60000010) -// CHECK:STDOUT: inst6000004B: concrete_constant(inst6000004B) +// CHECK:STDOUT: inst60000045: concrete_constant(inst60000045) +// CHECK:STDOUT: inst60000049: concrete_constant(inst60000011) +// CHECK:STDOUT: inst6000004A: concrete_constant(inst6000002B) +// CHECK:STDOUT: inst6000004B: concrete_constant(inst60000011) // CHECK:STDOUT: inst6000004C: concrete_constant(inst6000004C) // CHECK:STDOUT: inst6000004D: concrete_constant(inst6000004D) -// CHECK:STDOUT: inst6000004F: concrete_constant(inst6000004B) +// CHECK:STDOUT: inst6000004E: concrete_constant(inst6000004E) +// CHECK:STDOUT: inst60000050: concrete_constant(inst6000004C) // CHECK:STDOUT: symbolic_constants: {} // CHECK:STDOUT: inst_blocks: // CHECK:STDOUT: inst_block_empty: {} // CHECK:STDOUT: exports: -// CHECK:STDOUT: 0: inst6000001C +// CHECK:STDOUT: 0: inst6000001D // CHECK:STDOUT: imports: -// CHECK:STDOUT: 0: inst60000010 -// CHECK:STDOUT: 1: inst60000013 -// CHECK:STDOUT: 2: inst60000029 -// CHECK:STDOUT: 3: inst6000002C -// CHECK:STDOUT: 4: inst6000002F -// CHECK:STDOUT: 5: inst6000003A -// CHECK:STDOUT: 6: inst60000042 -// CHECK:STDOUT: 7: inst6000004B -// CHECK:STDOUT: 8: inst6000004E +// CHECK:STDOUT: 0: inst60000011 +// CHECK:STDOUT: 1: inst60000014 +// CHECK:STDOUT: 2: inst6000002A +// CHECK:STDOUT: 3: inst6000002D +// CHECK:STDOUT: 4: inst60000030 +// CHECK:STDOUT: 5: inst6000003B +// CHECK:STDOUT: 6: inst60000043 +// CHECK:STDOUT: 7: inst6000004C +// CHECK:STDOUT: 8: inst6000004F // CHECK:STDOUT: global_init: {} // CHECK:STDOUT: inst_block60000004: -// CHECK:STDOUT: 0: inst60000011 -// CHECK:STDOUT: 1: inst60000015 +// CHECK:STDOUT: 0: inst60000012 +// CHECK:STDOUT: 1: inst60000016 // CHECK:STDOUT: inst_block60000005: -// CHECK:STDOUT: 0: inst60000019 +// CHECK:STDOUT: 0: inst6000001A // CHECK:STDOUT: inst_block60000006: -// CHECK:STDOUT: 0: inst6000001A +// CHECK:STDOUT: 0: inst6000001B // CHECK:STDOUT: inst_block60000007: -// CHECK:STDOUT: 0: inst60000018 -// CHECK:STDOUT: 1: inst60000019 +// CHECK:STDOUT: 0: inst60000019 +// CHECK:STDOUT: 1: inst6000001A // CHECK:STDOUT: inst_block60000008: -// CHECK:STDOUT: 0: inst6000001A -// CHECK:STDOUT: 1: inst6000001B -// CHECK:STDOUT: 2: inst60000016 +// CHECK:STDOUT: 0: inst6000001B +// CHECK:STDOUT: 1: inst6000001C +// CHECK:STDOUT: 2: inst60000017 // CHECK:STDOUT: inst_block60000009: -// CHECK:STDOUT: 0: inst60000027 -// CHECK:STDOUT: 1: inst6000002B -// CHECK:STDOUT: 2: inst60000032 -// CHECK:STDOUT: 3: inst60000033 -// CHECK:STDOUT: 4: inst60000034 -// CHECK:STDOUT: 5: inst60000035 -// CHECK:STDOUT: 6: inst60000045 -// CHECK:STDOUT: 7: inst60000046 -// CHECK:STDOUT: 8: inst60000047 -// CHECK:STDOUT: 9: inst60000048 -// CHECK:STDOUT: 10: inst60000049 -// CHECK:STDOUT: 11: inst6000004A -// CHECK:STDOUT: 12: inst6000004F -// CHECK:STDOUT: 13: inst60000050 -// CHECK:STDOUT: 14: inst60000051 -// CHECK:STDOUT: 15: inst60000052 -// CHECK:STDOUT: 16: inst60000053 -// CHECK:STDOUT: 17: inst60000054 -// CHECK:STDOUT: 18: inst60000055 -// CHECK:STDOUT: 19: inst60000056 +// CHECK:STDOUT: 0: inst60000028 +// CHECK:STDOUT: 1: inst6000002C +// CHECK:STDOUT: 2: inst60000033 +// CHECK:STDOUT: 3: inst60000034 +// CHECK:STDOUT: 4: inst60000035 +// CHECK:STDOUT: 5: inst60000036 +// CHECK:STDOUT: 6: inst60000046 +// CHECK:STDOUT: 7: inst60000047 +// CHECK:STDOUT: 8: inst60000048 +// CHECK:STDOUT: 9: inst60000049 +// CHECK:STDOUT: 10: inst6000004A +// CHECK:STDOUT: 11: inst6000004B +// CHECK:STDOUT: 12: inst60000050 +// CHECK:STDOUT: 13: inst60000051 +// CHECK:STDOUT: 14: inst60000052 +// CHECK:STDOUT: 15: inst60000053 +// CHECK:STDOUT: 16: inst60000054 +// CHECK:STDOUT: 17: inst60000055 +// CHECK:STDOUT: 18: inst60000056 +// CHECK:STDOUT: 19: inst60000057 // CHECK:STDOUT: inst_block6000000A: -// CHECK:STDOUT: 0: inst60000021 -// CHECK:STDOUT: 1: inst60000022 -// CHECK:STDOUT: 2: inst60000024 +// CHECK:STDOUT: 0: inst60000022 +// CHECK:STDOUT: 1: inst60000023 +// CHECK:STDOUT: 2: inst60000025 // CHECK:STDOUT: inst_block6000000B: {} // CHECK:STDOUT: inst_block6000000C: -// CHECK:STDOUT: 0: inst60000038 +// CHECK:STDOUT: 0: inst60000039 // CHECK:STDOUT: inst_block6000000D: -// CHECK:STDOUT: 0: inst60000039 +// CHECK:STDOUT: 0: inst6000003A // CHECK:STDOUT: inst_block6000000E: -// CHECK:STDOUT: 0: inst60000037 -// CHECK:STDOUT: 1: inst60000038 +// CHECK:STDOUT: 0: inst60000038 +// CHECK:STDOUT: 1: inst60000039 // CHECK:STDOUT: inst_block6000000F: -// CHECK:STDOUT: 0: inst60000039 -// CHECK:STDOUT: 1: inst60000036 +// CHECK:STDOUT: 0: inst6000003A +// CHECK:STDOUT: 1: inst60000037 // CHECK:STDOUT: inst_block60000010: {} // CHECK:STDOUT: inst_block60000011: -// CHECK:STDOUT: 0: inst60000040 +// CHECK:STDOUT: 0: inst60000041 // CHECK:STDOUT: inst_block60000012: -// CHECK:STDOUT: 0: inst60000041 +// CHECK:STDOUT: 0: inst60000042 // CHECK:STDOUT: inst_block60000013: -// CHECK:STDOUT: 0: inst6000003F -// CHECK:STDOUT: 1: inst60000040 +// CHECK:STDOUT: 0: inst60000040 +// CHECK:STDOUT: 1: inst60000041 // CHECK:STDOUT: inst_block60000014: -// CHECK:STDOUT: 0: inst60000041 -// CHECK:STDOUT: 1: inst6000003D +// CHECK:STDOUT: 0: inst60000042 +// CHECK:STDOUT: 1: inst6000003E // CHECK:STDOUT: inst_block60000015: -// CHECK:STDOUT: 0: inst60000035 +// CHECK:STDOUT: 0: inst60000036 // CHECK:STDOUT: inst_block60000016: -// CHECK:STDOUT: 0: inst60000046 +// CHECK:STDOUT: 0: inst60000047 // CHECK:STDOUT: inst_block60000017: -// CHECK:STDOUT: 0: inst6000004C -// CHECK:STDOUT: 1: inst6000004D +// CHECK:STDOUT: 0: inst6000004D +// CHECK:STDOUT: 1: inst6000004E // CHECK:STDOUT: inst_block60000018: -// CHECK:STDOUT: 0: inst60000052 +// CHECK:STDOUT: 0: inst60000053 // CHECK:STDOUT: inst_block60000019: -// CHECK:STDOUT: 0: inst60000054 +// CHECK:STDOUT: 0: inst60000055 // CHECK:STDOUT: inst_block6000001A: -// CHECK:STDOUT: 0: instE -// CHECK:STDOUT: 1: inst6000000F -// CHECK:STDOUT: 2: inst6000001C +// CHECK:STDOUT: 0: instF +// CHECK:STDOUT: 1: inst60000010 +// CHECK:STDOUT: 2: inst6000001D // CHECK:STDOUT: ... diff --git a/toolchain/check/testdata/basics/raw_sem_ir/multifile.carbon b/toolchain/check/testdata/basics/raw_sem_ir/multifile.carbon index 7b70fb812b4c..84d0670419a7 100644 --- a/toolchain/check/testdata/basics/raw_sem_ir/multifile.carbon +++ b/toolchain/check/testdata/basics/raw_sem_ir/multifile.carbon @@ -36,11 +36,11 @@ fn B() { // CHECK:STDOUT: import_ir_insts: {} // CHECK:STDOUT: clang_decls: {} // CHECK:STDOUT: name_scopes: -// CHECK:STDOUT: name_scope0: {inst: instE, parent_scope: name_scope, has_error: false, extended_scopes: [], names: {name0: inst6000000F}} +// CHECK:STDOUT: name_scope0: {inst: instF, parent_scope: name_scope, has_error: false, extended_scopes: [], names: {name0: inst60000010}} // CHECK:STDOUT: entity_names: {} // CHECK:STDOUT: cpp_global_vars: {} // CHECK:STDOUT: functions: -// CHECK:STDOUT: function60000000: {name: name0, parent_scope: name_scope0, call_params_id: inst_block_empty, return_patterns_id: inst_block_empty, body: [inst_block60000005]} +// CHECK:STDOUT: function60000000: {name: name0, parent_scope: name_scope0, call_params_id: inst_block_empty, body: [inst_block60000005]} // CHECK:STDOUT: classes: {} // CHECK:STDOUT: generics: {} // CHECK:STDOUT: specifics: {} @@ -49,41 +49,43 @@ fn B() { // CHECK:STDOUT: types: // CHECK:STDOUT: 'type(TypeType)': // CHECK:STDOUT: value_repr: {kind: copy, type: type(TypeType)} +// CHECK:STDOUT: 'type(inst(FormType))': +// CHECK:STDOUT: value_repr: {kind: copy, type: type(inst(FormType))} // CHECK:STDOUT: 'type(Error)': // CHECK:STDOUT: value_repr: {kind: copy, type: type(Error)} // CHECK:STDOUT: 'type(inst(NamespaceType))': // CHECK:STDOUT: value_repr: {kind: copy, type: type(inst(NamespaceType))} -// CHECK:STDOUT: 'type(inst60000010)': -// CHECK:STDOUT: value_repr: {kind: none, type: type(inst60000011)} // CHECK:STDOUT: 'type(inst60000011)': -// CHECK:STDOUT: value_repr: {kind: none, type: type(inst60000011)} +// CHECK:STDOUT: value_repr: {kind: none, type: type(inst60000012)} +// CHECK:STDOUT: 'type(inst60000012)': +// CHECK:STDOUT: value_repr: {kind: none, type: type(inst60000012)} // CHECK:STDOUT: insts: -// CHECK:STDOUT: instE: {kind: Namespace, arg0: name_scope0, arg1: inst, type: type(inst(NamespaceType))} -// CHECK:STDOUT: inst6000000F: {kind: FunctionDecl, arg0: function60000000, arg1: inst_block_empty, type: type(inst60000010)} -// CHECK:STDOUT: inst60000010: {kind: FunctionType, arg0: function60000000, arg1: specific, type: type(TypeType)} -// CHECK:STDOUT: inst60000011: {kind: TupleType, arg0: inst_block_empty, type: type(TypeType)} -// CHECK:STDOUT: inst60000012: {kind: StructValue, arg0: inst_block_empty, type: type(inst60000010)} -// CHECK:STDOUT: inst60000013: {kind: Return} +// CHECK:STDOUT: instF: {kind: Namespace, arg0: name_scope0, arg1: inst, type: type(inst(NamespaceType))} +// CHECK:STDOUT: inst60000010: {kind: FunctionDecl, arg0: function60000000, arg1: inst_block_empty, type: type(inst60000011)} +// CHECK:STDOUT: inst60000011: {kind: FunctionType, arg0: function60000000, arg1: specific, type: type(TypeType)} +// CHECK:STDOUT: inst60000012: {kind: TupleType, arg0: inst_block_empty, type: type(TypeType)} +// CHECK:STDOUT: inst60000013: {kind: StructValue, arg0: inst_block_empty, type: type(inst60000011)} +// CHECK:STDOUT: inst60000014: {kind: Return} // CHECK:STDOUT: constant_values: // CHECK:STDOUT: values: -// CHECK:STDOUT: instE: concrete_constant(instE) -// CHECK:STDOUT: inst6000000F: concrete_constant(inst60000012) -// CHECK:STDOUT: inst60000010: concrete_constant(inst60000010) +// CHECK:STDOUT: instF: concrete_constant(instF) +// CHECK:STDOUT: inst60000010: concrete_constant(inst60000013) // CHECK:STDOUT: inst60000011: concrete_constant(inst60000011) // CHECK:STDOUT: inst60000012: concrete_constant(inst60000012) +// CHECK:STDOUT: inst60000013: concrete_constant(inst60000013) // CHECK:STDOUT: symbolic_constants: {} // CHECK:STDOUT: inst_blocks: // CHECK:STDOUT: inst_block_empty: {} // CHECK:STDOUT: exports: -// CHECK:STDOUT: 0: inst6000000F +// CHECK:STDOUT: 0: inst60000010 // CHECK:STDOUT: imports: {} // CHECK:STDOUT: global_init: {} // CHECK:STDOUT: inst_block60000004: {} // CHECK:STDOUT: inst_block60000005: -// CHECK:STDOUT: 0: inst60000013 +// CHECK:STDOUT: 0: inst60000014 // CHECK:STDOUT: inst_block60000006: -// CHECK:STDOUT: 0: instE -// CHECK:STDOUT: 1: inst6000000F +// CHECK:STDOUT: 0: instF +// CHECK:STDOUT: 1: inst60000010 // CHECK:STDOUT: ... // CHECK:STDOUT: --- // CHECK:STDOUT: filename: b.carbon @@ -91,20 +93,20 @@ fn B() { // CHECK:STDOUT: import_irs: // CHECK:STDOUT: 'import_ir(ApiForImpl)': {decl_id: inst, is_export: false} // CHECK:STDOUT: 'import_ir(Cpp)': {decl_id: inst, is_export: false} -// CHECK:STDOUT: import_ir50000002: {decl_id: inst5000000F, is_export: false} +// CHECK:STDOUT: import_ir50000002: {decl_id: inst50000010, is_export: false} // CHECK:STDOUT: import_ir_insts: -// CHECK:STDOUT: import_ir_inst0: {ir_id: import_ir50000002, inst_id: inst6000000F} -// CHECK:STDOUT: import_ir_inst1: {ir_id: import_ir50000002, inst_id: inst6000000F} +// CHECK:STDOUT: import_ir_inst0: {ir_id: import_ir50000002, inst_id: inst60000010} +// CHECK:STDOUT: import_ir_inst1: {ir_id: import_ir50000002, inst_id: inst60000010} // CHECK:STDOUT: clang_decls: {} // CHECK:STDOUT: name_scopes: -// CHECK:STDOUT: name_scope0: {inst: instE, parent_scope: name_scope, has_error: false, extended_scopes: [], names: {name1: inst50000010, name0: inst50000011}} -// CHECK:STDOUT: name_scope50000001: {inst: inst50000010, parent_scope: name_scope0, has_error: false, extended_scopes: [], names: {name1: inst50000016}} +// CHECK:STDOUT: name_scope0: {inst: instF, parent_scope: name_scope, has_error: false, extended_scopes: [], names: {name1: inst50000011, name0: inst50000012}} +// CHECK:STDOUT: name_scope50000001: {inst: inst50000011, parent_scope: name_scope0, has_error: false, extended_scopes: [], names: {name1: inst50000017}} // CHECK:STDOUT: entity_names: // CHECK:STDOUT: entity_name50000000: {name: name1, parent_scope: name_scope50000001, index: -1, is_template: 0} // CHECK:STDOUT: cpp_global_vars: {} // CHECK:STDOUT: functions: -// CHECK:STDOUT: function50000000: {name: name0, parent_scope: name_scope0, call_params_id: inst_block_empty, return_patterns_id: inst_block_empty, body: [inst_block50000005]} -// CHECK:STDOUT: function50000001: {name: name1, parent_scope: name_scope50000001, return_patterns_id: inst_block_empty} +// CHECK:STDOUT: function50000000: {name: name0, parent_scope: name_scope0, call_params_id: inst_block_empty, body: [inst_block50000005]} +// CHECK:STDOUT: function50000001: {name: name1, parent_scope: name_scope50000001} // CHECK:STDOUT: classes: {} // CHECK:STDOUT: generics: {} // CHECK:STDOUT: specifics: {} @@ -113,64 +115,66 @@ fn B() { // CHECK:STDOUT: types: // CHECK:STDOUT: 'type(TypeType)': // CHECK:STDOUT: value_repr: {kind: copy, type: type(TypeType)} +// CHECK:STDOUT: 'type(inst(FormType))': +// CHECK:STDOUT: value_repr: {kind: copy, type: type(inst(FormType))} // CHECK:STDOUT: 'type(Error)': // CHECK:STDOUT: value_repr: {kind: copy, type: type(Error)} // CHECK:STDOUT: 'type(inst(NamespaceType))': // CHECK:STDOUT: value_repr: {kind: copy, type: type(inst(NamespaceType))} -// CHECK:STDOUT: 'type(inst50000012)': -// CHECK:STDOUT: value_repr: {kind: none, type: type(inst50000013)} // CHECK:STDOUT: 'type(inst50000013)': -// CHECK:STDOUT: value_repr: {kind: none, type: type(inst50000013)} +// CHECK:STDOUT: value_repr: {kind: none, type: type(inst50000014)} +// CHECK:STDOUT: 'type(inst50000014)': +// CHECK:STDOUT: value_repr: {kind: none, type: type(inst50000014)} // CHECK:STDOUT: 'type(inst(InstType))': -// CHECK:STDOUT: value_repr: {kind: none, type: type(inst50000013)} +// CHECK:STDOUT: value_repr: {kind: none, type: type(inst50000014)} // CHECK:STDOUT: insts: -// CHECK:STDOUT: instE: {kind: Namespace, arg0: name_scope0, arg1: inst, type: type(inst(NamespaceType))} -// CHECK:STDOUT: inst5000000F: {kind: ImportDecl, arg0: name1} -// CHECK:STDOUT: inst50000010: {kind: Namespace, arg0: name_scope50000001, arg1: inst5000000F, type: type(inst(NamespaceType))} -// CHECK:STDOUT: inst50000011: {kind: FunctionDecl, arg0: function50000000, arg1: inst_block_empty, type: type(inst50000012)} -// CHECK:STDOUT: inst50000012: {kind: FunctionType, arg0: function50000000, arg1: specific, type: type(TypeType)} -// CHECK:STDOUT: inst50000013: {kind: TupleType, arg0: inst_block_empty, type: type(TypeType)} -// CHECK:STDOUT: inst50000014: {kind: StructValue, arg0: inst_block_empty, type: type(inst50000012)} -// CHECK:STDOUT: inst50000015: {kind: NameRef, arg0: name1, arg1: inst50000010, type: type(inst(NamespaceType))} -// CHECK:STDOUT: inst50000016: {kind: ImportRefLoaded, arg0: import_ir_inst0, arg1: entity_name50000000, type: type(inst50000018)} -// CHECK:STDOUT: inst50000017: {kind: FunctionDecl, arg0: function50000001, arg1: inst_block_empty, type: type(inst50000018)} -// CHECK:STDOUT: inst50000018: {kind: FunctionType, arg0: function50000001, arg1: specific, type: type(TypeType)} -// CHECK:STDOUT: inst50000019: {kind: StructValue, arg0: inst_block_empty, type: type(inst50000018)} -// CHECK:STDOUT: inst5000001A: {kind: NameRef, arg0: name1, arg1: inst50000016, type: type(inst50000018)} -// CHECK:STDOUT: inst5000001B: {kind: Call, arg0: inst5000001A, arg1: inst_block_empty, type: type(inst50000013)} -// CHECK:STDOUT: inst5000001C: {kind: Return} +// CHECK:STDOUT: instF: {kind: Namespace, arg0: name_scope0, arg1: inst, type: type(inst(NamespaceType))} +// CHECK:STDOUT: inst50000010: {kind: ImportDecl, arg0: name1} +// CHECK:STDOUT: inst50000011: {kind: Namespace, arg0: name_scope50000001, arg1: inst50000010, type: type(inst(NamespaceType))} +// CHECK:STDOUT: inst50000012: {kind: FunctionDecl, arg0: function50000000, arg1: inst_block_empty, type: type(inst50000013)} +// CHECK:STDOUT: inst50000013: {kind: FunctionType, arg0: function50000000, arg1: specific, type: type(TypeType)} +// CHECK:STDOUT: inst50000014: {kind: TupleType, arg0: inst_block_empty, type: type(TypeType)} +// CHECK:STDOUT: inst50000015: {kind: StructValue, arg0: inst_block_empty, type: type(inst50000013)} +// CHECK:STDOUT: inst50000016: {kind: NameRef, arg0: name1, arg1: inst50000011, type: type(inst(NamespaceType))} +// CHECK:STDOUT: inst50000017: {kind: ImportRefLoaded, arg0: import_ir_inst0, arg1: entity_name50000000, type: type(inst50000019)} +// CHECK:STDOUT: inst50000018: {kind: FunctionDecl, arg0: function50000001, arg1: inst_block_empty, type: type(inst50000019)} +// CHECK:STDOUT: inst50000019: {kind: FunctionType, arg0: function50000001, arg1: specific, type: type(TypeType)} +// CHECK:STDOUT: inst5000001A: {kind: StructValue, arg0: inst_block_empty, type: type(inst50000019)} +// CHECK:STDOUT: inst5000001B: {kind: NameRef, arg0: name1, arg1: inst50000017, type: type(inst50000019)} +// CHECK:STDOUT: inst5000001C: {kind: Call, arg0: inst5000001B, arg1: inst_block_empty, type: type(inst50000014)} +// CHECK:STDOUT: inst5000001D: {kind: Return} // CHECK:STDOUT: constant_values: // CHECK:STDOUT: values: -// CHECK:STDOUT: instE: concrete_constant(instE) -// CHECK:STDOUT: inst50000010: concrete_constant(inst50000010) -// CHECK:STDOUT: inst50000011: concrete_constant(inst50000014) -// CHECK:STDOUT: inst50000012: concrete_constant(inst50000012) +// CHECK:STDOUT: instF: concrete_constant(instF) +// CHECK:STDOUT: inst50000011: concrete_constant(inst50000011) +// CHECK:STDOUT: inst50000012: concrete_constant(inst50000015) // CHECK:STDOUT: inst50000013: concrete_constant(inst50000013) // CHECK:STDOUT: inst50000014: concrete_constant(inst50000014) -// CHECK:STDOUT: inst50000015: concrete_constant(inst50000010) -// CHECK:STDOUT: inst50000016: concrete_constant(inst50000019) -// CHECK:STDOUT: inst50000017: concrete_constant(inst50000019) -// CHECK:STDOUT: inst50000018: concrete_constant(inst50000018) +// CHECK:STDOUT: inst50000015: concrete_constant(inst50000015) +// CHECK:STDOUT: inst50000016: concrete_constant(inst50000011) +// CHECK:STDOUT: inst50000017: concrete_constant(inst5000001A) +// CHECK:STDOUT: inst50000018: concrete_constant(inst5000001A) // CHECK:STDOUT: inst50000019: concrete_constant(inst50000019) -// CHECK:STDOUT: inst5000001A: concrete_constant(inst50000019) +// CHECK:STDOUT: inst5000001A: concrete_constant(inst5000001A) +// CHECK:STDOUT: inst5000001B: concrete_constant(inst5000001A) // CHECK:STDOUT: symbolic_constants: {} // CHECK:STDOUT: inst_blocks: // CHECK:STDOUT: inst_block_empty: {} // CHECK:STDOUT: exports: -// CHECK:STDOUT: 0: inst50000011 +// CHECK:STDOUT: 0: inst50000012 // CHECK:STDOUT: imports: -// CHECK:STDOUT: 0: inst50000010 -// CHECK:STDOUT: 1: inst50000016 -// CHECK:STDOUT: 2: inst50000017 +// CHECK:STDOUT: 0: inst50000011 +// CHECK:STDOUT: 1: inst50000017 +// CHECK:STDOUT: 2: inst50000018 // CHECK:STDOUT: global_init: {} // CHECK:STDOUT: inst_block50000004: {} // CHECK:STDOUT: inst_block50000005: -// CHECK:STDOUT: 0: inst50000015 -// CHECK:STDOUT: 1: inst5000001A -// CHECK:STDOUT: 2: inst5000001B -// CHECK:STDOUT: 3: inst5000001C +// CHECK:STDOUT: 0: inst50000016 +// CHECK:STDOUT: 1: inst5000001B +// CHECK:STDOUT: 2: inst5000001C +// CHECK:STDOUT: 3: inst5000001D // CHECK:STDOUT: inst_block50000006: -// CHECK:STDOUT: 0: instE -// CHECK:STDOUT: 1: inst5000000F -// CHECK:STDOUT: 2: inst50000011 +// CHECK:STDOUT: 0: instF +// CHECK:STDOUT: 1: inst50000010 +// CHECK:STDOUT: 2: inst50000012 // CHECK:STDOUT: ... diff --git a/toolchain/check/testdata/basics/raw_sem_ir/multifile_with_textual_ir.carbon b/toolchain/check/testdata/basics/raw_sem_ir/multifile_with_textual_ir.carbon index 1183277750c3..df4dbef86d83 100644 --- a/toolchain/check/testdata/basics/raw_sem_ir/multifile_with_textual_ir.carbon +++ b/toolchain/check/testdata/basics/raw_sem_ir/multifile_with_textual_ir.carbon @@ -36,11 +36,11 @@ fn B() { // CHECK:STDOUT: import_ir_insts: {} // CHECK:STDOUT: clang_decls: {} // CHECK:STDOUT: name_scopes: -// CHECK:STDOUT: name_scope0: {inst: instE, parent_scope: name_scope, has_error: false, extended_scopes: [], names: {name0: inst6000000F}} +// CHECK:STDOUT: name_scope0: {inst: instF, parent_scope: name_scope, has_error: false, extended_scopes: [], names: {name0: inst60000010}} // CHECK:STDOUT: entity_names: {} // CHECK:STDOUT: cpp_global_vars: {} // CHECK:STDOUT: functions: -// CHECK:STDOUT: function60000000: {name: name0, parent_scope: name_scope0, call_params_id: inst_block_empty, return_patterns_id: inst_block_empty, body: [inst_block60000005]} +// CHECK:STDOUT: function60000000: {name: name0, parent_scope: name_scope0, call_params_id: inst_block_empty, body: [inst_block60000005]} // CHECK:STDOUT: classes: {} // CHECK:STDOUT: generics: {} // CHECK:STDOUT: specifics: {} @@ -49,41 +49,43 @@ fn B() { // CHECK:STDOUT: types: // CHECK:STDOUT: 'type(TypeType)': // CHECK:STDOUT: value_repr: {kind: copy, type: type(TypeType)} +// CHECK:STDOUT: 'type(inst(FormType))': +// CHECK:STDOUT: value_repr: {kind: copy, type: type(inst(FormType))} // CHECK:STDOUT: 'type(Error)': // CHECK:STDOUT: value_repr: {kind: copy, type: type(Error)} // CHECK:STDOUT: 'type(inst(NamespaceType))': // CHECK:STDOUT: value_repr: {kind: copy, type: type(inst(NamespaceType))} -// CHECK:STDOUT: 'type(inst60000010)': -// CHECK:STDOUT: value_repr: {kind: none, type: type(inst60000011)} // CHECK:STDOUT: 'type(inst60000011)': -// CHECK:STDOUT: value_repr: {kind: none, type: type(inst60000011)} +// CHECK:STDOUT: value_repr: {kind: none, type: type(inst60000012)} +// CHECK:STDOUT: 'type(inst60000012)': +// CHECK:STDOUT: value_repr: {kind: none, type: type(inst60000012)} // CHECK:STDOUT: insts: -// CHECK:STDOUT: instE: {kind: Namespace, arg0: name_scope0, arg1: inst, type: type(inst(NamespaceType))} -// CHECK:STDOUT: inst6000000F: {kind: FunctionDecl, arg0: function60000000, arg1: inst_block_empty, type: type(inst60000010)} -// CHECK:STDOUT: inst60000010: {kind: FunctionType, arg0: function60000000, arg1: specific, type: type(TypeType)} -// CHECK:STDOUT: inst60000011: {kind: TupleType, arg0: inst_block_empty, type: type(TypeType)} -// CHECK:STDOUT: inst60000012: {kind: StructValue, arg0: inst_block_empty, type: type(inst60000010)} -// CHECK:STDOUT: inst60000013: {kind: Return} +// CHECK:STDOUT: instF: {kind: Namespace, arg0: name_scope0, arg1: inst, type: type(inst(NamespaceType))} +// CHECK:STDOUT: inst60000010: {kind: FunctionDecl, arg0: function60000000, arg1: inst_block_empty, type: type(inst60000011)} +// CHECK:STDOUT: inst60000011: {kind: FunctionType, arg0: function60000000, arg1: specific, type: type(TypeType)} +// CHECK:STDOUT: inst60000012: {kind: TupleType, arg0: inst_block_empty, type: type(TypeType)} +// CHECK:STDOUT: inst60000013: {kind: StructValue, arg0: inst_block_empty, type: type(inst60000011)} +// CHECK:STDOUT: inst60000014: {kind: Return} // CHECK:STDOUT: constant_values: // CHECK:STDOUT: values: -// CHECK:STDOUT: instE: concrete_constant(instE) -// CHECK:STDOUT: inst6000000F: concrete_constant(inst60000012) -// CHECK:STDOUT: inst60000010: concrete_constant(inst60000010) +// CHECK:STDOUT: instF: concrete_constant(instF) +// CHECK:STDOUT: inst60000010: concrete_constant(inst60000013) // CHECK:STDOUT: inst60000011: concrete_constant(inst60000011) // CHECK:STDOUT: inst60000012: concrete_constant(inst60000012) +// CHECK:STDOUT: inst60000013: concrete_constant(inst60000013) // CHECK:STDOUT: symbolic_constants: {} // CHECK:STDOUT: inst_blocks: // CHECK:STDOUT: inst_block_empty: {} // CHECK:STDOUT: exports: -// CHECK:STDOUT: 0: inst6000000F +// CHECK:STDOUT: 0: inst60000010 // CHECK:STDOUT: imports: {} // CHECK:STDOUT: global_init: {} // CHECK:STDOUT: inst_block60000004: {} // CHECK:STDOUT: inst_block60000005: -// CHECK:STDOUT: 0: inst60000013 +// CHECK:STDOUT: 0: inst60000014 // CHECK:STDOUT: inst_block60000006: -// CHECK:STDOUT: 0: instE -// CHECK:STDOUT: 1: inst6000000F +// CHECK:STDOUT: 0: instF +// CHECK:STDOUT: 1: inst60000010 // CHECK:STDOUT: ... // CHECK:STDOUT: --- a.carbon // CHECK:STDOUT: @@ -110,20 +112,20 @@ fn B() { // CHECK:STDOUT: import_irs: // CHECK:STDOUT: 'import_ir(ApiForImpl)': {decl_id: inst, is_export: false} // CHECK:STDOUT: 'import_ir(Cpp)': {decl_id: inst, is_export: false} -// CHECK:STDOUT: import_ir50000002: {decl_id: inst5000000F, is_export: false} +// CHECK:STDOUT: import_ir50000002: {decl_id: inst50000010, is_export: false} // CHECK:STDOUT: import_ir_insts: -// CHECK:STDOUT: import_ir_inst0: {ir_id: import_ir50000002, inst_id: inst6000000F} -// CHECK:STDOUT: import_ir_inst1: {ir_id: import_ir50000002, inst_id: inst6000000F} +// CHECK:STDOUT: import_ir_inst0: {ir_id: import_ir50000002, inst_id: inst60000010} +// CHECK:STDOUT: import_ir_inst1: {ir_id: import_ir50000002, inst_id: inst60000010} // CHECK:STDOUT: clang_decls: {} // CHECK:STDOUT: name_scopes: -// CHECK:STDOUT: name_scope0: {inst: instE, parent_scope: name_scope, has_error: false, extended_scopes: [], names: {name1: inst50000010, name0: inst50000011}} -// CHECK:STDOUT: name_scope50000001: {inst: inst50000010, parent_scope: name_scope0, has_error: false, extended_scopes: [], names: {name1: inst50000016}} +// CHECK:STDOUT: name_scope0: {inst: instF, parent_scope: name_scope, has_error: false, extended_scopes: [], names: {name1: inst50000011, name0: inst50000012}} +// CHECK:STDOUT: name_scope50000001: {inst: inst50000011, parent_scope: name_scope0, has_error: false, extended_scopes: [], names: {name1: inst50000017}} // CHECK:STDOUT: entity_names: // CHECK:STDOUT: entity_name50000000: {name: name1, parent_scope: name_scope50000001, index: -1, is_template: 0} // CHECK:STDOUT: cpp_global_vars: {} // CHECK:STDOUT: functions: -// CHECK:STDOUT: function50000000: {name: name0, parent_scope: name_scope0, call_params_id: inst_block_empty, return_patterns_id: inst_block_empty, body: [inst_block50000005]} -// CHECK:STDOUT: function50000001: {name: name1, parent_scope: name_scope50000001, return_patterns_id: inst_block_empty} +// CHECK:STDOUT: function50000000: {name: name0, parent_scope: name_scope0, call_params_id: inst_block_empty, body: [inst_block50000005]} +// CHECK:STDOUT: function50000001: {name: name1, parent_scope: name_scope50000001} // CHECK:STDOUT: classes: {} // CHECK:STDOUT: generics: {} // CHECK:STDOUT: specifics: {} @@ -132,66 +134,68 @@ fn B() { // CHECK:STDOUT: types: // CHECK:STDOUT: 'type(TypeType)': // CHECK:STDOUT: value_repr: {kind: copy, type: type(TypeType)} +// CHECK:STDOUT: 'type(inst(FormType))': +// CHECK:STDOUT: value_repr: {kind: copy, type: type(inst(FormType))} // CHECK:STDOUT: 'type(Error)': // CHECK:STDOUT: value_repr: {kind: copy, type: type(Error)} // CHECK:STDOUT: 'type(inst(NamespaceType))': // CHECK:STDOUT: value_repr: {kind: copy, type: type(inst(NamespaceType))} -// CHECK:STDOUT: 'type(inst50000012)': -// CHECK:STDOUT: value_repr: {kind: none, type: type(inst50000013)} // CHECK:STDOUT: 'type(inst50000013)': -// CHECK:STDOUT: value_repr: {kind: none, type: type(inst50000013)} +// CHECK:STDOUT: value_repr: {kind: none, type: type(inst50000014)} +// CHECK:STDOUT: 'type(inst50000014)': +// CHECK:STDOUT: value_repr: {kind: none, type: type(inst50000014)} // CHECK:STDOUT: 'type(inst(InstType))': -// CHECK:STDOUT: value_repr: {kind: none, type: type(inst50000013)} +// CHECK:STDOUT: value_repr: {kind: none, type: type(inst50000014)} // CHECK:STDOUT: insts: -// CHECK:STDOUT: instE: {kind: Namespace, arg0: name_scope0, arg1: inst, type: type(inst(NamespaceType))} -// CHECK:STDOUT: inst5000000F: {kind: ImportDecl, arg0: name1} -// CHECK:STDOUT: inst50000010: {kind: Namespace, arg0: name_scope50000001, arg1: inst5000000F, type: type(inst(NamespaceType))} -// CHECK:STDOUT: inst50000011: {kind: FunctionDecl, arg0: function50000000, arg1: inst_block_empty, type: type(inst50000012)} -// CHECK:STDOUT: inst50000012: {kind: FunctionType, arg0: function50000000, arg1: specific, type: type(TypeType)} -// CHECK:STDOUT: inst50000013: {kind: TupleType, arg0: inst_block_empty, type: type(TypeType)} -// CHECK:STDOUT: inst50000014: {kind: StructValue, arg0: inst_block_empty, type: type(inst50000012)} -// CHECK:STDOUT: inst50000015: {kind: NameRef, arg0: name1, arg1: inst50000010, type: type(inst(NamespaceType))} -// CHECK:STDOUT: inst50000016: {kind: ImportRefLoaded, arg0: import_ir_inst0, arg1: entity_name50000000, type: type(inst50000018)} -// CHECK:STDOUT: inst50000017: {kind: FunctionDecl, arg0: function50000001, arg1: inst_block_empty, type: type(inst50000018)} -// CHECK:STDOUT: inst50000018: {kind: FunctionType, arg0: function50000001, arg1: specific, type: type(TypeType)} -// CHECK:STDOUT: inst50000019: {kind: StructValue, arg0: inst_block_empty, type: type(inst50000018)} -// CHECK:STDOUT: inst5000001A: {kind: NameRef, arg0: name1, arg1: inst50000016, type: type(inst50000018)} -// CHECK:STDOUT: inst5000001B: {kind: Call, arg0: inst5000001A, arg1: inst_block_empty, type: type(inst50000013)} -// CHECK:STDOUT: inst5000001C: {kind: Return} +// CHECK:STDOUT: instF: {kind: Namespace, arg0: name_scope0, arg1: inst, type: type(inst(NamespaceType))} +// CHECK:STDOUT: inst50000010: {kind: ImportDecl, arg0: name1} +// CHECK:STDOUT: inst50000011: {kind: Namespace, arg0: name_scope50000001, arg1: inst50000010, type: type(inst(NamespaceType))} +// CHECK:STDOUT: inst50000012: {kind: FunctionDecl, arg0: function50000000, arg1: inst_block_empty, type: type(inst50000013)} +// CHECK:STDOUT: inst50000013: {kind: FunctionType, arg0: function50000000, arg1: specific, type: type(TypeType)} +// CHECK:STDOUT: inst50000014: {kind: TupleType, arg0: inst_block_empty, type: type(TypeType)} +// CHECK:STDOUT: inst50000015: {kind: StructValue, arg0: inst_block_empty, type: type(inst50000013)} +// CHECK:STDOUT: inst50000016: {kind: NameRef, arg0: name1, arg1: inst50000011, type: type(inst(NamespaceType))} +// CHECK:STDOUT: inst50000017: {kind: ImportRefLoaded, arg0: import_ir_inst0, arg1: entity_name50000000, type: type(inst50000019)} +// CHECK:STDOUT: inst50000018: {kind: FunctionDecl, arg0: function50000001, arg1: inst_block_empty, type: type(inst50000019)} +// CHECK:STDOUT: inst50000019: {kind: FunctionType, arg0: function50000001, arg1: specific, type: type(TypeType)} +// CHECK:STDOUT: inst5000001A: {kind: StructValue, arg0: inst_block_empty, type: type(inst50000019)} +// CHECK:STDOUT: inst5000001B: {kind: NameRef, arg0: name1, arg1: inst50000017, type: type(inst50000019)} +// CHECK:STDOUT: inst5000001C: {kind: Call, arg0: inst5000001B, arg1: inst_block_empty, type: type(inst50000014)} +// CHECK:STDOUT: inst5000001D: {kind: Return} // CHECK:STDOUT: constant_values: // CHECK:STDOUT: values: -// CHECK:STDOUT: instE: concrete_constant(instE) -// CHECK:STDOUT: inst50000010: concrete_constant(inst50000010) -// CHECK:STDOUT: inst50000011: concrete_constant(inst50000014) -// CHECK:STDOUT: inst50000012: concrete_constant(inst50000012) +// CHECK:STDOUT: instF: concrete_constant(instF) +// CHECK:STDOUT: inst50000011: concrete_constant(inst50000011) +// CHECK:STDOUT: inst50000012: concrete_constant(inst50000015) // CHECK:STDOUT: inst50000013: concrete_constant(inst50000013) // CHECK:STDOUT: inst50000014: concrete_constant(inst50000014) -// CHECK:STDOUT: inst50000015: concrete_constant(inst50000010) -// CHECK:STDOUT: inst50000016: concrete_constant(inst50000019) -// CHECK:STDOUT: inst50000017: concrete_constant(inst50000019) -// CHECK:STDOUT: inst50000018: concrete_constant(inst50000018) +// CHECK:STDOUT: inst50000015: concrete_constant(inst50000015) +// CHECK:STDOUT: inst50000016: concrete_constant(inst50000011) +// CHECK:STDOUT: inst50000017: concrete_constant(inst5000001A) +// CHECK:STDOUT: inst50000018: concrete_constant(inst5000001A) // CHECK:STDOUT: inst50000019: concrete_constant(inst50000019) -// CHECK:STDOUT: inst5000001A: concrete_constant(inst50000019) +// CHECK:STDOUT: inst5000001A: concrete_constant(inst5000001A) +// CHECK:STDOUT: inst5000001B: concrete_constant(inst5000001A) // CHECK:STDOUT: symbolic_constants: {} // CHECK:STDOUT: inst_blocks: // CHECK:STDOUT: inst_block_empty: {} // CHECK:STDOUT: exports: -// CHECK:STDOUT: 0: inst50000011 +// CHECK:STDOUT: 0: inst50000012 // CHECK:STDOUT: imports: -// CHECK:STDOUT: 0: inst50000010 -// CHECK:STDOUT: 1: inst50000016 -// CHECK:STDOUT: 2: inst50000017 +// CHECK:STDOUT: 0: inst50000011 +// CHECK:STDOUT: 1: inst50000017 +// CHECK:STDOUT: 2: inst50000018 // CHECK:STDOUT: global_init: {} // CHECK:STDOUT: inst_block50000004: {} // CHECK:STDOUT: inst_block50000005: -// CHECK:STDOUT: 0: inst50000015 -// CHECK:STDOUT: 1: inst5000001A -// CHECK:STDOUT: 2: inst5000001B -// CHECK:STDOUT: 3: inst5000001C +// CHECK:STDOUT: 0: inst50000016 +// CHECK:STDOUT: 1: inst5000001B +// CHECK:STDOUT: 2: inst5000001C +// CHECK:STDOUT: 3: inst5000001D // CHECK:STDOUT: inst_block50000006: -// CHECK:STDOUT: 0: instE -// CHECK:STDOUT: 1: inst5000000F -// CHECK:STDOUT: 2: inst50000011 +// CHECK:STDOUT: 0: instF +// CHECK:STDOUT: 1: inst50000010 +// CHECK:STDOUT: 2: inst50000012 // CHECK:STDOUT: ... // CHECK:STDOUT: --- b.carbon // CHECK:STDOUT: diff --git a/toolchain/check/testdata/basics/raw_sem_ir/one_file.carbon b/toolchain/check/testdata/basics/raw_sem_ir/one_file.carbon index 98fa909526f5..853d3a8ff8d8 100644 --- a/toolchain/check/testdata/basics/raw_sem_ir/one_file.carbon +++ b/toolchain/check/testdata/basics/raw_sem_ir/one_file.carbon @@ -23,221 +23,226 @@ fn Foo[T:! type](p: T*) -> (T*, ()) { // CHECK:STDOUT: import_irs: // CHECK:STDOUT: 'import_ir(ApiForImpl)': {decl_id: inst, is_export: false} // CHECK:STDOUT: 'import_ir(Cpp)': {decl_id: inst, is_export: false} -// CHECK:STDOUT: import_ir60000002: {decl_id: inst6000000F, is_export: false} -// CHECK:STDOUT: import_ir60000003: {decl_id: inst6000000F, is_export: false} -// CHECK:STDOUT: import_ir60000004: {decl_id: inst6000000F, is_export: false} -// CHECK:STDOUT: import_ir60000005: {decl_id: inst6000000F, is_export: false} +// CHECK:STDOUT: import_ir60000002: {decl_id: inst60000010, is_export: false} +// CHECK:STDOUT: import_ir60000003: {decl_id: inst60000010, is_export: false} +// CHECK:STDOUT: import_ir60000004: {decl_id: inst60000010, is_export: false} +// CHECK:STDOUT: import_ir60000005: {decl_id: inst60000010, is_export: false} // CHECK:STDOUT: import_ir_insts: -// CHECK:STDOUT: import_ir_inst0: {ir_id: import_ir60000004, inst_id: inst4800000F} -// CHECK:STDOUT: import_ir_inst1: {ir_id: import_ir60000004, inst_id: inst4800000F} -// CHECK:STDOUT: import_ir_inst2: {ir_id: import_ir60000004, inst_id: inst48000011} -// CHECK:STDOUT: import_ir_inst3: {ir_id: import_ir60000004, inst_id: inst4800002D} -// CHECK:STDOUT: import_ir_inst4: {ir_id: import_ir60000004, inst_id: inst48000028} -// CHECK:STDOUT: import_ir_inst5: {ir_id: import_ir60000004, inst_id: inst48000028} -// CHECK:STDOUT: import_ir_inst6: {ir_id: import_ir60000004, inst_id: inst48000028} -// CHECK:STDOUT: import_ir_inst7: {ir_id: import_ir60000004, inst_id: inst48000022} -// CHECK:STDOUT: import_ir_inst8: {ir_id: import_ir60000004, inst_id: inst48000023} -// CHECK:STDOUT: import_ir_inst9: {ir_id: import_ir60000004, inst_id: inst4800001C} -// CHECK:STDOUT: import_ir_instA: {ir_id: import_ir60000004, inst_id: inst4800001E} -// CHECK:STDOUT: import_ir_instB: {ir_id: import_ir60000004, inst_id: inst48000021} -// CHECK:STDOUT: import_ir_instC: {ir_id: import_ir60000004, inst_id: inst48000011} -// CHECK:STDOUT: import_ir_instD: {ir_id: import_ir60000004, inst_id: inst48000015} -// CHECK:STDOUT: import_ir_instE: {ir_id: import_ir60000004, inst_id: inst48000018} -// CHECK:STDOUT: import_ir_instF: {ir_id: import_ir60000004, inst_id: inst4800001D} -// CHECK:STDOUT: import_ir_inst10: {ir_id: import_ir60000004, inst_id: inst48000061} -// CHECK:STDOUT: import_ir_inst11: {ir_id: import_ir60000004, inst_id: inst4800005F} -// CHECK:STDOUT: import_ir_inst12: {ir_id: import_ir60000004, inst_id: inst48000075} -// CHECK:STDOUT: import_ir_inst13: {ir_id: import_ir60000004, inst_id: inst48000060} -// CHECK:STDOUT: import_ir_inst14: {ir_id: import_ir60000004, inst_id: inst48000075} -// CHECK:STDOUT: import_ir_inst15: {ir_id: import_ir60000004, inst_id: inst48000070} -// CHECK:STDOUT: import_ir_inst16: {ir_id: import_ir60000004, inst_id: inst48000071} -// CHECK:STDOUT: import_ir_inst17: {ir_id: import_ir60000004, inst_id: inst4800006C} -// CHECK:STDOUT: import_ir_inst18: {ir_id: import_ir60000004, inst_id: inst4800006E} -// CHECK:STDOUT: import_ir_inst19: {ir_id: import_ir60000004, inst_id: inst4800006F} -// CHECK:STDOUT: import_ir_inst1A: {ir_id: import_ir60000004, inst_id: inst48000050} -// CHECK:STDOUT: import_ir_inst1B: {ir_id: import_ir60000004, inst_id: inst48000067} -// CHECK:STDOUT: import_ir_inst1C: {ir_id: import_ir60000004, inst_id: inst48000068} -// CHECK:STDOUT: import_ir_inst1D: {ir_id: import_ir60000004, inst_id: inst48000069} -// CHECK:STDOUT: import_ir_inst1E: {ir_id: import_ir60000004, inst_id: inst4800006D} -// CHECK:STDOUT: import_ir_inst1F: {ir_id: import_ir60000004, inst_id: inst4800007D} -// CHECK:STDOUT: import_ir_inst20: {ir_id: import_ir60000004, inst_id: inst48000085} -// CHECK:STDOUT: import_ir_inst21: {ir_id: import_ir60000004, inst_id: inst4800008C} -// CHECK:STDOUT: import_ir_inst22: {ir_id: import_ir60000004, inst_id: inst48000090} -// CHECK:STDOUT: import_ir_inst23: {ir_id: import_ir60000004, inst_id: inst48000091} -// CHECK:STDOUT: import_ir_inst24: {ir_id: import_ir60000004, inst_id: inst48000096} -// CHECK:STDOUT: import_ir_inst25: {ir_id: import_ir60000004, inst_id: inst48000054} -// CHECK:STDOUT: import_ir_inst26: {ir_id: import_ir60000004, inst_id: inst4800005A} +// CHECK:STDOUT: import_ir_inst0: {ir_id: import_ir60000004, inst_id: inst48000010} +// CHECK:STDOUT: import_ir_inst1: {ir_id: import_ir60000004, inst_id: inst48000010} +// CHECK:STDOUT: import_ir_inst2: {ir_id: import_ir60000004, inst_id: inst48000012} +// CHECK:STDOUT: import_ir_inst3: {ir_id: import_ir60000004, inst_id: inst48000031} +// CHECK:STDOUT: import_ir_inst4: {ir_id: import_ir60000004, inst_id: inst4800002C} +// CHECK:STDOUT: import_ir_inst5: {ir_id: import_ir60000004, inst_id: inst4800002C} +// CHECK:STDOUT: import_ir_inst6: {ir_id: import_ir60000004, inst_id: inst4800002C} +// CHECK:STDOUT: import_ir_inst7: {ir_id: import_ir60000004, inst_id: inst48000026} +// CHECK:STDOUT: import_ir_inst8: {ir_id: import_ir60000004, inst_id: inst48000027} +// CHECK:STDOUT: import_ir_inst9: {ir_id: import_ir60000004, inst_id: inst4800001D} +// CHECK:STDOUT: import_ir_instA: {ir_id: import_ir60000004, inst_id: inst4800001F} +// CHECK:STDOUT: import_ir_instB: {ir_id: import_ir60000004, inst_id: inst48000022} +// CHECK:STDOUT: import_ir_instC: {ir_id: import_ir60000004, inst_id: inst48000012} +// CHECK:STDOUT: import_ir_instD: {ir_id: import_ir60000004, inst_id: inst48000016} +// CHECK:STDOUT: import_ir_instE: {ir_id: import_ir60000004, inst_id: inst48000019} +// CHECK:STDOUT: import_ir_instF: {ir_id: import_ir60000004, inst_id: inst4800001E} +// CHECK:STDOUT: import_ir_inst10: {ir_id: import_ir60000004, inst_id: inst48000025} +// CHECK:STDOUT: import_ir_inst11: {ir_id: import_ir60000004, inst_id: inst4800006A} +// CHECK:STDOUT: import_ir_inst12: {ir_id: import_ir60000004, inst_id: inst48000068} +// CHECK:STDOUT: import_ir_inst13: {ir_id: import_ir60000004, inst_id: inst48000081} +// CHECK:STDOUT: import_ir_inst14: {ir_id: import_ir60000004, inst_id: inst48000069} +// CHECK:STDOUT: import_ir_inst15: {ir_id: import_ir60000004, inst_id: inst48000081} +// CHECK:STDOUT: import_ir_inst16: {ir_id: import_ir60000004, inst_id: inst4800007C} +// CHECK:STDOUT: import_ir_inst17: {ir_id: import_ir60000004, inst_id: inst4800007D} +// CHECK:STDOUT: import_ir_inst18: {ir_id: import_ir60000004, inst_id: inst48000075} +// CHECK:STDOUT: import_ir_inst19: {ir_id: import_ir60000004, inst_id: inst48000077} +// CHECK:STDOUT: import_ir_inst1A: {ir_id: import_ir60000004, inst_id: inst48000078} +// CHECK:STDOUT: import_ir_inst1B: {ir_id: import_ir60000004, inst_id: inst48000059} +// CHECK:STDOUT: import_ir_inst1C: {ir_id: import_ir60000004, inst_id: inst48000070} +// CHECK:STDOUT: import_ir_inst1D: {ir_id: import_ir60000004, inst_id: inst48000071} +// CHECK:STDOUT: import_ir_inst1E: {ir_id: import_ir60000004, inst_id: inst48000072} +// CHECK:STDOUT: import_ir_inst1F: {ir_id: import_ir60000004, inst_id: inst48000076} +// CHECK:STDOUT: import_ir_inst20: {ir_id: import_ir60000004, inst_id: inst4800007B} +// CHECK:STDOUT: import_ir_inst21: {ir_id: import_ir60000004, inst_id: inst48000089} +// CHECK:STDOUT: import_ir_inst22: {ir_id: import_ir60000004, inst_id: inst48000092} +// CHECK:STDOUT: import_ir_inst23: {ir_id: import_ir60000004, inst_id: inst48000099} +// CHECK:STDOUT: import_ir_inst24: {ir_id: import_ir60000004, inst_id: inst4800009D} +// CHECK:STDOUT: import_ir_inst25: {ir_id: import_ir60000004, inst_id: inst4800009E} +// CHECK:STDOUT: import_ir_inst26: {ir_id: import_ir60000004, inst_id: inst480000A4} // CHECK:STDOUT: import_ir_inst27: {ir_id: import_ir60000004, inst_id: inst4800005D} -// CHECK:STDOUT: import_ir_inst28: {ir_id: import_ir60000004, inst_id: inst48000050} -// CHECK:STDOUT: import_ir_inst29: {ir_id: import_ir60000004, inst_id: inst48000052} -// CHECK:STDOUT: import_ir_inst2A: {ir_id: import_ir60000004, inst_id: inst48000058} -// CHECK:STDOUT: import_ir_inst2B: {ir_id: import_ir60000004, inst_id: inst4800005C} -// CHECK:STDOUT: import_ir_inst2C: {ir_id: import_ir60000004, inst_id: inst48000063} -// CHECK:STDOUT: import_ir_inst2D: {ir_id: import_ir60000004, inst_id: inst48000078} -// CHECK:STDOUT: import_ir_inst2E: {ir_id: import_ir60000004, inst_id: inst48000079} -// CHECK:STDOUT: import_ir_inst2F: {ir_id: import_ir60000004, inst_id: inst480000AB} -// CHECK:STDOUT: import_ir_inst30: {ir_id: import_ir60000004, inst_id: inst480000A9} -// CHECK:STDOUT: import_ir_inst31: {ir_id: import_ir60000004, inst_id: inst480000A7} -// CHECK:STDOUT: import_ir_inst32: {ir_id: import_ir60000004, inst_id: inst480000A8} -// CHECK:STDOUT: import_ir_inst33: {ir_id: import_ir60000004, inst_id: inst480000C3} -// CHECK:STDOUT: import_ir_inst34: {ir_id: import_ir60000004, inst_id: inst480000C1} -// CHECK:STDOUT: import_ir_inst35: {ir_id: import_ir60000004, inst_id: inst480000BF} -// CHECK:STDOUT: import_ir_inst36: {ir_id: import_ir60000004, inst_id: inst480000C0} -// CHECK:STDOUT: import_ir_inst37: {ir_id: import_ir60000004, inst_id: inst480000DB} -// CHECK:STDOUT: import_ir_inst38: {ir_id: import_ir60000004, inst_id: inst480000D9} -// CHECK:STDOUT: import_ir_inst39: {ir_id: import_ir60000004, inst_id: inst480000D7} -// CHECK:STDOUT: import_ir_inst3A: {ir_id: import_ir60000004, inst_id: inst480000D8} -// CHECK:STDOUT: import_ir_inst3B: {ir_id: import_ir60000004, inst_id: inst480000F3} -// CHECK:STDOUT: import_ir_inst3C: {ir_id: import_ir60000004, inst_id: inst480000F1} -// CHECK:STDOUT: import_ir_inst3D: {ir_id: import_ir60000004, inst_id: inst480000EF} -// CHECK:STDOUT: import_ir_inst3E: {ir_id: import_ir60000004, inst_id: inst480000F0} -// CHECK:STDOUT: import_ir_inst3F: {ir_id: import_ir60000004, inst_id: inst48000110} -// CHECK:STDOUT: import_ir_inst40: {ir_id: import_ir60000004, inst_id: inst4800010E} -// CHECK:STDOUT: import_ir_inst41: {ir_id: import_ir60000004, inst_id: inst48000121} -// CHECK:STDOUT: import_ir_inst42: {ir_id: import_ir60000004, inst_id: inst4800010F} -// CHECK:STDOUT: import_ir_inst43: {ir_id: import_ir60000004, inst_id: inst48000108} -// CHECK:STDOUT: import_ir_inst44: {ir_id: import_ir60000004, inst_id: inst4800010A} -// CHECK:STDOUT: import_ir_inst45: {ir_id: import_ir60000004, inst_id: inst4800010D} -// CHECK:STDOUT: import_ir_inst46: {ir_id: import_ir60000004, inst_id: inst48000105} -// CHECK:STDOUT: import_ir_inst47: {ir_id: import_ir60000004, inst_id: inst48000107} -// CHECK:STDOUT: import_ir_inst48: {ir_id: import_ir60000004, inst_id: inst4800010C} -// CHECK:STDOUT: import_ir_inst49: {ir_id: import_ir60000004, inst_id: inst48000112} -// CHECK:STDOUT: import_ir_inst4A: {ir_id: import_ir60000004, inst_id: inst48000121} -// CHECK:STDOUT: import_ir_inst4B: {ir_id: import_ir60000004, inst_id: inst4800011C} -// CHECK:STDOUT: import_ir_inst4C: {ir_id: import_ir60000004, inst_id: inst4800011D} -// CHECK:STDOUT: import_ir_inst4D: {ir_id: import_ir60000004, inst_id: inst48000118} -// CHECK:STDOUT: import_ir_inst4E: {ir_id: import_ir60000004, inst_id: inst4800011A} -// CHECK:STDOUT: import_ir_inst4F: {ir_id: import_ir60000004, inst_id: inst4800011B} -// CHECK:STDOUT: import_ir_inst50: {ir_id: import_ir60000004, inst_id: inst48000105} -// CHECK:STDOUT: import_ir_inst51: {ir_id: import_ir60000004, inst_id: inst48000114} -// CHECK:STDOUT: import_ir_inst52: {ir_id: import_ir60000004, inst_id: inst48000115} -// CHECK:STDOUT: import_ir_inst53: {ir_id: import_ir60000004, inst_id: inst48000119} -// CHECK:STDOUT: import_ir_inst54: {ir_id: import_ir60000004, inst_id: inst48000124} -// CHECK:STDOUT: import_ir_inst55: {ir_id: import_ir60000004, inst_id: inst48000125} -// CHECK:STDOUT: import_ir_inst56: {ir_id: import_ir60000004, inst_id: inst48000128} -// CHECK:STDOUT: import_ir_inst57: {ir_id: import_ir60000004, inst_id: inst4800012E} -// CHECK:STDOUT: import_ir_inst58: {ir_id: import_ir60000004, inst_id: inst4800012C} -// CHECK:STDOUT: import_ir_inst59: {ir_id: import_ir60000004, inst_id: inst(TypeType)} -// CHECK:STDOUT: import_ir_inst5A: {ir_id: import_ir60000004, inst_id: inst4800012B} -// CHECK:STDOUT: import_ir_inst5B: {ir_id: import_ir60000004, inst_id: inst48000144} -// CHECK:STDOUT: import_ir_inst5C: {ir_id: import_ir60000004, inst_id: inst48000142} -// CHECK:STDOUT: import_ir_inst5D: {ir_id: import_ir60000004, inst_id: inst48000140} -// CHECK:STDOUT: import_ir_inst5E: {ir_id: import_ir60000004, inst_id: inst48000141} -// CHECK:STDOUT: import_ir_inst5F: {ir_id: import_ir60000004, inst_id: inst48000176} -// CHECK:STDOUT: import_ir_inst60: {ir_id: import_ir60000004, inst_id: inst48000174} -// CHECK:STDOUT: import_ir_inst61: {ir_id: import_ir60000004, inst_id: inst4800018E} -// CHECK:STDOUT: import_ir_inst62: {ir_id: import_ir60000004, inst_id: inst48000175} -// CHECK:STDOUT: import_ir_inst63: {ir_id: import_ir60000004, inst_id: inst4800018E} -// CHECK:STDOUT: import_ir_inst64: {ir_id: import_ir60000004, inst_id: inst48000189} -// CHECK:STDOUT: import_ir_inst65: {ir_id: import_ir60000004, inst_id: inst4800018A} -// CHECK:STDOUT: import_ir_inst66: {ir_id: import_ir60000004, inst_id: inst48000185} -// CHECK:STDOUT: import_ir_inst67: {ir_id: import_ir60000004, inst_id: inst48000187} -// CHECK:STDOUT: import_ir_inst68: {ir_id: import_ir60000004, inst_id: inst48000188} -// CHECK:STDOUT: import_ir_inst69: {ir_id: import_ir60000004, inst_id: inst48000157} -// CHECK:STDOUT: import_ir_inst6A: {ir_id: import_ir60000004, inst_id: inst4800015C} -// CHECK:STDOUT: import_ir_inst6B: {ir_id: import_ir60000004, inst_id: inst4800017E} -// CHECK:STDOUT: import_ir_inst6C: {ir_id: import_ir60000004, inst_id: inst4800017F} -// CHECK:STDOUT: import_ir_inst6D: {ir_id: import_ir60000004, inst_id: inst48000180} -// CHECK:STDOUT: import_ir_inst6E: {ir_id: import_ir60000004, inst_id: inst48000181} -// CHECK:STDOUT: import_ir_inst6F: {ir_id: import_ir60000004, inst_id: inst48000182} -// CHECK:STDOUT: import_ir_inst70: {ir_id: import_ir60000004, inst_id: inst48000186} -// CHECK:STDOUT: import_ir_inst71: {ir_id: import_ir60000004, inst_id: inst48000197} -// CHECK:STDOUT: import_ir_inst72: {ir_id: import_ir60000004, inst_id: inst4800019F} -// CHECK:STDOUT: import_ir_inst73: {ir_id: import_ir60000004, inst_id: inst480001A3} -// CHECK:STDOUT: import_ir_inst74: {ir_id: import_ir60000004, inst_id: inst480001A5} -// CHECK:STDOUT: import_ir_inst75: {ir_id: import_ir60000004, inst_id: inst480001A6} -// CHECK:STDOUT: import_ir_inst76: {ir_id: import_ir60000004, inst_id: inst480001A9} -// CHECK:STDOUT: import_ir_inst77: {ir_id: import_ir60000004, inst_id: inst480001B5} -// CHECK:STDOUT: import_ir_inst78: {ir_id: import_ir60000004, inst_id: inst480001BA} -// CHECK:STDOUT: import_ir_inst79: {ir_id: import_ir60000004, inst_id: inst480001BE} -// CHECK:STDOUT: import_ir_inst7A: {ir_id: import_ir60000004, inst_id: inst480001BF} -// CHECK:STDOUT: import_ir_inst7B: {ir_id: import_ir60000004, inst_id: inst480001C4} -// CHECK:STDOUT: import_ir_inst7C: {ir_id: import_ir60000004, inst_id: inst4800015F} -// CHECK:STDOUT: import_ir_inst7D: {ir_id: import_ir60000004, inst_id: inst48000159} -// CHECK:STDOUT: import_ir_inst7E: {ir_id: import_ir60000004, inst_id: inst4800016F} -// CHECK:STDOUT: import_ir_inst7F: {ir_id: import_ir60000004, inst_id: inst48000171} -// CHECK:STDOUT: import_ir_inst80: {ir_id: import_ir60000004, inst_id: inst48000157} -// CHECK:STDOUT: import_ir_inst81: {ir_id: import_ir60000004, inst_id: inst4800015C} -// CHECK:STDOUT: import_ir_inst82: {ir_id: import_ir60000004, inst_id: inst48000158} -// CHECK:STDOUT: import_ir_inst83: {ir_id: import_ir60000004, inst_id: inst4800015E} -// CHECK:STDOUT: import_ir_inst84: {ir_id: import_ir60000004, inst_id: inst48000165} -// CHECK:STDOUT: import_ir_inst85: {ir_id: import_ir60000004, inst_id: inst48000168} -// CHECK:STDOUT: import_ir_inst86: {ir_id: import_ir60000004, inst_id: inst4800016C} -// CHECK:STDOUT: import_ir_inst87: {ir_id: import_ir60000004, inst_id: inst48000170} -// CHECK:STDOUT: import_ir_inst88: {ir_id: import_ir60000004, inst_id: inst48000178} -// CHECK:STDOUT: import_ir_inst89: {ir_id: import_ir60000004, inst_id: inst48000191} -// CHECK:STDOUT: import_ir_inst8A: {ir_id: import_ir60000004, inst_id: inst48000192} -// CHECK:STDOUT: import_ir_inst8B: {ir_id: import_ir60000004, inst_id: inst480001FF} -// CHECK:STDOUT: import_ir_inst8C: {ir_id: import_ir60000004, inst_id: inst480001FD} -// CHECK:STDOUT: import_ir_inst8D: {ir_id: import_ir60000004, inst_id: inst4800021B} -// CHECK:STDOUT: import_ir_inst8E: {ir_id: import_ir60000004, inst_id: inst480001FE} -// CHECK:STDOUT: import_ir_inst8F: {ir_id: import_ir60000004, inst_id: inst4800021B} -// CHECK:STDOUT: import_ir_inst90: {ir_id: import_ir60000004, inst_id: inst48000216} -// CHECK:STDOUT: import_ir_inst91: {ir_id: import_ir60000004, inst_id: inst48000217} -// CHECK:STDOUT: import_ir_inst92: {ir_id: import_ir60000004, inst_id: inst48000212} -// CHECK:STDOUT: import_ir_inst93: {ir_id: import_ir60000004, inst_id: inst48000214} -// CHECK:STDOUT: import_ir_inst94: {ir_id: import_ir60000004, inst_id: inst48000215} -// CHECK:STDOUT: import_ir_inst95: {ir_id: import_ir60000004, inst_id: inst480001D6} -// CHECK:STDOUT: import_ir_inst96: {ir_id: import_ir60000004, inst_id: inst480001DB} -// CHECK:STDOUT: import_ir_inst97: {ir_id: import_ir60000004, inst_id: inst480001E0} -// CHECK:STDOUT: import_ir_inst98: {ir_id: import_ir60000004, inst_id: inst48000209} -// CHECK:STDOUT: import_ir_inst99: {ir_id: import_ir60000004, inst_id: inst4800020A} -// CHECK:STDOUT: import_ir_inst9A: {ir_id: import_ir60000004, inst_id: inst4800020B} -// CHECK:STDOUT: import_ir_inst9B: {ir_id: import_ir60000004, inst_id: inst4800020C} -// CHECK:STDOUT: import_ir_inst9C: {ir_id: import_ir60000004, inst_id: inst4800020D} -// CHECK:STDOUT: import_ir_inst9D: {ir_id: import_ir60000004, inst_id: inst4800020E} -// CHECK:STDOUT: import_ir_inst9E: {ir_id: import_ir60000004, inst_id: inst4800020F} -// CHECK:STDOUT: import_ir_inst9F: {ir_id: import_ir60000004, inst_id: inst48000213} -// CHECK:STDOUT: import_ir_instA0: {ir_id: import_ir60000004, inst_id: inst48000224} -// CHECK:STDOUT: import_ir_instA1: {ir_id: import_ir60000004, inst_id: inst4800022B} -// CHECK:STDOUT: import_ir_instA2: {ir_id: import_ir60000004, inst_id: inst4800022F} -// CHECK:STDOUT: import_ir_instA3: {ir_id: import_ir60000004, inst_id: inst48000231} -// CHECK:STDOUT: import_ir_instA4: {ir_id: import_ir60000004, inst_id: inst48000232} -// CHECK:STDOUT: import_ir_instA5: {ir_id: import_ir60000004, inst_id: inst48000235} -// CHECK:STDOUT: import_ir_instA6: {ir_id: import_ir60000004, inst_id: inst4800023F} -// CHECK:STDOUT: import_ir_instA7: {ir_id: import_ir60000004, inst_id: inst48000243} -// CHECK:STDOUT: import_ir_instA8: {ir_id: import_ir60000004, inst_id: inst48000245} -// CHECK:STDOUT: import_ir_instA9: {ir_id: import_ir60000004, inst_id: inst48000246} -// CHECK:STDOUT: import_ir_instAA: {ir_id: import_ir60000004, inst_id: inst48000249} -// CHECK:STDOUT: import_ir_instAB: {ir_id: import_ir60000004, inst_id: inst48000255} -// CHECK:STDOUT: import_ir_instAC: {ir_id: import_ir60000004, inst_id: inst4800025A} -// CHECK:STDOUT: import_ir_instAD: {ir_id: import_ir60000004, inst_id: inst4800025E} -// CHECK:STDOUT: import_ir_instAE: {ir_id: import_ir60000004, inst_id: inst4800025F} -// CHECK:STDOUT: import_ir_instAF: {ir_id: import_ir60000004, inst_id: inst48000264} -// CHECK:STDOUT: import_ir_instB0: {ir_id: import_ir60000004, inst_id: inst480001E3} -// CHECK:STDOUT: import_ir_instB1: {ir_id: import_ir60000004, inst_id: inst480001DD} -// CHECK:STDOUT: import_ir_instB2: {ir_id: import_ir60000004, inst_id: inst480001D8} -// CHECK:STDOUT: import_ir_instB3: {ir_id: import_ir60000004, inst_id: inst480001F7} -// CHECK:STDOUT: import_ir_instB4: {ir_id: import_ir60000004, inst_id: inst480001F9} -// CHECK:STDOUT: import_ir_instB5: {ir_id: import_ir60000004, inst_id: inst480001D6} -// CHECK:STDOUT: import_ir_instB6: {ir_id: import_ir60000004, inst_id: inst480001DB} -// CHECK:STDOUT: import_ir_instB7: {ir_id: import_ir60000004, inst_id: inst480001E0} -// CHECK:STDOUT: import_ir_instB8: {ir_id: import_ir60000004, inst_id: inst480001D7} -// CHECK:STDOUT: import_ir_instB9: {ir_id: import_ir60000004, inst_id: inst480001DC} -// CHECK:STDOUT: import_ir_instBA: {ir_id: import_ir60000004, inst_id: inst480001E2} -// CHECK:STDOUT: import_ir_instBB: {ir_id: import_ir60000004, inst_id: inst480001EA} -// CHECK:STDOUT: import_ir_instBC: {ir_id: import_ir60000004, inst_id: inst480001ED} -// CHECK:STDOUT: import_ir_instBD: {ir_id: import_ir60000004, inst_id: inst480001F0} -// CHECK:STDOUT: import_ir_instBE: {ir_id: import_ir60000004, inst_id: inst480001F4} -// CHECK:STDOUT: import_ir_instBF: {ir_id: import_ir60000004, inst_id: inst480001F8} -// CHECK:STDOUT: import_ir_instC0: {ir_id: import_ir60000004, inst_id: inst48000201} -// CHECK:STDOUT: import_ir_instC1: {ir_id: import_ir60000004, inst_id: inst4800021E} -// CHECK:STDOUT: import_ir_instC2: {ir_id: import_ir60000004, inst_id: inst4800021F} +// CHECK:STDOUT: import_ir_inst28: {ir_id: import_ir60000004, inst_id: inst48000063} +// CHECK:STDOUT: import_ir_inst29: {ir_id: import_ir60000004, inst_id: inst48000066} +// CHECK:STDOUT: import_ir_inst2A: {ir_id: import_ir60000004, inst_id: inst48000059} +// CHECK:STDOUT: import_ir_inst2B: {ir_id: import_ir60000004, inst_id: inst4800005B} +// CHECK:STDOUT: import_ir_inst2C: {ir_id: import_ir60000004, inst_id: inst48000061} +// CHECK:STDOUT: import_ir_inst2D: {ir_id: import_ir60000004, inst_id: inst48000065} +// CHECK:STDOUT: import_ir_inst2E: {ir_id: import_ir60000004, inst_id: inst4800006C} +// CHECK:STDOUT: import_ir_inst2F: {ir_id: import_ir60000004, inst_id: inst48000084} +// CHECK:STDOUT: import_ir_inst30: {ir_id: import_ir60000004, inst_id: inst48000085} +// CHECK:STDOUT: import_ir_inst31: {ir_id: import_ir60000004, inst_id: inst480000B9} +// CHECK:STDOUT: import_ir_inst32: {ir_id: import_ir60000004, inst_id: inst480000B7} +// CHECK:STDOUT: import_ir_inst33: {ir_id: import_ir60000004, inst_id: inst480000B5} +// CHECK:STDOUT: import_ir_inst34: {ir_id: import_ir60000004, inst_id: inst480000B6} +// CHECK:STDOUT: import_ir_inst35: {ir_id: import_ir60000004, inst_id: inst480000D3} +// CHECK:STDOUT: import_ir_inst36: {ir_id: import_ir60000004, inst_id: inst480000D1} +// CHECK:STDOUT: import_ir_inst37: {ir_id: import_ir60000004, inst_id: inst480000CF} +// CHECK:STDOUT: import_ir_inst38: {ir_id: import_ir60000004, inst_id: inst480000D0} +// CHECK:STDOUT: import_ir_inst39: {ir_id: import_ir60000004, inst_id: inst480000ED} +// CHECK:STDOUT: import_ir_inst3A: {ir_id: import_ir60000004, inst_id: inst480000EB} +// CHECK:STDOUT: import_ir_inst3B: {ir_id: import_ir60000004, inst_id: inst480000E9} +// CHECK:STDOUT: import_ir_inst3C: {ir_id: import_ir60000004, inst_id: inst480000EA} +// CHECK:STDOUT: import_ir_inst3D: {ir_id: import_ir60000004, inst_id: inst48000107} +// CHECK:STDOUT: import_ir_inst3E: {ir_id: import_ir60000004, inst_id: inst48000105} +// CHECK:STDOUT: import_ir_inst3F: {ir_id: import_ir60000004, inst_id: inst48000103} +// CHECK:STDOUT: import_ir_inst40: {ir_id: import_ir60000004, inst_id: inst48000104} +// CHECK:STDOUT: import_ir_inst41: {ir_id: import_ir60000004, inst_id: inst48000126} +// CHECK:STDOUT: import_ir_inst42: {ir_id: import_ir60000004, inst_id: inst48000124} +// CHECK:STDOUT: import_ir_inst43: {ir_id: import_ir60000004, inst_id: inst4800013A} +// CHECK:STDOUT: import_ir_inst44: {ir_id: import_ir60000004, inst_id: inst48000125} +// CHECK:STDOUT: import_ir_inst45: {ir_id: import_ir60000004, inst_id: inst4800011E} +// CHECK:STDOUT: import_ir_inst46: {ir_id: import_ir60000004, inst_id: inst48000120} +// CHECK:STDOUT: import_ir_inst47: {ir_id: import_ir60000004, inst_id: inst48000123} +// CHECK:STDOUT: import_ir_inst48: {ir_id: import_ir60000004, inst_id: inst4800011B} +// CHECK:STDOUT: import_ir_inst49: {ir_id: import_ir60000004, inst_id: inst4800011D} +// CHECK:STDOUT: import_ir_inst4A: {ir_id: import_ir60000004, inst_id: inst48000122} +// CHECK:STDOUT: import_ir_inst4B: {ir_id: import_ir60000004, inst_id: inst48000128} +// CHECK:STDOUT: import_ir_inst4C: {ir_id: import_ir60000004, inst_id: inst4800013A} +// CHECK:STDOUT: import_ir_inst4D: {ir_id: import_ir60000004, inst_id: inst48000135} +// CHECK:STDOUT: import_ir_inst4E: {ir_id: import_ir60000004, inst_id: inst48000136} +// CHECK:STDOUT: import_ir_inst4F: {ir_id: import_ir60000004, inst_id: inst4800012E} +// CHECK:STDOUT: import_ir_inst50: {ir_id: import_ir60000004, inst_id: inst48000130} +// CHECK:STDOUT: import_ir_inst51: {ir_id: import_ir60000004, inst_id: inst48000131} +// CHECK:STDOUT: import_ir_inst52: {ir_id: import_ir60000004, inst_id: inst4800011B} +// CHECK:STDOUT: import_ir_inst53: {ir_id: import_ir60000004, inst_id: inst4800012A} +// CHECK:STDOUT: import_ir_inst54: {ir_id: import_ir60000004, inst_id: inst4800012B} +// CHECK:STDOUT: import_ir_inst55: {ir_id: import_ir60000004, inst_id: inst4800012F} +// CHECK:STDOUT: import_ir_inst56: {ir_id: import_ir60000004, inst_id: inst48000134} +// CHECK:STDOUT: import_ir_inst57: {ir_id: import_ir60000004, inst_id: inst4800013D} +// CHECK:STDOUT: import_ir_inst58: {ir_id: import_ir60000004, inst_id: inst4800013E} +// CHECK:STDOUT: import_ir_inst59: {ir_id: import_ir60000004, inst_id: inst48000141} +// CHECK:STDOUT: import_ir_inst5A: {ir_id: import_ir60000004, inst_id: inst48000148} +// CHECK:STDOUT: import_ir_inst5B: {ir_id: import_ir60000004, inst_id: inst48000146} +// CHECK:STDOUT: import_ir_inst5C: {ir_id: import_ir60000004, inst_id: inst(TypeType)} +// CHECK:STDOUT: import_ir_inst5D: {ir_id: import_ir60000004, inst_id: inst48000145} +// CHECK:STDOUT: import_ir_inst5E: {ir_id: import_ir60000004, inst_id: inst48000160} +// CHECK:STDOUT: import_ir_inst5F: {ir_id: import_ir60000004, inst_id: inst4800015E} +// CHECK:STDOUT: import_ir_inst60: {ir_id: import_ir60000004, inst_id: inst4800015C} +// CHECK:STDOUT: import_ir_inst61: {ir_id: import_ir60000004, inst_id: inst4800015D} +// CHECK:STDOUT: import_ir_inst62: {ir_id: import_ir60000004, inst_id: inst48000194} +// CHECK:STDOUT: import_ir_inst63: {ir_id: import_ir60000004, inst_id: inst48000192} +// CHECK:STDOUT: import_ir_inst64: {ir_id: import_ir60000004, inst_id: inst480001AF} +// CHECK:STDOUT: import_ir_inst65: {ir_id: import_ir60000004, inst_id: inst48000193} +// CHECK:STDOUT: import_ir_inst66: {ir_id: import_ir60000004, inst_id: inst480001AF} +// CHECK:STDOUT: import_ir_inst67: {ir_id: import_ir60000004, inst_id: inst480001AA} +// CHECK:STDOUT: import_ir_inst68: {ir_id: import_ir60000004, inst_id: inst480001AB} +// CHECK:STDOUT: import_ir_inst69: {ir_id: import_ir60000004, inst_id: inst480001A3} +// CHECK:STDOUT: import_ir_inst6A: {ir_id: import_ir60000004, inst_id: inst480001A5} +// CHECK:STDOUT: import_ir_inst6B: {ir_id: import_ir60000004, inst_id: inst480001A6} +// CHECK:STDOUT: import_ir_inst6C: {ir_id: import_ir60000004, inst_id: inst48000175} +// CHECK:STDOUT: import_ir_inst6D: {ir_id: import_ir60000004, inst_id: inst4800017A} +// CHECK:STDOUT: import_ir_inst6E: {ir_id: import_ir60000004, inst_id: inst4800019C} +// CHECK:STDOUT: import_ir_inst6F: {ir_id: import_ir60000004, inst_id: inst4800019D} +// CHECK:STDOUT: import_ir_inst70: {ir_id: import_ir60000004, inst_id: inst4800019E} +// CHECK:STDOUT: import_ir_inst71: {ir_id: import_ir60000004, inst_id: inst4800019F} +// CHECK:STDOUT: import_ir_inst72: {ir_id: import_ir60000004, inst_id: inst480001A0} +// CHECK:STDOUT: import_ir_inst73: {ir_id: import_ir60000004, inst_id: inst480001A4} +// CHECK:STDOUT: import_ir_inst74: {ir_id: import_ir60000004, inst_id: inst480001A9} +// CHECK:STDOUT: import_ir_inst75: {ir_id: import_ir60000004, inst_id: inst480001B8} +// CHECK:STDOUT: import_ir_inst76: {ir_id: import_ir60000004, inst_id: inst480001C1} +// CHECK:STDOUT: import_ir_inst77: {ir_id: import_ir60000004, inst_id: inst480001C5} +// CHECK:STDOUT: import_ir_inst78: {ir_id: import_ir60000004, inst_id: inst480001C7} +// CHECK:STDOUT: import_ir_inst79: {ir_id: import_ir60000004, inst_id: inst480001C8} +// CHECK:STDOUT: import_ir_inst7A: {ir_id: import_ir60000004, inst_id: inst480001CB} +// CHECK:STDOUT: import_ir_inst7B: {ir_id: import_ir60000004, inst_id: inst480001D7} +// CHECK:STDOUT: import_ir_inst7C: {ir_id: import_ir60000004, inst_id: inst480001DC} +// CHECK:STDOUT: import_ir_inst7D: {ir_id: import_ir60000004, inst_id: inst480001E0} +// CHECK:STDOUT: import_ir_inst7E: {ir_id: import_ir60000004, inst_id: inst480001E1} +// CHECK:STDOUT: import_ir_inst7F: {ir_id: import_ir60000004, inst_id: inst480001E7} +// CHECK:STDOUT: import_ir_inst80: {ir_id: import_ir60000004, inst_id: inst4800017D} +// CHECK:STDOUT: import_ir_inst81: {ir_id: import_ir60000004, inst_id: inst48000177} +// CHECK:STDOUT: import_ir_inst82: {ir_id: import_ir60000004, inst_id: inst4800018D} +// CHECK:STDOUT: import_ir_inst83: {ir_id: import_ir60000004, inst_id: inst4800018F} +// CHECK:STDOUT: import_ir_inst84: {ir_id: import_ir60000004, inst_id: inst48000175} +// CHECK:STDOUT: import_ir_inst85: {ir_id: import_ir60000004, inst_id: inst4800017A} +// CHECK:STDOUT: import_ir_inst86: {ir_id: import_ir60000004, inst_id: inst48000176} +// CHECK:STDOUT: import_ir_inst87: {ir_id: import_ir60000004, inst_id: inst4800017C} +// CHECK:STDOUT: import_ir_inst88: {ir_id: import_ir60000004, inst_id: inst48000183} +// CHECK:STDOUT: import_ir_inst89: {ir_id: import_ir60000004, inst_id: inst48000186} +// CHECK:STDOUT: import_ir_inst8A: {ir_id: import_ir60000004, inst_id: inst4800018A} +// CHECK:STDOUT: import_ir_inst8B: {ir_id: import_ir60000004, inst_id: inst4800018E} +// CHECK:STDOUT: import_ir_inst8C: {ir_id: import_ir60000004, inst_id: inst48000196} +// CHECK:STDOUT: import_ir_inst8D: {ir_id: import_ir60000004, inst_id: inst480001B2} +// CHECK:STDOUT: import_ir_inst8E: {ir_id: import_ir60000004, inst_id: inst480001B3} +// CHECK:STDOUT: import_ir_inst8F: {ir_id: import_ir60000004, inst_id: inst48000222} +// CHECK:STDOUT: import_ir_inst90: {ir_id: import_ir60000004, inst_id: inst48000220} +// CHECK:STDOUT: import_ir_inst91: {ir_id: import_ir60000004, inst_id: inst48000241} +// CHECK:STDOUT: import_ir_inst92: {ir_id: import_ir60000004, inst_id: inst48000221} +// CHECK:STDOUT: import_ir_inst93: {ir_id: import_ir60000004, inst_id: inst48000241} +// CHECK:STDOUT: import_ir_inst94: {ir_id: import_ir60000004, inst_id: inst4800023C} +// CHECK:STDOUT: import_ir_inst95: {ir_id: import_ir60000004, inst_id: inst4800023D} +// CHECK:STDOUT: import_ir_inst96: {ir_id: import_ir60000004, inst_id: inst48000235} +// CHECK:STDOUT: import_ir_inst97: {ir_id: import_ir60000004, inst_id: inst48000237} +// CHECK:STDOUT: import_ir_inst98: {ir_id: import_ir60000004, inst_id: inst48000238} +// CHECK:STDOUT: import_ir_inst99: {ir_id: import_ir60000004, inst_id: inst480001F9} +// CHECK:STDOUT: import_ir_inst9A: {ir_id: import_ir60000004, inst_id: inst480001FE} +// CHECK:STDOUT: import_ir_inst9B: {ir_id: import_ir60000004, inst_id: inst48000203} +// CHECK:STDOUT: import_ir_inst9C: {ir_id: import_ir60000004, inst_id: inst4800022C} +// CHECK:STDOUT: import_ir_inst9D: {ir_id: import_ir60000004, inst_id: inst4800022D} +// CHECK:STDOUT: import_ir_inst9E: {ir_id: import_ir60000004, inst_id: inst4800022E} +// CHECK:STDOUT: import_ir_inst9F: {ir_id: import_ir60000004, inst_id: inst4800022F} +// CHECK:STDOUT: import_ir_instA0: {ir_id: import_ir60000004, inst_id: inst48000230} +// CHECK:STDOUT: import_ir_instA1: {ir_id: import_ir60000004, inst_id: inst48000231} +// CHECK:STDOUT: import_ir_instA2: {ir_id: import_ir60000004, inst_id: inst48000232} +// CHECK:STDOUT: import_ir_instA3: {ir_id: import_ir60000004, inst_id: inst48000236} +// CHECK:STDOUT: import_ir_instA4: {ir_id: import_ir60000004, inst_id: inst4800023B} +// CHECK:STDOUT: import_ir_instA5: {ir_id: import_ir60000004, inst_id: inst4800024A} +// CHECK:STDOUT: import_ir_instA6: {ir_id: import_ir60000004, inst_id: inst48000252} +// CHECK:STDOUT: import_ir_instA7: {ir_id: import_ir60000004, inst_id: inst48000256} +// CHECK:STDOUT: import_ir_instA8: {ir_id: import_ir60000004, inst_id: inst48000258} +// CHECK:STDOUT: import_ir_instA9: {ir_id: import_ir60000004, inst_id: inst48000259} +// CHECK:STDOUT: import_ir_instAA: {ir_id: import_ir60000004, inst_id: inst4800025C} +// CHECK:STDOUT: import_ir_instAB: {ir_id: import_ir60000004, inst_id: inst48000266} +// CHECK:STDOUT: import_ir_instAC: {ir_id: import_ir60000004, inst_id: inst4800026A} +// CHECK:STDOUT: import_ir_instAD: {ir_id: import_ir60000004, inst_id: inst4800026C} +// CHECK:STDOUT: import_ir_instAE: {ir_id: import_ir60000004, inst_id: inst4800026D} +// CHECK:STDOUT: import_ir_instAF: {ir_id: import_ir60000004, inst_id: inst48000270} +// CHECK:STDOUT: import_ir_instB0: {ir_id: import_ir60000004, inst_id: inst4800027C} +// CHECK:STDOUT: import_ir_instB1: {ir_id: import_ir60000004, inst_id: inst48000281} +// CHECK:STDOUT: import_ir_instB2: {ir_id: import_ir60000004, inst_id: inst48000285} +// CHECK:STDOUT: import_ir_instB3: {ir_id: import_ir60000004, inst_id: inst48000286} +// CHECK:STDOUT: import_ir_instB4: {ir_id: import_ir60000004, inst_id: inst4800028C} +// CHECK:STDOUT: import_ir_instB5: {ir_id: import_ir60000004, inst_id: inst48000206} +// CHECK:STDOUT: import_ir_instB6: {ir_id: import_ir60000004, inst_id: inst48000200} +// CHECK:STDOUT: import_ir_instB7: {ir_id: import_ir60000004, inst_id: inst480001FB} +// CHECK:STDOUT: import_ir_instB8: {ir_id: import_ir60000004, inst_id: inst4800021A} +// CHECK:STDOUT: import_ir_instB9: {ir_id: import_ir60000004, inst_id: inst4800021C} +// CHECK:STDOUT: import_ir_instBA: {ir_id: import_ir60000004, inst_id: inst480001F9} +// CHECK:STDOUT: import_ir_instBB: {ir_id: import_ir60000004, inst_id: inst480001FE} +// CHECK:STDOUT: import_ir_instBC: {ir_id: import_ir60000004, inst_id: inst48000203} +// CHECK:STDOUT: import_ir_instBD: {ir_id: import_ir60000004, inst_id: inst480001FA} +// CHECK:STDOUT: import_ir_instBE: {ir_id: import_ir60000004, inst_id: inst480001FF} +// CHECK:STDOUT: import_ir_instBF: {ir_id: import_ir60000004, inst_id: inst48000205} +// CHECK:STDOUT: import_ir_instC0: {ir_id: import_ir60000004, inst_id: inst4800020D} +// CHECK:STDOUT: import_ir_instC1: {ir_id: import_ir60000004, inst_id: inst48000210} +// CHECK:STDOUT: import_ir_instC2: {ir_id: import_ir60000004, inst_id: inst48000213} +// CHECK:STDOUT: import_ir_instC3: {ir_id: import_ir60000004, inst_id: inst48000217} +// CHECK:STDOUT: import_ir_instC4: {ir_id: import_ir60000004, inst_id: inst4800021B} +// CHECK:STDOUT: import_ir_instC5: {ir_id: import_ir60000004, inst_id: inst48000224} +// CHECK:STDOUT: import_ir_instC6: {ir_id: import_ir60000004, inst_id: inst48000244} +// CHECK:STDOUT: import_ir_instC7: {ir_id: import_ir60000004, inst_id: inst48000245} // CHECK:STDOUT: clang_decls: {} // CHECK:STDOUT: name_scopes: -// CHECK:STDOUT: name_scope0: {inst: instE, parent_scope: name_scope, has_error: false, extended_scopes: [], names: {name(Core): inst60000010, name0: inst60000038}} -// CHECK:STDOUT: name_scope60000001: {inst: inst60000010, parent_scope: name_scope0, has_error: false, extended_scopes: [], names: {name3: inst60000048}} -// CHECK:STDOUT: name_scope60000002: {inst: inst60000049, parent_scope: name_scope60000001, has_error: false, extended_scopes: [], names: {name(SelfType): inst6000004C, name4: inst6000004D}} -// CHECK:STDOUT: name_scope60000003: {inst: inst60000062, parent_scope: name_scope60000001, has_error: false, extended_scopes: [], names: {}} -// CHECK:STDOUT: name_scope60000004: {inst: inst60000090, parent_scope: name_scope60000001, has_error: false, extended_scopes: [], names: {}} -// CHECK:STDOUT: name_scope60000005: {inst: inst60000094, parent_scope: name_scope60000001, has_error: false, extended_scopes: [], names: {}} -// CHECK:STDOUT: name_scope60000006: {inst: inst60000098, parent_scope: name_scope60000001, has_error: false, extended_scopes: [], names: {}} -// CHECK:STDOUT: name_scope60000007: {inst: inst6000009C, parent_scope: name_scope60000001, has_error: false, extended_scopes: [], names: {}} -// CHECK:STDOUT: name_scope60000008: {inst: inst600000A0, parent_scope: name_scope60000001, has_error: false, extended_scopes: [], names: {}} -// CHECK:STDOUT: name_scope60000009: {inst: inst600000BB, parent_scope: name_scope60000001, has_error: false, extended_scopes: [], names: {}} -// CHECK:STDOUT: name_scope6000000A: {inst: inst600000BF, parent_scope: name_scope60000001, has_error: false, extended_scopes: [], names: {}} -// CHECK:STDOUT: name_scope6000000B: {inst: inst600000C3, parent_scope: name_scope60000001, has_error: false, extended_scopes: [], names: {}} -// CHECK:STDOUT: name_scope6000000C: {inst: inst600000FF, parent_scope: name_scope60000001, has_error: false, extended_scopes: [], names: {}} +// CHECK:STDOUT: name_scope0: {inst: instF, parent_scope: name_scope, has_error: false, extended_scopes: [], names: {name(Core): inst60000011, name0: inst6000003C}} +// CHECK:STDOUT: name_scope60000001: {inst: inst60000011, parent_scope: name_scope0, has_error: false, extended_scopes: [], names: {name3: inst6000004D}} +// CHECK:STDOUT: name_scope60000002: {inst: inst6000004E, parent_scope: name_scope60000001, has_error: false, extended_scopes: [], names: {name(SelfType): inst60000051, name4: inst60000052}} +// CHECK:STDOUT: name_scope60000003: {inst: inst60000069, parent_scope: name_scope60000001, has_error: false, extended_scopes: [], names: {}} +// CHECK:STDOUT: name_scope60000004: {inst: inst6000009A, parent_scope: name_scope60000001, has_error: false, extended_scopes: [], names: {}} +// CHECK:STDOUT: name_scope60000005: {inst: inst6000009E, parent_scope: name_scope60000001, has_error: false, extended_scopes: [], names: {}} +// CHECK:STDOUT: name_scope60000006: {inst: inst600000A2, parent_scope: name_scope60000001, has_error: false, extended_scopes: [], names: {}} +// CHECK:STDOUT: name_scope60000007: {inst: inst600000A6, parent_scope: name_scope60000001, has_error: false, extended_scopes: [], names: {}} +// CHECK:STDOUT: name_scope60000008: {inst: inst600000AA, parent_scope: name_scope60000001, has_error: false, extended_scopes: [], names: {}} +// CHECK:STDOUT: name_scope60000009: {inst: inst600000C7, parent_scope: name_scope60000001, has_error: false, extended_scopes: [], names: {}} +// CHECK:STDOUT: name_scope6000000A: {inst: inst600000CB, parent_scope: name_scope60000001, has_error: false, extended_scopes: [], names: {}} +// CHECK:STDOUT: name_scope6000000B: {inst: inst600000CF, parent_scope: name_scope60000001, has_error: false, extended_scopes: [], names: {}} +// CHECK:STDOUT: name_scope6000000C: {inst: inst6000010E, parent_scope: name_scope60000001, has_error: false, extended_scopes: [], names: {}} // CHECK:STDOUT: entity_names: // CHECK:STDOUT: entity_name60000000: {name: name(PeriodSelf), parent_scope: name_scope, index: -1, is_template: 0} // CHECK:STDOUT: entity_name60000001: {name: name1, parent_scope: name_scope, index: 0, is_template: 0} @@ -304,24 +309,24 @@ fn Foo[T:! type](p: T*) -> (T*, ()) { // CHECK:STDOUT: entity_name6000003E: {name: name1, parent_scope: name_scope, index: 0, is_template: 0} // CHECK:STDOUT: cpp_global_vars: {} // CHECK:STDOUT: functions: -// CHECK:STDOUT: function60000000: {name: name0, parent_scope: name_scope0, call_params_id: inst_block60000010, return_type_inst_id: inst6000002E, return_patterns_id: inst_block6000000F, body: [inst_block60000017]} -// CHECK:STDOUT: function60000001: {name: name4, parent_scope: name_scope60000002, return_type_inst_id: inst6000005B, return_patterns_id: inst_block6000001B} -// CHECK:STDOUT: function60000002: {name: name4, parent_scope: name_scope60000003, return_type_inst_id: inst60000071, return_patterns_id: inst_block60000025} -// CHECK:STDOUT: function60000003: {name: name4, parent_scope: name_scope60000008, return_type_inst_id: inst600000B2, return_patterns_id: inst_block60000039} -// CHECK:STDOUT: function60000004: {name: name4, parent_scope: name_scope6000000B, return_type_inst_id: inst600000D4, return_patterns_id: inst_block60000046} -// CHECK:STDOUT: function60000005: {name: name4, parent_scope: name_scope6000000C, return_type_inst_id: inst60000110, return_patterns_id: inst_block6000005F} +// CHECK:STDOUT: function60000000: {name: name0, parent_scope: name_scope0, call_params_id: inst_block60000010, return_type_inst_id: inst6000002F, return_patterns_id: inst_block6000000F, body: [inst_block60000017]} +// CHECK:STDOUT: function60000001: {name: name4, parent_scope: name_scope60000002, return_type_inst_id: inst60000061, return_patterns_id: inst_block6000001B} +// CHECK:STDOUT: function60000002: {name: name4, parent_scope: name_scope60000003, return_type_inst_id: inst60000079, return_patterns_id: inst_block60000025} +// CHECK:STDOUT: function60000003: {name: name4, parent_scope: name_scope60000008, return_type_inst_id: inst600000BD, return_patterns_id: inst_block60000039} +// CHECK:STDOUT: function60000004: {name: name4, parent_scope: name_scope6000000B, return_type_inst_id: inst600000E1, return_patterns_id: inst_block60000046} +// CHECK:STDOUT: function60000005: {name: name4, parent_scope: name_scope6000000C, return_type_inst_id: inst60000120, return_patterns_id: inst_block6000005F} // CHECK:STDOUT: classes: {} // CHECK:STDOUT: generics: -// CHECK:STDOUT: generic60000000: {decl: inst60000038, bindings: inst_block60000013} -// CHECK:STDOUT: generic60000001: {decl: inst60000052, bindings: inst_block6000001C} -// CHECK:STDOUT: generic60000002: {decl: inst60000062, bindings: inst_block6000002D} -// CHECK:STDOUT: generic60000003: {decl: inst60000069, bindings: inst_block60000026} -// CHECK:STDOUT: generic60000004: {decl: inst600000A0, bindings: inst_block60000035} -// CHECK:STDOUT: generic60000005: {decl: inst600000AB, bindings: inst_block6000003A} -// CHECK:STDOUT: generic60000006: {decl: inst600000C3, bindings: inst_block60000051} -// CHECK:STDOUT: generic60000007: {decl: inst600000CA, bindings: inst_block60000047} -// CHECK:STDOUT: generic60000008: {decl: inst600000FF, bindings: inst_block6000006B} -// CHECK:STDOUT: generic60000009: {decl: inst60000106, bindings: inst_block60000060} +// CHECK:STDOUT: generic60000000: {decl: inst6000003C, bindings: inst_block60000013} +// CHECK:STDOUT: generic60000001: {decl: inst60000057, bindings: inst_block6000001C} +// CHECK:STDOUT: generic60000002: {decl: inst60000069, bindings: inst_block6000002D} +// CHECK:STDOUT: generic60000003: {decl: inst60000070, bindings: inst_block60000026} +// CHECK:STDOUT: generic60000004: {decl: inst600000AA, bindings: inst_block60000035} +// CHECK:STDOUT: generic60000005: {decl: inst600000B5, bindings: inst_block6000003A} +// CHECK:STDOUT: generic60000006: {decl: inst600000CF, bindings: inst_block60000051} +// CHECK:STDOUT: generic60000007: {decl: inst600000D6, bindings: inst_block60000047} +// CHECK:STDOUT: generic60000008: {decl: inst6000010E, bindings: inst_block6000006B} +// CHECK:STDOUT: generic60000009: {decl: inst60000115, bindings: inst_block60000060} // CHECK:STDOUT: specifics: // CHECK:STDOUT: specific60000000: {generic: generic60000000, args: inst_block60000014} // CHECK:STDOUT: specific60000001: {generic: generic60000001, args: inst_block6000001E} @@ -354,1354 +359,1403 @@ fn Foo[T:! type](p: T*) -> (T*, ()) { // CHECK:STDOUT: types: // CHECK:STDOUT: 'type(TypeType)': // CHECK:STDOUT: value_repr: {kind: copy, type: type(TypeType)} +// CHECK:STDOUT: 'type(inst(FormType))': +// CHECK:STDOUT: value_repr: {kind: copy, type: type(inst(FormType))} // CHECK:STDOUT: 'type(Error)': // CHECK:STDOUT: value_repr: {kind: copy, type: type(Error)} // CHECK:STDOUT: 'type(inst(NamespaceType))': // CHECK:STDOUT: value_repr: {kind: copy, type: type(inst(NamespaceType))} -// CHECK:STDOUT: 'type(inst60000024)': -// CHECK:STDOUT: value_repr: {kind: none, type: type(inst60000024)} -// CHECK:STDOUT: 'type(inst6000002B)': -// CHECK:STDOUT: value_repr: {kind: copy, type: type(inst6000002B)} -// CHECK:STDOUT: 'type(inst60000027)': -// CHECK:STDOUT: value_repr: {kind: pointer, type: type(inst6000002B)} -// CHECK:STDOUT: 'type(inst60000039)': -// CHECK:STDOUT: value_repr: {kind: none, type: type(inst60000024)} +// CHECK:STDOUT: 'type(inst60000025)': +// CHECK:STDOUT: value_repr: {kind: none, type: type(inst60000025)} +// CHECK:STDOUT: 'type(inst6000002C)': +// CHECK:STDOUT: value_repr: {kind: copy, type: type(inst6000002C)} +// CHECK:STDOUT: 'type(inst60000028)': +// CHECK:STDOUT: value_repr: {kind: pointer, type: type(inst6000002C)} +// CHECK:STDOUT: 'type(inst6000003D)': +// CHECK:STDOUT: value_repr: {kind: none, type: type(inst60000025)} // CHECK:STDOUT: 'type(symbolic_constant3)': // CHECK:STDOUT: value_repr: {kind: copy, type: type(symbolic_constant3)} -// CHECK:STDOUT: 'type(symbolic_constantD)': -// CHECK:STDOUT: value_repr: {kind: copy, type: type(symbolic_constantD)} +// CHECK:STDOUT: 'type(symbolic_constantF)': +// CHECK:STDOUT: value_repr: {kind: copy, type: type(symbolic_constantF)} // CHECK:STDOUT: 'type(symbolic_constant9)': -// CHECK:STDOUT: value_repr: {kind: pointer, type: type(symbolic_constantD)} +// CHECK:STDOUT: value_repr: {kind: pointer, type: type(symbolic_constantF)} // CHECK:STDOUT: 'type(inst(WitnessType))': // CHECK:STDOUT: value_repr: {kind: copy, type: type(inst(WitnessType))} // CHECK:STDOUT: 'type(symbolic_constant4)': // CHECK:STDOUT: value_repr: {kind: copy, type: type(symbolic_constant4)} // CHECK:STDOUT: 'type(symbolic_constantA)': -// CHECK:STDOUT: value_repr: {kind: pointer, type: type(symbolic_constantD)} +// CHECK:STDOUT: value_repr: {kind: pointer, type: type(symbolic_constantF)} // CHECK:STDOUT: 'type(inst(InstType))': -// CHECK:STDOUT: value_repr: {kind: none, type: type(inst60000024)} -// CHECK:STDOUT: 'type(inst6000004A)': -// CHECK:STDOUT: value_repr: {kind: copy, type: type(inst6000004A)} +// CHECK:STDOUT: value_repr: {kind: none, type: type(inst60000025)} +// CHECK:STDOUT: 'type(inst6000004F)': +// CHECK:STDOUT: value_repr: {kind: copy, type: type(inst6000004F)} // CHECK:STDOUT: 'type(inst(SpecificFunctionType))': // CHECK:STDOUT: value_repr: {kind: copy, type: type(inst(SpecificFunctionType))} // CHECK:STDOUT: 'type(inst(RequireSpecificDefinitionType))': // CHECK:STDOUT: value_repr: {kind: copy, type: type(inst(RequireSpecificDefinitionType))} -// CHECK:STDOUT: 'type(symbolic_constant60000110)': -// CHECK:STDOUT: value_repr: {kind: none, type: type(inst60000024)} -// CHECK:STDOUT: 'type(symbolic_constant60000113)': -// CHECK:STDOUT: value_repr: {kind: none, type: type(inst60000024)} +// CHECK:STDOUT: 'type(symbolic_constant60000124)': +// CHECK:STDOUT: value_repr: {kind: none, type: type(inst60000025)} +// CHECK:STDOUT: 'type(symbolic_constant60000127)': +// CHECK:STDOUT: value_repr: {kind: none, type: type(inst60000025)} // CHECK:STDOUT: 'type(inst(BoundMethodType))': // CHECK:STDOUT: value_repr: {kind: copy, type: type(inst(BoundMethodType))} // CHECK:STDOUT: insts: -// CHECK:STDOUT: instE: {kind: Namespace, arg0: name_scope0, arg1: inst, type: type(inst(NamespaceType))} -// CHECK:STDOUT: inst6000000F: {kind: ImportDecl, arg0: name(Core)} -// CHECK:STDOUT: inst60000010: {kind: Namespace, arg0: name_scope60000001, arg1: inst6000000F, type: type(inst(NamespaceType))} -// CHECK:STDOUT: inst60000011: {kind: FacetType, arg0: facet_type60000000, type: type(TypeType)} -// CHECK:STDOUT: inst60000012: {kind: SymbolicBinding, arg0: entity_name60000000, arg1: inst, type: type(inst60000011)} -// CHECK:STDOUT: inst60000013: {kind: SymbolicBinding, arg0: entity_name60000000, arg1: inst, type: type(inst60000011)} -// CHECK:STDOUT: inst60000014: {kind: SymbolicBinding, arg0: entity_name60000001, arg1: inst, type: type(TypeType)} +// CHECK:STDOUT: instF: {kind: Namespace, arg0: name_scope0, arg1: inst, type: type(inst(NamespaceType))} +// CHECK:STDOUT: inst60000010: {kind: ImportDecl, arg0: name(Core)} +// CHECK:STDOUT: inst60000011: {kind: Namespace, arg0: name_scope60000001, arg1: inst60000010, type: type(inst(NamespaceType))} +// CHECK:STDOUT: inst60000012: {kind: FacetType, arg0: facet_type60000000, type: type(TypeType)} +// CHECK:STDOUT: inst60000013: {kind: SymbolicBinding, arg0: entity_name60000000, arg1: inst, type: type(inst60000012)} +// CHECK:STDOUT: inst60000014: {kind: SymbolicBinding, arg0: entity_name60000000, arg1: inst, type: type(inst60000012)} // CHECK:STDOUT: inst60000015: {kind: SymbolicBinding, arg0: entity_name60000001, arg1: inst, type: type(TypeType)} // CHECK:STDOUT: inst60000016: {kind: SymbolicBinding, arg0: entity_name60000001, arg1: inst, type: type(TypeType)} -// CHECK:STDOUT: inst60000017: {kind: PatternType, arg0: inst(TypeType), type: type(TypeType)} -// CHECK:STDOUT: inst60000018: {kind: SymbolicBindingPattern, arg0: entity_name60000001, type: type(inst60000017)} -// CHECK:STDOUT: inst60000019: {kind: NameRef, arg0: name1, arg1: inst60000014, type: type(TypeType)} -// CHECK:STDOUT: inst6000001A: {kind: PointerType, arg0: inst60000019, type: type(TypeType)} -// CHECK:STDOUT: inst6000001B: {kind: PointerType, arg0: inst60000015, type: type(TypeType)} +// CHECK:STDOUT: inst60000017: {kind: SymbolicBinding, arg0: entity_name60000001, arg1: inst, type: type(TypeType)} +// CHECK:STDOUT: inst60000018: {kind: PatternType, arg0: inst(TypeType), type: type(TypeType)} +// CHECK:STDOUT: inst60000019: {kind: SymbolicBindingPattern, arg0: entity_name60000001, type: type(inst60000018)} +// CHECK:STDOUT: inst6000001A: {kind: NameRef, arg0: name1, arg1: inst60000015, type: type(TypeType)} +// CHECK:STDOUT: inst6000001B: {kind: PointerType, arg0: inst6000001A, type: type(TypeType)} // CHECK:STDOUT: inst6000001C: {kind: PointerType, arg0: inst60000016, type: type(TypeType)} -// CHECK:STDOUT: inst6000001D: {kind: ValueBinding, arg0: entity_name60000002, arg1: inst60000034, type: type(symbolic_constant4)} -// CHECK:STDOUT: inst6000001E: {kind: PatternType, arg0: inst6000001B, type: type(TypeType)} -// CHECK:STDOUT: inst6000001F: {kind: ValueBindingPattern, arg0: entity_name60000002, type: type(symbolic_constant6)} -// CHECK:STDOUT: inst60000020: {kind: PatternType, arg0: inst6000001C, type: type(TypeType)} -// CHECK:STDOUT: inst60000021: {kind: ValueParamPattern, arg0: inst6000001F, arg1: call_param0, type: type(symbolic_constant6)} -// CHECK:STDOUT: inst60000022: {kind: NameRef, arg0: name1, arg1: inst60000014, type: type(TypeType)} -// CHECK:STDOUT: inst60000023: {kind: PointerType, arg0: inst60000022, type: type(TypeType)} -// CHECK:STDOUT: inst60000024: {kind: TupleType, arg0: inst_block_empty, type: type(TypeType)} -// CHECK:STDOUT: inst60000025: {kind: TupleLiteral, arg0: inst_block_empty, type: type(inst60000024)} -// CHECK:STDOUT: inst60000026: {kind: TupleValue, arg0: inst_block_empty, type: type(inst60000024)} -// CHECK:STDOUT: inst60000027: {kind: TupleType, arg0: inst_block60000009, type: type(TypeType)} -// CHECK:STDOUT: inst60000028: {kind: TupleLiteral, arg0: inst_block60000008, type: type(inst60000027)} -// CHECK:STDOUT: inst60000029: {kind: TupleValue, arg0: inst_block6000000A, type: type(inst60000027)} -// CHECK:STDOUT: inst6000002A: {kind: TupleValue, arg0: inst_block6000000B, type: type(inst60000027)} -// CHECK:STDOUT: inst6000002B: {kind: PointerType, arg0: inst60000027, type: type(TypeType)} -// CHECK:STDOUT: inst6000002C: {kind: Converted, arg0: inst60000026, arg1: inst60000024, type: type(TypeType)} -// CHECK:STDOUT: inst6000002D: {kind: TupleType, arg0: inst_block6000000D, type: type(TypeType)} -// CHECK:STDOUT: inst6000002E: {kind: Converted, arg0: inst60000028, arg1: inst6000002D, type: type(TypeType)} -// CHECK:STDOUT: inst6000002F: {kind: TupleType, arg0: inst_block6000000E, type: type(TypeType)} -// CHECK:STDOUT: inst60000030: {kind: PatternType, arg0: inst6000002D, type: type(TypeType)} -// CHECK:STDOUT: inst60000031: {kind: ReturnSlotPattern, arg0: inst6000002E, type: type(symbolic_constantC)} -// CHECK:STDOUT: inst60000032: {kind: PatternType, arg0: inst6000002F, type: type(TypeType)} -// CHECK:STDOUT: inst60000033: {kind: OutParamPattern, arg0: inst60000031, arg1: call_param1, type: type(symbolic_constantC)} -// CHECK:STDOUT: inst60000034: {kind: ValueParam, arg0: call_param0, arg1: name2, type: type(symbolic_constant4)} -// CHECK:STDOUT: inst60000035: {kind: SpliceBlock, arg0: inst_block60000006, arg1: inst6000001A, type: type(TypeType)} -// CHECK:STDOUT: inst60000036: {kind: OutParam, arg0: call_param1, arg1: name(ReturnSlot), type: type(symbolic_constantA)} -// CHECK:STDOUT: inst60000037: {kind: ReturnSlot, arg0: inst6000002D, arg1: inst60000036, type: type(symbolic_constantA)} -// CHECK:STDOUT: inst60000038: {kind: FunctionDecl, arg0: function60000000, arg1: inst_block60000012, type: type(inst60000039)} -// CHECK:STDOUT: inst60000039: {kind: FunctionType, arg0: function60000000, arg1: specific, type: type(TypeType)} -// CHECK:STDOUT: inst6000003A: {kind: StructValue, arg0: inst_block_empty, type: type(inst60000039)} -// CHECK:STDOUT: inst6000003B: {kind: PointerType, arg0: inst6000002D, type: type(TypeType)} -// CHECK:STDOUT: inst6000003C: {kind: RequireCompleteType, arg0: inst6000002D, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst6000003D: {kind: RequireCompleteType, arg0: inst6000002D, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst6000003E: {kind: RequireCompleteType, arg0: inst6000002F, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst6000003F: {kind: RequireCompleteType, arg0: inst6000001B, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst60000040: {kind: RequireCompleteType, arg0: inst6000001B, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst60000041: {kind: RequireCompleteType, arg0: inst6000001C, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst60000042: {kind: NameRef, arg0: name2, arg1: inst6000001D, type: type(symbolic_constant4)} -// CHECK:STDOUT: inst60000043: {kind: TupleLiteral, arg0: inst_block_empty, type: type(inst60000024)} -// CHECK:STDOUT: inst60000044: {kind: TupleLiteral, arg0: inst_block60000018, type: type(symbolic_constantA)} -// CHECK:STDOUT: inst60000045: {kind: RequireCompleteType, arg0: inst6000002D, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst60000046: {kind: TupleAccess, arg0: inst60000037, arg1: element0, type: type(symbolic_constant4)} -// CHECK:STDOUT: inst60000047: {kind: RequireCompleteType, arg0: inst6000001B, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst60000048: {kind: ImportRefLoaded, arg0: import_ir_inst0, arg1: entity_name60000003, type: type(TypeType)} -// CHECK:STDOUT: inst60000049: {kind: InterfaceDecl, arg0: interface60000000, arg1: inst_block_empty, type: type(TypeType)} -// CHECK:STDOUT: inst6000004A: {kind: FacetType, arg0: facet_type60000001, type: type(TypeType)} -// CHECK:STDOUT: inst6000004B: {kind: SymbolicBinding, arg0: entity_name60000004, arg1: inst, type: type(inst6000004A)} -// CHECK:STDOUT: inst6000004C: {kind: ImportRefUnloaded, arg0: import_ir_inst2, arg1: entity_name} -// CHECK:STDOUT: inst6000004D: {kind: ImportRefLoaded, arg0: import_ir_inst3, arg1: entity_name, type: type(inst6000004F)} -// CHECK:STDOUT: inst6000004E: {kind: ImportRefUnloaded, arg0: import_ir_inst4, arg1: entity_name60000005} -// CHECK:STDOUT: inst6000004F: {kind: AssociatedEntityType, arg0: interface60000000, arg1: specific, type: type(TypeType)} -// CHECK:STDOUT: inst60000050: {kind: ImportRefLoaded, arg0: import_ir_inst5, arg1: entity_name, type: type(inst60000053)} -// CHECK:STDOUT: inst60000051: {kind: AssociatedEntity, arg0: element0, arg1: inst60000050, type: type(inst6000004F)} -// CHECK:STDOUT: inst60000052: {kind: FunctionDecl, arg0: function60000001, arg1: inst_block_empty, type: type(inst60000053)} -// CHECK:STDOUT: inst60000053: {kind: FunctionType, arg0: function60000001, arg1: specific, type: type(TypeType)} -// CHECK:STDOUT: inst60000054: {kind: StructValue, arg0: inst_block_empty, type: type(inst60000053)} -// CHECK:STDOUT: inst60000055: {kind: SymbolicBindingType, arg0: entity_name60000004, arg1: inst6000004B, type: type(TypeType)} -// CHECK:STDOUT: inst60000056: {kind: PatternType, arg0: inst60000055, type: type(TypeType)} -// CHECK:STDOUT: inst60000057: {kind: ReturnSlotPattern, arg0: inst, type: type(symbolic_constant60000015)} -// CHECK:STDOUT: inst60000058: {kind: OutParamPattern, arg0: inst60000057, arg1: call_param1, type: type(symbolic_constant60000015)} -// CHECK:STDOUT: inst60000059: {kind: ValueBindingPattern, arg0: entity_name60000008, type: type(symbolic_constant60000015)} -// CHECK:STDOUT: inst6000005A: {kind: ValueParamPattern, arg0: inst60000059, arg1: call_param0, type: type(symbolic_constant60000015)} -// CHECK:STDOUT: inst6000005B: {kind: ImportRefLoaded, arg0: import_ir_instB, arg1: entity_name, type: type(TypeType)} -// CHECK:STDOUT: inst6000005C: {kind: ImportRefLoaded, arg0: import_ir_instC, arg1: entity_name, type: type(inst6000004A)} -// CHECK:STDOUT: inst6000005D: {kind: SymbolicBinding, arg0: entity_name60000004, arg1: inst, type: type(inst6000004A)} -// CHECK:STDOUT: inst6000005E: {kind: SymbolicBindingType, arg0: entity_name60000004, arg1: inst6000005D, type: type(TypeType)} -// CHECK:STDOUT: inst6000005F: {kind: PatternType, arg0: inst6000005E, type: type(TypeType)} -// CHECK:STDOUT: inst60000060: {kind: LookupImplWitness, arg0: inst6000001B, arg1: specific_interface60000000, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst60000061: {kind: ImportRefUnloaded, arg0: import_ir_inst10, arg1: entity_name} -// CHECK:STDOUT: inst60000062: {kind: ImplDecl, arg0: impl60000000, arg1: inst_block_empty} -// CHECK:STDOUT: inst60000063: {kind: SymbolicBinding, arg0: entity_name60000001, arg1: inst, type: type(inst6000004A)} -// CHECK:STDOUT: inst60000064: {kind: SymbolicBindingType, arg0: entity_name60000001, arg1: inst60000063, type: type(TypeType)} -// CHECK:STDOUT: inst60000065: {kind: ConstType, arg0: inst60000064, type: type(TypeType)} -// CHECK:STDOUT: inst60000066: {kind: ImportRefUnloaded, arg0: import_ir_inst12, arg1: entity_name} -// CHECK:STDOUT: inst60000067: {kind: ImplWitnessTable, arg0: inst_block60000020, arg1: impl60000000} -// CHECK:STDOUT: inst60000068: {kind: ImplWitness, arg0: inst60000067, arg1: specific60000002, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst60000069: {kind: FunctionDecl, arg0: function60000002, arg1: inst_block_empty, type: type(symbolic_constant60000022)} -// CHECK:STDOUT: inst6000006A: {kind: FunctionType, arg0: function60000002, arg1: specific60000002, type: type(TypeType)} -// CHECK:STDOUT: inst6000006B: {kind: StructValue, arg0: inst_block_empty, type: type(symbolic_constant60000022)} -// CHECK:STDOUT: inst6000006C: {kind: PatternType, arg0: inst60000065, type: type(TypeType)} -// CHECK:STDOUT: inst6000006D: {kind: ReturnSlotPattern, arg0: inst, type: type(symbolic_constant60000027)} -// CHECK:STDOUT: inst6000006E: {kind: OutParamPattern, arg0: inst6000006D, arg1: call_param1, type: type(symbolic_constant60000027)} -// CHECK:STDOUT: inst6000006F: {kind: ValueBindingPattern, arg0: entity_name6000000E, type: type(symbolic_constant60000027)} -// CHECK:STDOUT: inst60000070: {kind: ValueParamPattern, arg0: inst6000006F, arg1: call_param0, type: type(symbolic_constant60000027)} -// CHECK:STDOUT: inst60000071: {kind: ImportRefLoaded, arg0: import_ir_inst19, arg1: entity_name, type: type(TypeType)} -// CHECK:STDOUT: inst60000072: {kind: ImportRefLoaded, arg0: import_ir_inst1A, arg1: entity_name, type: type(inst6000004A)} -// CHECK:STDOUT: inst60000073: {kind: SymbolicBinding, arg0: entity_name60000001, arg1: inst, type: type(inst6000004A)} -// CHECK:STDOUT: inst60000074: {kind: SymbolicBindingType, arg0: entity_name60000001, arg1: inst60000073, type: type(TypeType)} -// CHECK:STDOUT: inst60000075: {kind: ConstType, arg0: inst60000074, type: type(TypeType)} -// CHECK:STDOUT: inst60000076: {kind: PatternType, arg0: inst60000075, type: type(TypeType)} -// CHECK:STDOUT: inst60000077: {kind: LookupImplWitness, arg0: inst60000063, arg1: specific_interface60000000, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst60000078: {kind: FunctionTypeWithSelfType, arg0: inst60000053, arg1: inst60000063, type: type(TypeType)} -// CHECK:STDOUT: inst60000079: {kind: ImplWitnessAccess, arg0: inst60000077, arg1: element0, type: type(symbolic_constant60000032)} -// CHECK:STDOUT: inst6000007A: {kind: SpecificImplFunction, arg0: inst60000079, arg1: specific60000003, type: type(inst(SpecificFunctionType))} -// CHECK:STDOUT: inst6000007B: {kind: PatternType, arg0: inst60000064, type: type(TypeType)} -// CHECK:STDOUT: inst6000007C: {kind: RequireCompleteType, arg0: inst60000064, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst6000007D: {kind: RequireCompleteType, arg0: inst60000065, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst6000007E: {kind: RequireCompleteType, arg0: inst60000075, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst6000007F: {kind: RequireCompleteType, arg0: inst60000074, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst60000080: {kind: LookupImplWitness, arg0: inst60000073, arg1: specific_interface60000000, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst60000081: {kind: FunctionTypeWithSelfType, arg0: inst60000053, arg1: inst60000073, type: type(TypeType)} -// CHECK:STDOUT: inst60000082: {kind: ImplWitnessAccess, arg0: inst60000080, arg1: element0, type: type(symbolic_constant60000041)} -// CHECK:STDOUT: inst60000083: {kind: SpecificImplFunction, arg0: inst60000082, arg1: specific60000005, type: type(inst(SpecificFunctionType))} -// CHECK:STDOUT: inst60000084: {kind: PatternType, arg0: inst6000004A, type: type(TypeType)} -// CHECK:STDOUT: inst60000085: {kind: SymbolicBindingPattern, arg0: entity_name60000014, type: type(inst60000084)} -// CHECK:STDOUT: inst60000086: {kind: ImportRefLoaded, arg0: import_ir_inst26, arg1: entity_name, type: type(TypeType)} -// CHECK:STDOUT: inst60000087: {kind: ImportRefLoaded, arg0: import_ir_inst27, arg1: entity_name, type: type(TypeType)} -// CHECK:STDOUT: inst60000088: {kind: ImportRefLoaded, arg0: import_ir_inst28, arg1: entity_name, type: type(inst6000004A)} -// CHECK:STDOUT: inst60000089: {kind: SymbolicBinding, arg0: entity_name60000001, arg1: inst, type: type(inst6000004A)} -// CHECK:STDOUT: inst6000008A: {kind: SymbolicBindingType, arg0: entity_name60000001, arg1: inst60000089, type: type(TypeType)} -// CHECK:STDOUT: inst6000008B: {kind: ConstType, arg0: inst6000008A, type: type(TypeType)} -// CHECK:STDOUT: inst6000008C: {kind: ImplWitness, arg0: inst60000067, arg1: specific60000006, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst6000008D: {kind: FunctionType, arg0: function60000002, arg1: specific60000006, type: type(TypeType)} -// CHECK:STDOUT: inst6000008E: {kind: StructValue, arg0: inst_block_empty, type: type(symbolic_constant6000004C)} -// CHECK:STDOUT: inst6000008F: {kind: ImportRefUnloaded, arg0: import_ir_inst2F, arg1: entity_name} -// CHECK:STDOUT: inst60000090: {kind: ImplDecl, arg0: impl60000001, arg1: inst_block_empty} -// CHECK:STDOUT: inst60000091: {kind: ImportRefLoaded, arg0: import_ir_inst31, arg1: entity_name, type: type(TypeType)} -// CHECK:STDOUT: inst60000092: {kind: ImportRefLoaded, arg0: import_ir_inst32, arg1: entity_name, type: type(TypeType)} -// CHECK:STDOUT: inst60000093: {kind: ImportRefUnloaded, arg0: import_ir_inst33, arg1: entity_name} -// CHECK:STDOUT: inst60000094: {kind: ImplDecl, arg0: impl60000002, arg1: inst_block_empty} -// CHECK:STDOUT: inst60000095: {kind: ImportRefLoaded, arg0: import_ir_inst35, arg1: entity_name, type: type(TypeType)} -// CHECK:STDOUT: inst60000096: {kind: ImportRefLoaded, arg0: import_ir_inst36, arg1: entity_name, type: type(TypeType)} -// CHECK:STDOUT: inst60000097: {kind: ImportRefUnloaded, arg0: import_ir_inst37, arg1: entity_name} -// CHECK:STDOUT: inst60000098: {kind: ImplDecl, arg0: impl60000003, arg1: inst_block_empty} -// CHECK:STDOUT: inst60000099: {kind: ImportRefLoaded, arg0: import_ir_inst39, arg1: entity_name, type: type(TypeType)} -// CHECK:STDOUT: inst6000009A: {kind: ImportRefLoaded, arg0: import_ir_inst3A, arg1: entity_name, type: type(TypeType)} -// CHECK:STDOUT: inst6000009B: {kind: ImportRefUnloaded, arg0: import_ir_inst3B, arg1: entity_name} -// CHECK:STDOUT: inst6000009C: {kind: ImplDecl, arg0: impl60000004, arg1: inst_block_empty} -// CHECK:STDOUT: inst6000009D: {kind: ImportRefLoaded, arg0: import_ir_inst3D, arg1: entity_name, type: type(TypeType)} -// CHECK:STDOUT: inst6000009E: {kind: ImportRefLoaded, arg0: import_ir_inst3E, arg1: entity_name, type: type(TypeType)} -// CHECK:STDOUT: inst6000009F: {kind: ImportRefLoaded, arg0: import_ir_inst3F, arg1: entity_name, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst600000A0: {kind: ImplDecl, arg0: impl60000005, arg1: inst_block_empty} -// CHECK:STDOUT: inst600000A1: {kind: ImportRefUnloaded, arg0: import_ir_inst41, arg1: entity_name} -// CHECK:STDOUT: inst600000A2: {kind: ImplWitnessTable, arg0: inst_block60000032, arg1: impl60000005} -// CHECK:STDOUT: inst600000A3: {kind: ImplWitness, arg0: inst600000A2, arg1: specific60000007, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst600000A4: {kind: SymbolicBindingPattern, arg0: entity_name60000018, type: type(inst60000017)} -// CHECK:STDOUT: inst600000A5: {kind: ImportRefLoaded, arg0: import_ir_inst44, arg1: entity_name, type: type(TypeType)} -// CHECK:STDOUT: inst600000A6: {kind: ImportRefLoaded, arg0: import_ir_inst45, arg1: entity_name, type: type(TypeType)} -// CHECK:STDOUT: inst600000A7: {kind: ImportRefLoaded, arg0: import_ir_inst46, arg1: entity_name, type: type(TypeType)} -// CHECK:STDOUT: inst600000A8: {kind: SymbolicBinding, arg0: entity_name60000001, arg1: inst, type: type(TypeType)} -// CHECK:STDOUT: inst600000A9: {kind: PointerType, arg0: inst600000A8, type: type(TypeType)} -// CHECK:STDOUT: inst600000AA: {kind: ImplWitness, arg0: inst600000A2, arg1: specific60000008, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst600000AB: {kind: FunctionDecl, arg0: function60000003, arg1: inst_block_empty, type: type(symbolic_constant60000058)} -// CHECK:STDOUT: inst600000AC: {kind: FunctionType, arg0: function60000003, arg1: specific60000007, type: type(TypeType)} -// CHECK:STDOUT: inst600000AD: {kind: StructValue, arg0: inst_block_empty, type: type(symbolic_constant60000058)} -// CHECK:STDOUT: inst600000AE: {kind: ReturnSlotPattern, arg0: inst, type: type(symbolic_constant6000005C)} -// CHECK:STDOUT: inst600000AF: {kind: OutParamPattern, arg0: inst600000AE, arg1: call_param1, type: type(symbolic_constant6000005C)} -// CHECK:STDOUT: inst600000B0: {kind: ValueBindingPattern, arg0: entity_name60000019, type: type(symbolic_constant6000005C)} -// CHECK:STDOUT: inst600000B1: {kind: ValueParamPattern, arg0: inst600000B0, arg1: call_param0, type: type(symbolic_constant6000005C)} -// CHECK:STDOUT: inst600000B2: {kind: ImportRefLoaded, arg0: import_ir_inst4F, arg1: entity_name, type: type(TypeType)} -// CHECK:STDOUT: inst600000B3: {kind: ImportRefLoaded, arg0: import_ir_inst50, arg1: entity_name, type: type(TypeType)} -// CHECK:STDOUT: inst600000B4: {kind: SymbolicBinding, arg0: entity_name60000001, arg1: inst, type: type(TypeType)} -// CHECK:STDOUT: inst600000B5: {kind: PointerType, arg0: inst600000B4, type: type(TypeType)} -// CHECK:STDOUT: inst600000B6: {kind: PatternType, arg0: inst600000B5, type: type(TypeType)} -// CHECK:STDOUT: inst600000B7: {kind: FunctionType, arg0: function60000003, arg1: specific60000008, type: type(TypeType)} -// CHECK:STDOUT: inst600000B8: {kind: StructValue, arg0: inst_block_empty, type: type(symbolic_constant60000064)} -// CHECK:STDOUT: inst600000B9: {kind: RequireCompleteType, arg0: inst600000A9, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst600000BA: {kind: ImportRefUnloaded, arg0: import_ir_inst57, arg1: entity_name} -// CHECK:STDOUT: inst600000BB: {kind: ImplDecl, arg0: impl60000006, arg1: inst_block_empty} -// CHECK:STDOUT: inst600000BC: {kind: ImportRefLoaded, arg0: import_ir_inst59, arg1: entity_name, type: type(TypeType)} -// CHECK:STDOUT: inst600000BD: {kind: ImportRefLoaded, arg0: import_ir_inst5A, arg1: entity_name, type: type(TypeType)} -// CHECK:STDOUT: inst600000BE: {kind: ImportRefUnloaded, arg0: import_ir_inst5B, arg1: entity_name} -// CHECK:STDOUT: inst600000BF: {kind: ImplDecl, arg0: impl60000007, arg1: inst_block_empty} -// CHECK:STDOUT: inst600000C0: {kind: ImportRefLoaded, arg0: import_ir_inst5D, arg1: entity_name, type: type(TypeType)} -// CHECK:STDOUT: inst600000C1: {kind: ImportRefLoaded, arg0: import_ir_inst5E, arg1: entity_name, type: type(TypeType)} -// CHECK:STDOUT: inst600000C2: {kind: ImportRefUnloaded, arg0: import_ir_inst5F, arg1: entity_name} -// CHECK:STDOUT: inst600000C3: {kind: ImplDecl, arg0: impl60000008, arg1: inst_block_empty} -// CHECK:STDOUT: inst600000C4: {kind: SymbolicBinding, arg0: entity_name6000001B, arg1: inst, type: type(inst6000004A)} -// CHECK:STDOUT: inst600000C5: {kind: SymbolicBindingType, arg0: entity_name6000001B, arg1: inst600000C4, type: type(TypeType)} -// CHECK:STDOUT: inst600000C6: {kind: TupleType, arg0: inst_block6000003F, type: type(TypeType)} -// CHECK:STDOUT: inst600000C7: {kind: ImportRefUnloaded, arg0: import_ir_inst61, arg1: entity_name} -// CHECK:STDOUT: inst600000C8: {kind: ImplWitnessTable, arg0: inst_block60000040, arg1: impl60000008} -// CHECK:STDOUT: inst600000C9: {kind: ImplWitness, arg0: inst600000C8, arg1: specific6000000A, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst600000CA: {kind: FunctionDecl, arg0: function60000004, arg1: inst_block_empty, type: type(symbolic_constant6000006D)} -// CHECK:STDOUT: inst600000CB: {kind: FunctionType, arg0: function60000004, arg1: specific6000000A, type: type(TypeType)} -// CHECK:STDOUT: inst600000CC: {kind: StructValue, arg0: inst_block_empty, type: type(symbolic_constant6000006D)} -// CHECK:STDOUT: inst600000CD: {kind: TupleType, arg0: inst_block60000042, type: type(TypeType)} -// CHECK:STDOUT: inst600000CE: {kind: TupleValue, arg0: inst_block60000041, type: type(inst600000CD)} -// CHECK:STDOUT: inst600000CF: {kind: PatternType, arg0: inst600000C6, type: type(TypeType)} -// CHECK:STDOUT: inst600000D0: {kind: ReturnSlotPattern, arg0: inst, type: type(symbolic_constant60000073)} -// CHECK:STDOUT: inst600000D1: {kind: OutParamPattern, arg0: inst600000D0, arg1: call_param1, type: type(symbolic_constant60000073)} -// CHECK:STDOUT: inst600000D2: {kind: ValueBindingPattern, arg0: entity_name6000001D, type: type(symbolic_constant60000073)} -// CHECK:STDOUT: inst600000D3: {kind: ValueParamPattern, arg0: inst600000D2, arg1: call_param0, type: type(symbolic_constant60000073)} -// CHECK:STDOUT: inst600000D4: {kind: ImportRefLoaded, arg0: import_ir_inst68, arg1: entity_name, type: type(TypeType)} -// CHECK:STDOUT: inst600000D5: {kind: ImportRefLoaded, arg0: import_ir_inst69, arg1: entity_name, type: type(inst6000004A)} -// CHECK:STDOUT: inst600000D6: {kind: ImportRefLoaded, arg0: import_ir_inst6A, arg1: entity_name, type: type(inst6000004A)} -// CHECK:STDOUT: inst600000D7: {kind: SymbolicBinding, arg0: entity_name60000001, arg1: inst, type: type(inst6000004A)} -// CHECK:STDOUT: inst600000D8: {kind: SymbolicBindingType, arg0: entity_name60000001, arg1: inst600000D7, type: type(TypeType)} -// CHECK:STDOUT: inst600000D9: {kind: SymbolicBinding, arg0: entity_name6000001B, arg1: inst, type: type(inst6000004A)} -// CHECK:STDOUT: inst600000DA: {kind: SymbolicBindingType, arg0: entity_name6000001B, arg1: inst600000D9, type: type(TypeType)} -// CHECK:STDOUT: inst600000DB: {kind: TupleType, arg0: inst_block60000048, type: type(TypeType)} -// CHECK:STDOUT: inst600000DC: {kind: PatternType, arg0: inst600000DB, type: type(TypeType)} -// CHECK:STDOUT: inst600000DD: {kind: LookupImplWitness, arg0: inst600000C4, arg1: specific_interface60000000, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst600000DE: {kind: FunctionTypeWithSelfType, arg0: inst60000053, arg1: inst600000C4, type: type(TypeType)} -// CHECK:STDOUT: inst600000DF: {kind: ImplWitnessAccess, arg0: inst600000DD, arg1: element0, type: type(symbolic_constant60000083)} -// CHECK:STDOUT: inst600000E0: {kind: SpecificImplFunction, arg0: inst600000DF, arg1: specific6000000B, type: type(inst(SpecificFunctionType))} -// CHECK:STDOUT: inst600000E1: {kind: PatternType, arg0: inst600000C5, type: type(TypeType)} -// CHECK:STDOUT: inst600000E2: {kind: RequireCompleteType, arg0: inst600000C5, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst600000E3: {kind: RequireCompleteType, arg0: inst600000C6, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst600000E4: {kind: RequireCompleteType, arg0: inst600000DB, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst600000E5: {kind: RequireCompleteType, arg0: inst600000D8, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst600000E6: {kind: LookupImplWitness, arg0: inst600000D7, arg1: specific_interface60000000, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst600000E7: {kind: FunctionTypeWithSelfType, arg0: inst60000053, arg1: inst600000D7, type: type(TypeType)} -// CHECK:STDOUT: inst600000E8: {kind: ImplWitnessAccess, arg0: inst600000E6, arg1: element0, type: type(symbolic_constant60000097)} -// CHECK:STDOUT: inst600000E9: {kind: SpecificImplFunction, arg0: inst600000E8, arg1: specific6000000D, type: type(inst(SpecificFunctionType))} -// CHECK:STDOUT: inst600000EA: {kind: RequireCompleteType, arg0: inst600000DA, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst600000EB: {kind: LookupImplWitness, arg0: inst600000D9, arg1: specific_interface60000000, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst600000EC: {kind: FunctionTypeWithSelfType, arg0: inst60000053, arg1: inst600000D9, type: type(TypeType)} -// CHECK:STDOUT: inst600000ED: {kind: ImplWitnessAccess, arg0: inst600000EB, arg1: element0, type: type(symbolic_constant6000009C)} -// CHECK:STDOUT: inst600000EE: {kind: SpecificImplFunction, arg0: inst600000ED, arg1: specific6000000E, type: type(inst(SpecificFunctionType))} -// CHECK:STDOUT: inst600000EF: {kind: SymbolicBindingPattern, arg0: entity_name60000028, type: type(inst60000084)} -// CHECK:STDOUT: inst600000F0: {kind: SymbolicBindingPattern, arg0: entity_name60000029, type: type(inst60000084)} -// CHECK:STDOUT: inst600000F1: {kind: ImportRefLoaded, arg0: import_ir_inst7E, arg1: entity_name, type: type(TypeType)} -// CHECK:STDOUT: inst600000F2: {kind: ImportRefLoaded, arg0: import_ir_inst7F, arg1: entity_name, type: type(TypeType)} -// CHECK:STDOUT: inst600000F3: {kind: ImportRefLoaded, arg0: import_ir_inst80, arg1: entity_name, type: type(inst6000004A)} -// CHECK:STDOUT: inst600000F4: {kind: ImportRefLoaded, arg0: import_ir_inst81, arg1: entity_name, type: type(inst6000004A)} -// CHECK:STDOUT: inst600000F5: {kind: SymbolicBinding, arg0: entity_name60000001, arg1: inst, type: type(inst6000004A)} -// CHECK:STDOUT: inst600000F6: {kind: SymbolicBinding, arg0: entity_name6000001B, arg1: inst, type: type(inst6000004A)} -// CHECK:STDOUT: inst600000F7: {kind: TupleValue, arg0: inst_block60000052, type: type(inst600000CD)} -// CHECK:STDOUT: inst600000F8: {kind: SymbolicBindingType, arg0: entity_name60000001, arg1: inst600000F5, type: type(TypeType)} -// CHECK:STDOUT: inst600000F9: {kind: SymbolicBindingType, arg0: entity_name6000001B, arg1: inst600000F6, type: type(TypeType)} -// CHECK:STDOUT: inst600000FA: {kind: TupleType, arg0: inst_block60000053, type: type(TypeType)} -// CHECK:STDOUT: inst600000FB: {kind: ImplWitness, arg0: inst600000C8, arg1: specific6000000F, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst600000FC: {kind: FunctionType, arg0: function60000004, arg1: specific6000000F, type: type(TypeType)} -// CHECK:STDOUT: inst600000FD: {kind: StructValue, arg0: inst_block_empty, type: type(symbolic_constant600000AD)} -// CHECK:STDOUT: inst600000FE: {kind: ImportRefUnloaded, arg0: import_ir_inst8B, arg1: entity_name} -// CHECK:STDOUT: inst600000FF: {kind: ImplDecl, arg0: impl60000009, arg1: inst_block_empty} -// CHECK:STDOUT: inst60000100: {kind: SymbolicBinding, arg0: entity_name6000002A, arg1: inst, type: type(inst6000004A)} -// CHECK:STDOUT: inst60000101: {kind: SymbolicBindingType, arg0: entity_name6000002A, arg1: inst60000100, type: type(TypeType)} -// CHECK:STDOUT: inst60000102: {kind: TupleType, arg0: inst_block60000058, type: type(TypeType)} -// CHECK:STDOUT: inst60000103: {kind: ImportRefUnloaded, arg0: import_ir_inst8D, arg1: entity_name} -// CHECK:STDOUT: inst60000104: {kind: ImplWitnessTable, arg0: inst_block60000059, arg1: impl60000009} -// CHECK:STDOUT: inst60000105: {kind: ImplWitness, arg0: inst60000104, arg1: specific60000010, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst60000106: {kind: FunctionDecl, arg0: function60000005, arg1: inst_block_empty, type: type(symbolic_constant600000B5)} -// CHECK:STDOUT: inst60000107: {kind: FunctionType, arg0: function60000005, arg1: specific60000010, type: type(TypeType)} -// CHECK:STDOUT: inst60000108: {kind: StructValue, arg0: inst_block_empty, type: type(symbolic_constant600000B5)} -// CHECK:STDOUT: inst60000109: {kind: TupleType, arg0: inst_block6000005B, type: type(TypeType)} -// CHECK:STDOUT: inst6000010A: {kind: TupleValue, arg0: inst_block6000005A, type: type(inst60000109)} -// CHECK:STDOUT: inst6000010B: {kind: PatternType, arg0: inst60000102, type: type(TypeType)} -// CHECK:STDOUT: inst6000010C: {kind: ReturnSlotPattern, arg0: inst, type: type(symbolic_constant600000BB)} -// CHECK:STDOUT: inst6000010D: {kind: OutParamPattern, arg0: inst6000010C, arg1: call_param1, type: type(symbolic_constant600000BB)} -// CHECK:STDOUT: inst6000010E: {kind: ValueBindingPattern, arg0: entity_name6000002C, type: type(symbolic_constant600000BB)} -// CHECK:STDOUT: inst6000010F: {kind: ValueParamPattern, arg0: inst6000010E, arg1: call_param0, type: type(symbolic_constant600000BB)} -// CHECK:STDOUT: inst60000110: {kind: ImportRefLoaded, arg0: import_ir_inst94, arg1: entity_name, type: type(TypeType)} -// CHECK:STDOUT: inst60000111: {kind: ImportRefLoaded, arg0: import_ir_inst95, arg1: entity_name, type: type(inst6000004A)} -// CHECK:STDOUT: inst60000112: {kind: ImportRefLoaded, arg0: import_ir_inst96, arg1: entity_name, type: type(inst6000004A)} -// CHECK:STDOUT: inst60000113: {kind: ImportRefLoaded, arg0: import_ir_inst97, arg1: entity_name, type: type(inst6000004A)} -// CHECK:STDOUT: inst60000114: {kind: SymbolicBinding, arg0: entity_name60000001, arg1: inst, type: type(inst6000004A)} -// CHECK:STDOUT: inst60000115: {kind: SymbolicBindingType, arg0: entity_name60000001, arg1: inst60000114, type: type(TypeType)} -// CHECK:STDOUT: inst60000116: {kind: SymbolicBinding, arg0: entity_name6000001B, arg1: inst, type: type(inst6000004A)} -// CHECK:STDOUT: inst60000117: {kind: SymbolicBindingType, arg0: entity_name6000001B, arg1: inst60000116, type: type(TypeType)} -// CHECK:STDOUT: inst60000118: {kind: SymbolicBinding, arg0: entity_name6000002A, arg1: inst, type: type(inst6000004A)} -// CHECK:STDOUT: inst60000119: {kind: SymbolicBindingType, arg0: entity_name6000002A, arg1: inst60000118, type: type(TypeType)} -// CHECK:STDOUT: inst6000011A: {kind: TupleType, arg0: inst_block60000061, type: type(TypeType)} -// CHECK:STDOUT: inst6000011B: {kind: PatternType, arg0: inst6000011A, type: type(TypeType)} -// CHECK:STDOUT: inst6000011C: {kind: LookupImplWitness, arg0: inst60000100, arg1: specific_interface60000000, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst6000011D: {kind: FunctionTypeWithSelfType, arg0: inst60000053, arg1: inst60000100, type: type(TypeType)} -// CHECK:STDOUT: inst6000011E: {kind: ImplWitnessAccess, arg0: inst6000011C, arg1: element0, type: type(symbolic_constant600000D0)} -// CHECK:STDOUT: inst6000011F: {kind: SpecificImplFunction, arg0: inst6000011E, arg1: specific60000011, type: type(inst(SpecificFunctionType))} -// CHECK:STDOUT: inst60000120: {kind: PatternType, arg0: inst60000101, type: type(TypeType)} -// CHECK:STDOUT: inst60000121: {kind: RequireCompleteType, arg0: inst60000101, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst60000122: {kind: RequireCompleteType, arg0: inst60000102, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst60000123: {kind: RequireCompleteType, arg0: inst6000011A, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst60000124: {kind: RequireCompleteType, arg0: inst60000115, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst60000125: {kind: LookupImplWitness, arg0: inst60000114, arg1: specific_interface60000000, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst60000126: {kind: FunctionTypeWithSelfType, arg0: inst60000053, arg1: inst60000114, type: type(TypeType)} -// CHECK:STDOUT: inst60000127: {kind: ImplWitnessAccess, arg0: inst60000125, arg1: element0, type: type(symbolic_constant600000E9)} -// CHECK:STDOUT: inst60000128: {kind: SpecificImplFunction, arg0: inst60000127, arg1: specific60000013, type: type(inst(SpecificFunctionType))} -// CHECK:STDOUT: inst60000129: {kind: RequireCompleteType, arg0: inst60000117, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst6000012A: {kind: LookupImplWitness, arg0: inst60000116, arg1: specific_interface60000000, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst6000012B: {kind: FunctionTypeWithSelfType, arg0: inst60000053, arg1: inst60000116, type: type(TypeType)} -// CHECK:STDOUT: inst6000012C: {kind: ImplWitnessAccess, arg0: inst6000012A, arg1: element0, type: type(symbolic_constant600000EE)} -// CHECK:STDOUT: inst6000012D: {kind: SpecificImplFunction, arg0: inst6000012C, arg1: specific60000014, type: type(inst(SpecificFunctionType))} -// CHECK:STDOUT: inst6000012E: {kind: RequireCompleteType, arg0: inst60000119, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst6000012F: {kind: LookupImplWitness, arg0: inst60000118, arg1: specific_interface60000000, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst60000130: {kind: FunctionTypeWithSelfType, arg0: inst60000053, arg1: inst60000118, type: type(TypeType)} -// CHECK:STDOUT: inst60000131: {kind: ImplWitnessAccess, arg0: inst6000012F, arg1: element0, type: type(symbolic_constant600000F3)} -// CHECK:STDOUT: inst60000132: {kind: SpecificImplFunction, arg0: inst60000131, arg1: specific60000015, type: type(inst(SpecificFunctionType))} -// CHECK:STDOUT: inst60000133: {kind: SymbolicBindingPattern, arg0: entity_name6000003C, type: type(inst60000084)} -// CHECK:STDOUT: inst60000134: {kind: SymbolicBindingPattern, arg0: entity_name6000003D, type: type(inst60000084)} -// CHECK:STDOUT: inst60000135: {kind: SymbolicBindingPattern, arg0: entity_name6000003E, type: type(inst60000084)} -// CHECK:STDOUT: inst60000136: {kind: ImportRefLoaded, arg0: import_ir_instB3, arg1: entity_name, type: type(TypeType)} -// CHECK:STDOUT: inst60000137: {kind: ImportRefLoaded, arg0: import_ir_instB4, arg1: entity_name, type: type(TypeType)} -// CHECK:STDOUT: inst60000138: {kind: ImportRefLoaded, arg0: import_ir_instB5, arg1: entity_name, type: type(inst6000004A)} -// CHECK:STDOUT: inst60000139: {kind: ImportRefLoaded, arg0: import_ir_instB6, arg1: entity_name, type: type(inst6000004A)} -// CHECK:STDOUT: inst6000013A: {kind: ImportRefLoaded, arg0: import_ir_instB7, arg1: entity_name, type: type(inst6000004A)} -// CHECK:STDOUT: inst6000013B: {kind: SymbolicBinding, arg0: entity_name60000001, arg1: inst, type: type(inst6000004A)} -// CHECK:STDOUT: inst6000013C: {kind: SymbolicBinding, arg0: entity_name6000001B, arg1: inst, type: type(inst6000004A)} -// CHECK:STDOUT: inst6000013D: {kind: SymbolicBinding, arg0: entity_name6000002A, arg1: inst, type: type(inst6000004A)} -// CHECK:STDOUT: inst6000013E: {kind: TupleValue, arg0: inst_block6000006C, type: type(inst60000109)} -// CHECK:STDOUT: inst6000013F: {kind: SymbolicBindingType, arg0: entity_name60000001, arg1: inst6000013B, type: type(TypeType)} -// CHECK:STDOUT: inst60000140: {kind: SymbolicBindingType, arg0: entity_name6000001B, arg1: inst6000013C, type: type(TypeType)} -// CHECK:STDOUT: inst60000141: {kind: SymbolicBindingType, arg0: entity_name6000002A, arg1: inst6000013D, type: type(TypeType)} -// CHECK:STDOUT: inst60000142: {kind: TupleType, arg0: inst_block6000006D, type: type(TypeType)} -// CHECK:STDOUT: inst60000143: {kind: ImplWitness, arg0: inst60000104, arg1: specific60000016, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst60000144: {kind: FunctionType, arg0: function60000005, arg1: specific60000016, type: type(TypeType)} -// CHECK:STDOUT: inst60000145: {kind: StructValue, arg0: inst_block_empty, type: type(symbolic_constant60000108)} -// CHECK:STDOUT: inst60000146: {kind: RequireSpecificDefinition, arg0: specific60000007, type: type(inst(RequireSpecificDefinitionType))} -// CHECK:STDOUT: inst60000147: {kind: RequireSpecificDefinition, arg0: specific60000007, type: type(inst(RequireSpecificDefinitionType))} -// CHECK:STDOUT: inst60000148: {kind: RequireSpecificDefinition, arg0: specific60000017, type: type(inst(RequireSpecificDefinitionType))} -// CHECK:STDOUT: inst60000149: {kind: LookupImplWitness, arg0: inst6000001B, arg1: specific_interface60000000, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst6000014A: {kind: LookupImplWitness, arg0: inst6000001C, arg1: specific_interface60000000, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst6000014B: {kind: FacetValue, arg0: inst6000001B, arg1: inst_block60000074, type: type(inst6000004A)} -// CHECK:STDOUT: inst6000014C: {kind: FunctionTypeWithSelfType, arg0: inst60000053, arg1: inst6000014B, type: type(TypeType)} -// CHECK:STDOUT: inst6000014D: {kind: ImplWitnessAccess, arg0: inst60000149, arg1: element0, type: type(symbolic_constant60000113)} -// CHECK:STDOUT: inst6000014E: {kind: ImplWitnessAccess, arg0: inst60000149, arg1: element0, type: type(symbolic_constant60000110)} -// CHECK:STDOUT: inst6000014F: {kind: FacetValue, arg0: inst6000001C, arg1: inst_block60000075, type: type(inst6000004A)} -// CHECK:STDOUT: inst60000150: {kind: FunctionTypeWithSelfType, arg0: inst60000053, arg1: inst6000014F, type: type(TypeType)} -// CHECK:STDOUT: inst60000151: {kind: ImplWitnessAccess, arg0: inst6000014A, arg1: element0, type: type(symbolic_constant60000113)} -// CHECK:STDOUT: inst60000152: {kind: BoundMethod, arg0: inst60000042, arg1: inst6000014D, type: type(inst(BoundMethodType))} -// CHECK:STDOUT: inst60000153: {kind: SpecificImplFunction, arg0: inst6000014D, arg1: specific60000018, type: type(inst(SpecificFunctionType))} -// CHECK:STDOUT: inst60000154: {kind: SpecificImplFunction, arg0: inst6000014E, arg1: specific60000018, type: type(inst(SpecificFunctionType))} -// CHECK:STDOUT: inst60000155: {kind: SpecificImplFunction, arg0: inst60000151, arg1: specific60000019, type: type(inst(SpecificFunctionType))} -// CHECK:STDOUT: inst60000156: {kind: BoundMethod, arg0: inst60000042, arg1: inst60000153, type: type(inst(BoundMethodType))} -// CHECK:STDOUT: inst60000157: {kind: RequireCompleteType, arg0: inst6000001B, type: type(inst(WitnessType))} -// CHECK:STDOUT: inst60000158: {kind: Call, arg0: inst60000156, arg1: inst_block60000079, type: type(symbolic_constant4)} -// CHECK:STDOUT: inst60000159: {kind: InitializeFrom, arg0: inst60000158, arg1: inst60000046, type: type(symbolic_constant4)} -// CHECK:STDOUT: inst6000015A: {kind: TupleAccess, arg0: inst60000037, arg1: element1, type: type(inst60000024)} -// CHECK:STDOUT: inst6000015B: {kind: TupleInit, arg0: inst_block_empty, arg1: inst6000015A, type: type(inst60000024)} -// CHECK:STDOUT: inst6000015C: {kind: Converted, arg0: inst60000043, arg1: inst6000015B, type: type(inst60000024)} -// CHECK:STDOUT: inst6000015D: {kind: TupleInit, arg0: inst_block6000007A, arg1: inst60000037, type: type(symbolic_constantA)} -// CHECK:STDOUT: inst6000015E: {kind: Converted, arg0: inst60000044, arg1: inst6000015D, type: type(symbolic_constantA)} -// CHECK:STDOUT: inst6000015F: {kind: ReturnExpr, arg0: inst6000015E, arg1: inst60000037} +// CHECK:STDOUT: inst6000001D: {kind: PointerType, arg0: inst60000017, type: type(TypeType)} +// CHECK:STDOUT: inst6000001E: {kind: ValueBinding, arg0: entity_name60000002, arg1: inst60000038, type: type(symbolic_constant4)} +// CHECK:STDOUT: inst6000001F: {kind: PatternType, arg0: inst6000001C, type: type(TypeType)} +// CHECK:STDOUT: inst60000020: {kind: ValueBindingPattern, arg0: entity_name60000002, type: type(symbolic_constant6)} +// CHECK:STDOUT: inst60000021: {kind: PatternType, arg0: inst6000001D, type: type(TypeType)} +// CHECK:STDOUT: inst60000022: {kind: ValueParamPattern, arg0: inst60000020, arg1: call_param0, type: type(symbolic_constant6)} +// CHECK:STDOUT: inst60000023: {kind: NameRef, arg0: name1, arg1: inst60000015, type: type(TypeType)} +// CHECK:STDOUT: inst60000024: {kind: PointerType, arg0: inst60000023, type: type(TypeType)} +// CHECK:STDOUT: inst60000025: {kind: TupleType, arg0: inst_block_empty, type: type(TypeType)} +// CHECK:STDOUT: inst60000026: {kind: TupleLiteral, arg0: inst_block_empty, type: type(inst60000025)} +// CHECK:STDOUT: inst60000027: {kind: TupleValue, arg0: inst_block_empty, type: type(inst60000025)} +// CHECK:STDOUT: inst60000028: {kind: TupleType, arg0: inst_block60000009, type: type(TypeType)} +// CHECK:STDOUT: inst60000029: {kind: TupleLiteral, arg0: inst_block60000008, type: type(inst60000028)} +// CHECK:STDOUT: inst6000002A: {kind: TupleValue, arg0: inst_block6000000A, type: type(inst60000028)} +// CHECK:STDOUT: inst6000002B: {kind: TupleValue, arg0: inst_block6000000B, type: type(inst60000028)} +// CHECK:STDOUT: inst6000002C: {kind: PointerType, arg0: inst60000028, type: type(TypeType)} +// CHECK:STDOUT: inst6000002D: {kind: Converted, arg0: inst60000027, arg1: inst60000025, type: type(TypeType)} +// CHECK:STDOUT: inst6000002E: {kind: TupleType, arg0: inst_block6000000D, type: type(TypeType)} +// CHECK:STDOUT: inst6000002F: {kind: Converted, arg0: inst60000029, arg1: inst6000002E, type: type(TypeType)} +// CHECK:STDOUT: inst60000030: {kind: TupleType, arg0: inst_block6000000E, type: type(TypeType)} +// CHECK:STDOUT: inst60000031: {kind: InitForm, arg0: inst6000002F, arg1: call_param1, type: type(inst(FormType))} +// CHECK:STDOUT: inst60000032: {kind: InitForm, arg0: inst6000002E, arg1: call_param1, type: type(inst(FormType))} +// CHECK:STDOUT: inst60000033: {kind: InitForm, arg0: inst60000030, arg1: call_param1, type: type(inst(FormType))} +// CHECK:STDOUT: inst60000034: {kind: PatternType, arg0: inst6000002E, type: type(TypeType)} +// CHECK:STDOUT: inst60000035: {kind: ReturnSlotPattern, arg0: inst6000002F, type: type(symbolic_constantE)} +// CHECK:STDOUT: inst60000036: {kind: PatternType, arg0: inst60000030, type: type(TypeType)} +// CHECK:STDOUT: inst60000037: {kind: OutParamPattern, arg0: inst60000035, arg1: call_param1, type: type(symbolic_constantE)} +// CHECK:STDOUT: inst60000038: {kind: ValueParam, arg0: call_param0, arg1: name2, type: type(symbolic_constant4)} +// CHECK:STDOUT: inst60000039: {kind: SpliceBlock, arg0: inst_block60000006, arg1: inst6000001B, type: type(TypeType)} +// CHECK:STDOUT: inst6000003A: {kind: OutParam, arg0: call_param1, arg1: name(ReturnSlot), type: type(symbolic_constantA)} +// CHECK:STDOUT: inst6000003B: {kind: ReturnSlot, arg0: inst6000002E, arg1: inst6000003A, type: type(symbolic_constantA)} +// CHECK:STDOUT: inst6000003C: {kind: FunctionDecl, arg0: function60000000, arg1: inst_block60000012, type: type(inst6000003D)} +// CHECK:STDOUT: inst6000003D: {kind: FunctionType, arg0: function60000000, arg1: specific, type: type(TypeType)} +// CHECK:STDOUT: inst6000003E: {kind: StructValue, arg0: inst_block_empty, type: type(inst6000003D)} +// CHECK:STDOUT: inst6000003F: {kind: PointerType, arg0: inst6000002E, type: type(TypeType)} +// CHECK:STDOUT: inst60000040: {kind: RequireCompleteType, arg0: inst6000002E, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst60000041: {kind: RequireCompleteType, arg0: inst6000002E, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst60000042: {kind: RequireCompleteType, arg0: inst60000030, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst60000043: {kind: RequireCompleteType, arg0: inst6000001C, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst60000044: {kind: RequireCompleteType, arg0: inst6000001C, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst60000045: {kind: RequireCompleteType, arg0: inst6000001D, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst60000046: {kind: RequireCompleteType, arg0: inst6000002E, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst60000047: {kind: NameRef, arg0: name2, arg1: inst6000001E, type: type(symbolic_constant4)} +// CHECK:STDOUT: inst60000048: {kind: TupleLiteral, arg0: inst_block_empty, type: type(inst60000025)} +// CHECK:STDOUT: inst60000049: {kind: TupleLiteral, arg0: inst_block60000018, type: type(symbolic_constantA)} +// CHECK:STDOUT: inst6000004A: {kind: RequireCompleteType, arg0: inst6000002E, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst6000004B: {kind: TupleAccess, arg0: inst6000003B, arg1: element0, type: type(symbolic_constant4)} +// CHECK:STDOUT: inst6000004C: {kind: RequireCompleteType, arg0: inst6000001C, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst6000004D: {kind: ImportRefLoaded, arg0: import_ir_inst0, arg1: entity_name60000003, type: type(TypeType)} +// CHECK:STDOUT: inst6000004E: {kind: InterfaceDecl, arg0: interface60000000, arg1: inst_block_empty, type: type(TypeType)} +// CHECK:STDOUT: inst6000004F: {kind: FacetType, arg0: facet_type60000001, type: type(TypeType)} +// CHECK:STDOUT: inst60000050: {kind: SymbolicBinding, arg0: entity_name60000004, arg1: inst, type: type(inst6000004F)} +// CHECK:STDOUT: inst60000051: {kind: ImportRefUnloaded, arg0: import_ir_inst2, arg1: entity_name} +// CHECK:STDOUT: inst60000052: {kind: ImportRefLoaded, arg0: import_ir_inst3, arg1: entity_name, type: type(inst60000054)} +// CHECK:STDOUT: inst60000053: {kind: ImportRefUnloaded, arg0: import_ir_inst4, arg1: entity_name60000005} +// CHECK:STDOUT: inst60000054: {kind: AssociatedEntityType, arg0: interface60000000, arg1: specific, type: type(TypeType)} +// CHECK:STDOUT: inst60000055: {kind: ImportRefLoaded, arg0: import_ir_inst5, arg1: entity_name, type: type(inst60000058)} +// CHECK:STDOUT: inst60000056: {kind: AssociatedEntity, arg0: element0, arg1: inst60000055, type: type(inst60000054)} +// CHECK:STDOUT: inst60000057: {kind: FunctionDecl, arg0: function60000001, arg1: inst_block_empty, type: type(inst60000058)} +// CHECK:STDOUT: inst60000058: {kind: FunctionType, arg0: function60000001, arg1: specific, type: type(TypeType)} +// CHECK:STDOUT: inst60000059: {kind: StructValue, arg0: inst_block_empty, type: type(inst60000058)} +// CHECK:STDOUT: inst6000005A: {kind: SymbolicBindingType, arg0: entity_name60000004, arg1: inst60000050, type: type(TypeType)} +// CHECK:STDOUT: inst6000005B: {kind: PatternType, arg0: inst6000005A, type: type(TypeType)} +// CHECK:STDOUT: inst6000005C: {kind: ReturnSlotPattern, arg0: inst, type: type(symbolic_constant60000017)} +// CHECK:STDOUT: inst6000005D: {kind: OutParamPattern, arg0: inst6000005C, arg1: call_param1, type: type(symbolic_constant60000017)} +// CHECK:STDOUT: inst6000005E: {kind: ValueBindingPattern, arg0: entity_name60000008, type: type(symbolic_constant60000017)} +// CHECK:STDOUT: inst6000005F: {kind: ValueParamPattern, arg0: inst6000005E, arg1: call_param0, type: type(symbolic_constant60000017)} +// CHECK:STDOUT: inst60000060: {kind: InitForm, arg0: inst6000005A, arg1: call_param1, type: type(inst(FormType))} +// CHECK:STDOUT: inst60000061: {kind: ImportRefLoaded, arg0: import_ir_instB, arg1: entity_name, type: type(TypeType)} +// CHECK:STDOUT: inst60000062: {kind: ImportRefLoaded, arg0: import_ir_instC, arg1: entity_name, type: type(inst6000004F)} +// CHECK:STDOUT: inst60000063: {kind: SymbolicBinding, arg0: entity_name60000004, arg1: inst, type: type(inst6000004F)} +// CHECK:STDOUT: inst60000064: {kind: SymbolicBindingType, arg0: entity_name60000004, arg1: inst60000063, type: type(TypeType)} +// CHECK:STDOUT: inst60000065: {kind: PatternType, arg0: inst60000064, type: type(TypeType)} +// CHECK:STDOUT: inst60000066: {kind: InitForm, arg0: inst60000064, arg1: call_param1, type: type(inst(FormType))} +// CHECK:STDOUT: inst60000067: {kind: LookupImplWitness, arg0: inst6000001C, arg1: specific_interface60000000, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst60000068: {kind: ImportRefUnloaded, arg0: import_ir_inst11, arg1: entity_name} +// CHECK:STDOUT: inst60000069: {kind: ImplDecl, arg0: impl60000000, arg1: inst_block_empty} +// CHECK:STDOUT: inst6000006A: {kind: SymbolicBinding, arg0: entity_name60000001, arg1: inst, type: type(inst6000004F)} +// CHECK:STDOUT: inst6000006B: {kind: SymbolicBindingType, arg0: entity_name60000001, arg1: inst6000006A, type: type(TypeType)} +// CHECK:STDOUT: inst6000006C: {kind: ConstType, arg0: inst6000006B, type: type(TypeType)} +// CHECK:STDOUT: inst6000006D: {kind: ImportRefUnloaded, arg0: import_ir_inst13, arg1: entity_name} +// CHECK:STDOUT: inst6000006E: {kind: ImplWitnessTable, arg0: inst_block60000020, arg1: impl60000000} +// CHECK:STDOUT: inst6000006F: {kind: ImplWitness, arg0: inst6000006E, arg1: specific60000002, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst60000070: {kind: FunctionDecl, arg0: function60000002, arg1: inst_block_empty, type: type(symbolic_constant60000027)} +// CHECK:STDOUT: inst60000071: {kind: FunctionType, arg0: function60000002, arg1: specific60000002, type: type(TypeType)} +// CHECK:STDOUT: inst60000072: {kind: StructValue, arg0: inst_block_empty, type: type(symbolic_constant60000027)} +// CHECK:STDOUT: inst60000073: {kind: PatternType, arg0: inst6000006C, type: type(TypeType)} +// CHECK:STDOUT: inst60000074: {kind: ReturnSlotPattern, arg0: inst, type: type(symbolic_constant6000002C)} +// CHECK:STDOUT: inst60000075: {kind: OutParamPattern, arg0: inst60000074, arg1: call_param1, type: type(symbolic_constant6000002C)} +// CHECK:STDOUT: inst60000076: {kind: ValueBindingPattern, arg0: entity_name6000000E, type: type(symbolic_constant6000002C)} +// CHECK:STDOUT: inst60000077: {kind: ValueParamPattern, arg0: inst60000076, arg1: call_param0, type: type(symbolic_constant6000002C)} +// CHECK:STDOUT: inst60000078: {kind: InitForm, arg0: inst6000006C, arg1: call_param1, type: type(inst(FormType))} +// CHECK:STDOUT: inst60000079: {kind: ImportRefLoaded, arg0: import_ir_inst1A, arg1: entity_name, type: type(TypeType)} +// CHECK:STDOUT: inst6000007A: {kind: ImportRefLoaded, arg0: import_ir_inst1B, arg1: entity_name, type: type(inst6000004F)} +// CHECK:STDOUT: inst6000007B: {kind: SymbolicBinding, arg0: entity_name60000001, arg1: inst, type: type(inst6000004F)} +// CHECK:STDOUT: inst6000007C: {kind: SymbolicBindingType, arg0: entity_name60000001, arg1: inst6000007B, type: type(TypeType)} +// CHECK:STDOUT: inst6000007D: {kind: ConstType, arg0: inst6000007C, type: type(TypeType)} +// CHECK:STDOUT: inst6000007E: {kind: PatternType, arg0: inst6000007D, type: type(TypeType)} +// CHECK:STDOUT: inst6000007F: {kind: InitForm, arg0: inst6000007D, arg1: call_param1, type: type(inst(FormType))} +// CHECK:STDOUT: inst60000080: {kind: LookupImplWitness, arg0: inst6000006A, arg1: specific_interface60000000, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst60000081: {kind: FunctionTypeWithSelfType, arg0: inst60000058, arg1: inst6000006A, type: type(TypeType)} +// CHECK:STDOUT: inst60000082: {kind: ImplWitnessAccess, arg0: inst60000080, arg1: element0, type: type(symbolic_constant6000003A)} +// CHECK:STDOUT: inst60000083: {kind: SpecificImplFunction, arg0: inst60000082, arg1: specific60000003, type: type(inst(SpecificFunctionType))} +// CHECK:STDOUT: inst60000084: {kind: InitForm, arg0: inst6000006B, arg1: call_param1, type: type(inst(FormType))} +// CHECK:STDOUT: inst60000085: {kind: PatternType, arg0: inst6000006B, type: type(TypeType)} +// CHECK:STDOUT: inst60000086: {kind: RequireCompleteType, arg0: inst6000006B, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst60000087: {kind: RequireCompleteType, arg0: inst6000006C, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst60000088: {kind: RequireCompleteType, arg0: inst6000007D, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst60000089: {kind: RequireCompleteType, arg0: inst6000007C, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst6000008A: {kind: LookupImplWitness, arg0: inst6000007B, arg1: specific_interface60000000, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst6000008B: {kind: FunctionTypeWithSelfType, arg0: inst60000058, arg1: inst6000007B, type: type(TypeType)} +// CHECK:STDOUT: inst6000008C: {kind: ImplWitnessAccess, arg0: inst6000008A, arg1: element0, type: type(symbolic_constant6000004A)} +// CHECK:STDOUT: inst6000008D: {kind: SpecificImplFunction, arg0: inst6000008C, arg1: specific60000005, type: type(inst(SpecificFunctionType))} +// CHECK:STDOUT: inst6000008E: {kind: PatternType, arg0: inst6000004F, type: type(TypeType)} +// CHECK:STDOUT: inst6000008F: {kind: SymbolicBindingPattern, arg0: entity_name60000014, type: type(inst6000008E)} +// CHECK:STDOUT: inst60000090: {kind: ImportRefLoaded, arg0: import_ir_inst28, arg1: entity_name, type: type(TypeType)} +// CHECK:STDOUT: inst60000091: {kind: ImportRefLoaded, arg0: import_ir_inst29, arg1: entity_name, type: type(TypeType)} +// CHECK:STDOUT: inst60000092: {kind: ImportRefLoaded, arg0: import_ir_inst2A, arg1: entity_name, type: type(inst6000004F)} +// CHECK:STDOUT: inst60000093: {kind: SymbolicBinding, arg0: entity_name60000001, arg1: inst, type: type(inst6000004F)} +// CHECK:STDOUT: inst60000094: {kind: SymbolicBindingType, arg0: entity_name60000001, arg1: inst60000093, type: type(TypeType)} +// CHECK:STDOUT: inst60000095: {kind: ConstType, arg0: inst60000094, type: type(TypeType)} +// CHECK:STDOUT: inst60000096: {kind: ImplWitness, arg0: inst6000006E, arg1: specific60000006, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst60000097: {kind: FunctionType, arg0: function60000002, arg1: specific60000006, type: type(TypeType)} +// CHECK:STDOUT: inst60000098: {kind: StructValue, arg0: inst_block_empty, type: type(symbolic_constant60000055)} +// CHECK:STDOUT: inst60000099: {kind: ImportRefUnloaded, arg0: import_ir_inst31, arg1: entity_name} +// CHECK:STDOUT: inst6000009A: {kind: ImplDecl, arg0: impl60000001, arg1: inst_block_empty} +// CHECK:STDOUT: inst6000009B: {kind: ImportRefLoaded, arg0: import_ir_inst33, arg1: entity_name, type: type(TypeType)} +// CHECK:STDOUT: inst6000009C: {kind: ImportRefLoaded, arg0: import_ir_inst34, arg1: entity_name, type: type(TypeType)} +// CHECK:STDOUT: inst6000009D: {kind: ImportRefUnloaded, arg0: import_ir_inst35, arg1: entity_name} +// CHECK:STDOUT: inst6000009E: {kind: ImplDecl, arg0: impl60000002, arg1: inst_block_empty} +// CHECK:STDOUT: inst6000009F: {kind: ImportRefLoaded, arg0: import_ir_inst37, arg1: entity_name, type: type(TypeType)} +// CHECK:STDOUT: inst600000A0: {kind: ImportRefLoaded, arg0: import_ir_inst38, arg1: entity_name, type: type(TypeType)} +// CHECK:STDOUT: inst600000A1: {kind: ImportRefUnloaded, arg0: import_ir_inst39, arg1: entity_name} +// CHECK:STDOUT: inst600000A2: {kind: ImplDecl, arg0: impl60000003, arg1: inst_block_empty} +// CHECK:STDOUT: inst600000A3: {kind: ImportRefLoaded, arg0: import_ir_inst3B, arg1: entity_name, type: type(TypeType)} +// CHECK:STDOUT: inst600000A4: {kind: ImportRefLoaded, arg0: import_ir_inst3C, arg1: entity_name, type: type(TypeType)} +// CHECK:STDOUT: inst600000A5: {kind: ImportRefUnloaded, arg0: import_ir_inst3D, arg1: entity_name} +// CHECK:STDOUT: inst600000A6: {kind: ImplDecl, arg0: impl60000004, arg1: inst_block_empty} +// CHECK:STDOUT: inst600000A7: {kind: ImportRefLoaded, arg0: import_ir_inst3F, arg1: entity_name, type: type(TypeType)} +// CHECK:STDOUT: inst600000A8: {kind: ImportRefLoaded, arg0: import_ir_inst40, arg1: entity_name, type: type(TypeType)} +// CHECK:STDOUT: inst600000A9: {kind: ImportRefLoaded, arg0: import_ir_inst41, arg1: entity_name, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst600000AA: {kind: ImplDecl, arg0: impl60000005, arg1: inst_block_empty} +// CHECK:STDOUT: inst600000AB: {kind: ImportRefUnloaded, arg0: import_ir_inst43, arg1: entity_name} +// CHECK:STDOUT: inst600000AC: {kind: ImplWitnessTable, arg0: inst_block60000032, arg1: impl60000005} +// CHECK:STDOUT: inst600000AD: {kind: ImplWitness, arg0: inst600000AC, arg1: specific60000007, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst600000AE: {kind: SymbolicBindingPattern, arg0: entity_name60000018, type: type(inst60000018)} +// CHECK:STDOUT: inst600000AF: {kind: ImportRefLoaded, arg0: import_ir_inst46, arg1: entity_name, type: type(TypeType)} +// CHECK:STDOUT: inst600000B0: {kind: ImportRefLoaded, arg0: import_ir_inst47, arg1: entity_name, type: type(TypeType)} +// CHECK:STDOUT: inst600000B1: {kind: ImportRefLoaded, arg0: import_ir_inst48, arg1: entity_name, type: type(TypeType)} +// CHECK:STDOUT: inst600000B2: {kind: SymbolicBinding, arg0: entity_name60000001, arg1: inst, type: type(TypeType)} +// CHECK:STDOUT: inst600000B3: {kind: PointerType, arg0: inst600000B2, type: type(TypeType)} +// CHECK:STDOUT: inst600000B4: {kind: ImplWitness, arg0: inst600000AC, arg1: specific60000008, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst600000B5: {kind: FunctionDecl, arg0: function60000003, arg1: inst_block_empty, type: type(symbolic_constant60000061)} +// CHECK:STDOUT: inst600000B6: {kind: FunctionType, arg0: function60000003, arg1: specific60000007, type: type(TypeType)} +// CHECK:STDOUT: inst600000B7: {kind: StructValue, arg0: inst_block_empty, type: type(symbolic_constant60000061)} +// CHECK:STDOUT: inst600000B8: {kind: ReturnSlotPattern, arg0: inst, type: type(symbolic_constant60000065)} +// CHECK:STDOUT: inst600000B9: {kind: OutParamPattern, arg0: inst600000B8, arg1: call_param1, type: type(symbolic_constant60000065)} +// CHECK:STDOUT: inst600000BA: {kind: ValueBindingPattern, arg0: entity_name60000019, type: type(symbolic_constant60000065)} +// CHECK:STDOUT: inst600000BB: {kind: ValueParamPattern, arg0: inst600000BA, arg1: call_param0, type: type(symbolic_constant60000065)} +// CHECK:STDOUT: inst600000BC: {kind: InitForm, arg0: inst6000001C, arg1: call_param1, type: type(inst(FormType))} +// CHECK:STDOUT: inst600000BD: {kind: ImportRefLoaded, arg0: import_ir_inst51, arg1: entity_name, type: type(TypeType)} +// CHECK:STDOUT: inst600000BE: {kind: ImportRefLoaded, arg0: import_ir_inst52, arg1: entity_name, type: type(TypeType)} +// CHECK:STDOUT: inst600000BF: {kind: SymbolicBinding, arg0: entity_name60000001, arg1: inst, type: type(TypeType)} +// CHECK:STDOUT: inst600000C0: {kind: PointerType, arg0: inst600000BF, type: type(TypeType)} +// CHECK:STDOUT: inst600000C1: {kind: PatternType, arg0: inst600000C0, type: type(TypeType)} +// CHECK:STDOUT: inst600000C2: {kind: InitForm, arg0: inst600000C0, arg1: call_param1, type: type(inst(FormType))} +// CHECK:STDOUT: inst600000C3: {kind: FunctionType, arg0: function60000003, arg1: specific60000008, type: type(TypeType)} +// CHECK:STDOUT: inst600000C4: {kind: StructValue, arg0: inst_block_empty, type: type(symbolic_constant60000070)} +// CHECK:STDOUT: inst600000C5: {kind: RequireCompleteType, arg0: inst600000B3, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst600000C6: {kind: ImportRefUnloaded, arg0: import_ir_inst5A, arg1: entity_name} +// CHECK:STDOUT: inst600000C7: {kind: ImplDecl, arg0: impl60000006, arg1: inst_block_empty} +// CHECK:STDOUT: inst600000C8: {kind: ImportRefLoaded, arg0: import_ir_inst5C, arg1: entity_name, type: type(TypeType)} +// CHECK:STDOUT: inst600000C9: {kind: ImportRefLoaded, arg0: import_ir_inst5D, arg1: entity_name, type: type(TypeType)} +// CHECK:STDOUT: inst600000CA: {kind: ImportRefUnloaded, arg0: import_ir_inst5E, arg1: entity_name} +// CHECK:STDOUT: inst600000CB: {kind: ImplDecl, arg0: impl60000007, arg1: inst_block_empty} +// CHECK:STDOUT: inst600000CC: {kind: ImportRefLoaded, arg0: import_ir_inst60, arg1: entity_name, type: type(TypeType)} +// CHECK:STDOUT: inst600000CD: {kind: ImportRefLoaded, arg0: import_ir_inst61, arg1: entity_name, type: type(TypeType)} +// CHECK:STDOUT: inst600000CE: {kind: ImportRefUnloaded, arg0: import_ir_inst62, arg1: entity_name} +// CHECK:STDOUT: inst600000CF: {kind: ImplDecl, arg0: impl60000008, arg1: inst_block_empty} +// CHECK:STDOUT: inst600000D0: {kind: SymbolicBinding, arg0: entity_name6000001B, arg1: inst, type: type(inst6000004F)} +// CHECK:STDOUT: inst600000D1: {kind: SymbolicBindingType, arg0: entity_name6000001B, arg1: inst600000D0, type: type(TypeType)} +// CHECK:STDOUT: inst600000D2: {kind: TupleType, arg0: inst_block6000003F, type: type(TypeType)} +// CHECK:STDOUT: inst600000D3: {kind: ImportRefUnloaded, arg0: import_ir_inst64, arg1: entity_name} +// CHECK:STDOUT: inst600000D4: {kind: ImplWitnessTable, arg0: inst_block60000040, arg1: impl60000008} +// CHECK:STDOUT: inst600000D5: {kind: ImplWitness, arg0: inst600000D4, arg1: specific6000000A, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst600000D6: {kind: FunctionDecl, arg0: function60000004, arg1: inst_block_empty, type: type(symbolic_constant60000079)} +// CHECK:STDOUT: inst600000D7: {kind: FunctionType, arg0: function60000004, arg1: specific6000000A, type: type(TypeType)} +// CHECK:STDOUT: inst600000D8: {kind: StructValue, arg0: inst_block_empty, type: type(symbolic_constant60000079)} +// CHECK:STDOUT: inst600000D9: {kind: TupleType, arg0: inst_block60000042, type: type(TypeType)} +// CHECK:STDOUT: inst600000DA: {kind: TupleValue, arg0: inst_block60000041, type: type(inst600000D9)} +// CHECK:STDOUT: inst600000DB: {kind: PatternType, arg0: inst600000D2, type: type(TypeType)} +// CHECK:STDOUT: inst600000DC: {kind: ReturnSlotPattern, arg0: inst, type: type(symbolic_constant6000007F)} +// CHECK:STDOUT: inst600000DD: {kind: OutParamPattern, arg0: inst600000DC, arg1: call_param1, type: type(symbolic_constant6000007F)} +// CHECK:STDOUT: inst600000DE: {kind: ValueBindingPattern, arg0: entity_name6000001D, type: type(symbolic_constant6000007F)} +// CHECK:STDOUT: inst600000DF: {kind: ValueParamPattern, arg0: inst600000DE, arg1: call_param0, type: type(symbolic_constant6000007F)} +// CHECK:STDOUT: inst600000E0: {kind: InitForm, arg0: inst600000D2, arg1: call_param1, type: type(inst(FormType))} +// CHECK:STDOUT: inst600000E1: {kind: ImportRefLoaded, arg0: import_ir_inst6B, arg1: entity_name, type: type(TypeType)} +// CHECK:STDOUT: inst600000E2: {kind: ImportRefLoaded, arg0: import_ir_inst6C, arg1: entity_name, type: type(inst6000004F)} +// CHECK:STDOUT: inst600000E3: {kind: ImportRefLoaded, arg0: import_ir_inst6D, arg1: entity_name, type: type(inst6000004F)} +// CHECK:STDOUT: inst600000E4: {kind: SymbolicBinding, arg0: entity_name60000001, arg1: inst, type: type(inst6000004F)} +// CHECK:STDOUT: inst600000E5: {kind: SymbolicBindingType, arg0: entity_name60000001, arg1: inst600000E4, type: type(TypeType)} +// CHECK:STDOUT: inst600000E6: {kind: SymbolicBinding, arg0: entity_name6000001B, arg1: inst, type: type(inst6000004F)} +// CHECK:STDOUT: inst600000E7: {kind: SymbolicBindingType, arg0: entity_name6000001B, arg1: inst600000E6, type: type(TypeType)} +// CHECK:STDOUT: inst600000E8: {kind: TupleType, arg0: inst_block60000048, type: type(TypeType)} +// CHECK:STDOUT: inst600000E9: {kind: PatternType, arg0: inst600000E8, type: type(TypeType)} +// CHECK:STDOUT: inst600000EA: {kind: InitForm, arg0: inst600000E8, arg1: call_param1, type: type(inst(FormType))} +// CHECK:STDOUT: inst600000EB: {kind: LookupImplWitness, arg0: inst600000D0, arg1: specific_interface60000000, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst600000EC: {kind: FunctionTypeWithSelfType, arg0: inst60000058, arg1: inst600000D0, type: type(TypeType)} +// CHECK:STDOUT: inst600000ED: {kind: ImplWitnessAccess, arg0: inst600000EB, arg1: element0, type: type(symbolic_constant60000092)} +// CHECK:STDOUT: inst600000EE: {kind: SpecificImplFunction, arg0: inst600000ED, arg1: specific6000000B, type: type(inst(SpecificFunctionType))} +// CHECK:STDOUT: inst600000EF: {kind: InitForm, arg0: inst600000D1, arg1: call_param1, type: type(inst(FormType))} +// CHECK:STDOUT: inst600000F0: {kind: PatternType, arg0: inst600000D1, type: type(TypeType)} +// CHECK:STDOUT: inst600000F1: {kind: RequireCompleteType, arg0: inst600000D1, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst600000F2: {kind: RequireCompleteType, arg0: inst600000D2, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst600000F3: {kind: RequireCompleteType, arg0: inst600000E8, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst600000F4: {kind: RequireCompleteType, arg0: inst600000E5, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst600000F5: {kind: LookupImplWitness, arg0: inst600000E4, arg1: specific_interface60000000, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst600000F6: {kind: FunctionTypeWithSelfType, arg0: inst60000058, arg1: inst600000E4, type: type(TypeType)} +// CHECK:STDOUT: inst600000F7: {kind: ImplWitnessAccess, arg0: inst600000F5, arg1: element0, type: type(symbolic_constant600000A7)} +// CHECK:STDOUT: inst600000F8: {kind: SpecificImplFunction, arg0: inst600000F7, arg1: specific6000000D, type: type(inst(SpecificFunctionType))} +// CHECK:STDOUT: inst600000F9: {kind: RequireCompleteType, arg0: inst600000E7, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst600000FA: {kind: LookupImplWitness, arg0: inst600000E6, arg1: specific_interface60000000, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst600000FB: {kind: FunctionTypeWithSelfType, arg0: inst60000058, arg1: inst600000E6, type: type(TypeType)} +// CHECK:STDOUT: inst600000FC: {kind: ImplWitnessAccess, arg0: inst600000FA, arg1: element0, type: type(symbolic_constant600000AC)} +// CHECK:STDOUT: inst600000FD: {kind: SpecificImplFunction, arg0: inst600000FC, arg1: specific6000000E, type: type(inst(SpecificFunctionType))} +// CHECK:STDOUT: inst600000FE: {kind: SymbolicBindingPattern, arg0: entity_name60000028, type: type(inst6000008E)} +// CHECK:STDOUT: inst600000FF: {kind: SymbolicBindingPattern, arg0: entity_name60000029, type: type(inst6000008E)} +// CHECK:STDOUT: inst60000100: {kind: ImportRefLoaded, arg0: import_ir_inst82, arg1: entity_name, type: type(TypeType)} +// CHECK:STDOUT: inst60000101: {kind: ImportRefLoaded, arg0: import_ir_inst83, arg1: entity_name, type: type(TypeType)} +// CHECK:STDOUT: inst60000102: {kind: ImportRefLoaded, arg0: import_ir_inst84, arg1: entity_name, type: type(inst6000004F)} +// CHECK:STDOUT: inst60000103: {kind: ImportRefLoaded, arg0: import_ir_inst85, arg1: entity_name, type: type(inst6000004F)} +// CHECK:STDOUT: inst60000104: {kind: SymbolicBinding, arg0: entity_name60000001, arg1: inst, type: type(inst6000004F)} +// CHECK:STDOUT: inst60000105: {kind: SymbolicBinding, arg0: entity_name6000001B, arg1: inst, type: type(inst6000004F)} +// CHECK:STDOUT: inst60000106: {kind: TupleValue, arg0: inst_block60000052, type: type(inst600000D9)} +// CHECK:STDOUT: inst60000107: {kind: SymbolicBindingType, arg0: entity_name60000001, arg1: inst60000104, type: type(TypeType)} +// CHECK:STDOUT: inst60000108: {kind: SymbolicBindingType, arg0: entity_name6000001B, arg1: inst60000105, type: type(TypeType)} +// CHECK:STDOUT: inst60000109: {kind: TupleType, arg0: inst_block60000053, type: type(TypeType)} +// CHECK:STDOUT: inst6000010A: {kind: ImplWitness, arg0: inst600000D4, arg1: specific6000000F, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst6000010B: {kind: FunctionType, arg0: function60000004, arg1: specific6000000F, type: type(TypeType)} +// CHECK:STDOUT: inst6000010C: {kind: StructValue, arg0: inst_block_empty, type: type(symbolic_constant600000BD)} +// CHECK:STDOUT: inst6000010D: {kind: ImportRefUnloaded, arg0: import_ir_inst8F, arg1: entity_name} +// CHECK:STDOUT: inst6000010E: {kind: ImplDecl, arg0: impl60000009, arg1: inst_block_empty} +// CHECK:STDOUT: inst6000010F: {kind: SymbolicBinding, arg0: entity_name6000002A, arg1: inst, type: type(inst6000004F)} +// CHECK:STDOUT: inst60000110: {kind: SymbolicBindingType, arg0: entity_name6000002A, arg1: inst6000010F, type: type(TypeType)} +// CHECK:STDOUT: inst60000111: {kind: TupleType, arg0: inst_block60000058, type: type(TypeType)} +// CHECK:STDOUT: inst60000112: {kind: ImportRefUnloaded, arg0: import_ir_inst91, arg1: entity_name} +// CHECK:STDOUT: inst60000113: {kind: ImplWitnessTable, arg0: inst_block60000059, arg1: impl60000009} +// CHECK:STDOUT: inst60000114: {kind: ImplWitness, arg0: inst60000113, arg1: specific60000010, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst60000115: {kind: FunctionDecl, arg0: function60000005, arg1: inst_block_empty, type: type(symbolic_constant600000C5)} +// CHECK:STDOUT: inst60000116: {kind: FunctionType, arg0: function60000005, arg1: specific60000010, type: type(TypeType)} +// CHECK:STDOUT: inst60000117: {kind: StructValue, arg0: inst_block_empty, type: type(symbolic_constant600000C5)} +// CHECK:STDOUT: inst60000118: {kind: TupleType, arg0: inst_block6000005B, type: type(TypeType)} +// CHECK:STDOUT: inst60000119: {kind: TupleValue, arg0: inst_block6000005A, type: type(inst60000118)} +// CHECK:STDOUT: inst6000011A: {kind: PatternType, arg0: inst60000111, type: type(TypeType)} +// CHECK:STDOUT: inst6000011B: {kind: ReturnSlotPattern, arg0: inst, type: type(symbolic_constant600000CB)} +// CHECK:STDOUT: inst6000011C: {kind: OutParamPattern, arg0: inst6000011B, arg1: call_param1, type: type(symbolic_constant600000CB)} +// CHECK:STDOUT: inst6000011D: {kind: ValueBindingPattern, arg0: entity_name6000002C, type: type(symbolic_constant600000CB)} +// CHECK:STDOUT: inst6000011E: {kind: ValueParamPattern, arg0: inst6000011D, arg1: call_param0, type: type(symbolic_constant600000CB)} +// CHECK:STDOUT: inst6000011F: {kind: InitForm, arg0: inst60000111, arg1: call_param1, type: type(inst(FormType))} +// CHECK:STDOUT: inst60000120: {kind: ImportRefLoaded, arg0: import_ir_inst98, arg1: entity_name, type: type(TypeType)} +// CHECK:STDOUT: inst60000121: {kind: ImportRefLoaded, arg0: import_ir_inst99, arg1: entity_name, type: type(inst6000004F)} +// CHECK:STDOUT: inst60000122: {kind: ImportRefLoaded, arg0: import_ir_inst9A, arg1: entity_name, type: type(inst6000004F)} +// CHECK:STDOUT: inst60000123: {kind: ImportRefLoaded, arg0: import_ir_inst9B, arg1: entity_name, type: type(inst6000004F)} +// CHECK:STDOUT: inst60000124: {kind: SymbolicBinding, arg0: entity_name60000001, arg1: inst, type: type(inst6000004F)} +// CHECK:STDOUT: inst60000125: {kind: SymbolicBindingType, arg0: entity_name60000001, arg1: inst60000124, type: type(TypeType)} +// CHECK:STDOUT: inst60000126: {kind: SymbolicBinding, arg0: entity_name6000001B, arg1: inst, type: type(inst6000004F)} +// CHECK:STDOUT: inst60000127: {kind: SymbolicBindingType, arg0: entity_name6000001B, arg1: inst60000126, type: type(TypeType)} +// CHECK:STDOUT: inst60000128: {kind: SymbolicBinding, arg0: entity_name6000002A, arg1: inst, type: type(inst6000004F)} +// CHECK:STDOUT: inst60000129: {kind: SymbolicBindingType, arg0: entity_name6000002A, arg1: inst60000128, type: type(TypeType)} +// CHECK:STDOUT: inst6000012A: {kind: TupleType, arg0: inst_block60000061, type: type(TypeType)} +// CHECK:STDOUT: inst6000012B: {kind: PatternType, arg0: inst6000012A, type: type(TypeType)} +// CHECK:STDOUT: inst6000012C: {kind: InitForm, arg0: inst6000012A, arg1: call_param1, type: type(inst(FormType))} +// CHECK:STDOUT: inst6000012D: {kind: LookupImplWitness, arg0: inst6000010F, arg1: specific_interface60000000, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst6000012E: {kind: FunctionTypeWithSelfType, arg0: inst60000058, arg1: inst6000010F, type: type(TypeType)} +// CHECK:STDOUT: inst6000012F: {kind: ImplWitnessAccess, arg0: inst6000012D, arg1: element0, type: type(symbolic_constant600000E3)} +// CHECK:STDOUT: inst60000130: {kind: SpecificImplFunction, arg0: inst6000012F, arg1: specific60000011, type: type(inst(SpecificFunctionType))} +// CHECK:STDOUT: inst60000131: {kind: InitForm, arg0: inst60000110, arg1: call_param1, type: type(inst(FormType))} +// CHECK:STDOUT: inst60000132: {kind: PatternType, arg0: inst60000110, type: type(TypeType)} +// CHECK:STDOUT: inst60000133: {kind: RequireCompleteType, arg0: inst60000110, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst60000134: {kind: RequireCompleteType, arg0: inst60000111, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst60000135: {kind: RequireCompleteType, arg0: inst6000012A, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst60000136: {kind: RequireCompleteType, arg0: inst60000125, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst60000137: {kind: LookupImplWitness, arg0: inst60000124, arg1: specific_interface60000000, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst60000138: {kind: FunctionTypeWithSelfType, arg0: inst60000058, arg1: inst60000124, type: type(TypeType)} +// CHECK:STDOUT: inst60000139: {kind: ImplWitnessAccess, arg0: inst60000137, arg1: element0, type: type(symbolic_constant600000FD)} +// CHECK:STDOUT: inst6000013A: {kind: SpecificImplFunction, arg0: inst60000139, arg1: specific60000013, type: type(inst(SpecificFunctionType))} +// CHECK:STDOUT: inst6000013B: {kind: RequireCompleteType, arg0: inst60000127, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst6000013C: {kind: LookupImplWitness, arg0: inst60000126, arg1: specific_interface60000000, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst6000013D: {kind: FunctionTypeWithSelfType, arg0: inst60000058, arg1: inst60000126, type: type(TypeType)} +// CHECK:STDOUT: inst6000013E: {kind: ImplWitnessAccess, arg0: inst6000013C, arg1: element0, type: type(symbolic_constant60000102)} +// CHECK:STDOUT: inst6000013F: {kind: SpecificImplFunction, arg0: inst6000013E, arg1: specific60000014, type: type(inst(SpecificFunctionType))} +// CHECK:STDOUT: inst60000140: {kind: RequireCompleteType, arg0: inst60000129, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst60000141: {kind: LookupImplWitness, arg0: inst60000128, arg1: specific_interface60000000, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst60000142: {kind: FunctionTypeWithSelfType, arg0: inst60000058, arg1: inst60000128, type: type(TypeType)} +// CHECK:STDOUT: inst60000143: {kind: ImplWitnessAccess, arg0: inst60000141, arg1: element0, type: type(symbolic_constant60000107)} +// CHECK:STDOUT: inst60000144: {kind: SpecificImplFunction, arg0: inst60000143, arg1: specific60000015, type: type(inst(SpecificFunctionType))} +// CHECK:STDOUT: inst60000145: {kind: SymbolicBindingPattern, arg0: entity_name6000003C, type: type(inst6000008E)} +// CHECK:STDOUT: inst60000146: {kind: SymbolicBindingPattern, arg0: entity_name6000003D, type: type(inst6000008E)} +// CHECK:STDOUT: inst60000147: {kind: SymbolicBindingPattern, arg0: entity_name6000003E, type: type(inst6000008E)} +// CHECK:STDOUT: inst60000148: {kind: ImportRefLoaded, arg0: import_ir_instB8, arg1: entity_name, type: type(TypeType)} +// CHECK:STDOUT: inst60000149: {kind: ImportRefLoaded, arg0: import_ir_instB9, arg1: entity_name, type: type(TypeType)} +// CHECK:STDOUT: inst6000014A: {kind: ImportRefLoaded, arg0: import_ir_instBA, arg1: entity_name, type: type(inst6000004F)} +// CHECK:STDOUT: inst6000014B: {kind: ImportRefLoaded, arg0: import_ir_instBB, arg1: entity_name, type: type(inst6000004F)} +// CHECK:STDOUT: inst6000014C: {kind: ImportRefLoaded, arg0: import_ir_instBC, arg1: entity_name, type: type(inst6000004F)} +// CHECK:STDOUT: inst6000014D: {kind: SymbolicBinding, arg0: entity_name60000001, arg1: inst, type: type(inst6000004F)} +// CHECK:STDOUT: inst6000014E: {kind: SymbolicBinding, arg0: entity_name6000001B, arg1: inst, type: type(inst6000004F)} +// CHECK:STDOUT: inst6000014F: {kind: SymbolicBinding, arg0: entity_name6000002A, arg1: inst, type: type(inst6000004F)} +// CHECK:STDOUT: inst60000150: {kind: TupleValue, arg0: inst_block6000006C, type: type(inst60000118)} +// CHECK:STDOUT: inst60000151: {kind: SymbolicBindingType, arg0: entity_name60000001, arg1: inst6000014D, type: type(TypeType)} +// CHECK:STDOUT: inst60000152: {kind: SymbolicBindingType, arg0: entity_name6000001B, arg1: inst6000014E, type: type(TypeType)} +// CHECK:STDOUT: inst60000153: {kind: SymbolicBindingType, arg0: entity_name6000002A, arg1: inst6000014F, type: type(TypeType)} +// CHECK:STDOUT: inst60000154: {kind: TupleType, arg0: inst_block6000006D, type: type(TypeType)} +// CHECK:STDOUT: inst60000155: {kind: ImplWitness, arg0: inst60000113, arg1: specific60000016, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst60000156: {kind: FunctionType, arg0: function60000005, arg1: specific60000016, type: type(TypeType)} +// CHECK:STDOUT: inst60000157: {kind: StructValue, arg0: inst_block_empty, type: type(symbolic_constant6000011C)} +// CHECK:STDOUT: inst60000158: {kind: RequireSpecificDefinition, arg0: specific60000007, type: type(inst(RequireSpecificDefinitionType))} +// CHECK:STDOUT: inst60000159: {kind: RequireSpecificDefinition, arg0: specific60000007, type: type(inst(RequireSpecificDefinitionType))} +// CHECK:STDOUT: inst6000015A: {kind: RequireSpecificDefinition, arg0: specific60000017, type: type(inst(RequireSpecificDefinitionType))} +// CHECK:STDOUT: inst6000015B: {kind: LookupImplWitness, arg0: inst6000001C, arg1: specific_interface60000000, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst6000015C: {kind: LookupImplWitness, arg0: inst6000001D, arg1: specific_interface60000000, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst6000015D: {kind: FacetValue, arg0: inst6000001C, arg1: inst_block60000074, type: type(inst6000004F)} +// CHECK:STDOUT: inst6000015E: {kind: FunctionTypeWithSelfType, arg0: inst60000058, arg1: inst6000015D, type: type(TypeType)} +// CHECK:STDOUT: inst6000015F: {kind: ImplWitnessAccess, arg0: inst6000015B, arg1: element0, type: type(symbolic_constant60000127)} +// CHECK:STDOUT: inst60000160: {kind: ImplWitnessAccess, arg0: inst6000015B, arg1: element0, type: type(symbolic_constant60000124)} +// CHECK:STDOUT: inst60000161: {kind: FacetValue, arg0: inst6000001D, arg1: inst_block60000075, type: type(inst6000004F)} +// CHECK:STDOUT: inst60000162: {kind: FunctionTypeWithSelfType, arg0: inst60000058, arg1: inst60000161, type: type(TypeType)} +// CHECK:STDOUT: inst60000163: {kind: ImplWitnessAccess, arg0: inst6000015C, arg1: element0, type: type(symbolic_constant60000127)} +// CHECK:STDOUT: inst60000164: {kind: BoundMethod, arg0: inst60000047, arg1: inst6000015F, type: type(inst(BoundMethodType))} +// CHECK:STDOUT: inst60000165: {kind: SpecificImplFunction, arg0: inst6000015F, arg1: specific60000018, type: type(inst(SpecificFunctionType))} +// CHECK:STDOUT: inst60000166: {kind: SpecificImplFunction, arg0: inst60000160, arg1: specific60000018, type: type(inst(SpecificFunctionType))} +// CHECK:STDOUT: inst60000167: {kind: SpecificImplFunction, arg0: inst60000163, arg1: specific60000019, type: type(inst(SpecificFunctionType))} +// CHECK:STDOUT: inst60000168: {kind: BoundMethod, arg0: inst60000047, arg1: inst60000165, type: type(inst(BoundMethodType))} +// CHECK:STDOUT: inst60000169: {kind: RequireCompleteType, arg0: inst6000001C, type: type(inst(WitnessType))} +// CHECK:STDOUT: inst6000016A: {kind: Call, arg0: inst60000168, arg1: inst_block60000079, type: type(symbolic_constant4)} +// CHECK:STDOUT: inst6000016B: {kind: InitializeFrom, arg0: inst6000016A, arg1: inst6000004B, type: type(symbolic_constant4)} +// CHECK:STDOUT: inst6000016C: {kind: TupleAccess, arg0: inst6000003B, arg1: element1, type: type(inst60000025)} +// CHECK:STDOUT: inst6000016D: {kind: TupleInit, arg0: inst_block_empty, arg1: inst6000016C, type: type(inst60000025)} +// CHECK:STDOUT: inst6000016E: {kind: Converted, arg0: inst60000048, arg1: inst6000016D, type: type(inst60000025)} +// CHECK:STDOUT: inst6000016F: {kind: TupleInit, arg0: inst_block6000007A, arg1: inst6000003B, type: type(symbolic_constantA)} +// CHECK:STDOUT: inst60000170: {kind: Converted, arg0: inst60000049, arg1: inst6000016F, type: type(symbolic_constantA)} +// CHECK:STDOUT: inst60000171: {kind: ReturnExpr, arg0: inst60000170, arg1: inst6000003B} // CHECK:STDOUT: constant_values: // CHECK:STDOUT: values: -// CHECK:STDOUT: instE: concrete_constant(instE) -// CHECK:STDOUT: inst60000010: concrete_constant(inst60000010) +// CHECK:STDOUT: instF: concrete_constant(instF) // CHECK:STDOUT: inst60000011: concrete_constant(inst60000011) -// CHECK:STDOUT: inst60000012: symbolic_constant0 +// CHECK:STDOUT: inst60000012: concrete_constant(inst60000012) // CHECK:STDOUT: inst60000013: symbolic_constant0 -// CHECK:STDOUT: inst60000014: symbolic_constant2 -// CHECK:STDOUT: inst60000015: symbolic_constant1 -// CHECK:STDOUT: inst60000016: symbolic_constant2 -// CHECK:STDOUT: inst60000017: concrete_constant(inst60000017) +// CHECK:STDOUT: inst60000014: symbolic_constant0 +// CHECK:STDOUT: inst60000015: symbolic_constant2 +// CHECK:STDOUT: inst60000016: symbolic_constant1 +// CHECK:STDOUT: inst60000017: symbolic_constant2 // CHECK:STDOUT: inst60000018: concrete_constant(inst60000018) -// CHECK:STDOUT: inst60000019: symbolic_constant2 -// CHECK:STDOUT: inst6000001A: symbolic_constant4 -// CHECK:STDOUT: inst6000001B: symbolic_constant3 -// CHECK:STDOUT: inst6000001C: symbolic_constant4 -// CHECK:STDOUT: inst6000001E: symbolic_constant5 -// CHECK:STDOUT: inst6000001F: concrete_constant(inst6000001F) -// CHECK:STDOUT: inst60000020: symbolic_constant6 -// CHECK:STDOUT: inst60000021: concrete_constant(inst60000021) -// CHECK:STDOUT: inst60000022: symbolic_constant2 -// CHECK:STDOUT: inst60000023: symbolic_constant4 -// CHECK:STDOUT: inst60000024: concrete_constant(inst60000024) -// CHECK:STDOUT: inst60000025: concrete_constant(inst60000026) -// CHECK:STDOUT: inst60000026: concrete_constant(inst60000026) +// CHECK:STDOUT: inst60000019: concrete_constant(inst60000019) +// CHECK:STDOUT: inst6000001A: symbolic_constant2 +// CHECK:STDOUT: inst6000001B: symbolic_constant4 +// CHECK:STDOUT: inst6000001C: symbolic_constant3 +// CHECK:STDOUT: inst6000001D: symbolic_constant4 +// CHECK:STDOUT: inst6000001F: symbolic_constant5 +// CHECK:STDOUT: inst60000020: concrete_constant(inst60000020) +// CHECK:STDOUT: inst60000021: symbolic_constant6 +// CHECK:STDOUT: inst60000022: concrete_constant(inst60000022) +// CHECK:STDOUT: inst60000023: symbolic_constant2 +// CHECK:STDOUT: inst60000024: symbolic_constant4 +// CHECK:STDOUT: inst60000025: concrete_constant(inst60000025) +// CHECK:STDOUT: inst60000026: concrete_constant(inst60000027) // CHECK:STDOUT: inst60000027: concrete_constant(inst60000027) -// CHECK:STDOUT: inst60000028: symbolic_constant8 -// CHECK:STDOUT: inst60000029: symbolic_constant7 -// CHECK:STDOUT: inst6000002A: symbolic_constant8 -// CHECK:STDOUT: inst6000002B: concrete_constant(inst6000002B) -// CHECK:STDOUT: inst6000002C: concrete_constant(inst60000024) -// CHECK:STDOUT: inst6000002D: symbolic_constant9 -// CHECK:STDOUT: inst6000002E: symbolic_constantA +// CHECK:STDOUT: inst60000028: concrete_constant(inst60000028) +// CHECK:STDOUT: inst60000029: symbolic_constant8 +// CHECK:STDOUT: inst6000002A: symbolic_constant7 +// CHECK:STDOUT: inst6000002B: symbolic_constant8 +// CHECK:STDOUT: inst6000002C: concrete_constant(inst6000002C) +// CHECK:STDOUT: inst6000002D: concrete_constant(inst60000025) +// CHECK:STDOUT: inst6000002E: symbolic_constant9 // CHECK:STDOUT: inst6000002F: symbolic_constantA -// CHECK:STDOUT: inst60000030: symbolic_constantB -// CHECK:STDOUT: inst60000031: concrete_constant(inst60000031) -// CHECK:STDOUT: inst60000032: symbolic_constantC -// CHECK:STDOUT: inst60000033: concrete_constant(inst60000033) -// CHECK:STDOUT: inst60000035: symbolic_constant4 -// CHECK:STDOUT: inst60000038: concrete_constant(inst6000003A) -// CHECK:STDOUT: inst60000039: concrete_constant(inst60000039) -// CHECK:STDOUT: inst6000003A: concrete_constant(inst6000003A) -// CHECK:STDOUT: inst6000003B: symbolic_constantD -// CHECK:STDOUT: inst6000003C: symbolic_constant6000000F -// CHECK:STDOUT: inst6000003D: symbolic_constantE -// CHECK:STDOUT: inst6000003E: symbolic_constant6000000F -// CHECK:STDOUT: inst6000003F: symbolic_constant60000011 -// CHECK:STDOUT: inst60000040: symbolic_constant60000010 -// CHECK:STDOUT: inst60000041: symbolic_constant60000011 -// CHECK:STDOUT: inst60000043: concrete_constant(inst60000026) -// CHECK:STDOUT: inst60000045: symbolic_constant6000000F -// CHECK:STDOUT: inst60000047: symbolic_constant60000011 -// CHECK:STDOUT: inst60000048: concrete_constant(inst6000004A) -// CHECK:STDOUT: inst60000049: concrete_constant(inst6000004A) -// CHECK:STDOUT: inst6000004A: concrete_constant(inst6000004A) -// CHECK:STDOUT: inst6000004B: symbolic_constant60000012 -// CHECK:STDOUT: inst6000004C: constant -// CHECK:STDOUT: inst6000004D: concrete_constant(inst60000051) -// CHECK:STDOUT: inst6000004E: constant +// CHECK:STDOUT: inst60000030: symbolic_constantA +// CHECK:STDOUT: inst60000031: symbolic_constantC +// CHECK:STDOUT: inst60000032: symbolic_constantB +// CHECK:STDOUT: inst60000033: symbolic_constantC +// CHECK:STDOUT: inst60000034: symbolic_constantD +// CHECK:STDOUT: inst60000035: concrete_constant(inst60000035) +// CHECK:STDOUT: inst60000036: symbolic_constantE +// CHECK:STDOUT: inst60000037: concrete_constant(inst60000037) +// CHECK:STDOUT: inst60000039: symbolic_constant4 +// CHECK:STDOUT: inst6000003C: concrete_constant(inst6000003E) +// CHECK:STDOUT: inst6000003D: concrete_constant(inst6000003D) +// CHECK:STDOUT: inst6000003E: concrete_constant(inst6000003E) +// CHECK:STDOUT: inst6000003F: symbolic_constantF +// CHECK:STDOUT: inst60000040: symbolic_constant60000011 +// CHECK:STDOUT: inst60000041: symbolic_constant60000010 +// CHECK:STDOUT: inst60000042: symbolic_constant60000011 +// CHECK:STDOUT: inst60000043: symbolic_constant60000013 +// CHECK:STDOUT: inst60000044: symbolic_constant60000012 +// CHECK:STDOUT: inst60000045: symbolic_constant60000013 +// CHECK:STDOUT: inst60000046: symbolic_constant60000011 +// CHECK:STDOUT: inst60000048: concrete_constant(inst60000027) +// CHECK:STDOUT: inst6000004A: symbolic_constant60000011 +// CHECK:STDOUT: inst6000004C: symbolic_constant60000013 +// CHECK:STDOUT: inst6000004D: concrete_constant(inst6000004F) +// CHECK:STDOUT: inst6000004E: concrete_constant(inst6000004F) // CHECK:STDOUT: inst6000004F: concrete_constant(inst6000004F) -// CHECK:STDOUT: inst60000050: concrete_constant(inst60000054) -// CHECK:STDOUT: inst60000051: concrete_constant(inst60000051) -// CHECK:STDOUT: inst60000052: concrete_constant(inst60000054) -// CHECK:STDOUT: inst60000053: concrete_constant(inst60000053) +// CHECK:STDOUT: inst60000050: symbolic_constant60000014 +// CHECK:STDOUT: inst60000051: constant +// CHECK:STDOUT: inst60000052: concrete_constant(inst60000056) +// CHECK:STDOUT: inst60000053: constant // CHECK:STDOUT: inst60000054: concrete_constant(inst60000054) -// CHECK:STDOUT: inst60000055: symbolic_constant60000013 -// CHECK:STDOUT: inst60000056: symbolic_constant60000014 -// CHECK:STDOUT: inst60000057: concrete_constant(inst60000057) +// CHECK:STDOUT: inst60000055: concrete_constant(inst60000059) +// CHECK:STDOUT: inst60000056: concrete_constant(inst60000056) +// CHECK:STDOUT: inst60000057: concrete_constant(inst60000059) // CHECK:STDOUT: inst60000058: concrete_constant(inst60000058) // CHECK:STDOUT: inst60000059: concrete_constant(inst60000059) -// CHECK:STDOUT: inst6000005A: concrete_constant(inst6000005A) -// CHECK:STDOUT: inst6000005B: symbolic_constant60000018 -// CHECK:STDOUT: inst6000005C: symbolic_constant60000012 -// CHECK:STDOUT: inst6000005D: symbolic_constant60000019 -// CHECK:STDOUT: inst6000005E: symbolic_constant6000001A -// CHECK:STDOUT: inst6000005F: symbolic_constant6000001B -// CHECK:STDOUT: inst60000060: symbolic_constant6000010E -// CHECK:STDOUT: inst60000061: constant -// CHECK:STDOUT: inst60000062: concrete_constant(inst60000062) -// CHECK:STDOUT: inst60000063: symbolic_constant6000001C -// CHECK:STDOUT: inst60000064: symbolic_constant6000001D -// CHECK:STDOUT: inst60000065: symbolic_constant6000001E -// CHECK:STDOUT: inst60000066: constant -// CHECK:STDOUT: inst60000067: concrete_constant(inst60000067) -// CHECK:STDOUT: inst60000068: symbolic_constant60000020 -// CHECK:STDOUT: inst60000069: symbolic_constant60000024 -// CHECK:STDOUT: inst6000006A: symbolic_constant60000022 -// CHECK:STDOUT: inst6000006B: symbolic_constant60000023 -// CHECK:STDOUT: inst6000006C: symbolic_constant60000026 -// CHECK:STDOUT: inst6000006D: concrete_constant(inst6000006D) +// CHECK:STDOUT: inst6000005A: symbolic_constant60000015 +// CHECK:STDOUT: inst6000005B: symbolic_constant60000016 +// CHECK:STDOUT: inst6000005C: concrete_constant(inst6000005C) +// CHECK:STDOUT: inst6000005D: concrete_constant(inst6000005D) +// CHECK:STDOUT: inst6000005E: concrete_constant(inst6000005E) +// CHECK:STDOUT: inst6000005F: concrete_constant(inst6000005F) +// CHECK:STDOUT: inst60000060: symbolic_constant60000018 +// CHECK:STDOUT: inst60000061: symbolic_constant6000001C +// CHECK:STDOUT: inst60000062: symbolic_constant60000014 +// CHECK:STDOUT: inst60000063: symbolic_constant6000001D +// CHECK:STDOUT: inst60000064: symbolic_constant6000001E +// CHECK:STDOUT: inst60000065: symbolic_constant6000001F +// CHECK:STDOUT: inst60000066: symbolic_constant60000020 +// CHECK:STDOUT: inst60000067: symbolic_constant60000122 +// CHECK:STDOUT: inst60000068: constant +// CHECK:STDOUT: inst60000069: concrete_constant(inst60000069) +// CHECK:STDOUT: inst6000006A: symbolic_constant60000021 +// CHECK:STDOUT: inst6000006B: symbolic_constant60000022 +// CHECK:STDOUT: inst6000006C: symbolic_constant60000023 +// CHECK:STDOUT: inst6000006D: constant // CHECK:STDOUT: inst6000006E: concrete_constant(inst6000006E) -// CHECK:STDOUT: inst6000006F: concrete_constant(inst6000006F) -// CHECK:STDOUT: inst60000070: concrete_constant(inst60000070) -// CHECK:STDOUT: inst60000071: symbolic_constant6000002C -// CHECK:STDOUT: inst60000072: symbolic_constant6000002B -// CHECK:STDOUT: inst60000073: symbolic_constant6000002D -// CHECK:STDOUT: inst60000074: symbolic_constant6000002E -// CHECK:STDOUT: inst60000075: symbolic_constant6000002F -// CHECK:STDOUT: inst60000076: symbolic_constant60000030 -// CHECK:STDOUT: inst60000077: symbolic_constant60000031 -// CHECK:STDOUT: inst60000078: symbolic_constant60000032 +// CHECK:STDOUT: inst6000006F: symbolic_constant60000025 +// CHECK:STDOUT: inst60000070: symbolic_constant60000029 +// CHECK:STDOUT: inst60000071: symbolic_constant60000027 +// CHECK:STDOUT: inst60000072: symbolic_constant60000028 +// CHECK:STDOUT: inst60000073: symbolic_constant6000002B +// CHECK:STDOUT: inst60000074: concrete_constant(inst60000074) +// CHECK:STDOUT: inst60000075: concrete_constant(inst60000075) +// CHECK:STDOUT: inst60000076: concrete_constant(inst60000076) +// CHECK:STDOUT: inst60000077: concrete_constant(inst60000077) +// CHECK:STDOUT: inst60000078: symbolic_constant6000002D // CHECK:STDOUT: inst60000079: symbolic_constant60000033 -// CHECK:STDOUT: inst6000007A: symbolic_constant60000034 -// CHECK:STDOUT: inst6000007B: symbolic_constant60000036 -// CHECK:STDOUT: inst6000007C: symbolic_constant6000003A -// CHECK:STDOUT: inst6000007D: symbolic_constant6000003C -// CHECK:STDOUT: inst6000007E: symbolic_constant6000003E -// CHECK:STDOUT: inst6000007F: symbolic_constant6000003F -// CHECK:STDOUT: inst60000080: symbolic_constant60000040 -// CHECK:STDOUT: inst60000081: symbolic_constant60000041 -// CHECK:STDOUT: inst60000082: symbolic_constant60000042 -// CHECK:STDOUT: inst60000083: symbolic_constant60000043 -// CHECK:STDOUT: inst60000084: concrete_constant(inst60000084) -// CHECK:STDOUT: inst60000085: concrete_constant(inst60000085) -// CHECK:STDOUT: inst60000086: symbolic_constant6000001F -// CHECK:STDOUT: inst60000087: concrete_constant(inst6000004A) -// CHECK:STDOUT: inst60000088: symbolic_constant6000002B -// CHECK:STDOUT: inst60000089: symbolic_constant60000047 -// CHECK:STDOUT: inst6000008A: symbolic_constant60000048 -// CHECK:STDOUT: inst6000008B: symbolic_constant60000049 -// CHECK:STDOUT: inst6000008C: symbolic_constant6000004A +// CHECK:STDOUT: inst6000007A: symbolic_constant60000032 +// CHECK:STDOUT: inst6000007B: symbolic_constant60000034 +// CHECK:STDOUT: inst6000007C: symbolic_constant60000035 +// CHECK:STDOUT: inst6000007D: symbolic_constant60000036 +// CHECK:STDOUT: inst6000007E: symbolic_constant60000037 +// CHECK:STDOUT: inst6000007F: symbolic_constant60000038 +// CHECK:STDOUT: inst60000080: symbolic_constant60000039 +// CHECK:STDOUT: inst60000081: symbolic_constant6000003A +// CHECK:STDOUT: inst60000082: symbolic_constant6000003B +// CHECK:STDOUT: inst60000083: symbolic_constant6000003C +// CHECK:STDOUT: inst60000084: symbolic_constant6000003E +// CHECK:STDOUT: inst60000085: symbolic_constant6000003F +// CHECK:STDOUT: inst60000086: symbolic_constant60000043 +// CHECK:STDOUT: inst60000087: symbolic_constant60000045 +// CHECK:STDOUT: inst60000088: symbolic_constant60000047 +// CHECK:STDOUT: inst60000089: symbolic_constant60000048 +// CHECK:STDOUT: inst6000008A: symbolic_constant60000049 +// CHECK:STDOUT: inst6000008B: symbolic_constant6000004A +// CHECK:STDOUT: inst6000008C: symbolic_constant6000004B // CHECK:STDOUT: inst6000008D: symbolic_constant6000004C -// CHECK:STDOUT: inst6000008E: symbolic_constant6000004D -// CHECK:STDOUT: inst6000008F: constant -// CHECK:STDOUT: inst60000090: concrete_constant(inst60000090) -// CHECK:STDOUT: inst60000091: concrete_constant(inst(BoolType)) -// CHECK:STDOUT: inst60000092: concrete_constant(inst6000004A) -// CHECK:STDOUT: inst60000093: constant -// CHECK:STDOUT: inst60000094: concrete_constant(inst60000094) -// CHECK:STDOUT: inst60000095: concrete_constant(inst(CharLiteralType)) -// CHECK:STDOUT: inst60000096: concrete_constant(inst6000004A) -// CHECK:STDOUT: inst60000097: constant -// CHECK:STDOUT: inst60000098: concrete_constant(inst60000098) -// CHECK:STDOUT: inst60000099: concrete_constant(inst(FloatLiteralType)) -// CHECK:STDOUT: inst6000009A: concrete_constant(inst6000004A) -// CHECK:STDOUT: inst6000009B: constant -// CHECK:STDOUT: inst6000009C: concrete_constant(inst6000009C) -// CHECK:STDOUT: inst6000009D: concrete_constant(inst(IntLiteralType)) -// CHECK:STDOUT: inst6000009E: concrete_constant(inst6000004A) -// CHECK:STDOUT: inst6000009F: symbolic_constant6000010A -// CHECK:STDOUT: inst600000A0: concrete_constant(inst600000A0) +// CHECK:STDOUT: inst6000008E: concrete_constant(inst6000008E) +// CHECK:STDOUT: inst6000008F: concrete_constant(inst6000008F) +// CHECK:STDOUT: inst60000090: symbolic_constant60000024 +// CHECK:STDOUT: inst60000091: concrete_constant(inst6000004F) +// CHECK:STDOUT: inst60000092: symbolic_constant60000032 +// CHECK:STDOUT: inst60000093: symbolic_constant60000050 +// CHECK:STDOUT: inst60000094: symbolic_constant60000051 +// CHECK:STDOUT: inst60000095: symbolic_constant60000052 +// CHECK:STDOUT: inst60000096: symbolic_constant60000053 +// CHECK:STDOUT: inst60000097: symbolic_constant60000055 +// CHECK:STDOUT: inst60000098: symbolic_constant60000056 +// CHECK:STDOUT: inst60000099: constant +// CHECK:STDOUT: inst6000009A: concrete_constant(inst6000009A) +// CHECK:STDOUT: inst6000009B: concrete_constant(inst(BoolType)) +// CHECK:STDOUT: inst6000009C: concrete_constant(inst6000004F) +// CHECK:STDOUT: inst6000009D: constant +// CHECK:STDOUT: inst6000009E: concrete_constant(inst6000009E) +// CHECK:STDOUT: inst6000009F: concrete_constant(inst(CharLiteralType)) +// CHECK:STDOUT: inst600000A0: concrete_constant(inst6000004F) // CHECK:STDOUT: inst600000A1: constant // CHECK:STDOUT: inst600000A2: concrete_constant(inst600000A2) -// CHECK:STDOUT: inst600000A3: symbolic_constant6000004F -// CHECK:STDOUT: inst600000A4: concrete_constant(inst600000A4) -// CHECK:STDOUT: inst600000A5: symbolic_constant6000004E -// CHECK:STDOUT: inst600000A6: concrete_constant(inst6000004A) -// CHECK:STDOUT: inst600000A7: symbolic_constant60000053 -// CHECK:STDOUT: inst600000A8: symbolic_constant60000054 -// CHECK:STDOUT: inst600000A9: symbolic_constant60000055 -// CHECK:STDOUT: inst600000AA: symbolic_constant60000056 -// CHECK:STDOUT: inst600000AB: symbolic_constant6000005A -// CHECK:STDOUT: inst600000AC: symbolic_constant60000058 -// CHECK:STDOUT: inst600000AD: symbolic_constant60000059 +// CHECK:STDOUT: inst600000A3: concrete_constant(inst(FloatLiteralType)) +// CHECK:STDOUT: inst600000A4: concrete_constant(inst6000004F) +// CHECK:STDOUT: inst600000A5: constant +// CHECK:STDOUT: inst600000A6: concrete_constant(inst600000A6) +// CHECK:STDOUT: inst600000A7: concrete_constant(inst(IntLiteralType)) +// CHECK:STDOUT: inst600000A8: concrete_constant(inst6000004F) +// CHECK:STDOUT: inst600000A9: symbolic_constant6000011E +// CHECK:STDOUT: inst600000AA: concrete_constant(inst600000AA) +// CHECK:STDOUT: inst600000AB: constant +// CHECK:STDOUT: inst600000AC: concrete_constant(inst600000AC) +// CHECK:STDOUT: inst600000AD: symbolic_constant60000058 // CHECK:STDOUT: inst600000AE: concrete_constant(inst600000AE) -// CHECK:STDOUT: inst600000AF: concrete_constant(inst600000AF) -// CHECK:STDOUT: inst600000B0: concrete_constant(inst600000B0) -// CHECK:STDOUT: inst600000B1: concrete_constant(inst600000B1) -// CHECK:STDOUT: inst600000B2: symbolic_constant6000005F -// CHECK:STDOUT: inst600000B3: symbolic_constant60000053 -// CHECK:STDOUT: inst600000B4: symbolic_constant60000060 -// CHECK:STDOUT: inst600000B5: symbolic_constant60000061 -// CHECK:STDOUT: inst600000B6: symbolic_constant60000062 -// CHECK:STDOUT: inst600000B7: symbolic_constant60000064 -// CHECK:STDOUT: inst600000B8: symbolic_constant60000065 -// CHECK:STDOUT: inst600000B9: symbolic_constant60000066 -// CHECK:STDOUT: inst600000BA: constant +// CHECK:STDOUT: inst600000AF: symbolic_constant60000057 +// CHECK:STDOUT: inst600000B0: concrete_constant(inst6000004F) +// CHECK:STDOUT: inst600000B1: symbolic_constant6000005C +// CHECK:STDOUT: inst600000B2: symbolic_constant6000005D +// CHECK:STDOUT: inst600000B3: symbolic_constant6000005E +// CHECK:STDOUT: inst600000B4: symbolic_constant6000005F +// CHECK:STDOUT: inst600000B5: symbolic_constant60000063 +// CHECK:STDOUT: inst600000B6: symbolic_constant60000061 +// CHECK:STDOUT: inst600000B7: symbolic_constant60000062 +// CHECK:STDOUT: inst600000B8: concrete_constant(inst600000B8) +// CHECK:STDOUT: inst600000B9: concrete_constant(inst600000B9) +// CHECK:STDOUT: inst600000BA: concrete_constant(inst600000BA) // CHECK:STDOUT: inst600000BB: concrete_constant(inst600000BB) -// CHECK:STDOUT: inst600000BC: concrete_constant(inst(TypeType)) -// CHECK:STDOUT: inst600000BD: concrete_constant(inst6000004A) -// CHECK:STDOUT: inst600000BE: constant -// CHECK:STDOUT: inst600000BF: concrete_constant(inst600000BF) -// CHECK:STDOUT: inst600000C0: concrete_constant(inst60000024) -// CHECK:STDOUT: inst600000C1: concrete_constant(inst6000004A) -// CHECK:STDOUT: inst600000C2: constant -// CHECK:STDOUT: inst600000C3: concrete_constant(inst600000C3) -// CHECK:STDOUT: inst600000C4: symbolic_constant60000067 -// CHECK:STDOUT: inst600000C5: symbolic_constant60000068 -// CHECK:STDOUT: inst600000C6: symbolic_constant60000069 -// CHECK:STDOUT: inst600000C7: constant -// CHECK:STDOUT: inst600000C8: concrete_constant(inst600000C8) -// CHECK:STDOUT: inst600000C9: symbolic_constant6000006B -// CHECK:STDOUT: inst600000CA: symbolic_constant6000006F -// CHECK:STDOUT: inst600000CB: symbolic_constant6000006D -// CHECK:STDOUT: inst600000CC: symbolic_constant6000006E -// CHECK:STDOUT: inst600000CD: concrete_constant(inst600000CD) -// CHECK:STDOUT: inst600000CE: symbolic_constant60000071 -// CHECK:STDOUT: inst600000CF: symbolic_constant60000072 -// CHECK:STDOUT: inst600000D0: concrete_constant(inst600000D0) -// CHECK:STDOUT: inst600000D1: concrete_constant(inst600000D1) -// CHECK:STDOUT: inst600000D2: concrete_constant(inst600000D2) -// CHECK:STDOUT: inst600000D3: concrete_constant(inst600000D3) -// CHECK:STDOUT: inst600000D4: symbolic_constant6000007B -// CHECK:STDOUT: inst600000D5: symbolic_constant6000007A -// CHECK:STDOUT: inst600000D6: symbolic_constant60000079 -// CHECK:STDOUT: inst600000D7: symbolic_constant6000007C -// CHECK:STDOUT: inst600000D8: symbolic_constant6000007D -// CHECK:STDOUT: inst600000D9: symbolic_constant6000007E -// CHECK:STDOUT: inst600000DA: symbolic_constant6000007F -// CHECK:STDOUT: inst600000DB: symbolic_constant60000080 -// CHECK:STDOUT: inst600000DC: symbolic_constant60000081 -// CHECK:STDOUT: inst600000DD: symbolic_constant60000082 -// CHECK:STDOUT: inst600000DE: symbolic_constant60000083 -// CHECK:STDOUT: inst600000DF: symbolic_constant60000084 -// CHECK:STDOUT: inst600000E0: symbolic_constant60000085 -// CHECK:STDOUT: inst600000E1: symbolic_constant60000087 -// CHECK:STDOUT: inst600000E2: symbolic_constant6000008B -// CHECK:STDOUT: inst600000E3: symbolic_constant60000092 -// CHECK:STDOUT: inst600000E4: symbolic_constant60000094 -// CHECK:STDOUT: inst600000E5: symbolic_constant60000095 -// CHECK:STDOUT: inst600000E6: symbolic_constant60000096 -// CHECK:STDOUT: inst600000E7: symbolic_constant60000097 -// CHECK:STDOUT: inst600000E8: symbolic_constant60000098 -// CHECK:STDOUT: inst600000E9: symbolic_constant60000099 -// CHECK:STDOUT: inst600000EA: symbolic_constant6000009A -// CHECK:STDOUT: inst600000EB: symbolic_constant6000009B -// CHECK:STDOUT: inst600000EC: symbolic_constant6000009C -// CHECK:STDOUT: inst600000ED: symbolic_constant6000009D -// CHECK:STDOUT: inst600000EE: symbolic_constant6000009E -// CHECK:STDOUT: inst600000EF: concrete_constant(inst600000EF) -// CHECK:STDOUT: inst600000F0: concrete_constant(inst600000F0) -// CHECK:STDOUT: inst600000F1: symbolic_constant6000006A -// CHECK:STDOUT: inst600000F2: concrete_constant(inst6000004A) -// CHECK:STDOUT: inst600000F3: symbolic_constant6000007A -// CHECK:STDOUT: inst600000F4: symbolic_constant60000079 -// CHECK:STDOUT: inst600000F5: symbolic_constant600000A5 -// CHECK:STDOUT: inst600000F6: symbolic_constant600000A6 -// CHECK:STDOUT: inst600000F7: symbolic_constant600000A7 -// CHECK:STDOUT: inst600000F8: symbolic_constant600000A8 -// CHECK:STDOUT: inst600000F9: symbolic_constant600000A9 -// CHECK:STDOUT: inst600000FA: symbolic_constant600000AA -// CHECK:STDOUT: inst600000FB: symbolic_constant600000AB +// CHECK:STDOUT: inst600000BC: symbolic_constant60000066 +// CHECK:STDOUT: inst600000BD: symbolic_constant6000006A +// CHECK:STDOUT: inst600000BE: symbolic_constant6000005C +// CHECK:STDOUT: inst600000BF: symbolic_constant6000006B +// CHECK:STDOUT: inst600000C0: symbolic_constant6000006C +// CHECK:STDOUT: inst600000C1: symbolic_constant6000006D +// CHECK:STDOUT: inst600000C2: symbolic_constant6000006E +// CHECK:STDOUT: inst600000C3: symbolic_constant60000070 +// CHECK:STDOUT: inst600000C4: symbolic_constant60000071 +// CHECK:STDOUT: inst600000C5: symbolic_constant60000072 +// CHECK:STDOUT: inst600000C6: constant +// CHECK:STDOUT: inst600000C7: concrete_constant(inst600000C7) +// CHECK:STDOUT: inst600000C8: concrete_constant(inst(TypeType)) +// CHECK:STDOUT: inst600000C9: concrete_constant(inst6000004F) +// CHECK:STDOUT: inst600000CA: constant +// CHECK:STDOUT: inst600000CB: concrete_constant(inst600000CB) +// CHECK:STDOUT: inst600000CC: concrete_constant(inst60000025) +// CHECK:STDOUT: inst600000CD: concrete_constant(inst6000004F) +// CHECK:STDOUT: inst600000CE: constant +// CHECK:STDOUT: inst600000CF: concrete_constant(inst600000CF) +// CHECK:STDOUT: inst600000D0: symbolic_constant60000073 +// CHECK:STDOUT: inst600000D1: symbolic_constant60000074 +// CHECK:STDOUT: inst600000D2: symbolic_constant60000075 +// CHECK:STDOUT: inst600000D3: constant +// CHECK:STDOUT: inst600000D4: concrete_constant(inst600000D4) +// CHECK:STDOUT: inst600000D5: symbolic_constant60000077 +// CHECK:STDOUT: inst600000D6: symbolic_constant6000007B +// CHECK:STDOUT: inst600000D7: symbolic_constant60000079 +// CHECK:STDOUT: inst600000D8: symbolic_constant6000007A +// CHECK:STDOUT: inst600000D9: concrete_constant(inst600000D9) +// CHECK:STDOUT: inst600000DA: symbolic_constant6000007D +// CHECK:STDOUT: inst600000DB: symbolic_constant6000007E +// CHECK:STDOUT: inst600000DC: concrete_constant(inst600000DC) +// CHECK:STDOUT: inst600000DD: concrete_constant(inst600000DD) +// CHECK:STDOUT: inst600000DE: concrete_constant(inst600000DE) +// CHECK:STDOUT: inst600000DF: concrete_constant(inst600000DF) +// CHECK:STDOUT: inst600000E0: symbolic_constant60000080 +// CHECK:STDOUT: inst600000E1: symbolic_constant60000089 +// CHECK:STDOUT: inst600000E2: symbolic_constant60000088 +// CHECK:STDOUT: inst600000E3: symbolic_constant60000087 +// CHECK:STDOUT: inst600000E4: symbolic_constant6000008A +// CHECK:STDOUT: inst600000E5: symbolic_constant6000008B +// CHECK:STDOUT: inst600000E6: symbolic_constant6000008C +// CHECK:STDOUT: inst600000E7: symbolic_constant6000008D +// CHECK:STDOUT: inst600000E8: symbolic_constant6000008E +// CHECK:STDOUT: inst600000E9: symbolic_constant6000008F +// CHECK:STDOUT: inst600000EA: symbolic_constant60000090 +// CHECK:STDOUT: inst600000EB: symbolic_constant60000091 +// CHECK:STDOUT: inst600000EC: symbolic_constant60000092 +// CHECK:STDOUT: inst600000ED: symbolic_constant60000093 +// CHECK:STDOUT: inst600000EE: symbolic_constant60000094 +// CHECK:STDOUT: inst600000EF: symbolic_constant60000096 +// CHECK:STDOUT: inst600000F0: symbolic_constant60000097 +// CHECK:STDOUT: inst600000F1: symbolic_constant6000009B +// CHECK:STDOUT: inst600000F2: symbolic_constant600000A2 +// CHECK:STDOUT: inst600000F3: symbolic_constant600000A4 +// CHECK:STDOUT: inst600000F4: symbolic_constant600000A5 +// CHECK:STDOUT: inst600000F5: symbolic_constant600000A6 +// CHECK:STDOUT: inst600000F6: symbolic_constant600000A7 +// CHECK:STDOUT: inst600000F7: symbolic_constant600000A8 +// CHECK:STDOUT: inst600000F8: symbolic_constant600000A9 +// CHECK:STDOUT: inst600000F9: symbolic_constant600000AA +// CHECK:STDOUT: inst600000FA: symbolic_constant600000AB +// CHECK:STDOUT: inst600000FB: symbolic_constant600000AC // CHECK:STDOUT: inst600000FC: symbolic_constant600000AD // CHECK:STDOUT: inst600000FD: symbolic_constant600000AE -// CHECK:STDOUT: inst600000FE: constant +// CHECK:STDOUT: inst600000FE: concrete_constant(inst600000FE) // CHECK:STDOUT: inst600000FF: concrete_constant(inst600000FF) -// CHECK:STDOUT: inst60000100: symbolic_constant600000AF -// CHECK:STDOUT: inst60000101: symbolic_constant600000B0 -// CHECK:STDOUT: inst60000102: symbolic_constant600000B1 -// CHECK:STDOUT: inst60000103: constant -// CHECK:STDOUT: inst60000104: concrete_constant(inst60000104) -// CHECK:STDOUT: inst60000105: symbolic_constant600000B3 +// CHECK:STDOUT: inst60000100: symbolic_constant60000076 +// CHECK:STDOUT: inst60000101: concrete_constant(inst6000004F) +// CHECK:STDOUT: inst60000102: symbolic_constant60000088 +// CHECK:STDOUT: inst60000103: symbolic_constant60000087 +// CHECK:STDOUT: inst60000104: symbolic_constant600000B5 +// CHECK:STDOUT: inst60000105: symbolic_constant600000B6 // CHECK:STDOUT: inst60000106: symbolic_constant600000B7 -// CHECK:STDOUT: inst60000107: symbolic_constant600000B5 -// CHECK:STDOUT: inst60000108: symbolic_constant600000B6 -// CHECK:STDOUT: inst60000109: concrete_constant(inst60000109) -// CHECK:STDOUT: inst6000010A: symbolic_constant600000B9 -// CHECK:STDOUT: inst6000010B: symbolic_constant600000BA -// CHECK:STDOUT: inst6000010C: concrete_constant(inst6000010C) -// CHECK:STDOUT: inst6000010D: concrete_constant(inst6000010D) +// CHECK:STDOUT: inst60000107: symbolic_constant600000B8 +// CHECK:STDOUT: inst60000108: symbolic_constant600000B9 +// CHECK:STDOUT: inst60000109: symbolic_constant600000BA +// CHECK:STDOUT: inst6000010A: symbolic_constant600000BB +// CHECK:STDOUT: inst6000010B: symbolic_constant600000BD +// CHECK:STDOUT: inst6000010C: symbolic_constant600000BE +// CHECK:STDOUT: inst6000010D: constant // CHECK:STDOUT: inst6000010E: concrete_constant(inst6000010E) -// CHECK:STDOUT: inst6000010F: concrete_constant(inst6000010F) -// CHECK:STDOUT: inst60000110: symbolic_constant600000C6 -// CHECK:STDOUT: inst60000111: symbolic_constant600000C5 -// CHECK:STDOUT: inst60000112: symbolic_constant600000C4 -// CHECK:STDOUT: inst60000113: symbolic_constant600000C3 -// CHECK:STDOUT: inst60000114: symbolic_constant600000C7 -// CHECK:STDOUT: inst60000115: symbolic_constant600000C8 -// CHECK:STDOUT: inst60000116: symbolic_constant600000C9 -// CHECK:STDOUT: inst60000117: symbolic_constant600000CA -// CHECK:STDOUT: inst60000118: symbolic_constant600000CB -// CHECK:STDOUT: inst60000119: symbolic_constant600000CC -// CHECK:STDOUT: inst6000011A: symbolic_constant600000CD -// CHECK:STDOUT: inst6000011B: symbolic_constant600000CE -// CHECK:STDOUT: inst6000011C: symbolic_constant600000CF -// CHECK:STDOUT: inst6000011D: symbolic_constant600000D0 -// CHECK:STDOUT: inst6000011E: symbolic_constant600000D1 -// CHECK:STDOUT: inst6000011F: symbolic_constant600000D2 -// CHECK:STDOUT: inst60000120: symbolic_constant600000D4 -// CHECK:STDOUT: inst60000121: symbolic_constant600000D8 -// CHECK:STDOUT: inst60000122: symbolic_constant600000E4 -// CHECK:STDOUT: inst60000123: symbolic_constant600000E6 -// CHECK:STDOUT: inst60000124: symbolic_constant600000E7 -// CHECK:STDOUT: inst60000125: symbolic_constant600000E8 -// CHECK:STDOUT: inst60000126: symbolic_constant600000E9 -// CHECK:STDOUT: inst60000127: symbolic_constant600000EA -// CHECK:STDOUT: inst60000128: symbolic_constant600000EB -// CHECK:STDOUT: inst60000129: symbolic_constant600000EC -// CHECK:STDOUT: inst6000012A: symbolic_constant600000ED -// CHECK:STDOUT: inst6000012B: symbolic_constant600000EE -// CHECK:STDOUT: inst6000012C: symbolic_constant600000EF -// CHECK:STDOUT: inst6000012D: symbolic_constant600000F0 -// CHECK:STDOUT: inst6000012E: symbolic_constant600000F1 -// CHECK:STDOUT: inst6000012F: symbolic_constant600000F2 -// CHECK:STDOUT: inst60000130: symbolic_constant600000F3 -// CHECK:STDOUT: inst60000131: symbolic_constant600000F4 -// CHECK:STDOUT: inst60000132: symbolic_constant600000F5 -// CHECK:STDOUT: inst60000133: concrete_constant(inst60000133) -// CHECK:STDOUT: inst60000134: concrete_constant(inst60000134) -// CHECK:STDOUT: inst60000135: concrete_constant(inst60000135) -// CHECK:STDOUT: inst60000136: symbolic_constant600000B2 -// CHECK:STDOUT: inst60000137: concrete_constant(inst6000004A) -// CHECK:STDOUT: inst60000138: symbolic_constant600000C5 -// CHECK:STDOUT: inst60000139: symbolic_constant600000C4 -// CHECK:STDOUT: inst6000013A: symbolic_constant600000C3 -// CHECK:STDOUT: inst6000013B: symbolic_constant600000FE -// CHECK:STDOUT: inst6000013C: symbolic_constant600000FF -// CHECK:STDOUT: inst6000013D: symbolic_constant60000100 -// CHECK:STDOUT: inst6000013E: symbolic_constant60000101 -// CHECK:STDOUT: inst6000013F: symbolic_constant60000102 -// CHECK:STDOUT: inst60000140: symbolic_constant60000103 -// CHECK:STDOUT: inst60000141: symbolic_constant60000104 -// CHECK:STDOUT: inst60000142: symbolic_constant60000105 -// CHECK:STDOUT: inst60000143: symbolic_constant60000106 -// CHECK:STDOUT: inst60000144: symbolic_constant60000108 -// CHECK:STDOUT: inst60000145: symbolic_constant60000109 -// CHECK:STDOUT: inst60000146: symbolic_constant6000010C -// CHECK:STDOUT: inst60000147: symbolic_constant6000010B -// CHECK:STDOUT: inst60000148: symbolic_constant6000010C -// CHECK:STDOUT: inst60000149: symbolic_constant6000010D -// CHECK:STDOUT: inst6000014A: symbolic_constant6000010E -// CHECK:STDOUT: inst6000014B: symbolic_constant6000010F -// CHECK:STDOUT: inst6000014C: symbolic_constant60000110 -// CHECK:STDOUT: inst6000014D: symbolic_constant60000114 -// CHECK:STDOUT: inst6000014E: symbolic_constant60000111 -// CHECK:STDOUT: inst6000014F: symbolic_constant60000112 -// CHECK:STDOUT: inst60000150: symbolic_constant60000113 -// CHECK:STDOUT: inst60000151: symbolic_constant60000114 -// CHECK:STDOUT: inst60000153: symbolic_constant60000116 -// CHECK:STDOUT: inst60000154: symbolic_constant60000115 -// CHECK:STDOUT: inst60000155: symbolic_constant60000116 -// CHECK:STDOUT: inst60000157: symbolic_constant60000011 -// CHECK:STDOUT: inst6000015B: concrete_constant(inst60000026) -// CHECK:STDOUT: inst6000015C: concrete_constant(inst60000026) +// CHECK:STDOUT: inst6000010F: symbolic_constant600000BF +// CHECK:STDOUT: inst60000110: symbolic_constant600000C0 +// CHECK:STDOUT: inst60000111: symbolic_constant600000C1 +// CHECK:STDOUT: inst60000112: constant +// CHECK:STDOUT: inst60000113: concrete_constant(inst60000113) +// CHECK:STDOUT: inst60000114: symbolic_constant600000C3 +// CHECK:STDOUT: inst60000115: symbolic_constant600000C7 +// CHECK:STDOUT: inst60000116: symbolic_constant600000C5 +// CHECK:STDOUT: inst60000117: symbolic_constant600000C6 +// CHECK:STDOUT: inst60000118: concrete_constant(inst60000118) +// CHECK:STDOUT: inst60000119: symbolic_constant600000C9 +// CHECK:STDOUT: inst6000011A: symbolic_constant600000CA +// CHECK:STDOUT: inst6000011B: concrete_constant(inst6000011B) +// CHECK:STDOUT: inst6000011C: concrete_constant(inst6000011C) +// CHECK:STDOUT: inst6000011D: concrete_constant(inst6000011D) +// CHECK:STDOUT: inst6000011E: concrete_constant(inst6000011E) +// CHECK:STDOUT: inst6000011F: symbolic_constant600000CC +// CHECK:STDOUT: inst60000120: symbolic_constant600000D8 +// CHECK:STDOUT: inst60000121: symbolic_constant600000D7 +// CHECK:STDOUT: inst60000122: symbolic_constant600000D6 +// CHECK:STDOUT: inst60000123: symbolic_constant600000D5 +// CHECK:STDOUT: inst60000124: symbolic_constant600000D9 +// CHECK:STDOUT: inst60000125: symbolic_constant600000DA +// CHECK:STDOUT: inst60000126: symbolic_constant600000DB +// CHECK:STDOUT: inst60000127: symbolic_constant600000DC +// CHECK:STDOUT: inst60000128: symbolic_constant600000DD +// CHECK:STDOUT: inst60000129: symbolic_constant600000DE +// CHECK:STDOUT: inst6000012A: symbolic_constant600000DF +// CHECK:STDOUT: inst6000012B: symbolic_constant600000E0 +// CHECK:STDOUT: inst6000012C: symbolic_constant600000E1 +// CHECK:STDOUT: inst6000012D: symbolic_constant600000E2 +// CHECK:STDOUT: inst6000012E: symbolic_constant600000E3 +// CHECK:STDOUT: inst6000012F: symbolic_constant600000E4 +// CHECK:STDOUT: inst60000130: symbolic_constant600000E5 +// CHECK:STDOUT: inst60000131: symbolic_constant600000E7 +// CHECK:STDOUT: inst60000132: symbolic_constant600000E8 +// CHECK:STDOUT: inst60000133: symbolic_constant600000EC +// CHECK:STDOUT: inst60000134: symbolic_constant600000F8 +// CHECK:STDOUT: inst60000135: symbolic_constant600000FA +// CHECK:STDOUT: inst60000136: symbolic_constant600000FB +// CHECK:STDOUT: inst60000137: symbolic_constant600000FC +// CHECK:STDOUT: inst60000138: symbolic_constant600000FD +// CHECK:STDOUT: inst60000139: symbolic_constant600000FE +// CHECK:STDOUT: inst6000013A: symbolic_constant600000FF +// CHECK:STDOUT: inst6000013B: symbolic_constant60000100 +// CHECK:STDOUT: inst6000013C: symbolic_constant60000101 +// CHECK:STDOUT: inst6000013D: symbolic_constant60000102 +// CHECK:STDOUT: inst6000013E: symbolic_constant60000103 +// CHECK:STDOUT: inst6000013F: symbolic_constant60000104 +// CHECK:STDOUT: inst60000140: symbolic_constant60000105 +// CHECK:STDOUT: inst60000141: symbolic_constant60000106 +// CHECK:STDOUT: inst60000142: symbolic_constant60000107 +// CHECK:STDOUT: inst60000143: symbolic_constant60000108 +// CHECK:STDOUT: inst60000144: symbolic_constant60000109 +// CHECK:STDOUT: inst60000145: concrete_constant(inst60000145) +// CHECK:STDOUT: inst60000146: concrete_constant(inst60000146) +// CHECK:STDOUT: inst60000147: concrete_constant(inst60000147) +// CHECK:STDOUT: inst60000148: symbolic_constant600000C2 +// CHECK:STDOUT: inst60000149: concrete_constant(inst6000004F) +// CHECK:STDOUT: inst6000014A: symbolic_constant600000D7 +// CHECK:STDOUT: inst6000014B: symbolic_constant600000D6 +// CHECK:STDOUT: inst6000014C: symbolic_constant600000D5 +// CHECK:STDOUT: inst6000014D: symbolic_constant60000112 +// CHECK:STDOUT: inst6000014E: symbolic_constant60000113 +// CHECK:STDOUT: inst6000014F: symbolic_constant60000114 +// CHECK:STDOUT: inst60000150: symbolic_constant60000115 +// CHECK:STDOUT: inst60000151: symbolic_constant60000116 +// CHECK:STDOUT: inst60000152: symbolic_constant60000117 +// CHECK:STDOUT: inst60000153: symbolic_constant60000118 +// CHECK:STDOUT: inst60000154: symbolic_constant60000119 +// CHECK:STDOUT: inst60000155: symbolic_constant6000011A +// CHECK:STDOUT: inst60000156: symbolic_constant6000011C +// CHECK:STDOUT: inst60000157: symbolic_constant6000011D +// CHECK:STDOUT: inst60000158: symbolic_constant60000120 +// CHECK:STDOUT: inst60000159: symbolic_constant6000011F +// CHECK:STDOUT: inst6000015A: symbolic_constant60000120 +// CHECK:STDOUT: inst6000015B: symbolic_constant60000121 +// CHECK:STDOUT: inst6000015C: symbolic_constant60000122 +// CHECK:STDOUT: inst6000015D: symbolic_constant60000123 +// CHECK:STDOUT: inst6000015E: symbolic_constant60000124 +// CHECK:STDOUT: inst6000015F: symbolic_constant60000128 +// CHECK:STDOUT: inst60000160: symbolic_constant60000125 +// CHECK:STDOUT: inst60000161: symbolic_constant60000126 +// CHECK:STDOUT: inst60000162: symbolic_constant60000127 +// CHECK:STDOUT: inst60000163: symbolic_constant60000128 +// CHECK:STDOUT: inst60000165: symbolic_constant6000012A +// CHECK:STDOUT: inst60000166: symbolic_constant60000129 +// CHECK:STDOUT: inst60000167: symbolic_constant6000012A +// CHECK:STDOUT: inst60000169: symbolic_constant60000013 +// CHECK:STDOUT: inst6000016D: concrete_constant(inst60000027) +// CHECK:STDOUT: inst6000016E: concrete_constant(inst60000027) // CHECK:STDOUT: symbolic_constants: -// CHECK:STDOUT: symbolic_constant0: {inst: inst60000013, generic: generic, index: generic_inst, kind: self} -// CHECK:STDOUT: symbolic_constant1: {inst: inst60000015, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant2: {inst: inst60000015, generic: generic60000000, index: generic_inst_in_decl0, kind: checked} -// CHECK:STDOUT: symbolic_constant3: {inst: inst6000001B, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant4: {inst: inst6000001B, generic: generic60000000, index: generic_inst_in_decl1, kind: checked} -// CHECK:STDOUT: symbolic_constant5: {inst: inst6000001E, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant6: {inst: inst6000001E, generic: generic60000000, index: generic_inst_in_decl2, kind: checked} -// CHECK:STDOUT: symbolic_constant7: {inst: inst60000029, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant8: {inst: inst60000029, generic: generic60000000, index: generic_inst_in_decl3, kind: checked} -// CHECK:STDOUT: symbolic_constant9: {inst: inst6000002D, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constantA: {inst: inst6000002D, generic: generic60000000, index: generic_inst_in_decl4, kind: checked} -// CHECK:STDOUT: symbolic_constantB: {inst: inst60000030, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constantC: {inst: inst60000030, generic: generic60000000, index: generic_inst_in_decl5, kind: checked} -// CHECK:STDOUT: symbolic_constantD: {inst: inst6000003B, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constantE: {inst: inst6000003D, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant6000000F: {inst: inst6000003D, generic: generic60000000, index: generic_inst_in_def0, kind: checked} -// CHECK:STDOUT: symbolic_constant60000010: {inst: inst60000040, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant60000011: {inst: inst60000040, generic: generic60000000, index: generic_inst_in_def1, kind: checked} -// CHECK:STDOUT: symbolic_constant60000012: {inst: inst6000004B, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant60000013: {inst: inst60000055, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant60000014: {inst: inst60000056, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant60000015: {inst: inst60000056, generic: generic60000001, index: generic_inst_in_decl2, kind: checked} -// CHECK:STDOUT: symbolic_constant60000016: {inst: inst60000055, generic: generic60000001, index: generic_inst_in_decl1, kind: checked} -// CHECK:STDOUT: symbolic_constant60000017: {inst: inst6000004B, generic: generic60000001, index: generic_inst_in_decl0, kind: checked} -// CHECK:STDOUT: symbolic_constant60000018: {inst: inst60000055, generic: generic60000001, index: generic_inst_in_decl1, kind: checked} -// CHECK:STDOUT: symbolic_constant60000019: {inst: inst6000004B, generic: generic60000001, index: generic_inst_in_decl0, kind: checked} -// CHECK:STDOUT: symbolic_constant6000001A: {inst: inst60000055, generic: generic60000001, index: generic_inst_in_decl1, kind: checked} -// CHECK:STDOUT: symbolic_constant6000001B: {inst: inst60000056, generic: generic60000001, index: generic_inst_in_decl2, kind: checked} -// CHECK:STDOUT: symbolic_constant6000001C: {inst: inst60000063, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant6000001D: {inst: inst60000064, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant6000001E: {inst: inst60000065, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant6000001F: {inst: inst60000065, generic: generic60000002, index: generic_inst_in_decl2, kind: checked} -// CHECK:STDOUT: symbolic_constant60000020: {inst: inst60000068, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant60000021: {inst: inst60000068, generic: generic60000002, index: generic_inst_in_decl3, kind: checked} -// CHECK:STDOUT: symbolic_constant60000022: {inst: inst6000006A, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant60000023: {inst: inst6000006B, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant60000024: {inst: inst6000006B, generic: generic60000002, index: generic_inst_in_def1, kind: checked} -// CHECK:STDOUT: symbolic_constant60000025: {inst: inst6000006A, generic: generic60000002, index: generic_inst_in_def0, kind: checked} -// CHECK:STDOUT: symbolic_constant60000026: {inst: inst6000006C, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant60000027: {inst: inst6000006C, generic: generic60000003, index: generic_inst_in_decl3, kind: checked} -// CHECK:STDOUT: symbolic_constant60000028: {inst: inst60000065, generic: generic60000003, index: generic_inst_in_decl2, kind: checked} -// CHECK:STDOUT: symbolic_constant60000029: {inst: inst60000064, generic: generic60000003, index: generic_inst_in_decl1, kind: checked} -// CHECK:STDOUT: symbolic_constant6000002A: {inst: inst60000063, generic: generic60000003, index: generic_inst_in_decl0, kind: checked} -// CHECK:STDOUT: symbolic_constant6000002B: {inst: inst60000063, generic: generic60000002, index: generic_inst_in_decl0, kind: checked} -// CHECK:STDOUT: symbolic_constant6000002C: {inst: inst60000065, generic: generic60000003, index: generic_inst_in_decl2, kind: checked} -// CHECK:STDOUT: symbolic_constant6000002D: {inst: inst60000063, generic: generic60000003, index: generic_inst_in_decl0, kind: checked} -// CHECK:STDOUT: symbolic_constant6000002E: {inst: inst60000064, generic: generic60000003, index: generic_inst_in_decl1, kind: checked} -// CHECK:STDOUT: symbolic_constant6000002F: {inst: inst60000065, generic: generic60000003, index: generic_inst_in_decl2, kind: checked} -// CHECK:STDOUT: symbolic_constant60000030: {inst: inst6000006C, generic: generic60000003, index: generic_inst_in_decl3, kind: checked} -// CHECK:STDOUT: symbolic_constant60000031: {inst: inst60000077, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant60000032: {inst: inst60000078, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant60000033: {inst: inst60000079, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant60000034: {inst: inst6000007A, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant60000035: {inst: inst6000007A, generic: generic60000003, index: generic_inst_in_def5, kind: checked} -// CHECK:STDOUT: symbolic_constant60000036: {inst: inst6000007B, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant60000037: {inst: inst60000079, generic: generic60000003, index: generic_inst_in_def4, kind: checked} -// CHECK:STDOUT: symbolic_constant60000038: {inst: inst60000078, generic: generic60000003, index: generic_inst_in_def3, kind: checked} -// CHECK:STDOUT: symbolic_constant60000039: {inst: inst60000077, generic: generic60000003, index: generic_inst_in_def2, kind: checked} -// CHECK:STDOUT: symbolic_constant6000003A: {inst: inst6000007C, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant6000003B: {inst: inst6000007C, generic: generic60000003, index: generic_inst_in_def1, kind: checked} -// CHECK:STDOUT: symbolic_constant6000003C: {inst: inst6000007D, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant6000003D: {inst: inst6000007D, generic: generic60000003, index: generic_inst_in_def0, kind: checked} -// CHECK:STDOUT: symbolic_constant6000003E: {inst: inst6000007D, generic: generic60000003, index: generic_inst_in_def0, kind: checked} -// CHECK:STDOUT: symbolic_constant6000003F: {inst: inst6000007C, generic: generic60000003, index: generic_inst_in_def1, kind: checked} -// CHECK:STDOUT: symbolic_constant60000040: {inst: inst60000077, generic: generic60000003, index: generic_inst_in_def2, kind: checked} -// CHECK:STDOUT: symbolic_constant60000041: {inst: inst60000078, generic: generic60000003, index: generic_inst_in_def3, kind: checked} -// CHECK:STDOUT: symbolic_constant60000042: {inst: inst60000079, generic: generic60000003, index: generic_inst_in_def4, kind: checked} -// CHECK:STDOUT: symbolic_constant60000043: {inst: inst6000007A, generic: generic60000003, index: generic_inst_in_def5, kind: checked} -// CHECK:STDOUT: symbolic_constant60000044: {inst: inst60000065, generic: generic60000002, index: generic_inst_in_decl2, kind: checked} -// CHECK:STDOUT: symbolic_constant60000045: {inst: inst60000064, generic: generic60000002, index: generic_inst_in_decl1, kind: checked} -// CHECK:STDOUT: symbolic_constant60000046: {inst: inst60000063, generic: generic60000002, index: generic_inst_in_decl0, kind: checked} -// CHECK:STDOUT: symbolic_constant60000047: {inst: inst60000063, generic: generic60000002, index: generic_inst_in_decl0, kind: checked} -// CHECK:STDOUT: symbolic_constant60000048: {inst: inst60000064, generic: generic60000002, index: generic_inst_in_decl1, kind: checked} -// CHECK:STDOUT: symbolic_constant60000049: {inst: inst60000065, generic: generic60000002, index: generic_inst_in_decl2, kind: checked} -// CHECK:STDOUT: symbolic_constant6000004A: {inst: inst60000068, generic: generic60000002, index: generic_inst_in_decl3, kind: checked} -// CHECK:STDOUT: symbolic_constant6000004B: {inst: inst6000006B, generic: generic60000002, index: generic_inst_in_def1, kind: checked} -// CHECK:STDOUT: symbolic_constant6000004C: {inst: inst6000006A, generic: generic60000002, index: generic_inst_in_def0, kind: checked} -// CHECK:STDOUT: symbolic_constant6000004D: {inst: inst6000006B, generic: generic60000002, index: generic_inst_in_def1, kind: checked} -// CHECK:STDOUT: symbolic_constant6000004E: {inst: inst6000001B, generic: generic60000004, index: generic_inst_in_decl1, kind: checked} -// CHECK:STDOUT: symbolic_constant6000004F: {inst: inst600000A3, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant60000050: {inst: inst600000A3, generic: generic60000004, index: generic_inst_in_decl2, kind: checked} -// CHECK:STDOUT: symbolic_constant60000051: {inst: inst6000001B, generic: generic60000004, index: generic_inst_in_decl1, kind: checked} -// CHECK:STDOUT: symbolic_constant60000052: {inst: inst60000015, generic: generic60000004, index: generic_inst_in_decl0, kind: checked} -// CHECK:STDOUT: symbolic_constant60000053: {inst: inst60000015, generic: generic60000004, index: generic_inst_in_decl0, kind: checked} -// CHECK:STDOUT: symbolic_constant60000054: {inst: inst60000015, generic: generic60000004, index: generic_inst_in_decl0, kind: checked} -// CHECK:STDOUT: symbolic_constant60000055: {inst: inst6000001B, generic: generic60000004, index: generic_inst_in_decl1, kind: checked} -// CHECK:STDOUT: symbolic_constant60000056: {inst: inst600000A3, generic: generic60000004, index: generic_inst_in_decl2, kind: checked} -// CHECK:STDOUT: symbolic_constant60000057: {inst: inst60000040, generic: generic60000004, index: generic_inst_in_def2, kind: checked} -// CHECK:STDOUT: symbolic_constant60000058: {inst: inst600000AC, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant60000059: {inst: inst600000AD, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant6000005A: {inst: inst600000AD, generic: generic60000004, index: generic_inst_in_def1, kind: checked} -// CHECK:STDOUT: symbolic_constant6000005B: {inst: inst600000AC, generic: generic60000004, index: generic_inst_in_def0, kind: checked} -// CHECK:STDOUT: symbolic_constant6000005C: {inst: inst6000001E, generic: generic60000005, index: generic_inst_in_decl2, kind: checked} -// CHECK:STDOUT: symbolic_constant6000005D: {inst: inst6000001B, generic: generic60000005, index: generic_inst_in_decl1, kind: checked} -// CHECK:STDOUT: symbolic_constant6000005E: {inst: inst60000015, generic: generic60000005, index: generic_inst_in_decl0, kind: checked} -// CHECK:STDOUT: symbolic_constant6000005F: {inst: inst6000001B, generic: generic60000005, index: generic_inst_in_decl1, kind: checked} -// CHECK:STDOUT: symbolic_constant60000060: {inst: inst60000015, generic: generic60000005, index: generic_inst_in_decl0, kind: checked} -// CHECK:STDOUT: symbolic_constant60000061: {inst: inst6000001B, generic: generic60000005, index: generic_inst_in_decl1, kind: checked} -// CHECK:STDOUT: symbolic_constant60000062: {inst: inst6000001E, generic: generic60000005, index: generic_inst_in_decl2, kind: checked} -// CHECK:STDOUT: symbolic_constant60000063: {inst: inst600000AD, generic: generic60000004, index: generic_inst_in_def1, kind: checked} -// CHECK:STDOUT: symbolic_constant60000064: {inst: inst600000AC, generic: generic60000004, index: generic_inst_in_def0, kind: checked} -// CHECK:STDOUT: symbolic_constant60000065: {inst: inst600000AD, generic: generic60000004, index: generic_inst_in_def1, kind: checked} -// CHECK:STDOUT: symbolic_constant60000066: {inst: inst60000040, generic: generic60000004, index: generic_inst_in_def2, kind: checked} -// CHECK:STDOUT: symbolic_constant60000067: {inst: inst600000C4, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant60000068: {inst: inst600000C5, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant60000069: {inst: inst600000C6, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant6000006A: {inst: inst600000C6, generic: generic60000006, index: generic_inst_in_decl5, kind: checked} -// CHECK:STDOUT: symbolic_constant6000006B: {inst: inst600000C9, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant6000006C: {inst: inst600000C9, generic: generic60000006, index: generic_inst_in_decl6, kind: checked} -// CHECK:STDOUT: symbolic_constant6000006D: {inst: inst600000CB, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant6000006E: {inst: inst600000CC, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant6000006F: {inst: inst600000CC, generic: generic60000006, index: generic_inst_in_def1, kind: checked} -// CHECK:STDOUT: symbolic_constant60000070: {inst: inst600000CB, generic: generic60000006, index: generic_inst_in_def0, kind: checked} -// CHECK:STDOUT: symbolic_constant60000071: {inst: inst600000CE, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant60000072: {inst: inst600000CF, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant60000073: {inst: inst600000CF, generic: generic60000007, index: generic_inst_in_decl5, kind: checked} -// CHECK:STDOUT: symbolic_constant60000074: {inst: inst600000C6, generic: generic60000007, index: generic_inst_in_decl4, kind: checked} -// CHECK:STDOUT: symbolic_constant60000075: {inst: inst600000C5, generic: generic60000007, index: generic_inst_in_decl3, kind: checked} -// CHECK:STDOUT: symbolic_constant60000076: {inst: inst600000C4, generic: generic60000007, index: generic_inst_in_decl2, kind: checked} -// CHECK:STDOUT: symbolic_constant60000077: {inst: inst60000064, generic: generic60000007, index: generic_inst_in_decl1, kind: checked} -// CHECK:STDOUT: symbolic_constant60000078: {inst: inst60000063, generic: generic60000007, index: generic_inst_in_decl0, kind: checked} -// CHECK:STDOUT: symbolic_constant60000079: {inst: inst600000C4, generic: generic60000006, index: generic_inst_in_decl1, kind: checked} -// CHECK:STDOUT: symbolic_constant6000007A: {inst: inst60000063, generic: generic60000006, index: generic_inst_in_decl0, kind: checked} -// CHECK:STDOUT: symbolic_constant6000007B: {inst: inst600000C6, generic: generic60000007, index: generic_inst_in_decl4, kind: checked} -// CHECK:STDOUT: symbolic_constant6000007C: {inst: inst60000063, generic: generic60000007, index: generic_inst_in_decl0, kind: checked} -// CHECK:STDOUT: symbolic_constant6000007D: {inst: inst60000064, generic: generic60000007, index: generic_inst_in_decl1, kind: checked} -// CHECK:STDOUT: symbolic_constant6000007E: {inst: inst600000C4, generic: generic60000007, index: generic_inst_in_decl2, kind: checked} -// CHECK:STDOUT: symbolic_constant6000007F: {inst: inst600000C5, generic: generic60000007, index: generic_inst_in_decl3, kind: checked} -// CHECK:STDOUT: symbolic_constant60000080: {inst: inst600000C6, generic: generic60000007, index: generic_inst_in_decl4, kind: checked} -// CHECK:STDOUT: symbolic_constant60000081: {inst: inst600000CF, generic: generic60000007, index: generic_inst_in_decl5, kind: checked} -// CHECK:STDOUT: symbolic_constant60000082: {inst: inst600000DD, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant60000083: {inst: inst600000DE, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant60000084: {inst: inst600000DF, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant60000085: {inst: inst600000E0, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant60000086: {inst: inst600000E0, generic: generic60000007, index: generic_inst_in_def10, kind: checked} -// CHECK:STDOUT: symbolic_constant60000087: {inst: inst600000E1, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant60000088: {inst: inst600000DF, generic: generic60000007, index: generic_inst_in_def9, kind: checked} -// CHECK:STDOUT: symbolic_constant60000089: {inst: inst600000DE, generic: generic60000007, index: generic_inst_in_def8, kind: checked} -// CHECK:STDOUT: symbolic_constant6000008A: {inst: inst600000DD, generic: generic60000007, index: generic_inst_in_def7, kind: checked} -// CHECK:STDOUT: symbolic_constant6000008B: {inst: inst600000E2, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant6000008C: {inst: inst600000E2, generic: generic60000007, index: generic_inst_in_def6, kind: checked} -// CHECK:STDOUT: symbolic_constant6000008D: {inst: inst6000007A, generic: generic60000007, index: generic_inst_in_def5, kind: checked} -// CHECK:STDOUT: symbolic_constant6000008E: {inst: inst60000079, generic: generic60000007, index: generic_inst_in_def4, kind: checked} -// CHECK:STDOUT: symbolic_constant6000008F: {inst: inst60000078, generic: generic60000007, index: generic_inst_in_def3, kind: checked} -// CHECK:STDOUT: symbolic_constant60000090: {inst: inst60000077, generic: generic60000007, index: generic_inst_in_def2, kind: checked} -// CHECK:STDOUT: symbolic_constant60000091: {inst: inst6000007C, generic: generic60000007, index: generic_inst_in_def1, kind: checked} -// CHECK:STDOUT: symbolic_constant60000092: {inst: inst600000E3, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant60000093: {inst: inst600000E3, generic: generic60000007, index: generic_inst_in_def0, kind: checked} -// CHECK:STDOUT: symbolic_constant60000094: {inst: inst600000E3, generic: generic60000007, index: generic_inst_in_def0, kind: checked} -// CHECK:STDOUT: symbolic_constant60000095: {inst: inst6000007C, generic: generic60000007, index: generic_inst_in_def1, kind: checked} -// CHECK:STDOUT: symbolic_constant60000096: {inst: inst60000077, generic: generic60000007, index: generic_inst_in_def2, kind: checked} -// CHECK:STDOUT: symbolic_constant60000097: {inst: inst60000078, generic: generic60000007, index: generic_inst_in_def3, kind: checked} -// CHECK:STDOUT: symbolic_constant60000098: {inst: inst60000079, generic: generic60000007, index: generic_inst_in_def4, kind: checked} -// CHECK:STDOUT: symbolic_constant60000099: {inst: inst6000007A, generic: generic60000007, index: generic_inst_in_def5, kind: checked} -// CHECK:STDOUT: symbolic_constant6000009A: {inst: inst600000E2, generic: generic60000007, index: generic_inst_in_def6, kind: checked} -// CHECK:STDOUT: symbolic_constant6000009B: {inst: inst600000DD, generic: generic60000007, index: generic_inst_in_def7, kind: checked} -// CHECK:STDOUT: symbolic_constant6000009C: {inst: inst600000DE, generic: generic60000007, index: generic_inst_in_def8, kind: checked} -// CHECK:STDOUT: symbolic_constant6000009D: {inst: inst600000DF, generic: generic60000007, index: generic_inst_in_def9, kind: checked} -// CHECK:STDOUT: symbolic_constant6000009E: {inst: inst600000E0, generic: generic60000007, index: generic_inst_in_def10, kind: checked} -// CHECK:STDOUT: symbolic_constant6000009F: {inst: inst600000C6, generic: generic60000006, index: generic_inst_in_decl5, kind: checked} -// CHECK:STDOUT: symbolic_constant600000A0: {inst: inst600000C5, generic: generic60000006, index: generic_inst_in_decl4, kind: checked} -// CHECK:STDOUT: symbolic_constant600000A1: {inst: inst60000064, generic: generic60000006, index: generic_inst_in_decl3, kind: checked} -// CHECK:STDOUT: symbolic_constant600000A2: {inst: inst600000CE, generic: generic60000006, index: generic_inst_in_decl2, kind: checked} -// CHECK:STDOUT: symbolic_constant600000A3: {inst: inst600000C4, generic: generic60000006, index: generic_inst_in_decl1, kind: checked} -// CHECK:STDOUT: symbolic_constant600000A4: {inst: inst60000063, generic: generic60000006, index: generic_inst_in_decl0, kind: checked} -// CHECK:STDOUT: symbolic_constant600000A5: {inst: inst60000063, generic: generic60000006, index: generic_inst_in_decl0, kind: checked} -// CHECK:STDOUT: symbolic_constant600000A6: {inst: inst600000C4, generic: generic60000006, index: generic_inst_in_decl1, kind: checked} -// CHECK:STDOUT: symbolic_constant600000A7: {inst: inst600000CE, generic: generic60000006, index: generic_inst_in_decl2, kind: checked} -// CHECK:STDOUT: symbolic_constant600000A8: {inst: inst60000064, generic: generic60000006, index: generic_inst_in_decl3, kind: checked} -// CHECK:STDOUT: symbolic_constant600000A9: {inst: inst600000C5, generic: generic60000006, index: generic_inst_in_decl4, kind: checked} -// CHECK:STDOUT: symbolic_constant600000AA: {inst: inst600000C6, generic: generic60000006, index: generic_inst_in_decl5, kind: checked} -// CHECK:STDOUT: symbolic_constant600000AB: {inst: inst600000C9, generic: generic60000006, index: generic_inst_in_decl6, kind: checked} -// CHECK:STDOUT: symbolic_constant600000AC: {inst: inst600000CC, generic: generic60000006, index: generic_inst_in_def1, kind: checked} -// CHECK:STDOUT: symbolic_constant600000AD: {inst: inst600000CB, generic: generic60000006, index: generic_inst_in_def0, kind: checked} -// CHECK:STDOUT: symbolic_constant600000AE: {inst: inst600000CC, generic: generic60000006, index: generic_inst_in_def1, kind: checked} -// CHECK:STDOUT: symbolic_constant600000AF: {inst: inst60000100, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant600000B0: {inst: inst60000101, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant600000B1: {inst: inst60000102, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant600000B2: {inst: inst60000102, generic: generic60000008, index: generic_inst_in_decl7, kind: checked} -// CHECK:STDOUT: symbolic_constant600000B3: {inst: inst60000105, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant600000B4: {inst: inst60000105, generic: generic60000008, index: generic_inst_in_decl8, kind: checked} -// CHECK:STDOUT: symbolic_constant600000B5: {inst: inst60000107, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant600000B6: {inst: inst60000108, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant600000B7: {inst: inst60000108, generic: generic60000008, index: generic_inst_in_def1, kind: checked} -// CHECK:STDOUT: symbolic_constant600000B8: {inst: inst60000107, generic: generic60000008, index: generic_inst_in_def0, kind: checked} -// CHECK:STDOUT: symbolic_constant600000B9: {inst: inst6000010A, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant600000BA: {inst: inst6000010B, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant600000BB: {inst: inst6000010B, generic: generic60000009, index: generic_inst_in_decl7, kind: checked} -// CHECK:STDOUT: symbolic_constant600000BC: {inst: inst60000102, generic: generic60000009, index: generic_inst_in_decl6, kind: checked} -// CHECK:STDOUT: symbolic_constant600000BD: {inst: inst60000101, generic: generic60000009, index: generic_inst_in_decl5, kind: checked} -// CHECK:STDOUT: symbolic_constant600000BE: {inst: inst60000100, generic: generic60000009, index: generic_inst_in_decl4, kind: checked} -// CHECK:STDOUT: symbolic_constant600000BF: {inst: inst600000C5, generic: generic60000009, index: generic_inst_in_decl3, kind: checked} -// CHECK:STDOUT: symbolic_constant600000C0: {inst: inst600000C4, generic: generic60000009, index: generic_inst_in_decl2, kind: checked} -// CHECK:STDOUT: symbolic_constant600000C1: {inst: inst60000064, generic: generic60000009, index: generic_inst_in_decl1, kind: checked} -// CHECK:STDOUT: symbolic_constant600000C2: {inst: inst60000063, generic: generic60000009, index: generic_inst_in_decl0, kind: checked} -// CHECK:STDOUT: symbolic_constant600000C3: {inst: inst60000100, generic: generic60000008, index: generic_inst_in_decl2, kind: checked} -// CHECK:STDOUT: symbolic_constant600000C4: {inst: inst600000C4, generic: generic60000008, index: generic_inst_in_decl1, kind: checked} -// CHECK:STDOUT: symbolic_constant600000C5: {inst: inst60000063, generic: generic60000008, index: generic_inst_in_decl0, kind: checked} -// CHECK:STDOUT: symbolic_constant600000C6: {inst: inst60000102, generic: generic60000009, index: generic_inst_in_decl6, kind: checked} -// CHECK:STDOUT: symbolic_constant600000C7: {inst: inst60000063, generic: generic60000009, index: generic_inst_in_decl0, kind: checked} -// CHECK:STDOUT: symbolic_constant600000C8: {inst: inst60000064, generic: generic60000009, index: generic_inst_in_decl1, kind: checked} -// CHECK:STDOUT: symbolic_constant600000C9: {inst: inst600000C4, generic: generic60000009, index: generic_inst_in_decl2, kind: checked} -// CHECK:STDOUT: symbolic_constant600000CA: {inst: inst600000C5, generic: generic60000009, index: generic_inst_in_decl3, kind: checked} -// CHECK:STDOUT: symbolic_constant600000CB: {inst: inst60000100, generic: generic60000009, index: generic_inst_in_decl4, kind: checked} -// CHECK:STDOUT: symbolic_constant600000CC: {inst: inst60000101, generic: generic60000009, index: generic_inst_in_decl5, kind: checked} -// CHECK:STDOUT: symbolic_constant600000CD: {inst: inst60000102, generic: generic60000009, index: generic_inst_in_decl6, kind: checked} -// CHECK:STDOUT: symbolic_constant600000CE: {inst: inst6000010B, generic: generic60000009, index: generic_inst_in_decl7, kind: checked} -// CHECK:STDOUT: symbolic_constant600000CF: {inst: inst6000011C, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant600000D0: {inst: inst6000011D, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant600000D1: {inst: inst6000011E, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant600000D2: {inst: inst6000011F, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant600000D3: {inst: inst6000011F, generic: generic60000009, index: generic_inst_in_def15, kind: checked} -// CHECK:STDOUT: symbolic_constant600000D4: {inst: inst60000120, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant600000D5: {inst: inst6000011E, generic: generic60000009, index: generic_inst_in_def14, kind: checked} -// CHECK:STDOUT: symbolic_constant600000D6: {inst: inst6000011D, generic: generic60000009, index: generic_inst_in_def13, kind: checked} -// CHECK:STDOUT: symbolic_constant600000D7: {inst: inst6000011C, generic: generic60000009, index: generic_inst_in_def12, kind: checked} -// CHECK:STDOUT: symbolic_constant600000D8: {inst: inst60000121, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant600000D9: {inst: inst60000121, generic: generic60000009, index: generic_inst_in_def11, kind: checked} -// CHECK:STDOUT: symbolic_constant600000DA: {inst: inst600000E0, generic: generic60000009, index: generic_inst_in_def10, kind: checked} -// CHECK:STDOUT: symbolic_constant600000DB: {inst: inst600000DF, generic: generic60000009, index: generic_inst_in_def9, kind: checked} -// CHECK:STDOUT: symbolic_constant600000DC: {inst: inst600000DE, generic: generic60000009, index: generic_inst_in_def8, kind: checked} -// CHECK:STDOUT: symbolic_constant600000DD: {inst: inst600000DD, generic: generic60000009, index: generic_inst_in_def7, kind: checked} -// CHECK:STDOUT: symbolic_constant600000DE: {inst: inst600000E2, generic: generic60000009, index: generic_inst_in_def6, kind: checked} -// CHECK:STDOUT: symbolic_constant600000DF: {inst: inst6000007A, generic: generic60000009, index: generic_inst_in_def5, kind: checked} -// CHECK:STDOUT: symbolic_constant600000E0: {inst: inst60000079, generic: generic60000009, index: generic_inst_in_def4, kind: checked} -// CHECK:STDOUT: symbolic_constant600000E1: {inst: inst60000078, generic: generic60000009, index: generic_inst_in_def3, kind: checked} -// CHECK:STDOUT: symbolic_constant600000E2: {inst: inst60000077, generic: generic60000009, index: generic_inst_in_def2, kind: checked} -// CHECK:STDOUT: symbolic_constant600000E3: {inst: inst6000007C, generic: generic60000009, index: generic_inst_in_def1, kind: checked} -// CHECK:STDOUT: symbolic_constant600000E4: {inst: inst60000122, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant600000E5: {inst: inst60000122, generic: generic60000009, index: generic_inst_in_def0, kind: checked} -// CHECK:STDOUT: symbolic_constant600000E6: {inst: inst60000122, generic: generic60000009, index: generic_inst_in_def0, kind: checked} -// CHECK:STDOUT: symbolic_constant600000E7: {inst: inst6000007C, generic: generic60000009, index: generic_inst_in_def1, kind: checked} -// CHECK:STDOUT: symbolic_constant600000E8: {inst: inst60000077, generic: generic60000009, index: generic_inst_in_def2, kind: checked} -// CHECK:STDOUT: symbolic_constant600000E9: {inst: inst60000078, generic: generic60000009, index: generic_inst_in_def3, kind: checked} -// CHECK:STDOUT: symbolic_constant600000EA: {inst: inst60000079, generic: generic60000009, index: generic_inst_in_def4, kind: checked} -// CHECK:STDOUT: symbolic_constant600000EB: {inst: inst6000007A, generic: generic60000009, index: generic_inst_in_def5, kind: checked} -// CHECK:STDOUT: symbolic_constant600000EC: {inst: inst600000E2, generic: generic60000009, index: generic_inst_in_def6, kind: checked} -// CHECK:STDOUT: symbolic_constant600000ED: {inst: inst600000DD, generic: generic60000009, index: generic_inst_in_def7, kind: checked} -// CHECK:STDOUT: symbolic_constant600000EE: {inst: inst600000DE, generic: generic60000009, index: generic_inst_in_def8, kind: checked} -// CHECK:STDOUT: symbolic_constant600000EF: {inst: inst600000DF, generic: generic60000009, index: generic_inst_in_def9, kind: checked} -// CHECK:STDOUT: symbolic_constant600000F0: {inst: inst600000E0, generic: generic60000009, index: generic_inst_in_def10, kind: checked} -// CHECK:STDOUT: symbolic_constant600000F1: {inst: inst60000121, generic: generic60000009, index: generic_inst_in_def11, kind: checked} -// CHECK:STDOUT: symbolic_constant600000F2: {inst: inst6000011C, generic: generic60000009, index: generic_inst_in_def12, kind: checked} -// CHECK:STDOUT: symbolic_constant600000F3: {inst: inst6000011D, generic: generic60000009, index: generic_inst_in_def13, kind: checked} -// CHECK:STDOUT: symbolic_constant600000F4: {inst: inst6000011E, generic: generic60000009, index: generic_inst_in_def14, kind: checked} -// CHECK:STDOUT: symbolic_constant600000F5: {inst: inst6000011F, generic: generic60000009, index: generic_inst_in_def15, kind: checked} -// CHECK:STDOUT: symbolic_constant600000F6: {inst: inst60000102, generic: generic60000008, index: generic_inst_in_decl7, kind: checked} -// CHECK:STDOUT: symbolic_constant600000F7: {inst: inst60000101, generic: generic60000008, index: generic_inst_in_decl6, kind: checked} -// CHECK:STDOUT: symbolic_constant600000F8: {inst: inst600000C5, generic: generic60000008, index: generic_inst_in_decl5, kind: checked} -// CHECK:STDOUT: symbolic_constant600000F9: {inst: inst60000064, generic: generic60000008, index: generic_inst_in_decl4, kind: checked} -// CHECK:STDOUT: symbolic_constant600000FA: {inst: inst6000010A, generic: generic60000008, index: generic_inst_in_decl3, kind: checked} -// CHECK:STDOUT: symbolic_constant600000FB: {inst: inst60000100, generic: generic60000008, index: generic_inst_in_decl2, kind: checked} -// CHECK:STDOUT: symbolic_constant600000FC: {inst: inst600000C4, generic: generic60000008, index: generic_inst_in_decl1, kind: checked} -// CHECK:STDOUT: symbolic_constant600000FD: {inst: inst60000063, generic: generic60000008, index: generic_inst_in_decl0, kind: checked} -// CHECK:STDOUT: symbolic_constant600000FE: {inst: inst60000063, generic: generic60000008, index: generic_inst_in_decl0, kind: checked} -// CHECK:STDOUT: symbolic_constant600000FF: {inst: inst600000C4, generic: generic60000008, index: generic_inst_in_decl1, kind: checked} -// CHECK:STDOUT: symbolic_constant60000100: {inst: inst60000100, generic: generic60000008, index: generic_inst_in_decl2, kind: checked} -// CHECK:STDOUT: symbolic_constant60000101: {inst: inst6000010A, generic: generic60000008, index: generic_inst_in_decl3, kind: checked} -// CHECK:STDOUT: symbolic_constant60000102: {inst: inst60000064, generic: generic60000008, index: generic_inst_in_decl4, kind: checked} -// CHECK:STDOUT: symbolic_constant60000103: {inst: inst600000C5, generic: generic60000008, index: generic_inst_in_decl5, kind: checked} -// CHECK:STDOUT: symbolic_constant60000104: {inst: inst60000101, generic: generic60000008, index: generic_inst_in_decl6, kind: checked} -// CHECK:STDOUT: symbolic_constant60000105: {inst: inst60000102, generic: generic60000008, index: generic_inst_in_decl7, kind: checked} -// CHECK:STDOUT: symbolic_constant60000106: {inst: inst60000105, generic: generic60000008, index: generic_inst_in_decl8, kind: checked} -// CHECK:STDOUT: symbolic_constant60000107: {inst: inst60000108, generic: generic60000008, index: generic_inst_in_def1, kind: checked} -// CHECK:STDOUT: symbolic_constant60000108: {inst: inst60000107, generic: generic60000008, index: generic_inst_in_def0, kind: checked} -// CHECK:STDOUT: symbolic_constant60000109: {inst: inst60000108, generic: generic60000008, index: generic_inst_in_def1, kind: checked} -// CHECK:STDOUT: symbolic_constant6000010A: {inst: inst600000A3, generic: generic60000004, index: generic_inst_in_decl2, kind: checked} -// CHECK:STDOUT: symbolic_constant6000010B: {inst: inst60000147, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant6000010C: {inst: inst60000147, generic: generic60000000, index: generic_inst_in_def2, kind: checked} -// CHECK:STDOUT: symbolic_constant6000010D: {inst: inst60000149, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant6000010E: {inst: inst60000149, generic: generic60000000, index: generic_inst_in_def3, kind: checked} -// CHECK:STDOUT: symbolic_constant6000010F: {inst: inst6000014B, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant60000110: {inst: inst6000014C, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant60000111: {inst: inst6000014E, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant60000112: {inst: inst6000014B, generic: generic60000000, index: generic_inst_in_def4, kind: checked} -// CHECK:STDOUT: symbolic_constant60000113: {inst: inst6000014C, generic: generic60000000, index: generic_inst_in_def5, kind: checked} -// CHECK:STDOUT: symbolic_constant60000114: {inst: inst6000014E, generic: generic60000000, index: generic_inst_in_def6, kind: checked} -// CHECK:STDOUT: symbolic_constant60000115: {inst: inst60000154, generic: generic, index: generic_inst, kind: checked} -// CHECK:STDOUT: symbolic_constant60000116: {inst: inst60000154, generic: generic60000000, index: generic_inst_in_def7, kind: checked} +// CHECK:STDOUT: symbolic_constant0: {inst: inst60000014, generic: generic, index: generic_inst, kind: self} +// CHECK:STDOUT: symbolic_constant1: {inst: inst60000016, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant2: {inst: inst60000016, generic: generic60000000, index: generic_inst_in_decl0, kind: checked} +// CHECK:STDOUT: symbolic_constant3: {inst: inst6000001C, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant4: {inst: inst6000001C, generic: generic60000000, index: generic_inst_in_decl1, kind: checked} +// CHECK:STDOUT: symbolic_constant5: {inst: inst6000001F, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant6: {inst: inst6000001F, generic: generic60000000, index: generic_inst_in_decl2, kind: checked} +// CHECK:STDOUT: symbolic_constant7: {inst: inst6000002A, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant8: {inst: inst6000002A, generic: generic60000000, index: generic_inst_in_decl3, kind: checked} +// CHECK:STDOUT: symbolic_constant9: {inst: inst6000002E, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constantA: {inst: inst6000002E, generic: generic60000000, index: generic_inst_in_decl4, kind: checked} +// CHECK:STDOUT: symbolic_constantB: {inst: inst60000032, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constantC: {inst: inst60000032, generic: generic60000000, index: generic_inst_in_decl5, kind: checked} +// CHECK:STDOUT: symbolic_constantD: {inst: inst60000034, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constantE: {inst: inst60000034, generic: generic60000000, index: generic_inst_in_decl6, kind: checked} +// CHECK:STDOUT: symbolic_constantF: {inst: inst6000003F, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant60000010: {inst: inst60000041, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant60000011: {inst: inst60000041, generic: generic60000000, index: generic_inst_in_def0, kind: checked} +// CHECK:STDOUT: symbolic_constant60000012: {inst: inst60000044, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant60000013: {inst: inst60000044, generic: generic60000000, index: generic_inst_in_def1, kind: checked} +// CHECK:STDOUT: symbolic_constant60000014: {inst: inst60000050, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant60000015: {inst: inst6000005A, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant60000016: {inst: inst6000005B, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant60000017: {inst: inst6000005B, generic: generic60000001, index: generic_inst_in_decl2, kind: checked} +// CHECK:STDOUT: symbolic_constant60000018: {inst: inst60000060, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant60000019: {inst: inst60000060, generic: generic60000001, index: generic_inst_in_decl3, kind: checked} +// CHECK:STDOUT: symbolic_constant6000001A: {inst: inst6000005A, generic: generic60000001, index: generic_inst_in_decl1, kind: checked} +// CHECK:STDOUT: symbolic_constant6000001B: {inst: inst60000050, generic: generic60000001, index: generic_inst_in_decl0, kind: checked} +// CHECK:STDOUT: symbolic_constant6000001C: {inst: inst6000005A, generic: generic60000001, index: generic_inst_in_decl1, kind: checked} +// CHECK:STDOUT: symbolic_constant6000001D: {inst: inst60000050, generic: generic60000001, index: generic_inst_in_decl0, kind: checked} +// CHECK:STDOUT: symbolic_constant6000001E: {inst: inst6000005A, generic: generic60000001, index: generic_inst_in_decl1, kind: checked} +// CHECK:STDOUT: symbolic_constant6000001F: {inst: inst6000005B, generic: generic60000001, index: generic_inst_in_decl2, kind: checked} +// CHECK:STDOUT: symbolic_constant60000020: {inst: inst60000060, generic: generic60000001, index: generic_inst_in_decl3, kind: checked} +// CHECK:STDOUT: symbolic_constant60000021: {inst: inst6000006A, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant60000022: {inst: inst6000006B, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant60000023: {inst: inst6000006C, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant60000024: {inst: inst6000006C, generic: generic60000002, index: generic_inst_in_decl2, kind: checked} +// CHECK:STDOUT: symbolic_constant60000025: {inst: inst6000006F, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant60000026: {inst: inst6000006F, generic: generic60000002, index: generic_inst_in_decl3, kind: checked} +// CHECK:STDOUT: symbolic_constant60000027: {inst: inst60000071, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant60000028: {inst: inst60000072, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant60000029: {inst: inst60000072, generic: generic60000002, index: generic_inst_in_def1, kind: checked} +// CHECK:STDOUT: symbolic_constant6000002A: {inst: inst60000071, generic: generic60000002, index: generic_inst_in_def0, kind: checked} +// CHECK:STDOUT: symbolic_constant6000002B: {inst: inst60000073, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant6000002C: {inst: inst60000073, generic: generic60000003, index: generic_inst_in_decl3, kind: checked} +// CHECK:STDOUT: symbolic_constant6000002D: {inst: inst60000078, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant6000002E: {inst: inst60000078, generic: generic60000003, index: generic_inst_in_decl4, kind: checked} +// CHECK:STDOUT: symbolic_constant6000002F: {inst: inst6000006C, generic: generic60000003, index: generic_inst_in_decl2, kind: checked} +// CHECK:STDOUT: symbolic_constant60000030: {inst: inst6000006B, generic: generic60000003, index: generic_inst_in_decl1, kind: checked} +// CHECK:STDOUT: symbolic_constant60000031: {inst: inst6000006A, generic: generic60000003, index: generic_inst_in_decl0, kind: checked} +// CHECK:STDOUT: symbolic_constant60000032: {inst: inst6000006A, generic: generic60000002, index: generic_inst_in_decl0, kind: checked} +// CHECK:STDOUT: symbolic_constant60000033: {inst: inst6000006C, generic: generic60000003, index: generic_inst_in_decl2, kind: checked} +// CHECK:STDOUT: symbolic_constant60000034: {inst: inst6000006A, generic: generic60000003, index: generic_inst_in_decl0, kind: checked} +// CHECK:STDOUT: symbolic_constant60000035: {inst: inst6000006B, generic: generic60000003, index: generic_inst_in_decl1, kind: checked} +// CHECK:STDOUT: symbolic_constant60000036: {inst: inst6000006C, generic: generic60000003, index: generic_inst_in_decl2, kind: checked} +// CHECK:STDOUT: symbolic_constant60000037: {inst: inst60000073, generic: generic60000003, index: generic_inst_in_decl3, kind: checked} +// CHECK:STDOUT: symbolic_constant60000038: {inst: inst60000078, generic: generic60000003, index: generic_inst_in_decl4, kind: checked} +// CHECK:STDOUT: symbolic_constant60000039: {inst: inst60000080, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant6000003A: {inst: inst60000081, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant6000003B: {inst: inst60000082, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant6000003C: {inst: inst60000083, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant6000003D: {inst: inst60000083, generic: generic60000003, index: generic_inst_in_def5, kind: checked} +// CHECK:STDOUT: symbolic_constant6000003E: {inst: inst60000084, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant6000003F: {inst: inst60000085, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant60000040: {inst: inst60000082, generic: generic60000003, index: generic_inst_in_def4, kind: checked} +// CHECK:STDOUT: symbolic_constant60000041: {inst: inst60000081, generic: generic60000003, index: generic_inst_in_def3, kind: checked} +// CHECK:STDOUT: symbolic_constant60000042: {inst: inst60000080, generic: generic60000003, index: generic_inst_in_def2, kind: checked} +// CHECK:STDOUT: symbolic_constant60000043: {inst: inst60000086, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant60000044: {inst: inst60000086, generic: generic60000003, index: generic_inst_in_def1, kind: checked} +// CHECK:STDOUT: symbolic_constant60000045: {inst: inst60000087, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant60000046: {inst: inst60000087, generic: generic60000003, index: generic_inst_in_def0, kind: checked} +// CHECK:STDOUT: symbolic_constant60000047: {inst: inst60000087, generic: generic60000003, index: generic_inst_in_def0, kind: checked} +// CHECK:STDOUT: symbolic_constant60000048: {inst: inst60000086, generic: generic60000003, index: generic_inst_in_def1, kind: checked} +// CHECK:STDOUT: symbolic_constant60000049: {inst: inst60000080, generic: generic60000003, index: generic_inst_in_def2, kind: checked} +// CHECK:STDOUT: symbolic_constant6000004A: {inst: inst60000081, generic: generic60000003, index: generic_inst_in_def3, kind: checked} +// CHECK:STDOUT: symbolic_constant6000004B: {inst: inst60000082, generic: generic60000003, index: generic_inst_in_def4, kind: checked} +// CHECK:STDOUT: symbolic_constant6000004C: {inst: inst60000083, generic: generic60000003, index: generic_inst_in_def5, kind: checked} +// CHECK:STDOUT: symbolic_constant6000004D: {inst: inst6000006C, generic: generic60000002, index: generic_inst_in_decl2, kind: checked} +// CHECK:STDOUT: symbolic_constant6000004E: {inst: inst6000006B, generic: generic60000002, index: generic_inst_in_decl1, kind: checked} +// CHECK:STDOUT: symbolic_constant6000004F: {inst: inst6000006A, generic: generic60000002, index: generic_inst_in_decl0, kind: checked} +// CHECK:STDOUT: symbolic_constant60000050: {inst: inst6000006A, generic: generic60000002, index: generic_inst_in_decl0, kind: checked} +// CHECK:STDOUT: symbolic_constant60000051: {inst: inst6000006B, generic: generic60000002, index: generic_inst_in_decl1, kind: checked} +// CHECK:STDOUT: symbolic_constant60000052: {inst: inst6000006C, generic: generic60000002, index: generic_inst_in_decl2, kind: checked} +// CHECK:STDOUT: symbolic_constant60000053: {inst: inst6000006F, generic: generic60000002, index: generic_inst_in_decl3, kind: checked} +// CHECK:STDOUT: symbolic_constant60000054: {inst: inst60000072, generic: generic60000002, index: generic_inst_in_def1, kind: checked} +// CHECK:STDOUT: symbolic_constant60000055: {inst: inst60000071, generic: generic60000002, index: generic_inst_in_def0, kind: checked} +// CHECK:STDOUT: symbolic_constant60000056: {inst: inst60000072, generic: generic60000002, index: generic_inst_in_def1, kind: checked} +// CHECK:STDOUT: symbolic_constant60000057: {inst: inst6000001C, generic: generic60000004, index: generic_inst_in_decl1, kind: checked} +// CHECK:STDOUT: symbolic_constant60000058: {inst: inst600000AD, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant60000059: {inst: inst600000AD, generic: generic60000004, index: generic_inst_in_decl2, kind: checked} +// CHECK:STDOUT: symbolic_constant6000005A: {inst: inst6000001C, generic: generic60000004, index: generic_inst_in_decl1, kind: checked} +// CHECK:STDOUT: symbolic_constant6000005B: {inst: inst60000016, generic: generic60000004, index: generic_inst_in_decl0, kind: checked} +// CHECK:STDOUT: symbolic_constant6000005C: {inst: inst60000016, generic: generic60000004, index: generic_inst_in_decl0, kind: checked} +// CHECK:STDOUT: symbolic_constant6000005D: {inst: inst60000016, generic: generic60000004, index: generic_inst_in_decl0, kind: checked} +// CHECK:STDOUT: symbolic_constant6000005E: {inst: inst6000001C, generic: generic60000004, index: generic_inst_in_decl1, kind: checked} +// CHECK:STDOUT: symbolic_constant6000005F: {inst: inst600000AD, generic: generic60000004, index: generic_inst_in_decl2, kind: checked} +// CHECK:STDOUT: symbolic_constant60000060: {inst: inst60000044, generic: generic60000004, index: generic_inst_in_def2, kind: checked} +// CHECK:STDOUT: symbolic_constant60000061: {inst: inst600000B6, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant60000062: {inst: inst600000B7, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant60000063: {inst: inst600000B7, generic: generic60000004, index: generic_inst_in_def1, kind: checked} +// CHECK:STDOUT: symbolic_constant60000064: {inst: inst600000B6, generic: generic60000004, index: generic_inst_in_def0, kind: checked} +// CHECK:STDOUT: symbolic_constant60000065: {inst: inst6000001F, generic: generic60000005, index: generic_inst_in_decl2, kind: checked} +// CHECK:STDOUT: symbolic_constant60000066: {inst: inst600000BC, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant60000067: {inst: inst600000BC, generic: generic60000005, index: generic_inst_in_decl3, kind: checked} +// CHECK:STDOUT: symbolic_constant60000068: {inst: inst6000001C, generic: generic60000005, index: generic_inst_in_decl1, kind: checked} +// CHECK:STDOUT: symbolic_constant60000069: {inst: inst60000016, generic: generic60000005, index: generic_inst_in_decl0, kind: checked} +// CHECK:STDOUT: symbolic_constant6000006A: {inst: inst6000001C, generic: generic60000005, index: generic_inst_in_decl1, kind: checked} +// CHECK:STDOUT: symbolic_constant6000006B: {inst: inst60000016, generic: generic60000005, index: generic_inst_in_decl0, kind: checked} +// CHECK:STDOUT: symbolic_constant6000006C: {inst: inst6000001C, generic: generic60000005, index: generic_inst_in_decl1, kind: checked} +// CHECK:STDOUT: symbolic_constant6000006D: {inst: inst6000001F, generic: generic60000005, index: generic_inst_in_decl2, kind: checked} +// CHECK:STDOUT: symbolic_constant6000006E: {inst: inst600000BC, generic: generic60000005, index: generic_inst_in_decl3, kind: checked} +// CHECK:STDOUT: symbolic_constant6000006F: {inst: inst600000B7, generic: generic60000004, index: generic_inst_in_def1, kind: checked} +// CHECK:STDOUT: symbolic_constant60000070: {inst: inst600000B6, generic: generic60000004, index: generic_inst_in_def0, kind: checked} +// CHECK:STDOUT: symbolic_constant60000071: {inst: inst600000B7, generic: generic60000004, index: generic_inst_in_def1, kind: checked} +// CHECK:STDOUT: symbolic_constant60000072: {inst: inst60000044, generic: generic60000004, index: generic_inst_in_def2, kind: checked} +// CHECK:STDOUT: symbolic_constant60000073: {inst: inst600000D0, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant60000074: {inst: inst600000D1, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant60000075: {inst: inst600000D2, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant60000076: {inst: inst600000D2, generic: generic60000006, index: generic_inst_in_decl5, kind: checked} +// CHECK:STDOUT: symbolic_constant60000077: {inst: inst600000D5, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant60000078: {inst: inst600000D5, generic: generic60000006, index: generic_inst_in_decl6, kind: checked} +// CHECK:STDOUT: symbolic_constant60000079: {inst: inst600000D7, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant6000007A: {inst: inst600000D8, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant6000007B: {inst: inst600000D8, generic: generic60000006, index: generic_inst_in_def1, kind: checked} +// CHECK:STDOUT: symbolic_constant6000007C: {inst: inst600000D7, generic: generic60000006, index: generic_inst_in_def0, kind: checked} +// CHECK:STDOUT: symbolic_constant6000007D: {inst: inst600000DA, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant6000007E: {inst: inst600000DB, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant6000007F: {inst: inst600000DB, generic: generic60000007, index: generic_inst_in_decl5, kind: checked} +// CHECK:STDOUT: symbolic_constant60000080: {inst: inst600000E0, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant60000081: {inst: inst600000E0, generic: generic60000007, index: generic_inst_in_decl6, kind: checked} +// CHECK:STDOUT: symbolic_constant60000082: {inst: inst600000D2, generic: generic60000007, index: generic_inst_in_decl4, kind: checked} +// CHECK:STDOUT: symbolic_constant60000083: {inst: inst600000D1, generic: generic60000007, index: generic_inst_in_decl3, kind: checked} +// CHECK:STDOUT: symbolic_constant60000084: {inst: inst600000D0, generic: generic60000007, index: generic_inst_in_decl2, kind: checked} +// CHECK:STDOUT: symbolic_constant60000085: {inst: inst6000006B, generic: generic60000007, index: generic_inst_in_decl1, kind: checked} +// CHECK:STDOUT: symbolic_constant60000086: {inst: inst6000006A, generic: generic60000007, index: generic_inst_in_decl0, kind: checked} +// CHECK:STDOUT: symbolic_constant60000087: {inst: inst600000D0, generic: generic60000006, index: generic_inst_in_decl1, kind: checked} +// CHECK:STDOUT: symbolic_constant60000088: {inst: inst6000006A, generic: generic60000006, index: generic_inst_in_decl0, kind: checked} +// CHECK:STDOUT: symbolic_constant60000089: {inst: inst600000D2, generic: generic60000007, index: generic_inst_in_decl4, kind: checked} +// CHECK:STDOUT: symbolic_constant6000008A: {inst: inst6000006A, generic: generic60000007, index: generic_inst_in_decl0, kind: checked} +// CHECK:STDOUT: symbolic_constant6000008B: {inst: inst6000006B, generic: generic60000007, index: generic_inst_in_decl1, kind: checked} +// CHECK:STDOUT: symbolic_constant6000008C: {inst: inst600000D0, generic: generic60000007, index: generic_inst_in_decl2, kind: checked} +// CHECK:STDOUT: symbolic_constant6000008D: {inst: inst600000D1, generic: generic60000007, index: generic_inst_in_decl3, kind: checked} +// CHECK:STDOUT: symbolic_constant6000008E: {inst: inst600000D2, generic: generic60000007, index: generic_inst_in_decl4, kind: checked} +// CHECK:STDOUT: symbolic_constant6000008F: {inst: inst600000DB, generic: generic60000007, index: generic_inst_in_decl5, kind: checked} +// CHECK:STDOUT: symbolic_constant60000090: {inst: inst600000E0, generic: generic60000007, index: generic_inst_in_decl6, kind: checked} +// CHECK:STDOUT: symbolic_constant60000091: {inst: inst600000EB, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant60000092: {inst: inst600000EC, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant60000093: {inst: inst600000ED, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant60000094: {inst: inst600000EE, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant60000095: {inst: inst600000EE, generic: generic60000007, index: generic_inst_in_def10, kind: checked} +// CHECK:STDOUT: symbolic_constant60000096: {inst: inst600000EF, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant60000097: {inst: inst600000F0, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant60000098: {inst: inst600000ED, generic: generic60000007, index: generic_inst_in_def9, kind: checked} +// CHECK:STDOUT: symbolic_constant60000099: {inst: inst600000EC, generic: generic60000007, index: generic_inst_in_def8, kind: checked} +// CHECK:STDOUT: symbolic_constant6000009A: {inst: inst600000EB, generic: generic60000007, index: generic_inst_in_def7, kind: checked} +// CHECK:STDOUT: symbolic_constant6000009B: {inst: inst600000F1, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant6000009C: {inst: inst600000F1, generic: generic60000007, index: generic_inst_in_def6, kind: checked} +// CHECK:STDOUT: symbolic_constant6000009D: {inst: inst60000083, generic: generic60000007, index: generic_inst_in_def5, kind: checked} +// CHECK:STDOUT: symbolic_constant6000009E: {inst: inst60000082, generic: generic60000007, index: generic_inst_in_def4, kind: checked} +// CHECK:STDOUT: symbolic_constant6000009F: {inst: inst60000081, generic: generic60000007, index: generic_inst_in_def3, kind: checked} +// CHECK:STDOUT: symbolic_constant600000A0: {inst: inst60000080, generic: generic60000007, index: generic_inst_in_def2, kind: checked} +// CHECK:STDOUT: symbolic_constant600000A1: {inst: inst60000086, generic: generic60000007, index: generic_inst_in_def1, kind: checked} +// CHECK:STDOUT: symbolic_constant600000A2: {inst: inst600000F2, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant600000A3: {inst: inst600000F2, generic: generic60000007, index: generic_inst_in_def0, kind: checked} +// CHECK:STDOUT: symbolic_constant600000A4: {inst: inst600000F2, generic: generic60000007, index: generic_inst_in_def0, kind: checked} +// CHECK:STDOUT: symbolic_constant600000A5: {inst: inst60000086, generic: generic60000007, index: generic_inst_in_def1, kind: checked} +// CHECK:STDOUT: symbolic_constant600000A6: {inst: inst60000080, generic: generic60000007, index: generic_inst_in_def2, kind: checked} +// CHECK:STDOUT: symbolic_constant600000A7: {inst: inst60000081, generic: generic60000007, index: generic_inst_in_def3, kind: checked} +// CHECK:STDOUT: symbolic_constant600000A8: {inst: inst60000082, generic: generic60000007, index: generic_inst_in_def4, kind: checked} +// CHECK:STDOUT: symbolic_constant600000A9: {inst: inst60000083, generic: generic60000007, index: generic_inst_in_def5, kind: checked} +// CHECK:STDOUT: symbolic_constant600000AA: {inst: inst600000F1, generic: generic60000007, index: generic_inst_in_def6, kind: checked} +// CHECK:STDOUT: symbolic_constant600000AB: {inst: inst600000EB, generic: generic60000007, index: generic_inst_in_def7, kind: checked} +// CHECK:STDOUT: symbolic_constant600000AC: {inst: inst600000EC, generic: generic60000007, index: generic_inst_in_def8, kind: checked} +// CHECK:STDOUT: symbolic_constant600000AD: {inst: inst600000ED, generic: generic60000007, index: generic_inst_in_def9, kind: checked} +// CHECK:STDOUT: symbolic_constant600000AE: {inst: inst600000EE, generic: generic60000007, index: generic_inst_in_def10, kind: checked} +// CHECK:STDOUT: symbolic_constant600000AF: {inst: inst600000D2, generic: generic60000006, index: generic_inst_in_decl5, kind: checked} +// CHECK:STDOUT: symbolic_constant600000B0: {inst: inst600000D1, generic: generic60000006, index: generic_inst_in_decl4, kind: checked} +// CHECK:STDOUT: symbolic_constant600000B1: {inst: inst6000006B, generic: generic60000006, index: generic_inst_in_decl3, kind: checked} +// CHECK:STDOUT: symbolic_constant600000B2: {inst: inst600000DA, generic: generic60000006, index: generic_inst_in_decl2, kind: checked} +// CHECK:STDOUT: symbolic_constant600000B3: {inst: inst600000D0, generic: generic60000006, index: generic_inst_in_decl1, kind: checked} +// CHECK:STDOUT: symbolic_constant600000B4: {inst: inst6000006A, generic: generic60000006, index: generic_inst_in_decl0, kind: checked} +// CHECK:STDOUT: symbolic_constant600000B5: {inst: inst6000006A, generic: generic60000006, index: generic_inst_in_decl0, kind: checked} +// CHECK:STDOUT: symbolic_constant600000B6: {inst: inst600000D0, generic: generic60000006, index: generic_inst_in_decl1, kind: checked} +// CHECK:STDOUT: symbolic_constant600000B7: {inst: inst600000DA, generic: generic60000006, index: generic_inst_in_decl2, kind: checked} +// CHECK:STDOUT: symbolic_constant600000B8: {inst: inst6000006B, generic: generic60000006, index: generic_inst_in_decl3, kind: checked} +// CHECK:STDOUT: symbolic_constant600000B9: {inst: inst600000D1, generic: generic60000006, index: generic_inst_in_decl4, kind: checked} +// CHECK:STDOUT: symbolic_constant600000BA: {inst: inst600000D2, generic: generic60000006, index: generic_inst_in_decl5, kind: checked} +// CHECK:STDOUT: symbolic_constant600000BB: {inst: inst600000D5, generic: generic60000006, index: generic_inst_in_decl6, kind: checked} +// CHECK:STDOUT: symbolic_constant600000BC: {inst: inst600000D8, generic: generic60000006, index: generic_inst_in_def1, kind: checked} +// CHECK:STDOUT: symbolic_constant600000BD: {inst: inst600000D7, generic: generic60000006, index: generic_inst_in_def0, kind: checked} +// CHECK:STDOUT: symbolic_constant600000BE: {inst: inst600000D8, generic: generic60000006, index: generic_inst_in_def1, kind: checked} +// CHECK:STDOUT: symbolic_constant600000BF: {inst: inst6000010F, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant600000C0: {inst: inst60000110, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant600000C1: {inst: inst60000111, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant600000C2: {inst: inst60000111, generic: generic60000008, index: generic_inst_in_decl7, kind: checked} +// CHECK:STDOUT: symbolic_constant600000C3: {inst: inst60000114, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant600000C4: {inst: inst60000114, generic: generic60000008, index: generic_inst_in_decl8, kind: checked} +// CHECK:STDOUT: symbolic_constant600000C5: {inst: inst60000116, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant600000C6: {inst: inst60000117, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant600000C7: {inst: inst60000117, generic: generic60000008, index: generic_inst_in_def1, kind: checked} +// CHECK:STDOUT: symbolic_constant600000C8: {inst: inst60000116, generic: generic60000008, index: generic_inst_in_def0, kind: checked} +// CHECK:STDOUT: symbolic_constant600000C9: {inst: inst60000119, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant600000CA: {inst: inst6000011A, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant600000CB: {inst: inst6000011A, generic: generic60000009, index: generic_inst_in_decl7, kind: checked} +// CHECK:STDOUT: symbolic_constant600000CC: {inst: inst6000011F, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant600000CD: {inst: inst6000011F, generic: generic60000009, index: generic_inst_in_decl8, kind: checked} +// CHECK:STDOUT: symbolic_constant600000CE: {inst: inst60000111, generic: generic60000009, index: generic_inst_in_decl6, kind: checked} +// CHECK:STDOUT: symbolic_constant600000CF: {inst: inst60000110, generic: generic60000009, index: generic_inst_in_decl5, kind: checked} +// CHECK:STDOUT: symbolic_constant600000D0: {inst: inst6000010F, generic: generic60000009, index: generic_inst_in_decl4, kind: checked} +// CHECK:STDOUT: symbolic_constant600000D1: {inst: inst600000D1, generic: generic60000009, index: generic_inst_in_decl3, kind: checked} +// CHECK:STDOUT: symbolic_constant600000D2: {inst: inst600000D0, generic: generic60000009, index: generic_inst_in_decl2, kind: checked} +// CHECK:STDOUT: symbolic_constant600000D3: {inst: inst6000006B, generic: generic60000009, index: generic_inst_in_decl1, kind: checked} +// CHECK:STDOUT: symbolic_constant600000D4: {inst: inst6000006A, generic: generic60000009, index: generic_inst_in_decl0, kind: checked} +// CHECK:STDOUT: symbolic_constant600000D5: {inst: inst6000010F, generic: generic60000008, index: generic_inst_in_decl2, kind: checked} +// CHECK:STDOUT: symbolic_constant600000D6: {inst: inst600000D0, generic: generic60000008, index: generic_inst_in_decl1, kind: checked} +// CHECK:STDOUT: symbolic_constant600000D7: {inst: inst6000006A, generic: generic60000008, index: generic_inst_in_decl0, kind: checked} +// CHECK:STDOUT: symbolic_constant600000D8: {inst: inst60000111, generic: generic60000009, index: generic_inst_in_decl6, kind: checked} +// CHECK:STDOUT: symbolic_constant600000D9: {inst: inst6000006A, generic: generic60000009, index: generic_inst_in_decl0, kind: checked} +// CHECK:STDOUT: symbolic_constant600000DA: {inst: inst6000006B, generic: generic60000009, index: generic_inst_in_decl1, kind: checked} +// CHECK:STDOUT: symbolic_constant600000DB: {inst: inst600000D0, generic: generic60000009, index: generic_inst_in_decl2, kind: checked} +// CHECK:STDOUT: symbolic_constant600000DC: {inst: inst600000D1, generic: generic60000009, index: generic_inst_in_decl3, kind: checked} +// CHECK:STDOUT: symbolic_constant600000DD: {inst: inst6000010F, generic: generic60000009, index: generic_inst_in_decl4, kind: checked} +// CHECK:STDOUT: symbolic_constant600000DE: {inst: inst60000110, generic: generic60000009, index: generic_inst_in_decl5, kind: checked} +// CHECK:STDOUT: symbolic_constant600000DF: {inst: inst60000111, generic: generic60000009, index: generic_inst_in_decl6, kind: checked} +// CHECK:STDOUT: symbolic_constant600000E0: {inst: inst6000011A, generic: generic60000009, index: generic_inst_in_decl7, kind: checked} +// CHECK:STDOUT: symbolic_constant600000E1: {inst: inst6000011F, generic: generic60000009, index: generic_inst_in_decl8, kind: checked} +// CHECK:STDOUT: symbolic_constant600000E2: {inst: inst6000012D, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant600000E3: {inst: inst6000012E, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant600000E4: {inst: inst6000012F, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant600000E5: {inst: inst60000130, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant600000E6: {inst: inst60000130, generic: generic60000009, index: generic_inst_in_def15, kind: checked} +// CHECK:STDOUT: symbolic_constant600000E7: {inst: inst60000131, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant600000E8: {inst: inst60000132, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant600000E9: {inst: inst6000012F, generic: generic60000009, index: generic_inst_in_def14, kind: checked} +// CHECK:STDOUT: symbolic_constant600000EA: {inst: inst6000012E, generic: generic60000009, index: generic_inst_in_def13, kind: checked} +// CHECK:STDOUT: symbolic_constant600000EB: {inst: inst6000012D, generic: generic60000009, index: generic_inst_in_def12, kind: checked} +// CHECK:STDOUT: symbolic_constant600000EC: {inst: inst60000133, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant600000ED: {inst: inst60000133, generic: generic60000009, index: generic_inst_in_def11, kind: checked} +// CHECK:STDOUT: symbolic_constant600000EE: {inst: inst600000EE, generic: generic60000009, index: generic_inst_in_def10, kind: checked} +// CHECK:STDOUT: symbolic_constant600000EF: {inst: inst600000ED, generic: generic60000009, index: generic_inst_in_def9, kind: checked} +// CHECK:STDOUT: symbolic_constant600000F0: {inst: inst600000EC, generic: generic60000009, index: generic_inst_in_def8, kind: checked} +// CHECK:STDOUT: symbolic_constant600000F1: {inst: inst600000EB, generic: generic60000009, index: generic_inst_in_def7, kind: checked} +// CHECK:STDOUT: symbolic_constant600000F2: {inst: inst600000F1, generic: generic60000009, index: generic_inst_in_def6, kind: checked} +// CHECK:STDOUT: symbolic_constant600000F3: {inst: inst60000083, generic: generic60000009, index: generic_inst_in_def5, kind: checked} +// CHECK:STDOUT: symbolic_constant600000F4: {inst: inst60000082, generic: generic60000009, index: generic_inst_in_def4, kind: checked} +// CHECK:STDOUT: symbolic_constant600000F5: {inst: inst60000081, generic: generic60000009, index: generic_inst_in_def3, kind: checked} +// CHECK:STDOUT: symbolic_constant600000F6: {inst: inst60000080, generic: generic60000009, index: generic_inst_in_def2, kind: checked} +// CHECK:STDOUT: symbolic_constant600000F7: {inst: inst60000086, generic: generic60000009, index: generic_inst_in_def1, kind: checked} +// CHECK:STDOUT: symbolic_constant600000F8: {inst: inst60000134, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant600000F9: {inst: inst60000134, generic: generic60000009, index: generic_inst_in_def0, kind: checked} +// CHECK:STDOUT: symbolic_constant600000FA: {inst: inst60000134, generic: generic60000009, index: generic_inst_in_def0, kind: checked} +// CHECK:STDOUT: symbolic_constant600000FB: {inst: inst60000086, generic: generic60000009, index: generic_inst_in_def1, kind: checked} +// CHECK:STDOUT: symbolic_constant600000FC: {inst: inst60000080, generic: generic60000009, index: generic_inst_in_def2, kind: checked} +// CHECK:STDOUT: symbolic_constant600000FD: {inst: inst60000081, generic: generic60000009, index: generic_inst_in_def3, kind: checked} +// CHECK:STDOUT: symbolic_constant600000FE: {inst: inst60000082, generic: generic60000009, index: generic_inst_in_def4, kind: checked} +// CHECK:STDOUT: symbolic_constant600000FF: {inst: inst60000083, generic: generic60000009, index: generic_inst_in_def5, kind: checked} +// CHECK:STDOUT: symbolic_constant60000100: {inst: inst600000F1, generic: generic60000009, index: generic_inst_in_def6, kind: checked} +// CHECK:STDOUT: symbolic_constant60000101: {inst: inst600000EB, generic: generic60000009, index: generic_inst_in_def7, kind: checked} +// CHECK:STDOUT: symbolic_constant60000102: {inst: inst600000EC, generic: generic60000009, index: generic_inst_in_def8, kind: checked} +// CHECK:STDOUT: symbolic_constant60000103: {inst: inst600000ED, generic: generic60000009, index: generic_inst_in_def9, kind: checked} +// CHECK:STDOUT: symbolic_constant60000104: {inst: inst600000EE, generic: generic60000009, index: generic_inst_in_def10, kind: checked} +// CHECK:STDOUT: symbolic_constant60000105: {inst: inst60000133, generic: generic60000009, index: generic_inst_in_def11, kind: checked} +// CHECK:STDOUT: symbolic_constant60000106: {inst: inst6000012D, generic: generic60000009, index: generic_inst_in_def12, kind: checked} +// CHECK:STDOUT: symbolic_constant60000107: {inst: inst6000012E, generic: generic60000009, index: generic_inst_in_def13, kind: checked} +// CHECK:STDOUT: symbolic_constant60000108: {inst: inst6000012F, generic: generic60000009, index: generic_inst_in_def14, kind: checked} +// CHECK:STDOUT: symbolic_constant60000109: {inst: inst60000130, generic: generic60000009, index: generic_inst_in_def15, kind: checked} +// CHECK:STDOUT: symbolic_constant6000010A: {inst: inst60000111, generic: generic60000008, index: generic_inst_in_decl7, kind: checked} +// CHECK:STDOUT: symbolic_constant6000010B: {inst: inst60000110, generic: generic60000008, index: generic_inst_in_decl6, kind: checked} +// CHECK:STDOUT: symbolic_constant6000010C: {inst: inst600000D1, generic: generic60000008, index: generic_inst_in_decl5, kind: checked} +// CHECK:STDOUT: symbolic_constant6000010D: {inst: inst6000006B, generic: generic60000008, index: generic_inst_in_decl4, kind: checked} +// CHECK:STDOUT: symbolic_constant6000010E: {inst: inst60000119, generic: generic60000008, index: generic_inst_in_decl3, kind: checked} +// CHECK:STDOUT: symbolic_constant6000010F: {inst: inst6000010F, generic: generic60000008, index: generic_inst_in_decl2, kind: checked} +// CHECK:STDOUT: symbolic_constant60000110: {inst: inst600000D0, generic: generic60000008, index: generic_inst_in_decl1, kind: checked} +// CHECK:STDOUT: symbolic_constant60000111: {inst: inst6000006A, generic: generic60000008, index: generic_inst_in_decl0, kind: checked} +// CHECK:STDOUT: symbolic_constant60000112: {inst: inst6000006A, generic: generic60000008, index: generic_inst_in_decl0, kind: checked} +// CHECK:STDOUT: symbolic_constant60000113: {inst: inst600000D0, generic: generic60000008, index: generic_inst_in_decl1, kind: checked} +// CHECK:STDOUT: symbolic_constant60000114: {inst: inst6000010F, generic: generic60000008, index: generic_inst_in_decl2, kind: checked} +// CHECK:STDOUT: symbolic_constant60000115: {inst: inst60000119, generic: generic60000008, index: generic_inst_in_decl3, kind: checked} +// CHECK:STDOUT: symbolic_constant60000116: {inst: inst6000006B, generic: generic60000008, index: generic_inst_in_decl4, kind: checked} +// CHECK:STDOUT: symbolic_constant60000117: {inst: inst600000D1, generic: generic60000008, index: generic_inst_in_decl5, kind: checked} +// CHECK:STDOUT: symbolic_constant60000118: {inst: inst60000110, generic: generic60000008, index: generic_inst_in_decl6, kind: checked} +// CHECK:STDOUT: symbolic_constant60000119: {inst: inst60000111, generic: generic60000008, index: generic_inst_in_decl7, kind: checked} +// CHECK:STDOUT: symbolic_constant6000011A: {inst: inst60000114, generic: generic60000008, index: generic_inst_in_decl8, kind: checked} +// CHECK:STDOUT: symbolic_constant6000011B: {inst: inst60000117, generic: generic60000008, index: generic_inst_in_def1, kind: checked} +// CHECK:STDOUT: symbolic_constant6000011C: {inst: inst60000116, generic: generic60000008, index: generic_inst_in_def0, kind: checked} +// CHECK:STDOUT: symbolic_constant6000011D: {inst: inst60000117, generic: generic60000008, index: generic_inst_in_def1, kind: checked} +// CHECK:STDOUT: symbolic_constant6000011E: {inst: inst600000AD, generic: generic60000004, index: generic_inst_in_decl2, kind: checked} +// CHECK:STDOUT: symbolic_constant6000011F: {inst: inst60000159, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant60000120: {inst: inst60000159, generic: generic60000000, index: generic_inst_in_def2, kind: checked} +// CHECK:STDOUT: symbolic_constant60000121: {inst: inst6000015B, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant60000122: {inst: inst6000015B, generic: generic60000000, index: generic_inst_in_def3, kind: checked} +// CHECK:STDOUT: symbolic_constant60000123: {inst: inst6000015D, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant60000124: {inst: inst6000015E, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant60000125: {inst: inst60000160, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant60000126: {inst: inst6000015D, generic: generic60000000, index: generic_inst_in_def4, kind: checked} +// CHECK:STDOUT: symbolic_constant60000127: {inst: inst6000015E, generic: generic60000000, index: generic_inst_in_def5, kind: checked} +// CHECK:STDOUT: symbolic_constant60000128: {inst: inst60000160, generic: generic60000000, index: generic_inst_in_def6, kind: checked} +// CHECK:STDOUT: symbolic_constant60000129: {inst: inst60000166, generic: generic, index: generic_inst, kind: checked} +// CHECK:STDOUT: symbolic_constant6000012A: {inst: inst60000166, generic: generic60000000, index: generic_inst_in_def7, kind: checked} // CHECK:STDOUT: inst_blocks: // CHECK:STDOUT: inst_block_empty: {} // CHECK:STDOUT: exports: -// CHECK:STDOUT: 0: inst60000038 +// CHECK:STDOUT: 0: inst6000003C // CHECK:STDOUT: imports: -// CHECK:STDOUT: 0: inst60000010 -// CHECK:STDOUT: 1: inst60000048 -// CHECK:STDOUT: 2: inst60000049 -// CHECK:STDOUT: 3: inst6000004C -// CHECK:STDOUT: 4: inst6000004D -// CHECK:STDOUT: 5: inst6000004E -// CHECK:STDOUT: 6: inst60000050 -// CHECK:STDOUT: 7: inst60000052 -// CHECK:STDOUT: 8: inst60000057 -// CHECK:STDOUT: 9: inst60000058 -// CHECK:STDOUT: 10: inst60000059 -// CHECK:STDOUT: 11: inst6000005A -// CHECK:STDOUT: 12: inst6000005B -// CHECK:STDOUT: 13: inst6000005C -// CHECK:STDOUT: 14: inst60000061 -// CHECK:STDOUT: 15: inst60000062 -// CHECK:STDOUT: 16: inst60000066 -// CHECK:STDOUT: 17: inst60000067 -// CHECK:STDOUT: 18: inst60000069 -// CHECK:STDOUT: 19: inst6000006D -// CHECK:STDOUT: 20: inst6000006E -// CHECK:STDOUT: 21: inst6000006F -// CHECK:STDOUT: 22: inst60000070 -// CHECK:STDOUT: 23: inst60000071 -// CHECK:STDOUT: 24: inst60000072 -// CHECK:STDOUT: 25: inst60000085 -// CHECK:STDOUT: 26: inst60000086 -// CHECK:STDOUT: 27: inst60000087 -// CHECK:STDOUT: 28: inst60000088 -// CHECK:STDOUT: 29: inst6000008F -// CHECK:STDOUT: 30: inst60000090 -// CHECK:STDOUT: 31: inst60000091 -// CHECK:STDOUT: 32: inst60000092 -// CHECK:STDOUT: 33: inst60000093 -// CHECK:STDOUT: 34: inst60000094 -// CHECK:STDOUT: 35: inst60000095 -// CHECK:STDOUT: 36: inst60000096 -// CHECK:STDOUT: 37: inst60000097 -// CHECK:STDOUT: 38: inst60000098 -// CHECK:STDOUT: 39: inst60000099 -// CHECK:STDOUT: 40: inst6000009A -// CHECK:STDOUT: 41: inst6000009B -// CHECK:STDOUT: 42: inst6000009C -// CHECK:STDOUT: 43: inst6000009D -// CHECK:STDOUT: 44: inst6000009E -// CHECK:STDOUT: 45: inst6000009F -// CHECK:STDOUT: 46: inst600000A0 -// CHECK:STDOUT: 47: inst600000A1 -// CHECK:STDOUT: 48: inst600000A2 -// CHECK:STDOUT: 49: inst600000A4 -// CHECK:STDOUT: 50: inst600000A5 -// CHECK:STDOUT: 51: inst600000A6 -// CHECK:STDOUT: 52: inst600000A7 -// CHECK:STDOUT: 53: inst600000AB -// CHECK:STDOUT: 54: inst600000AE -// CHECK:STDOUT: 55: inst600000AF -// CHECK:STDOUT: 56: inst600000B0 -// CHECK:STDOUT: 57: inst600000B1 -// CHECK:STDOUT: 58: inst600000B2 -// CHECK:STDOUT: 59: inst600000B3 -// CHECK:STDOUT: 60: inst600000BA -// CHECK:STDOUT: 61: inst600000BB -// CHECK:STDOUT: 62: inst600000BC -// CHECK:STDOUT: 63: inst600000BD -// CHECK:STDOUT: 64: inst600000BE -// CHECK:STDOUT: 65: inst600000BF -// CHECK:STDOUT: 66: inst600000C0 -// CHECK:STDOUT: 67: inst600000C1 -// CHECK:STDOUT: 68: inst600000C2 -// CHECK:STDOUT: 69: inst600000C3 -// CHECK:STDOUT: 70: inst600000C7 -// CHECK:STDOUT: 71: inst600000C8 -// CHECK:STDOUT: 72: inst600000CA -// CHECK:STDOUT: 73: inst600000D0 -// CHECK:STDOUT: 74: inst600000D1 -// CHECK:STDOUT: 75: inst600000D2 -// CHECK:STDOUT: 76: inst600000D3 -// CHECK:STDOUT: 77: inst600000D4 -// CHECK:STDOUT: 78: inst600000D5 -// CHECK:STDOUT: 79: inst600000D6 -// CHECK:STDOUT: 80: inst600000EF -// CHECK:STDOUT: 81: inst600000F0 -// CHECK:STDOUT: 82: inst600000F1 -// CHECK:STDOUT: 83: inst600000F2 -// CHECK:STDOUT: 84: inst600000F3 -// CHECK:STDOUT: 85: inst600000F4 -// CHECK:STDOUT: 86: inst600000FE -// CHECK:STDOUT: 87: inst600000FF -// CHECK:STDOUT: 88: inst60000103 -// CHECK:STDOUT: 89: inst60000104 -// CHECK:STDOUT: 90: inst60000106 -// CHECK:STDOUT: 91: inst6000010C -// CHECK:STDOUT: 92: inst6000010D -// CHECK:STDOUT: 93: inst6000010E -// CHECK:STDOUT: 94: inst6000010F -// CHECK:STDOUT: 95: inst60000110 -// CHECK:STDOUT: 96: inst60000111 -// CHECK:STDOUT: 97: inst60000112 -// CHECK:STDOUT: 98: inst60000113 -// CHECK:STDOUT: 99: inst60000133 -// CHECK:STDOUT: 100: inst60000134 -// CHECK:STDOUT: 101: inst60000135 -// CHECK:STDOUT: 102: inst60000136 -// CHECK:STDOUT: 103: inst60000137 -// CHECK:STDOUT: 104: inst60000138 -// CHECK:STDOUT: 105: inst60000139 -// CHECK:STDOUT: 106: inst6000013A +// CHECK:STDOUT: 0: inst60000011 +// CHECK:STDOUT: 1: inst6000004D +// CHECK:STDOUT: 2: inst6000004E +// CHECK:STDOUT: 3: inst60000051 +// CHECK:STDOUT: 4: inst60000052 +// CHECK:STDOUT: 5: inst60000053 +// CHECK:STDOUT: 6: inst60000055 +// CHECK:STDOUT: 7: inst60000057 +// CHECK:STDOUT: 8: inst6000005C +// CHECK:STDOUT: 9: inst6000005D +// CHECK:STDOUT: 10: inst6000005E +// CHECK:STDOUT: 11: inst6000005F +// CHECK:STDOUT: 12: inst60000061 +// CHECK:STDOUT: 13: inst60000062 +// CHECK:STDOUT: 14: inst60000068 +// CHECK:STDOUT: 15: inst60000069 +// CHECK:STDOUT: 16: inst6000006D +// CHECK:STDOUT: 17: inst6000006E +// CHECK:STDOUT: 18: inst60000070 +// CHECK:STDOUT: 19: inst60000074 +// CHECK:STDOUT: 20: inst60000075 +// CHECK:STDOUT: 21: inst60000076 +// CHECK:STDOUT: 22: inst60000077 +// CHECK:STDOUT: 23: inst60000079 +// CHECK:STDOUT: 24: inst6000007A +// CHECK:STDOUT: 25: inst6000008F +// CHECK:STDOUT: 26: inst60000090 +// CHECK:STDOUT: 27: inst60000091 +// CHECK:STDOUT: 28: inst60000092 +// CHECK:STDOUT: 29: inst60000099 +// CHECK:STDOUT: 30: inst6000009A +// CHECK:STDOUT: 31: inst6000009B +// CHECK:STDOUT: 32: inst6000009C +// CHECK:STDOUT: 33: inst6000009D +// CHECK:STDOUT: 34: inst6000009E +// CHECK:STDOUT: 35: inst6000009F +// CHECK:STDOUT: 36: inst600000A0 +// CHECK:STDOUT: 37: inst600000A1 +// CHECK:STDOUT: 38: inst600000A2 +// CHECK:STDOUT: 39: inst600000A3 +// CHECK:STDOUT: 40: inst600000A4 +// CHECK:STDOUT: 41: inst600000A5 +// CHECK:STDOUT: 42: inst600000A6 +// CHECK:STDOUT: 43: inst600000A7 +// CHECK:STDOUT: 44: inst600000A8 +// CHECK:STDOUT: 45: inst600000A9 +// CHECK:STDOUT: 46: inst600000AA +// CHECK:STDOUT: 47: inst600000AB +// CHECK:STDOUT: 48: inst600000AC +// CHECK:STDOUT: 49: inst600000AE +// CHECK:STDOUT: 50: inst600000AF +// CHECK:STDOUT: 51: inst600000B0 +// CHECK:STDOUT: 52: inst600000B1 +// CHECK:STDOUT: 53: inst600000B5 +// CHECK:STDOUT: 54: inst600000B8 +// CHECK:STDOUT: 55: inst600000B9 +// CHECK:STDOUT: 56: inst600000BA +// CHECK:STDOUT: 57: inst600000BB +// CHECK:STDOUT: 58: inst600000BD +// CHECK:STDOUT: 59: inst600000BE +// CHECK:STDOUT: 60: inst600000C6 +// CHECK:STDOUT: 61: inst600000C7 +// CHECK:STDOUT: 62: inst600000C8 +// CHECK:STDOUT: 63: inst600000C9 +// CHECK:STDOUT: 64: inst600000CA +// CHECK:STDOUT: 65: inst600000CB +// CHECK:STDOUT: 66: inst600000CC +// CHECK:STDOUT: 67: inst600000CD +// CHECK:STDOUT: 68: inst600000CE +// CHECK:STDOUT: 69: inst600000CF +// CHECK:STDOUT: 70: inst600000D3 +// CHECK:STDOUT: 71: inst600000D4 +// CHECK:STDOUT: 72: inst600000D6 +// CHECK:STDOUT: 73: inst600000DC +// CHECK:STDOUT: 74: inst600000DD +// CHECK:STDOUT: 75: inst600000DE +// CHECK:STDOUT: 76: inst600000DF +// CHECK:STDOUT: 77: inst600000E1 +// CHECK:STDOUT: 78: inst600000E2 +// CHECK:STDOUT: 79: inst600000E3 +// CHECK:STDOUT: 80: inst600000FE +// CHECK:STDOUT: 81: inst600000FF +// CHECK:STDOUT: 82: inst60000100 +// CHECK:STDOUT: 83: inst60000101 +// CHECK:STDOUT: 84: inst60000102 +// CHECK:STDOUT: 85: inst60000103 +// CHECK:STDOUT: 86: inst6000010D +// CHECK:STDOUT: 87: inst6000010E +// CHECK:STDOUT: 88: inst60000112 +// CHECK:STDOUT: 89: inst60000113 +// CHECK:STDOUT: 90: inst60000115 +// CHECK:STDOUT: 91: inst6000011B +// CHECK:STDOUT: 92: inst6000011C +// CHECK:STDOUT: 93: inst6000011D +// CHECK:STDOUT: 94: inst6000011E +// CHECK:STDOUT: 95: inst60000120 +// CHECK:STDOUT: 96: inst60000121 +// CHECK:STDOUT: 97: inst60000122 +// CHECK:STDOUT: 98: inst60000123 +// CHECK:STDOUT: 99: inst60000145 +// CHECK:STDOUT: 100: inst60000146 +// CHECK:STDOUT: 101: inst60000147 +// CHECK:STDOUT: 102: inst60000148 +// CHECK:STDOUT: 103: inst60000149 +// CHECK:STDOUT: 104: inst6000014A +// CHECK:STDOUT: 105: inst6000014B +// CHECK:STDOUT: 106: inst6000014C // CHECK:STDOUT: global_init: {} // CHECK:STDOUT: inst_block60000004: -// CHECK:STDOUT: 0: inst60000012 +// CHECK:STDOUT: 0: inst60000013 // CHECK:STDOUT: inst_block60000005: -// CHECK:STDOUT: 0: inst60000018 -// CHECK:STDOUT: inst_block60000006: // CHECK:STDOUT: 0: inst60000019 -// CHECK:STDOUT: 1: inst6000001A +// CHECK:STDOUT: inst_block60000006: +// CHECK:STDOUT: 0: inst6000001A +// CHECK:STDOUT: 1: inst6000001B // CHECK:STDOUT: inst_block60000007: -// CHECK:STDOUT: 0: inst60000021 +// CHECK:STDOUT: 0: inst60000022 // CHECK:STDOUT: inst_block60000008: -// CHECK:STDOUT: 0: inst60000023 -// CHECK:STDOUT: 1: inst60000025 +// CHECK:STDOUT: 0: inst60000024 +// CHECK:STDOUT: 1: inst60000026 // CHECK:STDOUT: inst_block60000009: // CHECK:STDOUT: 0: inst(TypeType) -// CHECK:STDOUT: 1: inst60000024 +// CHECK:STDOUT: 1: inst60000025 // CHECK:STDOUT: inst_block6000000A: -// CHECK:STDOUT: 0: inst6000001B -// CHECK:STDOUT: 1: inst60000026 +// CHECK:STDOUT: 0: inst6000001C +// CHECK:STDOUT: 1: inst60000027 // CHECK:STDOUT: inst_block6000000B: -// CHECK:STDOUT: 0: inst6000001C -// CHECK:STDOUT: 1: inst60000026 +// CHECK:STDOUT: 0: inst6000001D +// CHECK:STDOUT: 1: inst60000027 // CHECK:STDOUT: inst_block6000000C: -// CHECK:STDOUT: 0: inst6000001B -// CHECK:STDOUT: 1: inst6000002C -// CHECK:STDOUT: inst_block6000000D: -// CHECK:STDOUT: 0: inst6000001B -// CHECK:STDOUT: 1: inst60000024 -// CHECK:STDOUT: inst_block6000000E: // CHECK:STDOUT: 0: inst6000001C -// CHECK:STDOUT: 1: inst60000024 +// CHECK:STDOUT: 1: inst6000002D +// CHECK:STDOUT: inst_block6000000D: +// CHECK:STDOUT: 0: inst6000001C +// CHECK:STDOUT: 1: inst60000025 +// CHECK:STDOUT: inst_block6000000E: +// CHECK:STDOUT: 0: inst6000001D +// CHECK:STDOUT: 1: inst60000025 // CHECK:STDOUT: inst_block6000000F: -// CHECK:STDOUT: 0: inst60000033 +// CHECK:STDOUT: 0: inst60000037 // CHECK:STDOUT: inst_block60000010: -// CHECK:STDOUT: 0: inst60000034 -// CHECK:STDOUT: 1: inst60000036 +// CHECK:STDOUT: 0: inst60000038 +// CHECK:STDOUT: 1: inst6000003A // CHECK:STDOUT: inst_block60000011: -// CHECK:STDOUT: 0: inst60000018 -// CHECK:STDOUT: 1: inst6000001F -// CHECK:STDOUT: 2: inst60000021 -// CHECK:STDOUT: 3: inst60000031 -// CHECK:STDOUT: 4: inst60000033 +// CHECK:STDOUT: 0: inst60000019 +// CHECK:STDOUT: 1: inst60000020 +// CHECK:STDOUT: 2: inst60000022 +// CHECK:STDOUT: 3: inst60000035 +// CHECK:STDOUT: 4: inst60000037 // CHECK:STDOUT: inst_block60000012: -// CHECK:STDOUT: 0: inst60000022 -// CHECK:STDOUT: 1: inst60000023 -// CHECK:STDOUT: 2: inst60000025 -// CHECK:STDOUT: 3: inst60000028 -// CHECK:STDOUT: 4: inst6000002C -// CHECK:STDOUT: 5: inst6000002E -// CHECK:STDOUT: 6: inst60000012 -// CHECK:STDOUT: 7: inst60000014 -// CHECK:STDOUT: 8: inst60000034 -// CHECK:STDOUT: 9: inst60000035 -// CHECK:STDOUT: 10: inst6000001D -// CHECK:STDOUT: 11: inst60000036 -// CHECK:STDOUT: 12: inst60000037 -// CHECK:STDOUT: inst_block60000013: -// CHECK:STDOUT: 0: inst60000014 -// CHECK:STDOUT: inst_block60000014: -// CHECK:STDOUT: 0: inst60000015 -// CHECK:STDOUT: inst_block60000015: -// CHECK:STDOUT: 0: inst60000016 -// CHECK:STDOUT: 1: inst6000001C -// CHECK:STDOUT: 2: inst60000020 -// CHECK:STDOUT: 3: inst6000002A -// CHECK:STDOUT: 4: inst6000002F -// CHECK:STDOUT: 5: inst60000032 -// CHECK:STDOUT: inst_block60000016: -// CHECK:STDOUT: 0: inst60000015 -// CHECK:STDOUT: 1: inst6000001B -// CHECK:STDOUT: 2: inst6000001E +// CHECK:STDOUT: 0: inst60000023 +// CHECK:STDOUT: 1: inst60000024 +// CHECK:STDOUT: 2: inst60000026 // CHECK:STDOUT: 3: inst60000029 // CHECK:STDOUT: 4: inst6000002D -// CHECK:STDOUT: 5: inst60000030 +// CHECK:STDOUT: 5: inst6000002F +// CHECK:STDOUT: 6: inst60000031 +// CHECK:STDOUT: 7: inst60000013 +// CHECK:STDOUT: 8: inst60000015 +// CHECK:STDOUT: 9: inst60000038 +// CHECK:STDOUT: 10: inst60000039 +// CHECK:STDOUT: 11: inst6000001E +// CHECK:STDOUT: 12: inst6000003A +// CHECK:STDOUT: 13: inst6000003B +// CHECK:STDOUT: inst_block60000013: +// CHECK:STDOUT: 0: inst60000015 +// CHECK:STDOUT: inst_block60000014: +// CHECK:STDOUT: 0: inst60000016 +// CHECK:STDOUT: inst_block60000015: +// CHECK:STDOUT: 0: inst60000017 +// CHECK:STDOUT: 1: inst6000001D +// CHECK:STDOUT: 2: inst60000021 +// CHECK:STDOUT: 3: inst6000002B +// CHECK:STDOUT: 4: inst60000030 +// CHECK:STDOUT: 5: inst60000033 +// CHECK:STDOUT: 6: inst60000036 +// CHECK:STDOUT: inst_block60000016: +// CHECK:STDOUT: 0: inst60000016 +// CHECK:STDOUT: 1: inst6000001C +// CHECK:STDOUT: 2: inst6000001F +// CHECK:STDOUT: 3: inst6000002A +// CHECK:STDOUT: 4: inst6000002E +// CHECK:STDOUT: 5: inst60000032 +// CHECK:STDOUT: 6: inst60000034 // CHECK:STDOUT: inst_block60000017: -// CHECK:STDOUT: 0: inst60000042 -// CHECK:STDOUT: 1: inst60000043 -// CHECK:STDOUT: 2: inst60000044 -// CHECK:STDOUT: 3: inst6000014D -// CHECK:STDOUT: 4: inst60000152 -// CHECK:STDOUT: 5: inst60000153 -// CHECK:STDOUT: 6: inst60000156 -// CHECK:STDOUT: 7: inst60000158 -// CHECK:STDOUT: 8: inst60000046 -// CHECK:STDOUT: 9: inst60000159 -// CHECK:STDOUT: 10: inst6000015A -// CHECK:STDOUT: 11: inst6000015B -// CHECK:STDOUT: 12: inst6000015C -// CHECK:STDOUT: 13: inst6000015D -// CHECK:STDOUT: 14: inst6000015E -// CHECK:STDOUT: 15: inst6000015F +// CHECK:STDOUT: 0: inst60000047 +// CHECK:STDOUT: 1: inst60000048 +// CHECK:STDOUT: 2: inst60000049 +// CHECK:STDOUT: 3: inst6000015F +// CHECK:STDOUT: 4: inst60000164 +// CHECK:STDOUT: 5: inst60000165 +// CHECK:STDOUT: 6: inst60000168 +// CHECK:STDOUT: 7: inst6000016A +// CHECK:STDOUT: 8: inst6000004B +// CHECK:STDOUT: 9: inst6000016B +// CHECK:STDOUT: 10: inst6000016C +// CHECK:STDOUT: 11: inst6000016D +// CHECK:STDOUT: 12: inst6000016E +// CHECK:STDOUT: 13: inst6000016F +// CHECK:STDOUT: 14: inst60000170 +// CHECK:STDOUT: 15: inst60000171 // CHECK:STDOUT: inst_block60000018: -// CHECK:STDOUT: 0: inst60000042 -// CHECK:STDOUT: 1: inst60000043 +// CHECK:STDOUT: 0: inst60000047 +// CHECK:STDOUT: 1: inst60000048 // CHECK:STDOUT: inst_block60000019: -// CHECK:STDOUT: 0: inst6000004E +// CHECK:STDOUT: 0: inst60000053 // CHECK:STDOUT: inst_block6000001A: -// CHECK:STDOUT: 0: inst6000005A +// CHECK:STDOUT: 0: inst6000005F // CHECK:STDOUT: inst_block6000001B: -// CHECK:STDOUT: 0: inst60000058 -// CHECK:STDOUT: inst_block6000001C: -// CHECK:STDOUT: 0: inst6000005C -// CHECK:STDOUT: inst_block6000001D: // CHECK:STDOUT: 0: inst6000005D -// CHECK:STDOUT: 1: inst6000005E -// CHECK:STDOUT: 2: inst6000005F -// CHECK:STDOUT: inst_block6000001E: -// CHECK:STDOUT: 0: inst6000004B -// CHECK:STDOUT: inst_block6000001F: -// CHECK:STDOUT: 0: inst6000004B -// CHECK:STDOUT: 1: inst60000055 -// CHECK:STDOUT: 2: inst60000056 -// CHECK:STDOUT: inst_block60000020: -// CHECK:STDOUT: 0: inst60000066 -// CHECK:STDOUT: inst_block60000021: -// CHECK:STDOUT: 0: inst60000063 -// CHECK:STDOUT: inst_block60000022: +// CHECK:STDOUT: inst_block6000001C: +// CHECK:STDOUT: 0: inst60000062 +// CHECK:STDOUT: inst_block6000001D: // CHECK:STDOUT: 0: inst60000063 // CHECK:STDOUT: 1: inst60000064 // CHECK:STDOUT: 2: inst60000065 -// CHECK:STDOUT: 3: inst60000068 -// CHECK:STDOUT: inst_block60000023: +// CHECK:STDOUT: 3: inst60000066 +// CHECK:STDOUT: inst_block6000001E: +// CHECK:STDOUT: 0: inst60000050 +// CHECK:STDOUT: inst_block6000001F: +// CHECK:STDOUT: 0: inst60000050 +// CHECK:STDOUT: 1: inst6000005A +// CHECK:STDOUT: 2: inst6000005B +// CHECK:STDOUT: 3: inst60000060 +// CHECK:STDOUT: inst_block60000020: +// CHECK:STDOUT: 0: inst6000006D +// CHECK:STDOUT: inst_block60000021: +// CHECK:STDOUT: 0: inst6000006A +// CHECK:STDOUT: inst_block60000022: // CHECK:STDOUT: 0: inst6000006A // CHECK:STDOUT: 1: inst6000006B +// CHECK:STDOUT: 2: inst6000006C +// CHECK:STDOUT: 3: inst6000006F +// CHECK:STDOUT: inst_block60000023: +// CHECK:STDOUT: 0: inst60000071 +// CHECK:STDOUT: 1: inst60000072 // CHECK:STDOUT: inst_block60000024: -// CHECK:STDOUT: 0: inst60000070 +// CHECK:STDOUT: 0: inst60000077 // CHECK:STDOUT: inst_block60000025: -// CHECK:STDOUT: 0: inst6000006E +// CHECK:STDOUT: 0: inst60000075 // CHECK:STDOUT: inst_block60000026: -// CHECK:STDOUT: 0: inst60000072 +// CHECK:STDOUT: 0: inst6000007A // CHECK:STDOUT: inst_block60000027: -// CHECK:STDOUT: 0: inst60000073 -// CHECK:STDOUT: 1: inst60000074 -// CHECK:STDOUT: 2: inst60000075 -// CHECK:STDOUT: 3: inst60000076 +// CHECK:STDOUT: 0: inst6000007B +// CHECK:STDOUT: 1: inst6000007C +// CHECK:STDOUT: 2: inst6000007D +// CHECK:STDOUT: 3: inst6000007E +// CHECK:STDOUT: 4: inst6000007F // CHECK:STDOUT: inst_block60000028: -// CHECK:STDOUT: 0: inst60000063 -// CHECK:STDOUT: 1: inst60000064 -// CHECK:STDOUT: 2: inst6000007B +// CHECK:STDOUT: 0: inst6000006A +// CHECK:STDOUT: 1: inst6000006B +// CHECK:STDOUT: 2: inst60000085 +// CHECK:STDOUT: 3: inst60000084 // CHECK:STDOUT: inst_block60000029: -// CHECK:STDOUT: 0: inst60000073 +// CHECK:STDOUT: 0: inst6000007B // CHECK:STDOUT: inst_block6000002A: -// CHECK:STDOUT: 0: inst6000007E -// CHECK:STDOUT: 1: inst6000007F -// CHECK:STDOUT: 2: inst60000080 -// CHECK:STDOUT: 3: inst60000081 -// CHECK:STDOUT: 4: inst60000082 -// CHECK:STDOUT: 5: inst60000083 -// CHECK:STDOUT: inst_block6000002B: -// CHECK:STDOUT: 0: inst60000063 -// CHECK:STDOUT: 1: inst60000064 -// CHECK:STDOUT: 2: inst60000065 -// CHECK:STDOUT: 3: inst6000006C -// CHECK:STDOUT: inst_block6000002C: -// CHECK:STDOUT: 0: inst60000085 -// CHECK:STDOUT: inst_block6000002D: // CHECK:STDOUT: 0: inst60000088 +// CHECK:STDOUT: 1: inst60000089 +// CHECK:STDOUT: 2: inst6000008A +// CHECK:STDOUT: 3: inst6000008B +// CHECK:STDOUT: 4: inst6000008C +// CHECK:STDOUT: 5: inst6000008D +// CHECK:STDOUT: inst_block6000002B: +// CHECK:STDOUT: 0: inst6000006A +// CHECK:STDOUT: 1: inst6000006B +// CHECK:STDOUT: 2: inst6000006C +// CHECK:STDOUT: 3: inst60000073 +// CHECK:STDOUT: 4: inst60000078 +// CHECK:STDOUT: inst_block6000002C: +// CHECK:STDOUT: 0: inst6000008F +// CHECK:STDOUT: inst_block6000002D: +// CHECK:STDOUT: 0: inst60000092 // CHECK:STDOUT: inst_block6000002E: -// CHECK:STDOUT: 0: inst60000089 +// CHECK:STDOUT: 0: inst60000093 // CHECK:STDOUT: inst_block6000002F: -// CHECK:STDOUT: 0: inst60000089 -// CHECK:STDOUT: 1: inst6000008A -// CHECK:STDOUT: 2: inst6000008B -// CHECK:STDOUT: 3: inst6000008C +// CHECK:STDOUT: 0: inst60000093 +// CHECK:STDOUT: 1: inst60000094 +// CHECK:STDOUT: 2: inst60000095 +// CHECK:STDOUT: 3: inst60000096 // CHECK:STDOUT: inst_block60000030: -// CHECK:STDOUT: 0: inst60000089 +// CHECK:STDOUT: 0: inst60000093 // CHECK:STDOUT: inst_block60000031: -// CHECK:STDOUT: 0: inst6000008D -// CHECK:STDOUT: 1: inst6000008E +// CHECK:STDOUT: 0: inst60000097 +// CHECK:STDOUT: 1: inst60000098 // CHECK:STDOUT: inst_block60000032: -// CHECK:STDOUT: 0: inst600000A1 +// CHECK:STDOUT: 0: inst600000AB // CHECK:STDOUT: inst_block60000033: -// CHECK:STDOUT: 0: inst60000015 -// CHECK:STDOUT: 1: inst6000001B -// CHECK:STDOUT: 2: inst600000A3 +// CHECK:STDOUT: 0: inst60000016 +// CHECK:STDOUT: 1: inst6000001C +// CHECK:STDOUT: 2: inst600000AD // CHECK:STDOUT: inst_block60000034: -// CHECK:STDOUT: 0: inst600000A4 +// CHECK:STDOUT: 0: inst600000AE // CHECK:STDOUT: inst_block60000035: -// CHECK:STDOUT: 0: inst600000A7 -// CHECK:STDOUT: inst_block60000036: -// CHECK:STDOUT: 0: inst600000A8 -// CHECK:STDOUT: inst_block60000037: -// CHECK:STDOUT: 0: inst600000A8 -// CHECK:STDOUT: 1: inst600000A9 -// CHECK:STDOUT: 2: inst600000AA -// CHECK:STDOUT: inst_block60000038: // CHECK:STDOUT: 0: inst600000B1 +// CHECK:STDOUT: inst_block60000036: +// CHECK:STDOUT: 0: inst600000B2 +// CHECK:STDOUT: inst_block60000037: +// CHECK:STDOUT: 0: inst600000B2 +// CHECK:STDOUT: 1: inst600000B3 +// CHECK:STDOUT: 2: inst600000B4 +// CHECK:STDOUT: inst_block60000038: +// CHECK:STDOUT: 0: inst600000BB // CHECK:STDOUT: inst_block60000039: -// CHECK:STDOUT: 0: inst600000AF +// CHECK:STDOUT: 0: inst600000B9 // CHECK:STDOUT: inst_block6000003A: -// CHECK:STDOUT: 0: inst600000B3 +// CHECK:STDOUT: 0: inst600000BE // CHECK:STDOUT: inst_block6000003B: -// CHECK:STDOUT: 0: inst600000B4 -// CHECK:STDOUT: 1: inst600000B5 -// CHECK:STDOUT: 2: inst600000B6 +// CHECK:STDOUT: 0: inst600000BF +// CHECK:STDOUT: 1: inst600000C0 +// CHECK:STDOUT: 2: inst600000C1 +// CHECK:STDOUT: 3: inst600000C2 // CHECK:STDOUT: inst_block6000003C: -// CHECK:STDOUT: 0: inst60000015 -// CHECK:STDOUT: 1: inst6000001B -// CHECK:STDOUT: 2: inst6000001E +// CHECK:STDOUT: 0: inst60000016 +// CHECK:STDOUT: 1: inst6000001C +// CHECK:STDOUT: 2: inst6000001F +// CHECK:STDOUT: 3: inst600000BC // CHECK:STDOUT: inst_block6000003D: -// CHECK:STDOUT: 0: inst600000A8 +// CHECK:STDOUT: 0: inst600000B2 // CHECK:STDOUT: inst_block6000003E: -// CHECK:STDOUT: 0: inst600000B7 -// CHECK:STDOUT: 1: inst600000B8 -// CHECK:STDOUT: 2: inst600000B9 +// CHECK:STDOUT: 0: inst600000C3 +// CHECK:STDOUT: 1: inst600000C4 +// CHECK:STDOUT: 2: inst600000C5 // CHECK:STDOUT: inst_block6000003F: -// CHECK:STDOUT: 0: inst60000064 -// CHECK:STDOUT: 1: inst600000C5 +// CHECK:STDOUT: 0: inst6000006B +// CHECK:STDOUT: 1: inst600000D1 // CHECK:STDOUT: inst_block60000040: -// CHECK:STDOUT: 0: inst600000C7 -// CHECK:STDOUT: inst_block60000041: -// CHECK:STDOUT: 0: inst60000063 -// CHECK:STDOUT: 1: inst600000C4 -// CHECK:STDOUT: inst_block60000042: -// CHECK:STDOUT: 0: inst6000004A -// CHECK:STDOUT: 1: inst6000004A -// CHECK:STDOUT: inst_block60000043: -// CHECK:STDOUT: 0: inst60000063 -// CHECK:STDOUT: 1: inst600000C4 -// CHECK:STDOUT: 2: inst600000CE -// CHECK:STDOUT: 3: inst60000064 -// CHECK:STDOUT: 4: inst600000C5 -// CHECK:STDOUT: 5: inst600000C6 -// CHECK:STDOUT: 6: inst600000C9 -// CHECK:STDOUT: inst_block60000044: -// CHECK:STDOUT: 0: inst600000CB -// CHECK:STDOUT: 1: inst600000CC -// CHECK:STDOUT: inst_block60000045: // CHECK:STDOUT: 0: inst600000D3 -// CHECK:STDOUT: inst_block60000046: -// CHECK:STDOUT: 0: inst600000D1 -// CHECK:STDOUT: inst_block60000047: -// CHECK:STDOUT: 0: inst600000D5 -// CHECK:STDOUT: 1: inst600000D6 -// CHECK:STDOUT: inst_block60000048: -// CHECK:STDOUT: 0: inst600000D8 -// CHECK:STDOUT: 1: inst600000DA -// CHECK:STDOUT: inst_block60000049: +// CHECK:STDOUT: inst_block60000041: +// CHECK:STDOUT: 0: inst6000006A +// CHECK:STDOUT: 1: inst600000D0 +// CHECK:STDOUT: inst_block60000042: +// CHECK:STDOUT: 0: inst6000004F +// CHECK:STDOUT: 1: inst6000004F +// CHECK:STDOUT: inst_block60000043: +// CHECK:STDOUT: 0: inst6000006A +// CHECK:STDOUT: 1: inst600000D0 +// CHECK:STDOUT: 2: inst600000DA +// CHECK:STDOUT: 3: inst6000006B +// CHECK:STDOUT: 4: inst600000D1 +// CHECK:STDOUT: 5: inst600000D2 +// CHECK:STDOUT: 6: inst600000D5 +// CHECK:STDOUT: inst_block60000044: // CHECK:STDOUT: 0: inst600000D7 // CHECK:STDOUT: 1: inst600000D8 -// CHECK:STDOUT: 2: inst600000D9 -// CHECK:STDOUT: 3: inst600000DA -// CHECK:STDOUT: 4: inst600000DB -// CHECK:STDOUT: 5: inst600000DC -// CHECK:STDOUT: inst_block6000004A: -// CHECK:STDOUT: 0: inst600000C4 -// CHECK:STDOUT: inst_block6000004B: -// CHECK:STDOUT: 0: inst600000C4 -// CHECK:STDOUT: 1: inst600000C5 -// CHECK:STDOUT: 2: inst600000E1 -// CHECK:STDOUT: inst_block6000004C: -// CHECK:STDOUT: 0: inst600000D7 -// CHECK:STDOUT: inst_block6000004D: -// CHECK:STDOUT: 0: inst600000D9 -// CHECK:STDOUT: inst_block6000004E: +// CHECK:STDOUT: inst_block60000045: +// CHECK:STDOUT: 0: inst600000DF +// CHECK:STDOUT: inst_block60000046: +// CHECK:STDOUT: 0: inst600000DD +// CHECK:STDOUT: inst_block60000047: +// CHECK:STDOUT: 0: inst600000E2 +// CHECK:STDOUT: 1: inst600000E3 +// CHECK:STDOUT: inst_block60000048: +// CHECK:STDOUT: 0: inst600000E5 +// CHECK:STDOUT: 1: inst600000E7 +// CHECK:STDOUT: inst_block60000049: // CHECK:STDOUT: 0: inst600000E4 // CHECK:STDOUT: 1: inst600000E5 // CHECK:STDOUT: 2: inst600000E6 @@ -1709,203 +1763,227 @@ fn Foo[T:! type](p: T*) -> (T*, ()) { // CHECK:STDOUT: 4: inst600000E8 // CHECK:STDOUT: 5: inst600000E9 // CHECK:STDOUT: 6: inst600000EA -// CHECK:STDOUT: 7: inst600000EB -// CHECK:STDOUT: 8: inst600000EC -// CHECK:STDOUT: 9: inst600000ED -// CHECK:STDOUT: 10: inst600000EE -// CHECK:STDOUT: inst_block6000004F: -// CHECK:STDOUT: 0: inst60000063 -// CHECK:STDOUT: 1: inst60000064 -// CHECK:STDOUT: 2: inst600000C4 -// CHECK:STDOUT: 3: inst600000C5 -// CHECK:STDOUT: 4: inst600000C6 -// CHECK:STDOUT: 5: inst600000CF -// CHECK:STDOUT: inst_block60000050: -// CHECK:STDOUT: 0: inst600000F0 -// CHECK:STDOUT: 1: inst600000EF -// CHECK:STDOUT: inst_block60000051: +// CHECK:STDOUT: inst_block6000004A: +// CHECK:STDOUT: 0: inst600000D0 +// CHECK:STDOUT: inst_block6000004B: +// CHECK:STDOUT: 0: inst600000D0 +// CHECK:STDOUT: 1: inst600000D1 +// CHECK:STDOUT: 2: inst600000F0 +// CHECK:STDOUT: 3: inst600000EF +// CHECK:STDOUT: inst_block6000004C: +// CHECK:STDOUT: 0: inst600000E4 +// CHECK:STDOUT: inst_block6000004D: +// CHECK:STDOUT: 0: inst600000E6 +// CHECK:STDOUT: inst_block6000004E: // CHECK:STDOUT: 0: inst600000F3 // CHECK:STDOUT: 1: inst600000F4 +// CHECK:STDOUT: 2: inst600000F5 +// CHECK:STDOUT: 3: inst600000F6 +// CHECK:STDOUT: 4: inst600000F7 +// CHECK:STDOUT: 5: inst600000F8 +// CHECK:STDOUT: 6: inst600000F9 +// CHECK:STDOUT: 7: inst600000FA +// CHECK:STDOUT: 8: inst600000FB +// CHECK:STDOUT: 9: inst600000FC +// CHECK:STDOUT: 10: inst600000FD +// CHECK:STDOUT: inst_block6000004F: +// CHECK:STDOUT: 0: inst6000006A +// CHECK:STDOUT: 1: inst6000006B +// CHECK:STDOUT: 2: inst600000D0 +// CHECK:STDOUT: 3: inst600000D1 +// CHECK:STDOUT: 4: inst600000D2 +// CHECK:STDOUT: 5: inst600000DB +// CHECK:STDOUT: 6: inst600000E0 +// CHECK:STDOUT: inst_block60000050: +// CHECK:STDOUT: 0: inst600000FF +// CHECK:STDOUT: 1: inst600000FE +// CHECK:STDOUT: inst_block60000051: +// CHECK:STDOUT: 0: inst60000102 +// CHECK:STDOUT: 1: inst60000103 // CHECK:STDOUT: inst_block60000052: -// CHECK:STDOUT: 0: inst600000F5 -// CHECK:STDOUT: 1: inst600000F6 +// CHECK:STDOUT: 0: inst60000104 +// CHECK:STDOUT: 1: inst60000105 // CHECK:STDOUT: inst_block60000053: -// CHECK:STDOUT: 0: inst600000F8 -// CHECK:STDOUT: 1: inst600000F9 -// CHECK:STDOUT: inst_block60000054: -// CHECK:STDOUT: 0: inst600000F5 -// CHECK:STDOUT: 1: inst600000F6 -// CHECK:STDOUT: inst_block60000055: -// CHECK:STDOUT: 0: inst600000F5 -// CHECK:STDOUT: 1: inst600000F6 -// CHECK:STDOUT: 2: inst600000F7 -// CHECK:STDOUT: 3: inst600000F8 -// CHECK:STDOUT: 4: inst600000F9 -// CHECK:STDOUT: 5: inst600000FA -// CHECK:STDOUT: 6: inst600000FB -// CHECK:STDOUT: inst_block60000056: -// CHECK:STDOUT: 0: inst600000F5 -// CHECK:STDOUT: 1: inst600000F6 -// CHECK:STDOUT: inst_block60000057: -// CHECK:STDOUT: 0: inst600000FC -// CHECK:STDOUT: 1: inst600000FD -// CHECK:STDOUT: inst_block60000058: -// CHECK:STDOUT: 0: inst60000064 -// CHECK:STDOUT: 1: inst600000C5 -// CHECK:STDOUT: 2: inst60000101 -// CHECK:STDOUT: inst_block60000059: -// CHECK:STDOUT: 0: inst60000103 -// CHECK:STDOUT: inst_block6000005A: -// CHECK:STDOUT: 0: inst60000063 -// CHECK:STDOUT: 1: inst600000C4 -// CHECK:STDOUT: 2: inst60000100 -// CHECK:STDOUT: inst_block6000005B: -// CHECK:STDOUT: 0: inst6000004A -// CHECK:STDOUT: 1: inst6000004A -// CHECK:STDOUT: 2: inst6000004A -// CHECK:STDOUT: inst_block6000005C: -// CHECK:STDOUT: 0: inst60000063 -// CHECK:STDOUT: 1: inst600000C4 -// CHECK:STDOUT: 2: inst60000100 -// CHECK:STDOUT: 3: inst6000010A -// CHECK:STDOUT: 4: inst60000064 -// CHECK:STDOUT: 5: inst600000C5 -// CHECK:STDOUT: 6: inst60000101 -// CHECK:STDOUT: 7: inst60000102 -// CHECK:STDOUT: 8: inst60000105 -// CHECK:STDOUT: inst_block6000005D: // CHECK:STDOUT: 0: inst60000107 // CHECK:STDOUT: 1: inst60000108 -// CHECK:STDOUT: inst_block6000005E: -// CHECK:STDOUT: 0: inst6000010F -// CHECK:STDOUT: inst_block6000005F: -// CHECK:STDOUT: 0: inst6000010D -// CHECK:STDOUT: inst_block60000060: -// CHECK:STDOUT: 0: inst60000111 -// CHECK:STDOUT: 1: inst60000112 -// CHECK:STDOUT: 2: inst60000113 -// CHECK:STDOUT: inst_block60000061: -// CHECK:STDOUT: 0: inst60000115 -// CHECK:STDOUT: 1: inst60000117 -// CHECK:STDOUT: 2: inst60000119 -// CHECK:STDOUT: inst_block60000062: -// CHECK:STDOUT: 0: inst60000114 -// CHECK:STDOUT: 1: inst60000115 -// CHECK:STDOUT: 2: inst60000116 -// CHECK:STDOUT: 3: inst60000117 -// CHECK:STDOUT: 4: inst60000118 -// CHECK:STDOUT: 5: inst60000119 -// CHECK:STDOUT: 6: inst6000011A -// CHECK:STDOUT: 7: inst6000011B -// CHECK:STDOUT: inst_block60000063: -// CHECK:STDOUT: 0: inst60000100 -// CHECK:STDOUT: inst_block60000064: -// CHECK:STDOUT: 0: inst60000100 -// CHECK:STDOUT: 1: inst60000101 -// CHECK:STDOUT: 2: inst60000120 -// CHECK:STDOUT: inst_block60000065: -// CHECK:STDOUT: 0: inst60000114 -// CHECK:STDOUT: inst_block60000066: +// CHECK:STDOUT: inst_block60000054: +// CHECK:STDOUT: 0: inst60000104 +// CHECK:STDOUT: 1: inst60000105 +// CHECK:STDOUT: inst_block60000055: +// CHECK:STDOUT: 0: inst60000104 +// CHECK:STDOUT: 1: inst60000105 +// CHECK:STDOUT: 2: inst60000106 +// CHECK:STDOUT: 3: inst60000107 +// CHECK:STDOUT: 4: inst60000108 +// CHECK:STDOUT: 5: inst60000109 +// CHECK:STDOUT: 6: inst6000010A +// CHECK:STDOUT: inst_block60000056: +// CHECK:STDOUT: 0: inst60000104 +// CHECK:STDOUT: 1: inst60000105 +// CHECK:STDOUT: inst_block60000057: +// CHECK:STDOUT: 0: inst6000010B +// CHECK:STDOUT: 1: inst6000010C +// CHECK:STDOUT: inst_block60000058: +// CHECK:STDOUT: 0: inst6000006B +// CHECK:STDOUT: 1: inst600000D1 +// CHECK:STDOUT: 2: inst60000110 +// CHECK:STDOUT: inst_block60000059: +// CHECK:STDOUT: 0: inst60000112 +// CHECK:STDOUT: inst_block6000005A: +// CHECK:STDOUT: 0: inst6000006A +// CHECK:STDOUT: 1: inst600000D0 +// CHECK:STDOUT: 2: inst6000010F +// CHECK:STDOUT: inst_block6000005B: +// CHECK:STDOUT: 0: inst6000004F +// CHECK:STDOUT: 1: inst6000004F +// CHECK:STDOUT: 2: inst6000004F +// CHECK:STDOUT: inst_block6000005C: +// CHECK:STDOUT: 0: inst6000006A +// CHECK:STDOUT: 1: inst600000D0 +// CHECK:STDOUT: 2: inst6000010F +// CHECK:STDOUT: 3: inst60000119 +// CHECK:STDOUT: 4: inst6000006B +// CHECK:STDOUT: 5: inst600000D1 +// CHECK:STDOUT: 6: inst60000110 +// CHECK:STDOUT: 7: inst60000111 +// CHECK:STDOUT: 8: inst60000114 +// CHECK:STDOUT: inst_block6000005D: // CHECK:STDOUT: 0: inst60000116 +// CHECK:STDOUT: 1: inst60000117 +// CHECK:STDOUT: inst_block6000005E: +// CHECK:STDOUT: 0: inst6000011E +// CHECK:STDOUT: inst_block6000005F: +// CHECK:STDOUT: 0: inst6000011C +// CHECK:STDOUT: inst_block60000060: +// CHECK:STDOUT: 0: inst60000121 +// CHECK:STDOUT: 1: inst60000122 +// CHECK:STDOUT: 2: inst60000123 +// CHECK:STDOUT: inst_block60000061: +// CHECK:STDOUT: 0: inst60000125 +// CHECK:STDOUT: 1: inst60000127 +// CHECK:STDOUT: 2: inst60000129 +// CHECK:STDOUT: inst_block60000062: +// CHECK:STDOUT: 0: inst60000124 +// CHECK:STDOUT: 1: inst60000125 +// CHECK:STDOUT: 2: inst60000126 +// CHECK:STDOUT: 3: inst60000127 +// CHECK:STDOUT: 4: inst60000128 +// CHECK:STDOUT: 5: inst60000129 +// CHECK:STDOUT: 6: inst6000012A +// CHECK:STDOUT: 7: inst6000012B +// CHECK:STDOUT: 8: inst6000012C +// CHECK:STDOUT: inst_block60000063: +// CHECK:STDOUT: 0: inst6000010F +// CHECK:STDOUT: inst_block60000064: +// CHECK:STDOUT: 0: inst6000010F +// CHECK:STDOUT: 1: inst60000110 +// CHECK:STDOUT: 2: inst60000132 +// CHECK:STDOUT: 3: inst60000131 +// CHECK:STDOUT: inst_block60000065: +// CHECK:STDOUT: 0: inst60000124 +// CHECK:STDOUT: inst_block60000066: +// CHECK:STDOUT: 0: inst60000126 // CHECK:STDOUT: inst_block60000067: -// CHECK:STDOUT: 0: inst60000118 +// CHECK:STDOUT: 0: inst60000128 // CHECK:STDOUT: inst_block60000068: -// CHECK:STDOUT: 0: inst60000123 -// CHECK:STDOUT: 1: inst60000124 -// CHECK:STDOUT: 2: inst60000125 -// CHECK:STDOUT: 3: inst60000126 -// CHECK:STDOUT: 4: inst60000127 -// CHECK:STDOUT: 5: inst60000128 -// CHECK:STDOUT: 6: inst60000129 -// CHECK:STDOUT: 7: inst6000012A -// CHECK:STDOUT: 8: inst6000012B -// CHECK:STDOUT: 9: inst6000012C -// CHECK:STDOUT: 10: inst6000012D -// CHECK:STDOUT: 11: inst6000012E -// CHECK:STDOUT: 12: inst6000012F -// CHECK:STDOUT: 13: inst60000130 -// CHECK:STDOUT: 14: inst60000131 -// CHECK:STDOUT: 15: inst60000132 -// CHECK:STDOUT: inst_block60000069: -// CHECK:STDOUT: 0: inst60000063 -// CHECK:STDOUT: 1: inst60000064 -// CHECK:STDOUT: 2: inst600000C4 -// CHECK:STDOUT: 3: inst600000C5 -// CHECK:STDOUT: 4: inst60000100 -// CHECK:STDOUT: 5: inst60000101 -// CHECK:STDOUT: 6: inst60000102 -// CHECK:STDOUT: 7: inst6000010B -// CHECK:STDOUT: inst_block6000006A: // CHECK:STDOUT: 0: inst60000135 -// CHECK:STDOUT: 1: inst60000134 -// CHECK:STDOUT: 2: inst60000133 +// CHECK:STDOUT: 1: inst60000136 +// CHECK:STDOUT: 2: inst60000137 +// CHECK:STDOUT: 3: inst60000138 +// CHECK:STDOUT: 4: inst60000139 +// CHECK:STDOUT: 5: inst6000013A +// CHECK:STDOUT: 6: inst6000013B +// CHECK:STDOUT: 7: inst6000013C +// CHECK:STDOUT: 8: inst6000013D +// CHECK:STDOUT: 9: inst6000013E +// CHECK:STDOUT: 10: inst6000013F +// CHECK:STDOUT: 11: inst60000140 +// CHECK:STDOUT: 12: inst60000141 +// CHECK:STDOUT: 13: inst60000142 +// CHECK:STDOUT: 14: inst60000143 +// CHECK:STDOUT: 15: inst60000144 +// CHECK:STDOUT: inst_block60000069: +// CHECK:STDOUT: 0: inst6000006A +// CHECK:STDOUT: 1: inst6000006B +// CHECK:STDOUT: 2: inst600000D0 +// CHECK:STDOUT: 3: inst600000D1 +// CHECK:STDOUT: 4: inst6000010F +// CHECK:STDOUT: 5: inst60000110 +// CHECK:STDOUT: 6: inst60000111 +// CHECK:STDOUT: 7: inst6000011A +// CHECK:STDOUT: 8: inst6000011F +// CHECK:STDOUT: inst_block6000006A: +// CHECK:STDOUT: 0: inst60000147 +// CHECK:STDOUT: 1: inst60000146 +// CHECK:STDOUT: 2: inst60000145 // CHECK:STDOUT: inst_block6000006B: -// CHECK:STDOUT: 0: inst60000138 -// CHECK:STDOUT: 1: inst60000139 -// CHECK:STDOUT: 2: inst6000013A -// CHECK:STDOUT: inst_block6000006C: -// CHECK:STDOUT: 0: inst6000013B -// CHECK:STDOUT: 1: inst6000013C -// CHECK:STDOUT: 2: inst6000013D -// CHECK:STDOUT: inst_block6000006D: -// CHECK:STDOUT: 0: inst6000013F -// CHECK:STDOUT: 1: inst60000140 -// CHECK:STDOUT: 2: inst60000141 -// CHECK:STDOUT: inst_block6000006E: -// CHECK:STDOUT: 0: inst6000013B -// CHECK:STDOUT: 1: inst6000013C -// CHECK:STDOUT: 2: inst6000013D -// CHECK:STDOUT: inst_block6000006F: -// CHECK:STDOUT: 0: inst6000013B -// CHECK:STDOUT: 1: inst6000013C -// CHECK:STDOUT: 2: inst6000013D -// CHECK:STDOUT: 3: inst6000013E -// CHECK:STDOUT: 4: inst6000013F -// CHECK:STDOUT: 5: inst60000140 -// CHECK:STDOUT: 6: inst60000141 -// CHECK:STDOUT: 7: inst60000142 -// CHECK:STDOUT: 8: inst60000143 -// CHECK:STDOUT: inst_block60000070: -// CHECK:STDOUT: 0: inst6000013B -// CHECK:STDOUT: 1: inst6000013C -// CHECK:STDOUT: 2: inst6000013D -// CHECK:STDOUT: inst_block60000071: -// CHECK:STDOUT: 0: inst60000144 -// CHECK:STDOUT: 1: inst60000145 -// CHECK:STDOUT: inst_block60000072: -// CHECK:STDOUT: 0: inst600000AC -// CHECK:STDOUT: 1: inst600000AD -// CHECK:STDOUT: 2: inst60000040 -// CHECK:STDOUT: inst_block60000073: -// CHECK:STDOUT: 0: inst60000016 -// CHECK:STDOUT: inst_block60000074: -// CHECK:STDOUT: 0: inst60000149 -// CHECK:STDOUT: inst_block60000075: // CHECK:STDOUT: 0: inst6000014A +// CHECK:STDOUT: 1: inst6000014B +// CHECK:STDOUT: 2: inst6000014C +// CHECK:STDOUT: inst_block6000006C: +// CHECK:STDOUT: 0: inst6000014D +// CHECK:STDOUT: 1: inst6000014E +// CHECK:STDOUT: 2: inst6000014F +// CHECK:STDOUT: inst_block6000006D: +// CHECK:STDOUT: 0: inst60000151 +// CHECK:STDOUT: 1: inst60000152 +// CHECK:STDOUT: 2: inst60000153 +// CHECK:STDOUT: inst_block6000006E: +// CHECK:STDOUT: 0: inst6000014D +// CHECK:STDOUT: 1: inst6000014E +// CHECK:STDOUT: 2: inst6000014F +// CHECK:STDOUT: inst_block6000006F: +// CHECK:STDOUT: 0: inst6000014D +// CHECK:STDOUT: 1: inst6000014E +// CHECK:STDOUT: 2: inst6000014F +// CHECK:STDOUT: 3: inst60000150 +// CHECK:STDOUT: 4: inst60000151 +// CHECK:STDOUT: 5: inst60000152 +// CHECK:STDOUT: 6: inst60000153 +// CHECK:STDOUT: 7: inst60000154 +// CHECK:STDOUT: 8: inst60000155 +// CHECK:STDOUT: inst_block60000070: +// CHECK:STDOUT: 0: inst6000014D +// CHECK:STDOUT: 1: inst6000014E +// CHECK:STDOUT: 2: inst6000014F +// CHECK:STDOUT: inst_block60000071: +// CHECK:STDOUT: 0: inst60000156 +// CHECK:STDOUT: 1: inst60000157 +// CHECK:STDOUT: inst_block60000072: +// CHECK:STDOUT: 0: inst600000B6 +// CHECK:STDOUT: 1: inst600000B7 +// CHECK:STDOUT: 2: inst60000044 +// CHECK:STDOUT: inst_block60000073: +// CHECK:STDOUT: 0: inst60000017 +// CHECK:STDOUT: inst_block60000074: +// CHECK:STDOUT: 0: inst6000015B +// CHECK:STDOUT: inst_block60000075: +// CHECK:STDOUT: 0: inst6000015C // CHECK:STDOUT: inst_block60000076: -// CHECK:STDOUT: 0: inst6000014B +// CHECK:STDOUT: 0: inst6000015D // CHECK:STDOUT: inst_block60000077: -// CHECK:STDOUT: 0: inst6000014B -// CHECK:STDOUT: 1: inst6000001B -// CHECK:STDOUT: 2: inst6000001E +// CHECK:STDOUT: 0: inst6000015D +// CHECK:STDOUT: 1: inst6000001C +// CHECK:STDOUT: 2: inst6000001F +// CHECK:STDOUT: 3: inst600000BC // CHECK:STDOUT: inst_block60000078: -// CHECK:STDOUT: 0: inst6000014F +// CHECK:STDOUT: 0: inst60000161 // CHECK:STDOUT: inst_block60000079: -// CHECK:STDOUT: 0: inst60000042 +// CHECK:STDOUT: 0: inst60000047 // CHECK:STDOUT: inst_block6000007A: -// CHECK:STDOUT: 0: inst60000159 -// CHECK:STDOUT: 1: inst6000015C +// CHECK:STDOUT: 0: inst6000016B +// CHECK:STDOUT: 1: inst6000016E // CHECK:STDOUT: inst_block6000007B: -// CHECK:STDOUT: 0: inst6000003E -// CHECK:STDOUT: 1: inst60000041 -// CHECK:STDOUT: 2: inst60000148 -// CHECK:STDOUT: 3: inst6000014A -// CHECK:STDOUT: 4: inst6000014F -// CHECK:STDOUT: 5: inst60000150 -// CHECK:STDOUT: 6: inst60000151 -// CHECK:STDOUT: 7: inst60000155 +// CHECK:STDOUT: 0: inst60000042 +// CHECK:STDOUT: 1: inst60000045 +// CHECK:STDOUT: 2: inst6000015A +// CHECK:STDOUT: 3: inst6000015C +// CHECK:STDOUT: 4: inst60000161 +// CHECK:STDOUT: 5: inst60000162 +// CHECK:STDOUT: 6: inst60000163 +// CHECK:STDOUT: 7: inst60000167 // CHECK:STDOUT: inst_block6000007C: -// CHECK:STDOUT: 0: instE -// CHECK:STDOUT: 1: inst6000000F -// CHECK:STDOUT: 2: inst60000038 +// CHECK:STDOUT: 0: instF +// CHECK:STDOUT: 1: inst60000010 +// CHECK:STDOUT: 2: inst6000003C // CHECK:STDOUT: ... diff --git a/toolchain/check/testdata/basics/raw_sem_ir/one_file_with_textual_ir.carbon b/toolchain/check/testdata/basics/raw_sem_ir/one_file_with_textual_ir.carbon index a25f07844ed8..dc715eeac6fb 100644 --- a/toolchain/check/testdata/basics/raw_sem_ir/one_file_with_textual_ir.carbon +++ b/toolchain/check/testdata/basics/raw_sem_ir/one_file_with_textual_ir.carbon @@ -26,12 +26,12 @@ fn Foo(n: ()) -> ((), ()) { // CHECK:STDOUT: import_ir_insts: {} // CHECK:STDOUT: clang_decls: {} // CHECK:STDOUT: name_scopes: -// CHECK:STDOUT: name_scope0: {inst: instE, parent_scope: name_scope, has_error: false, extended_scopes: [], names: {name0: inst60000027}} +// CHECK:STDOUT: name_scope0: {inst: instF, parent_scope: name_scope, has_error: false, extended_scopes: [], names: {name0: inst6000002A}} // CHECK:STDOUT: entity_names: // CHECK:STDOUT: entity_name60000000: {name: name1, parent_scope: name_scope, index: -1, is_template: 0} // CHECK:STDOUT: cpp_global_vars: {} // CHECK:STDOUT: functions: -// CHECK:STDOUT: function60000000: {name: name0, parent_scope: name_scope0, call_params_id: inst_block6000000B, return_type_inst_id: inst6000001F, return_patterns_id: inst_block6000000A, body: [inst_block6000000E]} +// CHECK:STDOUT: function60000000: {name: name0, parent_scope: name_scope0, call_params_id: inst_block6000000B, return_type_inst_id: inst60000020, return_patterns_id: inst_block6000000A, body: [inst_block6000000E]} // CHECK:STDOUT: classes: {} // CHECK:STDOUT: generics: {} // CHECK:STDOUT: specifics: {} @@ -40,161 +40,168 @@ fn Foo(n: ()) -> ((), ()) { // CHECK:STDOUT: types: // CHECK:STDOUT: 'type(TypeType)': // CHECK:STDOUT: value_repr: {kind: copy, type: type(TypeType)} +// CHECK:STDOUT: 'type(inst(FormType))': +// CHECK:STDOUT: value_repr: {kind: copy, type: type(inst(FormType))} // CHECK:STDOUT: 'type(Error)': // CHECK:STDOUT: value_repr: {kind: copy, type: type(Error)} // CHECK:STDOUT: 'type(inst(NamespaceType))': // CHECK:STDOUT: value_repr: {kind: copy, type: type(inst(NamespaceType))} -// CHECK:STDOUT: 'type(inst6000000F)': -// CHECK:STDOUT: value_repr: {kind: none, type: type(inst6000000F)} -// CHECK:STDOUT: 'type(inst6000001C)': -// CHECK:STDOUT: value_repr: {kind: copy, type: type(inst6000001C)} -// CHECK:STDOUT: 'type(inst60000019)': -// CHECK:STDOUT: value_repr: {kind: pointer, type: type(inst6000001C)} -// CHECK:STDOUT: 'type(inst60000028)': -// CHECK:STDOUT: value_repr: {kind: none, type: type(inst6000000F)} +// CHECK:STDOUT: 'type(inst60000010)': +// CHECK:STDOUT: value_repr: {kind: none, type: type(inst60000010)} +// CHECK:STDOUT: 'type(inst6000001D)': +// CHECK:STDOUT: value_repr: {kind: copy, type: type(inst6000001D)} +// CHECK:STDOUT: 'type(inst6000001A)': +// CHECK:STDOUT: value_repr: {kind: pointer, type: type(inst6000001D)} +// CHECK:STDOUT: 'type(inst6000002B)': +// CHECK:STDOUT: value_repr: {kind: none, type: type(inst60000010)} // CHECK:STDOUT: insts: -// CHECK:STDOUT: instE: {kind: Namespace, arg0: name_scope0, arg1: inst, type: type(inst(NamespaceType))} -// CHECK:STDOUT: inst6000000F: {kind: TupleType, arg0: inst_block_empty, type: type(TypeType)} -// CHECK:STDOUT: inst60000010: {kind: TupleLiteral, arg0: inst_block_empty, type: type(inst6000000F)} -// CHECK:STDOUT: inst60000011: {kind: TupleValue, arg0: inst_block_empty, type: type(inst6000000F)} -// CHECK:STDOUT: inst60000012: {kind: Converted, arg0: inst60000010, arg1: inst6000000F, type: type(TypeType)} -// CHECK:STDOUT: inst60000013: {kind: ValueBinding, arg0: entity_name60000000, arg1: inst60000023, type: type(inst6000000F)} -// CHECK:STDOUT: inst60000014: {kind: PatternType, arg0: inst6000000F, type: type(TypeType)} -// CHECK:STDOUT: inst60000015: {kind: ValueBindingPattern, arg0: entity_name60000000, type: type(inst60000014)} -// CHECK:STDOUT: inst60000016: {kind: ValueParamPattern, arg0: inst60000015, arg1: call_param0, type: type(inst60000014)} -// CHECK:STDOUT: inst60000017: {kind: TupleLiteral, arg0: inst_block_empty, type: type(inst6000000F)} -// CHECK:STDOUT: inst60000018: {kind: TupleLiteral, arg0: inst_block_empty, type: type(inst6000000F)} -// CHECK:STDOUT: inst60000019: {kind: TupleType, arg0: inst_block60000007, type: type(TypeType)} -// CHECK:STDOUT: inst6000001A: {kind: TupleLiteral, arg0: inst_block60000006, type: type(inst60000019)} -// CHECK:STDOUT: inst6000001B: {kind: TupleValue, arg0: inst_block60000008, type: type(inst60000019)} -// CHECK:STDOUT: inst6000001C: {kind: PointerType, arg0: inst60000019, type: type(TypeType)} -// CHECK:STDOUT: inst6000001D: {kind: Converted, arg0: inst60000011, arg1: inst6000000F, type: type(TypeType)} -// CHECK:STDOUT: inst6000001E: {kind: Converted, arg0: inst60000011, arg1: inst6000000F, type: type(TypeType)} -// CHECK:STDOUT: inst6000001F: {kind: Converted, arg0: inst6000001A, arg1: inst60000019, type: type(TypeType)} -// CHECK:STDOUT: inst60000020: {kind: PatternType, arg0: inst60000019, type: type(TypeType)} -// CHECK:STDOUT: inst60000021: {kind: ReturnSlotPattern, arg0: inst6000001F, type: type(inst60000020)} -// CHECK:STDOUT: inst60000022: {kind: OutParamPattern, arg0: inst60000021, arg1: call_param1, type: type(inst60000020)} -// CHECK:STDOUT: inst60000023: {kind: ValueParam, arg0: call_param0, arg1: name1, type: type(inst6000000F)} -// CHECK:STDOUT: inst60000024: {kind: SpliceBlock, arg0: inst_block60000004, arg1: inst60000012, type: type(TypeType)} -// CHECK:STDOUT: inst60000025: {kind: OutParam, arg0: call_param1, arg1: name(ReturnSlot), type: type(inst60000019)} -// CHECK:STDOUT: inst60000026: {kind: ReturnSlot, arg0: inst60000019, arg1: inst60000025, type: type(inst60000019)} -// CHECK:STDOUT: inst60000027: {kind: FunctionDecl, arg0: function60000000, arg1: inst_block6000000D, type: type(inst60000028)} -// CHECK:STDOUT: inst60000028: {kind: FunctionType, arg0: function60000000, arg1: specific, type: type(TypeType)} -// CHECK:STDOUT: inst60000029: {kind: StructValue, arg0: inst_block_empty, type: type(inst60000028)} -// CHECK:STDOUT: inst6000002A: {kind: NameRef, arg0: name1, arg1: inst60000013, type: type(inst6000000F)} -// CHECK:STDOUT: inst6000002B: {kind: TupleLiteral, arg0: inst_block_empty, type: type(inst6000000F)} -// CHECK:STDOUT: inst6000002C: {kind: TupleLiteral, arg0: inst_block6000000F, type: type(inst60000019)} -// CHECK:STDOUT: inst6000002D: {kind: TupleAccess, arg0: inst60000026, arg1: element0, type: type(inst6000000F)} -// CHECK:STDOUT: inst6000002E: {kind: TupleInit, arg0: inst_block60000010, arg1: inst6000002D, type: type(inst6000000F)} -// CHECK:STDOUT: inst6000002F: {kind: Converted, arg0: inst6000002A, arg1: inst6000002E, type: type(inst6000000F)} -// CHECK:STDOUT: inst60000030: {kind: TupleAccess, arg0: inst60000026, arg1: element1, type: type(inst6000000F)} -// CHECK:STDOUT: inst60000031: {kind: TupleInit, arg0: inst_block_empty, arg1: inst60000030, type: type(inst6000000F)} -// CHECK:STDOUT: inst60000032: {kind: Converted, arg0: inst6000002B, arg1: inst60000031, type: type(inst6000000F)} -// CHECK:STDOUT: inst60000033: {kind: TupleInit, arg0: inst_block60000011, arg1: inst60000026, type: type(inst60000019)} -// CHECK:STDOUT: inst60000034: {kind: Converted, arg0: inst6000002C, arg1: inst60000033, type: type(inst60000019)} -// CHECK:STDOUT: inst60000035: {kind: ReturnExpr, arg0: inst60000034, arg1: inst60000026} +// CHECK:STDOUT: instF: {kind: Namespace, arg0: name_scope0, arg1: inst, type: type(inst(NamespaceType))} +// CHECK:STDOUT: inst60000010: {kind: TupleType, arg0: inst_block_empty, type: type(TypeType)} +// CHECK:STDOUT: inst60000011: {kind: TupleLiteral, arg0: inst_block_empty, type: type(inst60000010)} +// CHECK:STDOUT: inst60000012: {kind: TupleValue, arg0: inst_block_empty, type: type(inst60000010)} +// CHECK:STDOUT: inst60000013: {kind: Converted, arg0: inst60000011, arg1: inst60000010, type: type(TypeType)} +// CHECK:STDOUT: inst60000014: {kind: ValueBinding, arg0: entity_name60000000, arg1: inst60000026, type: type(inst60000010)} +// CHECK:STDOUT: inst60000015: {kind: PatternType, arg0: inst60000010, type: type(TypeType)} +// CHECK:STDOUT: inst60000016: {kind: ValueBindingPattern, arg0: entity_name60000000, type: type(inst60000015)} +// CHECK:STDOUT: inst60000017: {kind: ValueParamPattern, arg0: inst60000016, arg1: call_param0, type: type(inst60000015)} +// CHECK:STDOUT: inst60000018: {kind: TupleLiteral, arg0: inst_block_empty, type: type(inst60000010)} +// CHECK:STDOUT: inst60000019: {kind: TupleLiteral, arg0: inst_block_empty, type: type(inst60000010)} +// CHECK:STDOUT: inst6000001A: {kind: TupleType, arg0: inst_block60000007, type: type(TypeType)} +// CHECK:STDOUT: inst6000001B: {kind: TupleLiteral, arg0: inst_block60000006, type: type(inst6000001A)} +// CHECK:STDOUT: inst6000001C: {kind: TupleValue, arg0: inst_block60000008, type: type(inst6000001A)} +// CHECK:STDOUT: inst6000001D: {kind: PointerType, arg0: inst6000001A, type: type(TypeType)} +// CHECK:STDOUT: inst6000001E: {kind: Converted, arg0: inst60000012, arg1: inst60000010, type: type(TypeType)} +// CHECK:STDOUT: inst6000001F: {kind: Converted, arg0: inst60000012, arg1: inst60000010, type: type(TypeType)} +// CHECK:STDOUT: inst60000020: {kind: Converted, arg0: inst6000001B, arg1: inst6000001A, type: type(TypeType)} +// CHECK:STDOUT: inst60000021: {kind: InitForm, arg0: inst60000020, arg1: call_param1, type: type(inst(FormType))} +// CHECK:STDOUT: inst60000022: {kind: InitForm, arg0: inst6000001A, arg1: call_param1, type: type(inst(FormType))} +// CHECK:STDOUT: inst60000023: {kind: PatternType, arg0: inst6000001A, type: type(TypeType)} +// CHECK:STDOUT: inst60000024: {kind: ReturnSlotPattern, arg0: inst60000020, type: type(inst60000023)} +// CHECK:STDOUT: inst60000025: {kind: OutParamPattern, arg0: inst60000024, arg1: call_param1, type: type(inst60000023)} +// CHECK:STDOUT: inst60000026: {kind: ValueParam, arg0: call_param0, arg1: name1, type: type(inst60000010)} +// CHECK:STDOUT: inst60000027: {kind: SpliceBlock, arg0: inst_block60000004, arg1: inst60000013, type: type(TypeType)} +// CHECK:STDOUT: inst60000028: {kind: OutParam, arg0: call_param1, arg1: name(ReturnSlot), type: type(inst6000001A)} +// CHECK:STDOUT: inst60000029: {kind: ReturnSlot, arg0: inst6000001A, arg1: inst60000028, type: type(inst6000001A)} +// CHECK:STDOUT: inst6000002A: {kind: FunctionDecl, arg0: function60000000, arg1: inst_block6000000D, type: type(inst6000002B)} +// CHECK:STDOUT: inst6000002B: {kind: FunctionType, arg0: function60000000, arg1: specific, type: type(TypeType)} +// CHECK:STDOUT: inst6000002C: {kind: StructValue, arg0: inst_block_empty, type: type(inst6000002B)} +// CHECK:STDOUT: inst6000002D: {kind: NameRef, arg0: name1, arg1: inst60000014, type: type(inst60000010)} +// CHECK:STDOUT: inst6000002E: {kind: TupleLiteral, arg0: inst_block_empty, type: type(inst60000010)} +// CHECK:STDOUT: inst6000002F: {kind: TupleLiteral, arg0: inst_block6000000F, type: type(inst6000001A)} +// CHECK:STDOUT: inst60000030: {kind: TupleAccess, arg0: inst60000029, arg1: element0, type: type(inst60000010)} +// CHECK:STDOUT: inst60000031: {kind: TupleInit, arg0: inst_block60000010, arg1: inst60000030, type: type(inst60000010)} +// CHECK:STDOUT: inst60000032: {kind: Converted, arg0: inst6000002D, arg1: inst60000031, type: type(inst60000010)} +// CHECK:STDOUT: inst60000033: {kind: TupleAccess, arg0: inst60000029, arg1: element1, type: type(inst60000010)} +// CHECK:STDOUT: inst60000034: {kind: TupleInit, arg0: inst_block_empty, arg1: inst60000033, type: type(inst60000010)} +// CHECK:STDOUT: inst60000035: {kind: Converted, arg0: inst6000002E, arg1: inst60000034, type: type(inst60000010)} +// CHECK:STDOUT: inst60000036: {kind: TupleInit, arg0: inst_block60000011, arg1: inst60000029, type: type(inst6000001A)} +// CHECK:STDOUT: inst60000037: {kind: Converted, arg0: inst6000002F, arg1: inst60000036, type: type(inst6000001A)} +// CHECK:STDOUT: inst60000038: {kind: ReturnExpr, arg0: inst60000037, arg1: inst60000029} // CHECK:STDOUT: constant_values: // CHECK:STDOUT: values: -// CHECK:STDOUT: instE: concrete_constant(instE) -// CHECK:STDOUT: inst6000000F: concrete_constant(inst6000000F) -// CHECK:STDOUT: inst60000010: concrete_constant(inst60000011) -// CHECK:STDOUT: inst60000011: concrete_constant(inst60000011) -// CHECK:STDOUT: inst60000012: concrete_constant(inst6000000F) -// CHECK:STDOUT: inst60000014: concrete_constant(inst60000014) +// CHECK:STDOUT: instF: concrete_constant(instF) +// CHECK:STDOUT: inst60000010: concrete_constant(inst60000010) +// CHECK:STDOUT: inst60000011: concrete_constant(inst60000012) +// CHECK:STDOUT: inst60000012: concrete_constant(inst60000012) +// CHECK:STDOUT: inst60000013: concrete_constant(inst60000010) // CHECK:STDOUT: inst60000015: concrete_constant(inst60000015) // CHECK:STDOUT: inst60000016: concrete_constant(inst60000016) -// CHECK:STDOUT: inst60000017: concrete_constant(inst60000011) -// CHECK:STDOUT: inst60000018: concrete_constant(inst60000011) -// CHECK:STDOUT: inst60000019: concrete_constant(inst60000019) -// CHECK:STDOUT: inst6000001A: concrete_constant(inst6000001B) -// CHECK:STDOUT: inst6000001B: concrete_constant(inst6000001B) +// CHECK:STDOUT: inst60000017: concrete_constant(inst60000017) +// CHECK:STDOUT: inst60000018: concrete_constant(inst60000012) +// CHECK:STDOUT: inst60000019: concrete_constant(inst60000012) +// CHECK:STDOUT: inst6000001A: concrete_constant(inst6000001A) +// CHECK:STDOUT: inst6000001B: concrete_constant(inst6000001C) // CHECK:STDOUT: inst6000001C: concrete_constant(inst6000001C) -// CHECK:STDOUT: inst6000001D: concrete_constant(inst6000000F) -// CHECK:STDOUT: inst6000001E: concrete_constant(inst6000000F) -// CHECK:STDOUT: inst6000001F: concrete_constant(inst60000019) -// CHECK:STDOUT: inst60000020: concrete_constant(inst60000020) -// CHECK:STDOUT: inst60000021: concrete_constant(inst60000021) +// CHECK:STDOUT: inst6000001D: concrete_constant(inst6000001D) +// CHECK:STDOUT: inst6000001E: concrete_constant(inst60000010) +// CHECK:STDOUT: inst6000001F: concrete_constant(inst60000010) +// CHECK:STDOUT: inst60000020: concrete_constant(inst6000001A) +// CHECK:STDOUT: inst60000021: concrete_constant(inst60000022) // CHECK:STDOUT: inst60000022: concrete_constant(inst60000022) -// CHECK:STDOUT: inst60000024: concrete_constant(inst6000000F) -// CHECK:STDOUT: inst60000027: concrete_constant(inst60000029) -// CHECK:STDOUT: inst60000028: concrete_constant(inst60000028) -// CHECK:STDOUT: inst60000029: concrete_constant(inst60000029) -// CHECK:STDOUT: inst6000002B: concrete_constant(inst60000011) -// CHECK:STDOUT: inst6000002E: concrete_constant(inst60000011) -// CHECK:STDOUT: inst6000002F: concrete_constant(inst60000011) -// CHECK:STDOUT: inst60000031: concrete_constant(inst60000011) -// CHECK:STDOUT: inst60000032: concrete_constant(inst60000011) -// CHECK:STDOUT: inst60000033: concrete_constant(inst6000001B) -// CHECK:STDOUT: inst60000034: concrete_constant(inst6000001B) +// CHECK:STDOUT: inst60000023: concrete_constant(inst60000023) +// CHECK:STDOUT: inst60000024: concrete_constant(inst60000024) +// CHECK:STDOUT: inst60000025: concrete_constant(inst60000025) +// CHECK:STDOUT: inst60000027: concrete_constant(inst60000010) +// CHECK:STDOUT: inst6000002A: concrete_constant(inst6000002C) +// CHECK:STDOUT: inst6000002B: concrete_constant(inst6000002B) +// CHECK:STDOUT: inst6000002C: concrete_constant(inst6000002C) +// CHECK:STDOUT: inst6000002E: concrete_constant(inst60000012) +// CHECK:STDOUT: inst60000031: concrete_constant(inst60000012) +// CHECK:STDOUT: inst60000032: concrete_constant(inst60000012) +// CHECK:STDOUT: inst60000034: concrete_constant(inst60000012) +// CHECK:STDOUT: inst60000035: concrete_constant(inst60000012) +// CHECK:STDOUT: inst60000036: concrete_constant(inst6000001C) +// CHECK:STDOUT: inst60000037: concrete_constant(inst6000001C) // CHECK:STDOUT: symbolic_constants: {} // CHECK:STDOUT: inst_blocks: // CHECK:STDOUT: inst_block_empty: {} // CHECK:STDOUT: exports: -// CHECK:STDOUT: 0: inst60000027 +// CHECK:STDOUT: 0: inst6000002A // CHECK:STDOUT: imports: {} // CHECK:STDOUT: global_init: {} // CHECK:STDOUT: inst_block60000004: -// CHECK:STDOUT: 0: inst60000010 -// CHECK:STDOUT: 1: inst60000012 -// CHECK:STDOUT: inst_block60000005: -// CHECK:STDOUT: 0: inst60000016 -// CHECK:STDOUT: inst_block60000006: -// CHECK:STDOUT: 0: inst60000017 -// CHECK:STDOUT: 1: inst60000018 -// CHECK:STDOUT: inst_block60000007: -// CHECK:STDOUT: 0: inst6000000F -// CHECK:STDOUT: 1: inst6000000F -// CHECK:STDOUT: inst_block60000008: // CHECK:STDOUT: 0: inst60000011 -// CHECK:STDOUT: 1: inst60000011 -// CHECK:STDOUT: inst_block60000009: -// CHECK:STDOUT: 0: inst6000001D -// CHECK:STDOUT: 1: inst6000001E -// CHECK:STDOUT: inst_block6000000A: -// CHECK:STDOUT: 0: inst60000022 -// CHECK:STDOUT: inst_block6000000B: -// CHECK:STDOUT: 0: inst60000023 -// CHECK:STDOUT: 1: inst60000025 -// CHECK:STDOUT: inst_block6000000C: -// CHECK:STDOUT: 0: inst60000015 -// CHECK:STDOUT: 1: inst60000016 -// CHECK:STDOUT: 2: inst60000021 -// CHECK:STDOUT: 3: inst60000022 -// CHECK:STDOUT: inst_block6000000D: +// CHECK:STDOUT: 1: inst60000013 +// CHECK:STDOUT: inst_block60000005: // CHECK:STDOUT: 0: inst60000017 -// CHECK:STDOUT: 1: inst60000018 -// CHECK:STDOUT: 2: inst6000001A -// CHECK:STDOUT: 3: inst6000001D -// CHECK:STDOUT: 4: inst6000001E -// CHECK:STDOUT: 5: inst6000001F -// CHECK:STDOUT: 6: inst60000023 -// CHECK:STDOUT: 7: inst60000024 -// CHECK:STDOUT: 8: inst60000013 -// CHECK:STDOUT: 9: inst60000025 -// CHECK:STDOUT: 10: inst60000026 +// CHECK:STDOUT: inst_block60000006: +// CHECK:STDOUT: 0: inst60000018 +// CHECK:STDOUT: 1: inst60000019 +// CHECK:STDOUT: inst_block60000007: +// CHECK:STDOUT: 0: inst60000010 +// CHECK:STDOUT: 1: inst60000010 +// CHECK:STDOUT: inst_block60000008: +// CHECK:STDOUT: 0: inst60000012 +// CHECK:STDOUT: 1: inst60000012 +// CHECK:STDOUT: inst_block60000009: +// CHECK:STDOUT: 0: inst6000001E +// CHECK:STDOUT: 1: inst6000001F +// CHECK:STDOUT: inst_block6000000A: +// CHECK:STDOUT: 0: inst60000025 +// CHECK:STDOUT: inst_block6000000B: +// CHECK:STDOUT: 0: inst60000026 +// CHECK:STDOUT: 1: inst60000028 +// CHECK:STDOUT: inst_block6000000C: +// CHECK:STDOUT: 0: inst60000016 +// CHECK:STDOUT: 1: inst60000017 +// CHECK:STDOUT: 2: inst60000024 +// CHECK:STDOUT: 3: inst60000025 +// CHECK:STDOUT: inst_block6000000D: +// CHECK:STDOUT: 0: inst60000018 +// CHECK:STDOUT: 1: inst60000019 +// CHECK:STDOUT: 2: inst6000001B +// CHECK:STDOUT: 3: inst6000001E +// CHECK:STDOUT: 4: inst6000001F +// CHECK:STDOUT: 5: inst60000020 +// CHECK:STDOUT: 6: inst60000021 +// CHECK:STDOUT: 7: inst60000026 +// CHECK:STDOUT: 8: inst60000027 +// CHECK:STDOUT: 9: inst60000014 +// CHECK:STDOUT: 10: inst60000028 +// CHECK:STDOUT: 11: inst60000029 // CHECK:STDOUT: inst_block6000000E: -// CHECK:STDOUT: 0: inst6000002A -// CHECK:STDOUT: 1: inst6000002B -// CHECK:STDOUT: 2: inst6000002C -// CHECK:STDOUT: 3: inst6000002D -// CHECK:STDOUT: 4: inst6000002E -// CHECK:STDOUT: 5: inst6000002F -// CHECK:STDOUT: 6: inst60000030 -// CHECK:STDOUT: 7: inst60000031 -// CHECK:STDOUT: 8: inst60000032 -// CHECK:STDOUT: 9: inst60000033 -// CHECK:STDOUT: 10: inst60000034 -// CHECK:STDOUT: 11: inst60000035 +// CHECK:STDOUT: 0: inst6000002D +// CHECK:STDOUT: 1: inst6000002E +// CHECK:STDOUT: 2: inst6000002F +// CHECK:STDOUT: 3: inst60000030 +// CHECK:STDOUT: 4: inst60000031 +// CHECK:STDOUT: 5: inst60000032 +// CHECK:STDOUT: 6: inst60000033 +// CHECK:STDOUT: 7: inst60000034 +// CHECK:STDOUT: 8: inst60000035 +// CHECK:STDOUT: 9: inst60000036 +// CHECK:STDOUT: 10: inst60000037 +// CHECK:STDOUT: 11: inst60000038 // CHECK:STDOUT: inst_block6000000F: -// CHECK:STDOUT: 0: inst6000002A -// CHECK:STDOUT: 1: inst6000002B +// CHECK:STDOUT: 0: inst6000002D +// CHECK:STDOUT: 1: inst6000002E // CHECK:STDOUT: inst_block60000010: {} // CHECK:STDOUT: inst_block60000011: -// CHECK:STDOUT: 0: inst6000002F -// CHECK:STDOUT: 1: inst60000032 +// CHECK:STDOUT: 0: inst60000032 +// CHECK:STDOUT: 1: inst60000035 // CHECK:STDOUT: inst_block60000012: -// CHECK:STDOUT: 0: instE -// CHECK:STDOUT: 1: inst60000027 +// CHECK:STDOUT: 0: instF +// CHECK:STDOUT: 1: inst6000002A // CHECK:STDOUT: ... // CHECK:STDOUT: --- one_file_with_textual_ir.carbon // CHECK:STDOUT: @@ -204,6 +211,7 @@ fn Foo(n: ()) -> ((), ()) { // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %tuple.type: type = tuple_type (%empty_tuple.type, %empty_tuple.type) [concrete] // CHECK:STDOUT: %tuple: %tuple.type = tuple_value (%empty_tuple, %empty_tuple) [concrete] +// CHECK:STDOUT: %.88c: form = init_form %tuple.type, call_param1 [concrete] // CHECK:STDOUT: %pattern_type.5b8: type = pattern_type %tuple.type [concrete] // CHECK:STDOUT: %Foo.type: type = fn_type @Foo [concrete] // CHECK:STDOUT: %Foo: %Foo.type = struct_value () [concrete] @@ -225,6 +233,7 @@ fn Foo(n: ()) -> ((), ()) { // CHECK:STDOUT: %.loc16_25.2: type = converted constants.%empty_tuple, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %.loc16_25.3: type = converted constants.%empty_tuple, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %.loc16_25.4: type = converted %.loc16_25.1, constants.%tuple.type [concrete = constants.%tuple.type] +// CHECK:STDOUT: %.loc16_25.5: form = init_form %.loc16_25.4, call_param1 [concrete = constants.%.88c] // CHECK:STDOUT: %n.param: %empty_tuple.type = value_param call_param0 // CHECK:STDOUT: %.loc16_12.1: type = splice_block %.loc16_12.3 [concrete = constants.%empty_tuple.type] { // CHECK:STDOUT: %.loc16_12.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] diff --git a/toolchain/check/testdata/builtins/pointer/is_null.carbon b/toolchain/check/testdata/builtins/pointer/is_null.carbon index a814105a1090..1d95d3cbf331 100644 --- a/toolchain/check/testdata/builtins/pointer/is_null.carbon +++ b/toolchain/check/testdata/builtins/pointer/is_null.carbon @@ -98,6 +98,7 @@ fn NotPointer(p: MakeUnformed({})) -> bool = "pointer.is_null"; // CHECK:STDOUT: %pattern_type.b42: type = pattern_type %.b2d [concrete] // CHECK:STDOUT: %Bool.type: type = fn_type @Bool [concrete] // CHECK:STDOUT: %Bool: %Bool.type = struct_value () [concrete] +// CHECK:STDOUT: %.df2: form = init_form bool, call_param1 [concrete] // CHECK:STDOUT: %pattern_type.831: type = pattern_type bool [concrete] // CHECK:STDOUT: %IsNullEmptyStruct.type: type = fn_type @IsNullEmptyStruct [concrete] // CHECK:STDOUT: %IsNullEmptyStruct: %IsNullEmptyStruct.type = struct_value () [concrete] @@ -125,6 +126,7 @@ fn NotPointer(p: MakeUnformed({})) -> bool = "pointer.is_null"; // CHECK:STDOUT: %Bool.call: init type = call constants.%Bool() [concrete = bool] // CHECK:STDOUT: %.loc11_45.1: type = value_of_initializer %Bool.call [concrete = bool] // CHECK:STDOUT: %.loc11_45.2: type = converted %Bool.call, %.loc11_45.1 [concrete = bool] +// CHECK:STDOUT: %.loc11_45.3: form = init_form %.loc11_45.2, call_param1 [concrete = constants.%.df2] // CHECK:STDOUT: %s.param: %.b2d = value_param call_param0 // CHECK:STDOUT: %.loc11_39.1: type = splice_block %.loc11_39.3 [concrete = constants.%.b2d] { // CHECK:STDOUT: %MakeUnformed.ref: %MakeUnformed.type = name_ref MakeUnformed, file.%MakeUnformed.decl [concrete = constants.%MakeUnformed] @@ -148,6 +150,7 @@ fn NotPointer(p: MakeUnformed({})) -> bool = "pointer.is_null"; // CHECK:STDOUT: %Bool.call: init type = call constants.%Bool() [concrete = bool] // CHECK:STDOUT: %.loc15_34.1: type = value_of_initializer %Bool.call [concrete = bool] // CHECK:STDOUT: %.loc15_34.2: type = converted %Bool.call, %.loc15_34.1 [concrete = bool] +// CHECK:STDOUT: %.loc15_34.3: form = init_form %.loc15_34.2, call_param1 [concrete = constants.%.df2] // CHECK:STDOUT: %c.param: %.edf = value_param call_param0 // CHECK:STDOUT: %.loc15_28.1: type = splice_block %.loc15_28.3 [concrete = constants.%.edf] { // CHECK:STDOUT: %MakeUnformed.ref: %MakeUnformed.type = name_ref MakeUnformed, file.%MakeUnformed.decl [concrete = constants.%MakeUnformed] @@ -186,6 +189,7 @@ fn NotPointer(p: MakeUnformed({})) -> bool = "pointer.is_null"; // CHECK:STDOUT: %MakeUnformed: %MakeUnformed.type = struct_value () [concrete] // CHECK:STDOUT: %Bool.type: type = fn_type @Bool [concrete] // CHECK:STDOUT: %Bool: %Bool.type = struct_value () [concrete] +// CHECK:STDOUT: %.df2: form = init_form bool, call_param1 [concrete] // CHECK:STDOUT: %pattern_type.831: type = pattern_type bool [concrete] // CHECK:STDOUT: %IsNull.type: type = fn_type @IsNull [concrete] // CHECK:STDOUT: %IsNull: %IsNull.type = struct_value () [concrete] @@ -219,6 +223,7 @@ fn NotPointer(p: MakeUnformed({})) -> bool = "pointer.is_null"; // CHECK:STDOUT: %Bool.call: init type = call constants.%Bool() [concrete = bool] // CHECK:STDOUT: %.loc10_45.1: type = value_of_initializer %Bool.call [concrete = bool] // CHECK:STDOUT: %.loc10_45.2: type = converted %Bool.call, %.loc10_45.1 [concrete = bool] +// CHECK:STDOUT: %.loc10_45.3: form = init_form %.loc10_45.2, call_param1 [concrete = constants.%.df2] // CHECK:STDOUT: %s.param: %.b2d = value_param call_param0 // CHECK:STDOUT: %.loc10_39.1: type = splice_block %.loc10_39.3 [concrete = constants.%.b2d] { // CHECK:STDOUT: %MakeUnformed.ref: %MakeUnformed.type = name_ref MakeUnformed, file.%MakeUnformed.decl [concrete = constants.%MakeUnformed] @@ -242,6 +247,7 @@ fn NotPointer(p: MakeUnformed({})) -> bool = "pointer.is_null"; // CHECK:STDOUT: %Bool.call: init type = call constants.%Bool() [concrete = bool] // CHECK:STDOUT: %.loc14_34.1: type = value_of_initializer %Bool.call [concrete = bool] // CHECK:STDOUT: %.loc14_34.2: type = converted %Bool.call, %.loc14_34.1 [concrete = bool] +// CHECK:STDOUT: %.loc14_34.3: form = init_form %.loc14_34.2, call_param1 [concrete = constants.%.df2] // CHECK:STDOUT: %c.param: %.edf = value_param call_param0 // CHECK:STDOUT: %.loc14_28.1: type = splice_block %.loc14_28.3 [concrete = constants.%.edf] { // CHECK:STDOUT: %MakeUnformed.ref: %MakeUnformed.type = name_ref MakeUnformed, file.%MakeUnformed.decl [concrete = constants.%MakeUnformed] diff --git a/toolchain/check/testdata/class/access_modifers.carbon b/toolchain/check/testdata/class/access_modifers.carbon index 2cc0f1f276b0..46656cb85594 100644 --- a/toolchain/check/testdata/class/access_modifers.carbon +++ b/toolchain/check/testdata/class/access_modifers.carbon @@ -178,8 +178,10 @@ class A { // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.0b5, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] // CHECK:STDOUT: %bound_method.e9d: = bound_method %int_5.64b, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_5.0f6: %i32 = int_value 5 [concrete] +// CHECK:STDOUT: %.941: form = init_form %i32, call_param0 [concrete] // CHECK:STDOUT: %Circle.SomeInternalFunction.type: type = fn_type @Circle.SomeInternalFunction [concrete] // CHECK:STDOUT: %Circle.SomeInternalFunction: %Circle.SomeInternalFunction.type = struct_value () [concrete] +// CHECK:STDOUT: %.aaa: form = init_form %Circle, call_param0 [concrete] // CHECK:STDOUT: %pattern_type.fcb: type = pattern_type %Circle [concrete] // CHECK:STDOUT: %Circle.Make.type: type = fn_type @Circle.Make [concrete] // CHECK:STDOUT: %Circle.Make: %Circle.Make.type = struct_value () [concrete] @@ -251,6 +253,7 @@ class A { // CHECK:STDOUT: } { // 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: %.loc8: form = init_form %i32, call_param0 [concrete = constants.%.941] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } @@ -259,6 +262,7 @@ class A { // CHECK:STDOUT: %return.param_patt: %pattern_type.fcb = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%Circle [concrete = constants.%Circle] +// CHECK:STDOUT: %.loc12: form = init_form %Self.ref, call_param0 [concrete = constants.%.aaa] // CHECK:STDOUT: %return.param: ref %Circle = out_param call_param0 // CHECK:STDOUT: %return: ref %Circle = return_slot %return.param // CHECK:STDOUT: } @@ -414,9 +418,11 @@ class A { // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] // CHECK:STDOUT: %Circle.elem: type = unbound_element_type %Circle, %i32 [concrete] // CHECK:STDOUT: %pattern_type.fcb: type = pattern_type %Circle [concrete] +// CHECK:STDOUT: %.4d5: form = init_form %i32, call_param1 [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %Circle.GetRadius.type: type = fn_type @Circle.GetRadius [concrete] // CHECK:STDOUT: %Circle.GetRadius: %Circle.GetRadius.type = struct_value () [concrete] +// CHECK:STDOUT: %.941: form = init_form %i32, call_param0 [concrete] // CHECK:STDOUT: %Circle.SomeInternalFunction.type: type = fn_type @Circle.SomeInternalFunction [concrete] // CHECK:STDOUT: %Circle.SomeInternalFunction: %Circle.SomeInternalFunction.type = struct_value () [concrete] // CHECK:STDOUT: %Circle.Compute.type: type = fn_type @Circle.Compute [concrete] @@ -490,6 +496,7 @@ class A { // CHECK:STDOUT: } { // 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: %.loc7: form = init_form %i32, call_param1 [concrete = constants.%.4d5] // CHECK:STDOUT: %self.param: %Circle = value_param call_param0 // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%Circle [concrete = constants.%Circle] // CHECK:STDOUT: %self: %Circle = value_binding self, %self.param @@ -502,6 +509,7 @@ class A { // CHECK:STDOUT: } { // 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: %.loc11: form = init_form %i32, call_param0 [concrete = constants.%.941] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } @@ -513,6 +521,7 @@ class A { // CHECK:STDOUT: } { // 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: %.loc15: form = init_form %i32, call_param1 [concrete = constants.%.4d5] // CHECK:STDOUT: %self.param: %Circle = value_param call_param0 // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%Circle [concrete = constants.%Circle] // CHECK:STDOUT: %self: %Circle = value_binding self, %self.param diff --git a/toolchain/check/testdata/class/adapter/adapt_copy.carbon b/toolchain/check/testdata/class/adapter/adapt_copy.carbon index bb24a0772d5a..bd4953e85ed2 100644 --- a/toolchain/check/testdata/class/adapter/adapt_copy.carbon +++ b/toolchain/check/testdata/class/adapter/adapt_copy.carbon @@ -178,6 +178,7 @@ fn InTuple(c: (AdaptStruct, u32)) -> (AdaptStruct, u32) { // CHECK:STDOUT: %i32.builtin: type = int_type signed, %int_32 [concrete] // CHECK:STDOUT: %complete_type.f8a: = complete_type_witness %i32.builtin [concrete] // CHECK:STDOUT: %pattern_type.e78: type = pattern_type %AdaptCopyable [concrete] +// CHECK:STDOUT: %.f02: form = init_form %AdaptCopyable, call_param1 [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] // CHECK:STDOUT: %Copy.type: type = facet_type <@Copy> [concrete] @@ -192,6 +193,7 @@ fn InTuple(c: (AdaptStruct, u32)) -> (AdaptStruct, u32) { // CHECK:STDOUT: %tuple.fd0: %tuple.type.24b = tuple_value (%AdaptCopyable, %u32) [concrete] // CHECK:STDOUT: %tuple.type.d78: type = tuple_type (%AdaptCopyable, %u32) [concrete] // CHECK:STDOUT: %pattern_type.87f: type = pattern_type %tuple.type.d78 [concrete] +// CHECK:STDOUT: %.25c: form = init_form %tuple.type.d78, call_param1 [concrete] // CHECK:STDOUT: %InTuple.type: type = fn_type @InTuple [concrete] // CHECK:STDOUT: %InTuple: %InTuple.type = struct_value () [concrete] // CHECK:STDOUT: %UInt.as.Copy.impl.Op.type.68f: type = fn_type @UInt.as.Copy.impl.Op, @UInt.as.Copy.impl(%N) [symbolic] @@ -239,6 +241,7 @@ fn InTuple(c: (AdaptStruct, u32)) -> (AdaptStruct, u32) { // CHECK:STDOUT: %return.param_patt: %pattern_type.e78 = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %AdaptCopyable.ref.loc8_27: type = name_ref AdaptCopyable, file.%AdaptCopyable.decl [concrete = constants.%AdaptCopyable] +// CHECK:STDOUT: %.loc8: form = init_form %AdaptCopyable.ref.loc8_27, call_param1 [concrete = constants.%.f02] // CHECK:STDOUT: %c.param: %AdaptCopyable = value_param call_param0 // CHECK:STDOUT: %AdaptCopyable.ref.loc8_9: type = name_ref AdaptCopyable, file.%AdaptCopyable.decl [concrete = constants.%AdaptCopyable] // CHECK:STDOUT: %c: %AdaptCopyable = value_binding c, %c.param @@ -256,6 +259,7 @@ fn InTuple(c: (AdaptStruct, u32)) -> (AdaptStruct, u32) { // CHECK:STDOUT: %u32.loc27_56: type = class_type @UInt, @UInt(constants.%int_32) [concrete = constants.%u32] // CHECK:STDOUT: %.loc27_59.1: %tuple.type.24b = tuple_literal (%AdaptCopyable.ref.loc27_41, %u32.loc27_56) [concrete = constants.%tuple.fd0] // CHECK:STDOUT: %.loc27_59.2: type = converted %.loc27_59.1, constants.%tuple.type.d78 [concrete = constants.%tuple.type.d78] +// CHECK:STDOUT: %.loc27_59.3: form = init_form %.loc27_59.2, call_param1 [concrete = constants.%.25c] // CHECK:STDOUT: %c.param: %tuple.type.d78 = value_param call_param0 // CHECK:STDOUT: %.loc27_34.1: type = splice_block %.loc27_34.3 [concrete = constants.%tuple.type.d78] { // CHECK:STDOUT: %AdaptCopyable.ref.loc27_16: type = name_ref AdaptCopyable, file.%AdaptCopyable.decl [concrete = constants.%AdaptCopyable] @@ -369,6 +373,7 @@ fn InTuple(c: (AdaptStruct, u32)) -> (AdaptStruct, u32) { // CHECK:STDOUT: %tuple.type.d07: type = tuple_type (%i32, %i32) [concrete] // CHECK:STDOUT: %complete_type.65d: = complete_type_witness %tuple.type.d07 [concrete] // CHECK:STDOUT: %pattern_type.6cd: type = pattern_type %AdaptTuple [concrete] +// CHECK:STDOUT: %.2ab: form = init_form %AdaptTuple, call_param1 [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] // CHECK:STDOUT: %Copy.type: type = facet_type <@Copy> [concrete] @@ -390,6 +395,7 @@ fn InTuple(c: (AdaptStruct, u32)) -> (AdaptStruct, u32) { // CHECK:STDOUT: %tuple.b75: %tuple.type.24b = tuple_value (%AdaptTuple, %u32) [concrete] // CHECK:STDOUT: %tuple.type.3c7: type = tuple_type (%AdaptTuple, %u32) [concrete] // CHECK:STDOUT: %pattern_type.6f4: type = pattern_type %tuple.type.3c7 [concrete] +// CHECK:STDOUT: %.81e: form = init_form %tuple.type.3c7, call_param1 [concrete] // CHECK:STDOUT: %InTuple.type: type = fn_type @InTuple [concrete] // CHECK:STDOUT: %InTuple: %InTuple.type = struct_value () [concrete] // CHECK:STDOUT: %UInt.as.Copy.impl.Op.type.68f: type = fn_type @UInt.as.Copy.impl.Op, @UInt.as.Copy.impl(%N) [symbolic] @@ -439,6 +445,7 @@ fn InTuple(c: (AdaptStruct, u32)) -> (AdaptStruct, u32) { // CHECK:STDOUT: %return.param_patt: %pattern_type.6cd = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %AdaptTuple.ref.loc8_24: type = name_ref AdaptTuple, file.%AdaptTuple.decl [concrete = constants.%AdaptTuple] +// CHECK:STDOUT: %.loc8: form = init_form %AdaptTuple.ref.loc8_24, call_param1 [concrete = constants.%.2ab] // CHECK:STDOUT: %c.param: %AdaptTuple = value_param call_param0 // CHECK:STDOUT: %AdaptTuple.ref.loc8_9: type = name_ref AdaptTuple, file.%AdaptTuple.decl [concrete = constants.%AdaptTuple] // CHECK:STDOUT: %c: %AdaptTuple = value_binding c, %c.param @@ -456,6 +463,7 @@ fn InTuple(c: (AdaptStruct, u32)) -> (AdaptStruct, u32) { // CHECK:STDOUT: %u32.loc13_50: type = class_type @UInt, @UInt(constants.%int_32) [concrete = constants.%u32] // CHECK:STDOUT: %.loc13_53.1: %tuple.type.24b = tuple_literal (%AdaptTuple.ref.loc13_38, %u32.loc13_50) [concrete = constants.%tuple.b75] // CHECK:STDOUT: %.loc13_53.2: type = converted %.loc13_53.1, constants.%tuple.type.3c7 [concrete = constants.%tuple.type.3c7] +// CHECK:STDOUT: %.loc13_53.3: form = init_form %.loc13_53.2, call_param1 [concrete = constants.%.81e] // CHECK:STDOUT: %c.param: %tuple.type.3c7 = value_param call_param0 // CHECK:STDOUT: %.loc13_31.1: type = splice_block %.loc13_31.3 [concrete = constants.%tuple.type.3c7] { // CHECK:STDOUT: %AdaptTuple.ref.loc13_16: type = name_ref AdaptTuple, file.%AdaptTuple.decl [concrete = constants.%AdaptTuple] @@ -651,6 +659,7 @@ fn InTuple(c: (AdaptStruct, u32)) -> (AdaptStruct, u32) { // CHECK:STDOUT: %AdaptNoncopyable: type = class_type @AdaptNoncopyable [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %pattern_type.92b: type = pattern_type %AdaptNoncopyable [concrete] +// CHECK:STDOUT: %.152: form = init_form %AdaptNoncopyable, call_param1 [concrete] // CHECK:STDOUT: %G.type: type = fn_type @G [concrete] // CHECK:STDOUT: %G: %G.type = struct_value () [concrete] // CHECK:STDOUT: %Copy.type: type = facet_type <@Copy> [concrete] @@ -687,6 +696,7 @@ fn InTuple(c: (AdaptStruct, u32)) -> (AdaptStruct, u32) { // CHECK:STDOUT: %return.param_patt: %pattern_type.92b = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %AdaptNoncopyable.ref.loc12_30: type = name_ref AdaptNoncopyable, file.%AdaptNoncopyable.decl [concrete = constants.%AdaptNoncopyable] +// CHECK:STDOUT: %.loc12: form = init_form %AdaptNoncopyable.ref.loc12_30, call_param1 [concrete = constants.%.152] // CHECK:STDOUT: %a.param: %AdaptNoncopyable = value_param call_param0 // CHECK:STDOUT: %AdaptNoncopyable.ref.loc12_9: type = name_ref AdaptNoncopyable, file.%AdaptNoncopyable.decl [concrete = constants.%AdaptNoncopyable] // CHECK:STDOUT: %a: %AdaptNoncopyable = value_binding a, %a.param @@ -752,6 +762,7 @@ fn InTuple(c: (AdaptStruct, u32)) -> (AdaptStruct, u32) { // CHECK:STDOUT: %tuple.type.7f9: type = tuple_type (%i32, %Noncopyable, %i32) [concrete] // CHECK:STDOUT: %complete_type.381: = complete_type_witness %tuple.type.7f9 [concrete] // CHECK:STDOUT: %pattern_type.ca6: type = pattern_type %AdaptNoncopyableIndirect [concrete] +// CHECK:STDOUT: %.954: form = init_form %AdaptNoncopyableIndirect, call_param1 [concrete] // CHECK:STDOUT: %H.type: type = fn_type @H [concrete] // CHECK:STDOUT: %H: %H.type = struct_value () [concrete] // CHECK:STDOUT: %Copy.type: type = facet_type <@Copy> [concrete] @@ -801,6 +812,7 @@ fn InTuple(c: (AdaptStruct, u32)) -> (AdaptStruct, u32) { // CHECK:STDOUT: %return.param_patt: %pattern_type.ca6 = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %AdaptNoncopyableIndirect.ref.loc12_38: type = name_ref AdaptNoncopyableIndirect, file.%AdaptNoncopyableIndirect.decl [concrete = constants.%AdaptNoncopyableIndirect] +// CHECK:STDOUT: %.loc12: form = init_form %AdaptNoncopyableIndirect.ref.loc12_38, call_param1 [concrete = constants.%.954] // CHECK:STDOUT: %a.param: %AdaptNoncopyableIndirect = value_param call_param0 // CHECK:STDOUT: %AdaptNoncopyableIndirect.ref.loc12_9: type = name_ref AdaptNoncopyableIndirect, file.%AdaptNoncopyableIndirect.decl [concrete = constants.%AdaptNoncopyableIndirect] // CHECK:STDOUT: %a: %AdaptNoncopyableIndirect = value_binding a, %a.param @@ -890,6 +902,7 @@ fn InTuple(c: (AdaptStruct, u32)) -> (AdaptStruct, u32) { // CHECK:STDOUT: %struct_type.e.f: type = struct_type {.e: %i32, .f: %i32} [concrete] // CHECK:STDOUT: %complete_type.511: = complete_type_witness %struct_type.e.f [concrete] // CHECK:STDOUT: %pattern_type.341: type = pattern_type %AdaptStruct [concrete] +// CHECK:STDOUT: %.688: form = init_form %AdaptStruct, call_param1 [concrete] // CHECK:STDOUT: %I.type: type = fn_type @I [concrete] // CHECK:STDOUT: %I: %I.type = struct_value () [concrete] // CHECK:STDOUT: %Copy.type: type = facet_type <@Copy> [concrete] @@ -912,6 +925,7 @@ fn InTuple(c: (AdaptStruct, u32)) -> (AdaptStruct, u32) { // CHECK:STDOUT: %tuple.556: %tuple.type.24b = tuple_value (%AdaptStruct, %u32) [concrete] // CHECK:STDOUT: %tuple.type.691: type = tuple_type (%AdaptStruct, %u32) [concrete] // CHECK:STDOUT: %pattern_type.b13: type = pattern_type %tuple.type.691 [concrete] +// CHECK:STDOUT: %.b52: form = init_form %tuple.type.691, call_param1 [concrete] // CHECK:STDOUT: %InTuple.type: type = fn_type @InTuple [concrete] // CHECK:STDOUT: %InTuple: %InTuple.type = struct_value () [concrete] // CHECK:STDOUT: %UInt.as.Copy.impl.Op.type.68f: type = fn_type @UInt.as.Copy.impl.Op, @UInt.as.Copy.impl(%N) [symbolic] @@ -961,6 +975,7 @@ fn InTuple(c: (AdaptStruct, u32)) -> (AdaptStruct, u32) { // CHECK:STDOUT: %return.param_patt: %pattern_type.341 = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %AdaptStruct.ref.loc8_25: type = name_ref AdaptStruct, file.%AdaptStruct.decl [concrete = constants.%AdaptStruct] +// CHECK:STDOUT: %.loc8: form = init_form %AdaptStruct.ref.loc8_25, call_param1 [concrete = constants.%.688] // CHECK:STDOUT: %g.param: %AdaptStruct = value_param call_param0 // CHECK:STDOUT: %AdaptStruct.ref.loc8_9: type = name_ref AdaptStruct, file.%AdaptStruct.decl [concrete = constants.%AdaptStruct] // CHECK:STDOUT: %g: %AdaptStruct = value_binding g, %g.param @@ -978,6 +993,7 @@ fn InTuple(c: (AdaptStruct, u32)) -> (AdaptStruct, u32) { // CHECK:STDOUT: %u32.loc13_52: type = class_type @UInt, @UInt(constants.%int_32) [concrete = constants.%u32] // CHECK:STDOUT: %.loc13_55.1: %tuple.type.24b = tuple_literal (%AdaptStruct.ref.loc13_39, %u32.loc13_52) [concrete = constants.%tuple.556] // CHECK:STDOUT: %.loc13_55.2: type = converted %.loc13_55.1, constants.%tuple.type.691 [concrete = constants.%tuple.type.691] +// CHECK:STDOUT: %.loc13_55.3: form = init_form %.loc13_55.2, call_param1 [concrete = constants.%.b52] // CHECK:STDOUT: %c.param: %tuple.type.691 = value_param call_param0 // CHECK:STDOUT: %.loc13_32.1: type = splice_block %.loc13_32.3 [concrete = constants.%tuple.type.691] { // CHECK:STDOUT: %AdaptStruct.ref.loc13_16: type = name_ref AdaptStruct, file.%AdaptStruct.decl [concrete = constants.%AdaptStruct] diff --git a/toolchain/check/testdata/class/adapter/extend_adapt.carbon b/toolchain/check/testdata/class/adapter/extend_adapt.carbon index f2397a574a12..42c4aab6f109 100644 --- a/toolchain/check/testdata/class/adapter/extend_adapt.carbon +++ b/toolchain/check/testdata/class/adapter/extend_adapt.carbon @@ -370,6 +370,7 @@ fn F(a: IntAdapter) -> i32 { // CHECK:STDOUT: %complete_type.705: = complete_type_witness %struct_type.a.b [concrete] // CHECK:STDOUT: %SomeClassAdapter: type = class_type @SomeClassAdapter [concrete] // CHECK:STDOUT: %pattern_type.31a: type = pattern_type %SomeClassAdapter [concrete] +// CHECK:STDOUT: %.4d5: form = init_form %i32, call_param1 [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] @@ -406,6 +407,7 @@ fn F(a: IntAdapter) -> i32 { // CHECK:STDOUT: } { // 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: %.loc13: form = init_form %i32, call_param1 [concrete = constants.%.4d5] // CHECK:STDOUT: %a.param: %SomeClassAdapter = value_param call_param0 // CHECK:STDOUT: %SomeClassAdapter.ref: type = name_ref SomeClassAdapter, file.%SomeClassAdapter.decl [concrete = constants.%SomeClassAdapter] // CHECK:STDOUT: %a: %SomeClassAdapter = value_binding a, %a.param @@ -463,6 +465,7 @@ fn F(a: IntAdapter) -> i32 { // CHECK:STDOUT: %struct_type.a.b: type = struct_type {.a: %i32, .b: %i32} [concrete] // CHECK:STDOUT: %complete_type.705: = complete_type_witness %struct_type.a.b [concrete] // CHECK:STDOUT: %pattern_type.7d8: type = pattern_type %StructAdapter [concrete] +// CHECK:STDOUT: %.4d5: form = init_form %i32, call_param1 [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] @@ -493,6 +496,7 @@ fn F(a: IntAdapter) -> i32 { // CHECK:STDOUT: } { // 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: %.loc8: form = init_form %i32, call_param1 [concrete = constants.%.4d5] // CHECK:STDOUT: %a.param: %StructAdapter = value_param call_param0 // CHECK:STDOUT: %StructAdapter.ref: type = name_ref StructAdapter, file.%StructAdapter.decl [concrete = constants.%StructAdapter] // CHECK:STDOUT: %a: %StructAdapter = value_binding a, %a.param @@ -537,6 +541,7 @@ fn F(a: IntAdapter) -> i32 { // CHECK:STDOUT: %tuple.type.d07: type = tuple_type (%i32, %i32) [concrete] // CHECK:STDOUT: %complete_type.65d: = complete_type_witness %tuple.type.d07 [concrete] // CHECK:STDOUT: %pattern_type.3a8: type = pattern_type %TupleAdapter [concrete] +// CHECK:STDOUT: %.4d5: form = init_form %i32, call_param1 [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] @@ -568,6 +573,7 @@ fn F(a: IntAdapter) -> i32 { // CHECK:STDOUT: } { // 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: %.loc8: form = init_form %i32, call_param1 [concrete = constants.%.4d5] // CHECK:STDOUT: %a.param: %TupleAdapter = value_param call_param0 // CHECK:STDOUT: %TupleAdapter.ref: type = name_ref TupleAdapter, file.%TupleAdapter.decl [concrete = constants.%TupleAdapter] // CHECK:STDOUT: %a: %TupleAdapter = value_binding a, %a.param @@ -606,6 +612,7 @@ fn F(a: IntAdapter) -> i32 { // CHECK:STDOUT: %IntLiteral: %IntLiteral.type = struct_value () [concrete] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %pattern_type.dc0: type = pattern_type Core.IntLiteral [concrete] +// CHECK:STDOUT: %.39d: form = init_form type, call_param1 [concrete] // CHECK:STDOUT: %MakeInt.type: type = fn_type @MakeInt [concrete] // CHECK:STDOUT: %MakeInt: %MakeInt.type = struct_value () [concrete] // CHECK:STDOUT: %IntAdapter: type = class_type @IntAdapter [concrete] @@ -616,6 +623,7 @@ fn F(a: IntAdapter) -> i32 { // CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] +// CHECK:STDOUT: %.4d5: form = init_form %i32, call_param1 [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] @@ -646,6 +654,7 @@ fn F(a: IntAdapter) -> i32 { // CHECK:STDOUT: %return.patt: %pattern_type.98f = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.98f = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { +// CHECK:STDOUT: %.loc4_37: form = init_form type, call_param1 [concrete = constants.%.39d] // CHECK:STDOUT: %N.param: Core.IntLiteral = value_param call_param0 // CHECK:STDOUT: %.loc4_31.1: type = splice_block %.loc4_31.3 [concrete = Core.IntLiteral] { // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [concrete = imports.%Core] @@ -667,6 +676,7 @@ fn F(a: IntAdapter) -> i32 { // CHECK:STDOUT: } { // 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: %.loc10: form = init_form %i32, call_param1 [concrete = constants.%.4d5] // CHECK:STDOUT: %a.param: %IntAdapter = value_param call_param0 // CHECK:STDOUT: %IntAdapter.ref: type = name_ref IntAdapter, file.%IntAdapter.decl [concrete = constants.%IntAdapter] // CHECK:STDOUT: %a: %IntAdapter = value_binding a, %a.param diff --git a/toolchain/check/testdata/class/adapter/init_adapt.carbon b/toolchain/check/testdata/class/adapter/init_adapt.carbon index 863aa6124405..4406c463add5 100644 --- a/toolchain/check/testdata/class/adapter/init_adapt.carbon +++ b/toolchain/check/testdata/class/adapter/init_adapt.carbon @@ -134,8 +134,10 @@ var e: C = MakeAdaptC(); // CHECK:STDOUT: %int_2.ef8: %i32 = int_value 2 [concrete] // CHECK:STDOUT: %C.val: %C = struct_value (%int_1.5d2, %int_2.ef8) [concrete] // CHECK:STDOUT: %pattern_type.507: type = pattern_type %AdaptC [concrete] +// CHECK:STDOUT: %.64f: form = init_form %C, call_param0 [concrete] // CHECK:STDOUT: %MakeC.type: type = fn_type @MakeC [concrete] // CHECK:STDOUT: %MakeC: %MakeC.type = struct_value () [concrete] +// CHECK:STDOUT: %.b29: form = init_form %AdaptC, call_param0 [concrete] // CHECK:STDOUT: %MakeAdaptC.type: type = fn_type @MakeAdaptC [concrete] // CHECK:STDOUT: %MakeAdaptC: %MakeAdaptC.type = struct_value () [concrete] // CHECK:STDOUT: } @@ -210,6 +212,7 @@ var e: C = MakeAdaptC(); // CHECK:STDOUT: %return.param_patt: %pattern_type.7c7 = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] +// CHECK:STDOUT: %.loc19: form = init_form %C.ref, call_param0 [concrete = constants.%.64f] // CHECK:STDOUT: %return.param: ref %C = out_param call_param0 // CHECK:STDOUT: %return: ref %C = return_slot %return.param // CHECK:STDOUT: } @@ -218,6 +221,7 @@ var e: C = MakeAdaptC(); // CHECK:STDOUT: %return.param_patt: %pattern_type.507 = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %AdaptC.ref: type = name_ref AdaptC, file.%AdaptC.decl [concrete = constants.%AdaptC] +// CHECK:STDOUT: %.loc21: form = init_form %AdaptC.ref, call_param0 [concrete = constants.%.b29] // CHECK:STDOUT: %return.param: ref %AdaptC = out_param call_param0 // CHECK:STDOUT: %return: ref %AdaptC = return_slot %return.param // CHECK:STDOUT: } @@ -336,8 +340,10 @@ var e: C = MakeAdaptC(); // CHECK:STDOUT: %int_2.ef8: %i32 = int_value 2 [concrete] // CHECK:STDOUT: %C.val: %C = struct_value (%int_1.5d2, %int_2.ef8) [concrete] // CHECK:STDOUT: %pattern_type.507: type = pattern_type %AdaptC [concrete] +// CHECK:STDOUT: %.64f: form = init_form %C, call_param0 [concrete] // CHECK:STDOUT: %MakeC.type: type = fn_type @MakeC [concrete] // CHECK:STDOUT: %MakeC: %MakeC.type = struct_value () [concrete] +// CHECK:STDOUT: %.b29: form = init_form %AdaptC, call_param0 [concrete] // CHECK:STDOUT: %MakeAdaptC.type: type = fn_type @MakeAdaptC [concrete] // CHECK:STDOUT: %MakeAdaptC: %MakeAdaptC.type = struct_value () [concrete] // CHECK:STDOUT: } @@ -414,6 +420,7 @@ var e: C = MakeAdaptC(); // CHECK:STDOUT: %return.param_patt: %pattern_type.7c7 = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] +// CHECK:STDOUT: %.loc35: form = init_form %C.ref, call_param0 [concrete = constants.%.64f] // CHECK:STDOUT: %return.param: ref %C = out_param call_param0 // CHECK:STDOUT: %return: ref %C = return_slot %return.param // CHECK:STDOUT: } @@ -422,6 +429,7 @@ var e: C = MakeAdaptC(); // CHECK:STDOUT: %return.param_patt: %pattern_type.507 = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %AdaptC.ref: type = name_ref AdaptC, file.%AdaptC.decl [concrete = constants.%AdaptC] +// CHECK:STDOUT: %.loc37: form = init_form %AdaptC.ref, call_param0 [concrete = constants.%.b29] // CHECK:STDOUT: %return.param: ref %AdaptC = out_param call_param0 // CHECK:STDOUT: %return: ref %AdaptC = return_slot %return.param // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/class/base.carbon b/toolchain/check/testdata/class/base.carbon index 808f3618d14e..9e36a3f7a6c7 100644 --- a/toolchain/check/testdata/class/base.carbon +++ b/toolchain/check/testdata/class/base.carbon @@ -66,6 +66,7 @@ class Derived { // CHECK:STDOUT: %Derived.elem.683: type = unbound_element_type %Derived, %i32 [concrete] // CHECK:STDOUT: %struct_type.base.d.81a: type = struct_type {.base: %Base, .d: %i32} [concrete] // CHECK:STDOUT: %complete_type.3b4: = complete_type_witness %struct_type.base.d.81a [concrete] +// CHECK:STDOUT: %.9cc: form = init_form %Derived, call_param0 [concrete] // CHECK:STDOUT: %pattern_type.db9: type = pattern_type %Derived [concrete] // CHECK:STDOUT: %Make.type: type = fn_type @Make [concrete] // CHECK:STDOUT: %Make: %Make.type = struct_value () [concrete] @@ -99,6 +100,7 @@ class Derived { // CHECK:STDOUT: %tuple.type.24b: type = tuple_type (type, type) [concrete] // CHECK:STDOUT: %tuple.95a: %tuple.type.24b = tuple_value (%i32, %i32) [concrete] // CHECK:STDOUT: %tuple.type.d07: type = tuple_type (%i32, %i32) [concrete] +// CHECK:STDOUT: %.204: form = init_form %tuple.type.d07, call_param1 [concrete] // CHECK:STDOUT: %pattern_type.511: type = pattern_type %tuple.type.d07 [concrete] // CHECK:STDOUT: %Access.type: type = fn_type @Access [concrete] // CHECK:STDOUT: %Access: %Access.type = struct_value () [concrete] @@ -147,6 +149,7 @@ class Derived { // CHECK:STDOUT: %return.param_patt: %pattern_type.db9 = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %Derived.ref: type = name_ref Derived, file.%Derived.decl [concrete = constants.%Derived] +// CHECK:STDOUT: %.loc13: form = init_form %Derived.ref, call_param0 [concrete = constants.%.9cc] // CHECK:STDOUT: %return.param: ref %Derived = out_param call_param0 // CHECK:STDOUT: %return: ref %Derived = return_slot %return.param // CHECK:STDOUT: } @@ -162,6 +165,7 @@ class Derived { // CHECK:STDOUT: %i32.loc17_32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %.loc17_35.1: %tuple.type.24b = tuple_literal (%i32.loc17_27, %i32.loc17_32) [concrete = constants.%tuple.95a] // CHECK:STDOUT: %.loc17_35.2: type = converted %.loc17_35.1, constants.%tuple.type.d07 [concrete = constants.%tuple.type.d07] +// CHECK:STDOUT: %.loc17_35.3: form = init_form %.loc17_35.2, call_param1 [concrete = constants.%.204] // CHECK:STDOUT: %d.param: %Derived = value_param call_param0 // CHECK:STDOUT: %Derived.ref: type = name_ref Derived, file.%Derived.decl [concrete = constants.%Derived] // CHECK:STDOUT: %d: %Derived = value_binding d, %d.param diff --git a/toolchain/check/testdata/class/base_field.carbon b/toolchain/check/testdata/class/base_field.carbon index cdd64afb1399..a61827990bef 100644 --- a/toolchain/check/testdata/class/base_field.carbon +++ b/toolchain/check/testdata/class/base_field.carbon @@ -48,6 +48,7 @@ fn Access(p: Derived*) -> i32* { // CHECK:STDOUT: %ptr.f74: type = ptr_type %Derived [concrete] // CHECK:STDOUT: %pattern_type.0dd: type = pattern_type %ptr.f74 [concrete] // CHECK:STDOUT: %ptr.235: type = ptr_type %i32 [concrete] +// CHECK:STDOUT: %.4f9: form = init_form %ptr.235, call_param1 [concrete] // CHECK:STDOUT: %pattern_type.fe8: type = pattern_type %ptr.235 [concrete] // CHECK:STDOUT: %Access.type: type = fn_type @Access [concrete] // CHECK:STDOUT: %Access: %Access.type = struct_value () [concrete] @@ -96,8 +97,9 @@ fn Access(p: Derived*) -> 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: %ptr.loc28_30: type = ptr_type %i32 [concrete = constants.%ptr.235] +// CHECK:STDOUT: %.loc28_30: form = init_form %ptr.loc28_30, call_param1 [concrete = constants.%.4f9] // CHECK:STDOUT: %p.param: %ptr.f74 = value_param call_param0 -// CHECK:STDOUT: %.loc28: type = splice_block %ptr.loc28_21 [concrete = constants.%ptr.f74] { +// CHECK:STDOUT: %.loc28_21: type = splice_block %ptr.loc28_21 [concrete = constants.%ptr.f74] { // CHECK:STDOUT: %Derived.ref: type = name_ref Derived, file.%Derived.decl [concrete = constants.%Derived] // CHECK:STDOUT: %ptr.loc28_21: type = ptr_type %Derived.ref [concrete = constants.%ptr.f74] // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/class/base_method_qualified.carbon b/toolchain/check/testdata/class/base_method_qualified.carbon index f5ed54a7049e..c6e5ca8d255d 100644 --- a/toolchain/check/testdata/class/base_method_qualified.carbon +++ b/toolchain/check/testdata/class/base_method_qualified.carbon @@ -52,6 +52,7 @@ fn PassDerivedToBaseIndirect(p: Derived*) -> i32 { // CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] +// CHECK:STDOUT: %.4d5: form = init_form %i32, call_param1 [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %Base.F.type: type = fn_type @Base.F [concrete] // CHECK:STDOUT: %Base.F: %Base.F.type = struct_value () [concrete] @@ -110,6 +111,7 @@ fn PassDerivedToBaseIndirect(p: Derived*) -> i32 { // CHECK:STDOUT: } { // 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: %.loc29: form = init_form %i32, call_param1 [concrete = constants.%.4d5] // CHECK:STDOUT: %a.param: %Derived = value_param call_param0 // CHECK:STDOUT: %Derived.ref: type = name_ref Derived, file.%Derived.decl.loc15 [concrete = constants.%Derived] // CHECK:STDOUT: %a: %Derived = value_binding a, %a.param @@ -124,8 +126,9 @@ fn PassDerivedToBaseIndirect(p: Derived*) -> i32 { // CHECK:STDOUT: } { // 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: %.loc33_33: form = init_form %i32, call_param1 [concrete = constants.%.4d5] // CHECK:STDOUT: %p.param: %ptr.f74 = value_param call_param0 -// CHECK:STDOUT: %.loc33: type = splice_block %ptr [concrete = constants.%ptr.f74] { +// CHECK:STDOUT: %.loc33_27: type = splice_block %ptr [concrete = constants.%ptr.f74] { // CHECK:STDOUT: %Derived.ref: type = name_ref Derived, file.%Derived.decl.loc15 [concrete = constants.%Derived] // CHECK:STDOUT: %ptr: type = ptr_type %Derived.ref [concrete = constants.%ptr.f74] // CHECK:STDOUT: } @@ -141,6 +144,7 @@ fn PassDerivedToBaseIndirect(p: Derived*) -> i32 { // CHECK:STDOUT: } { // 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: %.loc37: form = init_form %i32, call_param1 [concrete = constants.%.4d5] // CHECK:STDOUT: %a.param: %Derived = value_param call_param0 // CHECK:STDOUT: %Derived.ref: type = name_ref Derived, file.%Derived.decl.loc15 [concrete = constants.%Derived] // CHECK:STDOUT: %a: %Derived = value_binding a, %a.param @@ -155,8 +159,9 @@ fn PassDerivedToBaseIndirect(p: Derived*) -> i32 { // CHECK:STDOUT: } { // 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: %.loc41_46: form = init_form %i32, call_param1 [concrete = constants.%.4d5] // CHECK:STDOUT: %p.param: %ptr.f74 = value_param call_param0 -// CHECK:STDOUT: %.loc41: type = splice_block %ptr [concrete = constants.%ptr.f74] { +// CHECK:STDOUT: %.loc41_40: type = splice_block %ptr [concrete = constants.%ptr.f74] { // CHECK:STDOUT: %Derived.ref: type = name_ref Derived, file.%Derived.decl.loc15 [concrete = constants.%Derived] // CHECK:STDOUT: %ptr: type = ptr_type %Derived.ref [concrete = constants.%ptr.f74] // CHECK:STDOUT: } @@ -206,6 +211,7 @@ fn PassDerivedToBaseIndirect(p: Derived*) -> i32 { // CHECK:STDOUT: } { // 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: %.loc18: form = init_form %i32, call_param1 [concrete = constants.%.4d5] // CHECK:STDOUT: %self.param: %Base = value_param call_param0 // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%Base [concrete = constants.%Base] // CHECK:STDOUT: %self: %Base = value_binding self, %self.param @@ -220,6 +226,7 @@ fn PassDerivedToBaseIndirect(p: Derived*) -> i32 { // CHECK:STDOUT: } { // 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: %.loc19: form = init_form %i32, call_param1 [concrete = constants.%.4d5] // CHECK:STDOUT: %self.param: %Derived = value_param call_param0 // CHECK:STDOUT: %Derived.ref: type = name_ref Derived, file.%Derived.decl.loc15 [concrete = constants.%Derived] // CHECK:STDOUT: %self: %Derived = value_binding self, %self.param diff --git a/toolchain/check/testdata/class/basic.carbon b/toolchain/check/testdata/class/basic.carbon index 49daa83dfec2..9a214ffce8e6 100644 --- a/toolchain/check/testdata/class/basic.carbon +++ b/toolchain/check/testdata/class/basic.carbon @@ -40,6 +40,7 @@ fn Run() -> i32 { // CHECK:STDOUT: %N: Core.IntLiteral = symbolic_binding N, 0 [symbolic] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] +// CHECK:STDOUT: %.4d5: form = init_form %i32, call_param1 [concrete] // CHECK:STDOUT: %Class.F.type: type = fn_type @Class.F [concrete] // CHECK:STDOUT: %Class.F: %Class.F.type = struct_value () [concrete] // CHECK:STDOUT: %Class.G.type: type = fn_type @Class.G [concrete] @@ -57,6 +58,7 @@ fn Run() -> i32 { // CHECK:STDOUT: %Copy.facet: %Copy.type = facet_value %i32, (%Copy.impl_witness.f17) [concrete] // CHECK:STDOUT: %.f79: type = fn_type_with_self_type %Copy.Op.type, %Copy.facet [concrete] // CHECK:STDOUT: %Int.as.Copy.impl.Op.specific_fn: = specific_function %Int.as.Copy.impl.Op.664, @Int.as.Copy.impl.Op(%int_32) [concrete] +// CHECK:STDOUT: %.941: form = init_form %i32, call_param0 [concrete] // CHECK:STDOUT: %Run.type: type = fn_type @Run [concrete] // CHECK:STDOUT: %Run: %Run.type = struct_value () [concrete] // CHECK:STDOUT: %int_4.0c1: Core.IntLiteral = int_value 4 [concrete] @@ -111,8 +113,9 @@ fn Run() -> i32 { // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32.loc25_23: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc25_23: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] +// CHECK:STDOUT: %.loc25_23: form = init_form %i32.loc25_23, call_param1 [concrete = constants.%.4d5] // CHECK:STDOUT: %n.param.loc25: %i32 = value_param call_param0 -// CHECK:STDOUT: %.loc25: type = splice_block %i32.loc25_15 [concrete = constants.%i32] { +// CHECK:STDOUT: %.loc25_15: type = splice_block %i32.loc25_15 [concrete = constants.%i32] { // CHECK:STDOUT: %int_32.loc25_15: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc25_15: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } @@ -126,6 +129,7 @@ fn Run() -> i32 { // CHECK:STDOUT: } { // 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: %.loc29: form = init_form %i32, call_param0 [concrete = constants.%.941] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } @@ -142,8 +146,9 @@ fn Run() -> i32 { // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32.loc16_19: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc16_19: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] +// CHECK:STDOUT: %.loc16_19: form = init_form %i32.loc16_19, call_param1 [concrete = constants.%.4d5] // CHECK:STDOUT: %n.param: %i32 = value_param call_param0 -// CHECK:STDOUT: %.loc16: type = splice_block %i32.loc16_11 [concrete = constants.%i32] { +// CHECK:STDOUT: %.loc16_11: type = splice_block %i32.loc16_11 [concrete = constants.%i32] { // CHECK:STDOUT: %int_32.loc16_11: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc16_11: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } @@ -159,8 +164,9 @@ fn Run() -> i32 { // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32.loc20_19: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc20_19: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] +// CHECK:STDOUT: %.loc20_19: form = init_form %i32.loc20_19, call_param1 [concrete = constants.%.4d5] // CHECK:STDOUT: %n.param.loc20: %i32 = value_param call_param0 -// CHECK:STDOUT: %.loc20: type = splice_block %i32.loc20_11 [concrete = constants.%i32] { +// CHECK:STDOUT: %.loc20_11: type = splice_block %i32.loc20_11 [concrete = constants.%i32] { // CHECK:STDOUT: %int_32.loc20_11: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc20_11: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/class/complete_in_member_fn.carbon b/toolchain/check/testdata/class/complete_in_member_fn.carbon index ef088fed2d07..6c1a7718375b 100644 --- a/toolchain/check/testdata/class/complete_in_member_fn.carbon +++ b/toolchain/check/testdata/class/complete_in_member_fn.carbon @@ -28,6 +28,7 @@ class C { // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %N: Core.IntLiteral = symbolic_binding N, 0 [symbolic] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] +// CHECK:STDOUT: %.4d5: form = init_form %i32, call_param1 [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %C.F.type: type = fn_type @C.F [concrete] // CHECK:STDOUT: %C.F: %C.F.type = struct_value () [concrete] @@ -77,6 +78,7 @@ class C { // CHECK:STDOUT: } { // 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: %.loc16_17: form = init_form %i32, call_param1 [concrete = constants.%.4d5] // CHECK:STDOUT: %c.param: %C = value_param call_param0 // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %c: %C = value_binding c, %c.param diff --git a/toolchain/check/testdata/class/compound_field.carbon b/toolchain/check/testdata/class/compound_field.carbon index 6755047b9b97..dc42023f182d 100644 --- a/toolchain/check/testdata/class/compound_field.carbon +++ b/toolchain/check/testdata/class/compound_field.carbon @@ -59,6 +59,7 @@ fn AccessBaseIndirect(p: Derived*) -> i32* { // CHECK:STDOUT: %struct_type.base.d.e.b4b: type = struct_type {.base: %Base, .d: %i32, .e: %i32} [concrete] // CHECK:STDOUT: %complete_type.ea9: = complete_type_witness %struct_type.base.d.e.b4b [concrete] // CHECK:STDOUT: %pattern_type.9f6: type = pattern_type %Derived [concrete] +// CHECK:STDOUT: %.4d5: form = init_form %i32, call_param1 [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %AccessDerived.type: type = fn_type @AccessDerived [concrete] // CHECK:STDOUT: %AccessDerived: %AccessDerived.type = struct_value () [concrete] @@ -80,6 +81,7 @@ fn AccessBaseIndirect(p: Derived*) -> i32* { // CHECK:STDOUT: %ptr.f74: type = ptr_type %Derived [concrete] // CHECK:STDOUT: %pattern_type.0dd: type = pattern_type %ptr.f74 [concrete] // CHECK:STDOUT: %ptr.235: type = ptr_type %i32 [concrete] +// CHECK:STDOUT: %.4f9: form = init_form %ptr.235, call_param1 [concrete] // CHECK:STDOUT: %pattern_type.fe8: type = pattern_type %ptr.235 [concrete] // CHECK:STDOUT: %AccessDerivedIndirect.type: type = fn_type @AccessDerivedIndirect [concrete] // CHECK:STDOUT: %AccessDerivedIndirect: %AccessDerivedIndirect.type = struct_value () [concrete] @@ -129,6 +131,7 @@ fn AccessBaseIndirect(p: Derived*) -> i32* { // CHECK:STDOUT: } { // 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: %.loc28: form = init_form %i32, call_param1 [concrete = constants.%.4d5] // CHECK:STDOUT: %d.param: %Derived = value_param call_param0 // CHECK:STDOUT: %Derived.ref.loc28: type = name_ref Derived, file.%Derived.decl [concrete = constants.%Derived] // CHECK:STDOUT: %d: %Derived = value_binding d, %d.param @@ -143,6 +146,7 @@ fn AccessBaseIndirect(p: Derived*) -> i32* { // CHECK:STDOUT: } { // 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: %.loc32: form = init_form %i32, call_param1 [concrete = constants.%.4d5] // CHECK:STDOUT: %d.param: %Derived = value_param call_param0 // CHECK:STDOUT: %Derived.ref: type = name_ref Derived, file.%Derived.decl [concrete = constants.%Derived] // CHECK:STDOUT: %d: %Derived = value_binding d, %d.param @@ -158,8 +162,9 @@ fn AccessBaseIndirect(p: Derived*) -> 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: %ptr.loc36_45: type = ptr_type %i32 [concrete = constants.%ptr.235] +// CHECK:STDOUT: %.loc36_45: form = init_form %ptr.loc36_45, call_param1 [concrete = constants.%.4f9] // CHECK:STDOUT: %p.param: %ptr.f74 = value_param call_param0 -// CHECK:STDOUT: %.loc36: type = splice_block %ptr.loc36_36 [concrete = constants.%ptr.f74] { +// CHECK:STDOUT: %.loc36_36: type = splice_block %ptr.loc36_36 [concrete = constants.%ptr.f74] { // CHECK:STDOUT: %Derived.ref.loc36: type = name_ref Derived, file.%Derived.decl [concrete = constants.%Derived] // CHECK:STDOUT: %ptr.loc36_36: type = ptr_type %Derived.ref.loc36 [concrete = constants.%ptr.f74] // CHECK:STDOUT: } @@ -176,8 +181,9 @@ fn AccessBaseIndirect(p: Derived*) -> 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: %ptr.loc40_42: type = ptr_type %i32 [concrete = constants.%ptr.235] +// CHECK:STDOUT: %.loc40_42: form = init_form %ptr.loc40_42, call_param1 [concrete = constants.%.4f9] // CHECK:STDOUT: %p.param: %ptr.f74 = value_param call_param0 -// CHECK:STDOUT: %.loc40: type = splice_block %ptr.loc40_33 [concrete = constants.%ptr.f74] { +// CHECK:STDOUT: %.loc40_33: type = splice_block %ptr.loc40_33 [concrete = constants.%ptr.f74] { // CHECK:STDOUT: %Derived.ref: type = name_ref Derived, file.%Derived.decl [concrete = constants.%Derived] // CHECK:STDOUT: %ptr.loc40_33: type = ptr_type %Derived.ref [concrete = constants.%ptr.f74] // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/class/derived_to_base.carbon b/toolchain/check/testdata/class/derived_to_base.carbon index 71071c9363ec..26f29e64f175 100644 --- a/toolchain/check/testdata/class/derived_to_base.carbon +++ b/toolchain/check/testdata/class/derived_to_base.carbon @@ -128,6 +128,7 @@ fn PassConstB(p: const B) { // CHECK:STDOUT: %ptr.31e: type = ptr_type %C [concrete] // CHECK:STDOUT: %pattern_type.506: type = pattern_type %ptr.31e [concrete] // CHECK:STDOUT: %ptr.27c: type = ptr_type %B [concrete] +// CHECK:STDOUT: %.912: form = init_form %ptr.27c, call_param1 [concrete] // CHECK:STDOUT: %pattern_type.191: type = pattern_type %ptr.27c [concrete] // CHECK:STDOUT: %ConvertCToB.type: type = fn_type @ConvertCToB [concrete] // CHECK:STDOUT: %ConvertCToB: %ConvertCToB.type = struct_value () [concrete] @@ -143,6 +144,7 @@ fn PassConstB(p: const B) { // CHECK:STDOUT: %.116: type = fn_type_with_self_type %Copy.Op.type, %Copy.facet.069 [concrete] // CHECK:STDOUT: %ptr.as.Copy.impl.Op.specific_fn.695: = specific_function %ptr.as.Copy.impl.Op.20b, @ptr.as.Copy.impl.Op(%B) [concrete] // CHECK:STDOUT: %ptr.643: type = ptr_type %A [concrete] +// CHECK:STDOUT: %.1ec: form = init_form %ptr.643, call_param1 [concrete] // CHECK:STDOUT: %pattern_type.f29: type = pattern_type %ptr.643 [concrete] // CHECK:STDOUT: %ConvertBToA.type: type = fn_type @ConvertBToA [concrete] // CHECK:STDOUT: %ConvertBToA: %ConvertBToA.type = struct_value () [concrete] @@ -214,6 +216,7 @@ fn PassConstB(p: const B) { // CHECK:STDOUT: } { // CHECK:STDOUT: %B.ref: type = name_ref B, file.%B.decl [concrete = constants.%B] // CHECK:STDOUT: %ptr.loc19_27: type = ptr_type %B.ref [concrete = constants.%ptr.27c] +// CHECK:STDOUT: %.loc19_27: form = init_form %ptr.loc19_27, call_param1 [concrete = constants.%.912] // CHECK:STDOUT: %p.param: %ptr.31e = value_param call_param0 // CHECK:STDOUT: %.loc19_20: type = splice_block %ptr.loc19_20 [concrete = constants.%ptr.31e] { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] @@ -231,6 +234,7 @@ fn PassConstB(p: const B) { // CHECK:STDOUT: } { // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [concrete = constants.%A] // CHECK:STDOUT: %ptr.loc20_27: type = ptr_type %A.ref [concrete = constants.%ptr.643] +// CHECK:STDOUT: %.loc20_27: form = init_form %ptr.loc20_27, call_param1 [concrete = constants.%.1ec] // CHECK:STDOUT: %p.param: %ptr.27c = value_param call_param0 // CHECK:STDOUT: %.loc20_20: type = splice_block %ptr.loc20_20 [concrete = constants.%ptr.27c] { // CHECK:STDOUT: %B.ref: type = name_ref B, file.%B.decl [concrete = constants.%B] @@ -248,6 +252,7 @@ fn PassConstB(p: const B) { // CHECK:STDOUT: } { // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [concrete = constants.%A] // CHECK:STDOUT: %ptr.loc21_27: type = ptr_type %A.ref [concrete = constants.%ptr.643] +// CHECK:STDOUT: %.loc21_27: form = init_form %ptr.loc21_27, call_param1 [concrete = constants.%.1ec] // CHECK:STDOUT: %p.param: %ptr.31e = value_param call_param0 // CHECK:STDOUT: %.loc21_20: type = splice_block %ptr.loc21_20 [concrete = constants.%ptr.31e] { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] @@ -273,8 +278,9 @@ fn PassConstB(p: const B) { // CHECK:STDOUT: } { // CHECK:STDOUT: %A.ref.loc27: type = name_ref A, file.%A.decl [concrete = constants.%A] // CHECK:STDOUT: %ptr.loc27_26: type = ptr_type %A.ref.loc27 [concrete = constants.%ptr.643] +// CHECK:STDOUT: %.loc27_26: form = init_form %ptr.loc27_26, call_param1 [concrete = constants.%.1ec] // CHECK:STDOUT: %c.param: %ptr.31e = value_param call_param0 -// CHECK:STDOUT: %.loc27: type = splice_block %ptr.loc27_19 [concrete = constants.%ptr.31e] { +// CHECK:STDOUT: %.loc27_19: type = splice_block %ptr.loc27_19 [concrete = constants.%ptr.31e] { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %ptr.loc27_19: type = ptr_type %C.ref [concrete = constants.%ptr.31e] // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/class/fail_abstract.carbon b/toolchain/check/testdata/class/fail_abstract.carbon index 5b336f864bd3..76680c89b172 100644 --- a/toolchain/check/testdata/class/fail_abstract.carbon +++ b/toolchain/check/testdata/class/fail_abstract.carbon @@ -535,6 +535,7 @@ fn CallReturnAbstract() { // CHECK:STDOUT: %Derived.elem.87e: type = unbound_element_type %Derived, %empty_struct_type [concrete] // CHECK:STDOUT: %struct_type.base.d.be5: type = struct_type {.base: %Abstract, .d: %empty_struct_type} [concrete] // CHECK:STDOUT: %complete_type.840: = complete_type_witness %struct_type.base.d.be5 [concrete] +// CHECK:STDOUT: %.91f: form = init_form %Derived, call_param0 [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %Derived [concrete] // CHECK:STDOUT: %Make.type: type = fn_type @Make [concrete] // CHECK:STDOUT: %Make: %Make.type = struct_value () [concrete] @@ -564,6 +565,7 @@ fn CallReturnAbstract() { // CHECK:STDOUT: %return.param_patt: %pattern_type = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %Derived.ref: type = name_ref Derived, file.%Derived.decl [concrete = constants.%Derived] +// CHECK:STDOUT: %.loc13: form = init_form %Derived.ref, call_param0 [concrete = constants.%.91f] // CHECK:STDOUT: %return.param: ref %Derived = out_param call_param0 // CHECK:STDOUT: %return: ref %Derived = return_slot %return.param // CHECK:STDOUT: } @@ -615,6 +617,7 @@ fn CallReturnAbstract() { // CHECK:STDOUT: %struct_type.base.d: type = struct_type {.base: %Abstract, .d: %empty_struct_type} [concrete] // CHECK:STDOUT: %complete_type.840: = complete_type_witness %struct_type.base.d [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %Abstract [concrete] +// CHECK:STDOUT: %.0a4: form = init_form %Abstract, call_param1 [concrete] // CHECK:STDOUT: %Return.type: type = fn_type @Return [concrete] // CHECK:STDOUT: %Return: %Return.type = struct_value () [concrete] // CHECK:STDOUT: } @@ -643,6 +646,7 @@ fn CallReturnAbstract() { // CHECK:STDOUT: %return.param_patt: %pattern_type = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %Abstract.ref.loc20_27: type = name_ref Abstract, file.%Abstract.decl [concrete = constants.%Abstract] +// CHECK:STDOUT: %.loc20: form = init_form %Abstract.ref.loc20_27, call_param1 [concrete = constants.%.0a4] // CHECK:STDOUT: %a.param: %Abstract = value_param call_param0 // CHECK:STDOUT: %Abstract.ref.loc20_14: type = name_ref Abstract, file.%Abstract.decl [concrete = constants.%Abstract] // CHECK:STDOUT: %a: %Abstract = value_binding a, %a.param @@ -697,6 +701,7 @@ fn CallReturnAbstract() { // CHECK:STDOUT: %struct_type.base.d.be5: type = struct_type {.base: %Abstract, .d: %empty_struct_type} [concrete] // CHECK:STDOUT: %complete_type.840: = complete_type_witness %struct_type.base.d.be5 [concrete] // CHECK:STDOUT: %pattern_type.9f6: type = pattern_type %Derived [concrete] +// CHECK:STDOUT: %.631: form = init_form %empty_struct_type, call_param1 [concrete] // CHECK:STDOUT: %pattern_type.a96: type = pattern_type %empty_struct_type [concrete] // CHECK:STDOUT: %Access.type: type = fn_type @Access [concrete] // CHECK:STDOUT: %Access: %Access.type = struct_value () [concrete] @@ -727,6 +732,7 @@ fn CallReturnAbstract() { // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc14_27.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc14_27.2: type = converted %.loc14_27.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] +// CHECK:STDOUT: %.loc14_27.3: form = init_form %.loc14_27.2, call_param1 [concrete = constants.%.631] // CHECK:STDOUT: %d.param: %Derived = value_param call_param0 // CHECK:STDOUT: %Derived.ref: type = name_ref Derived, file.%Derived.decl [concrete = constants.%Derived] // CHECK:STDOUT: %d: %Derived = value_binding d, %d.param @@ -828,6 +834,7 @@ fn CallReturnAbstract() { // CHECK:STDOUT: %Abstract: type = class_type @Abstract [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] +// CHECK:STDOUT: %.683: form = init_form %Abstract, call_param0 [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %Abstract [concrete] // CHECK:STDOUT: %ReturnAbstract.type: type = fn_type @ReturnAbstract [concrete] // CHECK:STDOUT: %ReturnAbstract: %ReturnAbstract.type = struct_value () [concrete] @@ -856,6 +863,7 @@ fn CallReturnAbstract() { // CHECK:STDOUT: %return.param_patt: %pattern_type = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %Abstract.ref: type = name_ref Abstract, file.%Abstract.decl [concrete = constants.%Abstract] +// CHECK:STDOUT: %.loc7: form = init_form %Abstract.ref, call_param0 [concrete = constants.%.683] // CHECK:STDOUT: %return.param: ref %Abstract = out_param call_param0 // CHECK:STDOUT: %return: ref %Abstract = return_slot %return.param // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/class/fail_incomplete.carbon b/toolchain/check/testdata/class/fail_incomplete.carbon index dfc8536f6995..b88f30cd1011 100644 --- a/toolchain/check/testdata/class/fail_incomplete.carbon +++ b/toolchain/check/testdata/class/fail_incomplete.carbon @@ -45,20 +45,27 @@ fn CallClassFunction() { // CHECK:STDERR: var global_var: Class; -// CHECK:STDERR: fail_forward_decl.carbon:[[@LINE+7]]:27: error: function returns incomplete type `Class` [IncompleteTypeInFunctionReturnType] +// CHECK:STDERR: fail_forward_decl.carbon:[[@LINE+14]]:27: error: function returns incomplete type `Class` [IncompleteTypeInFunctionReturnType] // CHECK:STDERR: fn ConvertFromStruct() -> Class { return {}; } // CHECK:STDERR: ^~~~~ // CHECK:STDERR: fail_forward_decl.carbon:[[@LINE-34]]:1: note: class was forward declared here [ClassForwardDeclaredHere] // CHECK:STDERR: class Class; // CHECK:STDERR: ^~~~~~~~~~~~ // CHECK:STDERR: +// CHECK:STDERR: fail_forward_decl.carbon:[[@LINE+7]]:27: error: parameter has incomplete type `Class` in function definition [IncompleteTypeInFunctionParam] +// CHECK:STDERR: fn ConvertFromStruct() -> Class { return {}; } +// CHECK:STDERR: ^~~~~ +// CHECK:STDERR: fail_forward_decl.carbon:[[@LINE-41]]:1: note: class was forward declared here [ClassForwardDeclaredHere] +// CHECK:STDERR: class Class; +// CHECK:STDERR: ^~~~~~~~~~~~ +// CHECK:STDERR: fn ConvertFromStruct() -> Class { return {}; } fn G(p: Class*) -> () { // CHECK:STDERR: fail_forward_decl.carbon:[[@LINE+7]]:10: error: member access into object of incomplete type `Class` [IncompleteTypeInMemberAccess] // CHECK:STDERR: return p->n; // CHECK:STDERR: ^~~~ - // CHECK:STDERR: fail_forward_decl.carbon:[[@LINE-44]]:1: note: class was forward declared here [ClassForwardDeclaredHere] + // CHECK:STDERR: fail_forward_decl.carbon:[[@LINE-51]]:1: note: class was forward declared here [ClassForwardDeclaredHere] // CHECK:STDERR: class Class; // CHECK:STDERR: ^~~~~~~~~~~~ // CHECK:STDERR: @@ -69,17 +76,24 @@ fn MemberAccess(p: Class*) -> () { // CHECK:STDERR: fail_forward_decl.carbon:[[@LINE+7]]:11: error: member access into object of incomplete type `Class` [IncompleteTypeInMemberAccess] // CHECK:STDERR: return (*p).n; // CHECK:STDERR: ^~ - // CHECK:STDERR: fail_forward_decl.carbon:[[@LINE-55]]:1: note: class was forward declared here [ClassForwardDeclaredHere] + // CHECK:STDERR: fail_forward_decl.carbon:[[@LINE-62]]:1: note: class was forward declared here [ClassForwardDeclaredHere] // CHECK:STDERR: class Class; // CHECK:STDERR: ^~~~~~~~~~~~ // CHECK:STDERR: return (*p).n; } -// CHECK:STDERR: fail_forward_decl.carbon:[[@LINE+7]]:23: error: function returns incomplete type `Class` [IncompleteTypeInFunctionReturnType] +// CHECK:STDERR: fail_forward_decl.carbon:[[@LINE+14]]:23: error: function returns incomplete type `Class` [IncompleteTypeInFunctionReturnType] // CHECK:STDERR: fn Copy(p: Class*) -> Class { // CHECK:STDERR: ^~~~~ -// CHECK:STDERR: fail_forward_decl.carbon:[[@LINE-65]]:1: note: class was forward declared here [ClassForwardDeclaredHere] +// CHECK:STDERR: fail_forward_decl.carbon:[[@LINE-72]]:1: note: class was forward declared here [ClassForwardDeclaredHere] +// CHECK:STDERR: class Class; +// CHECK:STDERR: ^~~~~~~~~~~~ +// CHECK:STDERR: +// CHECK:STDERR: fail_forward_decl.carbon:[[@LINE+7]]:23: error: parameter has incomplete type `Class` in function definition [IncompleteTypeInFunctionParam] +// CHECK:STDERR: fn Copy(p: Class*) -> Class { +// CHECK:STDERR: ^~~~~ +// CHECK:STDERR: fail_forward_decl.carbon:[[@LINE-79]]:1: note: class was forward declared here [ClassForwardDeclaredHere] // CHECK:STDERR: class Class; // CHECK:STDERR: ^~~~~~~~~~~~ // CHECK:STDERR: @@ -91,7 +105,7 @@ fn Let(p: Class*) { // CHECK:STDERR: fail_forward_decl.carbon:[[@LINE+7]]:10: error: binding pattern has incomplete type `Class` in name binding declaration [IncompleteTypeInBindingDecl] // CHECK:STDERR: let c: Class = *p; // CHECK:STDERR: ^~~~~ - // CHECK:STDERR: fail_forward_decl.carbon:[[@LINE-77]]:1: note: class was forward declared here [ClassForwardDeclaredHere] + // CHECK:STDERR: fail_forward_decl.carbon:[[@LINE-91]]:1: note: class was forward declared here [ClassForwardDeclaredHere] // CHECK:STDERR: class Class; // CHECK:STDERR: ^~~~~~~~~~~~ // CHECK:STDERR: @@ -106,7 +120,7 @@ fn CallTakeIncomplete(p: Class*) { // CHECK:STDERR: fail_forward_decl.carbon:[[@LINE+10]]:18: error: forming value of incomplete type `Class` [IncompleteTypeInValueConversion] // CHECK:STDERR: TakeIncomplete(*p); // CHECK:STDERR: ^~ - // CHECK:STDERR: fail_forward_decl.carbon:[[@LINE-92]]:1: note: class was forward declared here [ClassForwardDeclaredHere] + // CHECK:STDERR: fail_forward_decl.carbon:[[@LINE-106]]:1: note: class was forward declared here [ClassForwardDeclaredHere] // CHECK:STDERR: class Class; // CHECK:STDERR: ^~~~~~~~~~~~ // CHECK:STDERR: fail_forward_decl.carbon:[[@LINE-11]]:19: note: initializing function parameter [InCallToFunctionParam] @@ -118,7 +132,7 @@ fn CallTakeIncomplete(p: Class*) { // CHECK:STDERR: fail_forward_decl.carbon:[[@LINE+10]]:18: error: forming value of incomplete type `Class` [IncompleteTypeInValueConversion] // CHECK:STDERR: TakeIncomplete({}); // CHECK:STDERR: ^~ - // CHECK:STDERR: fail_forward_decl.carbon:[[@LINE-104]]:1: note: class was forward declared here [ClassForwardDeclaredHere] + // CHECK:STDERR: fail_forward_decl.carbon:[[@LINE-118]]:1: note: class was forward declared here [ClassForwardDeclaredHere] // CHECK:STDERR: class Class; // CHECK:STDERR: ^~~~~~~~~~~~ // CHECK:STDERR: fail_forward_decl.carbon:[[@LINE-23]]:19: note: initializing function parameter [InCallToFunctionParam] @@ -132,7 +146,7 @@ fn CallReturnIncomplete() { // CHECK:STDERR: fail_forward_decl.carbon:[[@LINE+10]]:3: error: function returns incomplete type `Class` [IncompleteTypeInFunctionReturnType] // CHECK:STDERR: ReturnIncomplete(); // CHECK:STDERR: ^~~~~~~~~~~~~~~~~~ - // CHECK:STDERR: fail_forward_decl.carbon:[[@LINE-118]]:1: note: class was forward declared here [ClassForwardDeclaredHere] + // CHECK:STDERR: fail_forward_decl.carbon:[[@LINE-132]]:1: note: class was forward declared here [ClassForwardDeclaredHere] // CHECK:STDERR: class Class; // CHECK:STDERR: ^~~~~~~~~~~~ // CHECK:STDERR: fail_forward_decl.carbon:[[@LINE-35]]:26: note: return type declared here [IncompleteReturnTypeHere] @@ -151,7 +165,7 @@ fn CallIncompleteAddrSelf(p: Class*) { // CHECK:STDERR: fail_forward_decl.carbon:[[@LINE+10]]:3: error: invalid use of incomplete type `Class` [IncompleteTypeInConversion] // CHECK:STDERR: p->(IncompleteRefSelf.F)(); // CHECK:STDERR: ^~~~~~~~~~~~~~~~~~~~~~~~ - // CHECK:STDERR: fail_forward_decl.carbon:[[@LINE-137]]:1: note: class was forward declared here [ClassForwardDeclaredHere] + // CHECK:STDERR: fail_forward_decl.carbon:[[@LINE-151]]:1: note: class was forward declared here [ClassForwardDeclaredHere] // CHECK:STDERR: class Class; // CHECK:STDERR: ^~~~~~~~~~~~ // CHECK:STDERR: fail_forward_decl.carbon:[[@LINE-11]]:8: note: initializing function parameter [InCallToFunctionParam] diff --git a/toolchain/check/testdata/class/fail_ref_self.carbon b/toolchain/check/testdata/class/fail_ref_self.carbon index 99c3d9df306a..7d68171cc7a0 100644 --- a/toolchain/check/testdata/class/fail_ref_self.carbon +++ b/toolchain/check/testdata/class/fail_ref_self.carbon @@ -45,6 +45,7 @@ fn F(c: Class, p: Class*) { // CHECK:STDOUT: %Class.F: %Class.F.type = struct_value () [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] +// CHECK:STDOUT: %.7f1: form = init_form %Class, call_param0 [concrete] // CHECK:STDOUT: %Make.type: type = fn_type @Make [concrete] // CHECK:STDOUT: %Make: %Make.type = struct_value () [concrete] // CHECK:STDOUT: %ptr.8e5: type = ptr_type %Class [concrete] @@ -79,6 +80,7 @@ fn F(c: Class, p: Class*) { // CHECK:STDOUT: %return.param_patt: %pattern_type.904 = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %Class.ref: type = name_ref Class, file.%Class.decl [concrete = constants.%Class] +// CHECK:STDOUT: %.loc19: form = init_form %Class.ref, call_param0 [concrete = constants.%.7f1] // CHECK:STDOUT: %return.param: ref %Class = out_param call_param0 // CHECK:STDOUT: %return: ref %Class = return_slot %return.param // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/class/forward_declared.carbon b/toolchain/check/testdata/class/forward_declared.carbon index d6fb7f6a6af6..e06a6efd8cb0 100644 --- a/toolchain/check/testdata/class/forward_declared.carbon +++ b/toolchain/check/testdata/class/forward_declared.carbon @@ -22,6 +22,7 @@ fn F(p: Class*) -> Class* { return p; } // CHECK:STDOUT: %Class: type = class_type @Class [concrete] // CHECK:STDOUT: %ptr.8e5: type = ptr_type %Class [concrete] // CHECK:STDOUT: %pattern_type.018: type = pattern_type %ptr.8e5 [concrete] +// CHECK:STDOUT: %.c54: form = init_form %ptr.8e5, call_param1 [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] // CHECK:STDOUT: %Copy.type: type = facet_type <@Copy> [concrete] @@ -64,8 +65,9 @@ fn F(p: Class*) -> Class* { return p; } // CHECK:STDOUT: } { // CHECK:STDOUT: %Class.ref.loc17_20: type = name_ref Class, file.%Class.decl [concrete = constants.%Class] // CHECK:STDOUT: %ptr.loc17_25: type = ptr_type %Class.ref.loc17_20 [concrete = constants.%ptr.8e5] +// CHECK:STDOUT: %.loc17_25: form = init_form %ptr.loc17_25, call_param1 [concrete = constants.%.c54] // CHECK:STDOUT: %p.param: %ptr.8e5 = value_param call_param0 -// CHECK:STDOUT: %.loc17: type = splice_block %ptr.loc17_14 [concrete = constants.%ptr.8e5] { +// CHECK:STDOUT: %.loc17_14: type = splice_block %ptr.loc17_14 [concrete = constants.%ptr.8e5] { // CHECK:STDOUT: %Class.ref.loc17_9: type = name_ref Class, file.%Class.decl [concrete = constants.%Class] // CHECK:STDOUT: %ptr.loc17_14: type = ptr_type %Class.ref.loc17_9 [concrete = constants.%ptr.8e5] // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/class/generic/adapt.carbon b/toolchain/check/testdata/class/generic/adapt.carbon index ce6d37e51563..8d9a17d1d635 100644 --- a/toolchain/check/testdata/class/generic/adapt.carbon +++ b/toolchain/check/testdata/class/generic/adapt.carbon @@ -152,6 +152,7 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: %struct_type.x.ed6: type = struct_type {.x: %i32} [concrete] // CHECK:STDOUT: %complete_type.1ec: = complete_type_witness %struct_type.x.ed6 [concrete] // CHECK:STDOUT: %pattern_type.bf2: type = pattern_type %Adapter [concrete] +// CHECK:STDOUT: %.4d5: form = init_form %i32, call_param1 [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %Access.type: type = fn_type @Access [concrete] // CHECK:STDOUT: %Access: %Access.type = struct_value () [concrete] @@ -203,6 +204,7 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: } { // 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: %.loc12: form = init_form %i32.loc12, call_param1 [concrete = constants.%.4d5] // CHECK:STDOUT: %a.param: %Adapter = value_param call_param0 // CHECK:STDOUT: %Adapter.ref: type = name_ref Adapter, file.%Adapter.decl [concrete = constants.%Adapter] // CHECK:STDOUT: %a: %Adapter = value_binding a, %a.param @@ -307,6 +309,7 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: %complete_type.c07: = complete_type_witness %struct_type.x.767 [concrete] // CHECK:STDOUT: %C.elem.fd3: type = unbound_element_type %C.829, %i32 [concrete] // CHECK:STDOUT: %pattern_type.bf2: type = pattern_type %Adapter [concrete] +// CHECK:STDOUT: %.49e: form = init_form %i32, call_param1 [concrete] // CHECK:STDOUT: %pattern_type.501: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %ImportedAccess.type: type = fn_type @ImportedAccess [concrete] // CHECK:STDOUT: %ImportedAccess: %ImportedAccess.type = struct_value () [concrete] @@ -363,6 +366,7 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: } { // 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: %.loc6: form = init_form %i32.loc6, call_param1 [concrete = constants.%.49e] // CHECK:STDOUT: %a.param: %Adapter = value_param call_param0 // CHECK:STDOUT: %Adapter.ref: type = name_ref Adapter, imports.%Main.Adapter [concrete = constants.%Adapter] // CHECK:STDOUT: %a: %Adapter = value_binding a, %a.param @@ -458,6 +462,7 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: %struct_type.x.ed6: type = struct_type {.x: %i32} [concrete] // CHECK:STDOUT: %complete_type.1ec: = complete_type_witness %struct_type.x.ed6 [concrete] // CHECK:STDOUT: %pattern_type.bf2: type = pattern_type %Adapter [concrete] +// CHECK:STDOUT: %.4d5: form = init_form %i32, call_param1 [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %Access.type: type = fn_type @Access [concrete] // CHECK:STDOUT: %Access: %Access.type = struct_value () [concrete] @@ -499,6 +504,7 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: } { // 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: %.loc12: form = init_form %i32, call_param1 [concrete = constants.%.4d5] // CHECK:STDOUT: %a.param: %Adapter = value_param call_param0 // CHECK:STDOUT: %Adapter.ref: type = name_ref Adapter, file.%Adapter.decl [concrete = constants.%Adapter] // CHECK:STDOUT: %a: %Adapter = value_binding a, %a.param @@ -696,6 +702,7 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: %complete_type.c07: = complete_type_witness %struct_type.x.767 [concrete] // CHECK:STDOUT: %C.elem.fd3: type = unbound_element_type %C.829, %i32 [concrete] // CHECK:STDOUT: %pattern_type.bf2: type = pattern_type %Adapter [concrete] +// CHECK:STDOUT: %.49e: form = init_form %i32, call_param1 [concrete] // CHECK:STDOUT: %pattern_type.501: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %ImportedAccess.type: type = fn_type @ImportedAccess [concrete] // CHECK:STDOUT: %ImportedAccess: %ImportedAccess.type = struct_value () [concrete] @@ -741,6 +748,7 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: } { // 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: %.loc6: form = init_form %i32, call_param1 [concrete = constants.%.49e] // CHECK:STDOUT: %a.param: %Adapter = value_param call_param0 // CHECK:STDOUT: %Adapter.ref: type = name_ref Adapter, imports.%Main.Adapter [concrete = constants.%Adapter] // CHECK:STDOUT: %a: %Adapter = value_binding a, %a.param @@ -820,6 +828,7 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] // CHECK:STDOUT: %Adapter.b1e: type = class_type @Adapter, @Adapter(%i32) [concrete] // CHECK:STDOUT: %pattern_type.1fb: type = pattern_type %Adapter.b1e [concrete] +// CHECK:STDOUT: %.4d5: form = init_form %i32, call_param1 [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %Convert.type: type = fn_type @Convert [concrete] // CHECK:STDOUT: %Convert: %Convert.type = struct_value () [concrete] @@ -872,8 +881,9 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32.loc8_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc8_32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] +// CHECK:STDOUT: %.loc8_32: form = init_form %i32.loc8_32, call_param1 [concrete = constants.%.4d5] // CHECK:STDOUT: %a.param: %Adapter.b1e = value_param call_param0 -// CHECK:STDOUT: %.loc8: type = splice_block %Adapter [concrete = constants.%Adapter.b1e] { +// CHECK:STDOUT: %.loc8_26: type = splice_block %Adapter [concrete = constants.%Adapter.b1e] { // CHECK:STDOUT: %Adapter.ref: %Adapter.type = name_ref Adapter, file.%Adapter.decl [concrete = constants.%Adapter.generic] // CHECK:STDOUT: %int_32.loc8_23: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc8_23: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] @@ -946,6 +956,7 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] // CHECK:STDOUT: %Adapter.b1e: type = class_type @Adapter, @Adapter(%i32) [concrete] // CHECK:STDOUT: %pattern_type.1fb: type = pattern_type %Adapter.b1e [concrete] +// CHECK:STDOUT: %.4d5: form = init_form %i32, call_param1 [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %ImportedConvert.type: type = fn_type @ImportedConvert [concrete] // CHECK:STDOUT: %ImportedConvert: %ImportedConvert.type = struct_value () [concrete] @@ -1010,8 +1021,9 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32.loc6_40: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc6_40: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] +// CHECK:STDOUT: %.loc6_40: form = init_form %i32.loc6_40, call_param1 [concrete = constants.%.4d5] // CHECK:STDOUT: %a.param: %Adapter.b1e = value_param call_param0 -// CHECK:STDOUT: %.loc6: type = splice_block %Adapter [concrete = constants.%Adapter.b1e] { +// CHECK:STDOUT: %.loc6_34: type = splice_block %Adapter [concrete = constants.%Adapter.b1e] { // CHECK:STDOUT: %Adapter.ref: %Adapter.type = name_ref Adapter, imports.%Main.Adapter [concrete = constants.%Adapter.generic] // CHECK:STDOUT: %int_32.loc6_31: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc6_31: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] @@ -1030,8 +1042,9 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: } { // 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: %.loc14_43: form = init_form %i32, call_param1 [concrete = constants.%.4d5] // CHECK:STDOUT: %a.param: %Adapter.8a3 = value_param call_param0 -// CHECK:STDOUT: %.loc14: type = splice_block %Adapter [concrete = constants.%Adapter.8a3] { +// CHECK:STDOUT: %.loc14_37: type = splice_block %Adapter [concrete = constants.%Adapter.8a3] { // CHECK:STDOUT: %Adapter.ref: %Adapter.type = name_ref Adapter, imports.%Main.Adapter [concrete = constants.%Adapter.generic] // CHECK:STDOUT: %C.ref.loc14: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %Adapter: type = class_type @Adapter, @Adapter(constants.%C) [concrete = constants.%Adapter.8a3] diff --git a/toolchain/check/testdata/class/generic/base_is_generic.carbon b/toolchain/check/testdata/class/generic/base_is_generic.carbon index bd6625fdafad..ee680690f043 100644 --- a/toolchain/check/testdata/class/generic/base_is_generic.carbon +++ b/toolchain/check/testdata/class/generic/base_is_generic.carbon @@ -121,6 +121,7 @@ fn H() { // CHECK:STDOUT: %struct_type.base.9a9: type = struct_type {.base: %Base.f8f} [concrete] // CHECK:STDOUT: %complete_type.8de: = complete_type_witness %struct_type.base.9a9 [concrete] // CHECK:STDOUT: %pattern_type.9f6: type = pattern_type %Derived [concrete] +// CHECK:STDOUT: %.4d5: form = init_form %i32, call_param1 [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %DoubleFieldAccess.type: type = fn_type @DoubleFieldAccess [concrete] // CHECK:STDOUT: %DoubleFieldAccess: %DoubleFieldAccess.type = struct_value () [concrete] @@ -174,6 +175,7 @@ fn H() { // CHECK:STDOUT: } { // 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: %.loc16: form = init_form %i32, call_param1 [concrete = constants.%.4d5] // CHECK:STDOUT: %d.param: %Derived = value_param call_param0 // CHECK:STDOUT: %Derived.ref: type = name_ref Derived, file.%Derived.decl [concrete = constants.%Derived] // CHECK:STDOUT: %d: %Derived = value_binding d, %d.param @@ -292,6 +294,7 @@ fn H() { // CHECK:STDOUT: %struct_type.base.9a9: type = struct_type {.base: %Base.f8f} [concrete] // CHECK:STDOUT: %complete_type.8de: = complete_type_witness %struct_type.base.9a9 [concrete] // CHECK:STDOUT: %pattern_type.9f6: type = pattern_type %Derived [concrete] +// CHECK:STDOUT: %.49e: form = init_form %i32, call_param1 [concrete] // CHECK:STDOUT: %pattern_type.501: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %ImportedDoubleFieldAccess.type: type = fn_type @ImportedDoubleFieldAccess [concrete] // CHECK:STDOUT: %ImportedDoubleFieldAccess: %ImportedDoubleFieldAccess.type = struct_value () [concrete] @@ -357,6 +360,7 @@ fn H() { // CHECK:STDOUT: } { // 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: %.loc6: form = init_form %i32, call_param1 [concrete = constants.%.49e] // CHECK:STDOUT: %d.param: %Derived = value_param call_param0 // CHECK:STDOUT: %Derived.ref: type = name_ref Derived, imports.%Main.Derived [concrete = constants.%Derived] // CHECK:STDOUT: %d: %Derived = value_binding d, %d.param @@ -547,6 +551,7 @@ fn H() { // CHECK:STDOUT: %X.type: type = generic_class_type @X [concrete] // CHECK:STDOUT: %X.generic: %X.type = struct_value () [concrete] // CHECK:STDOUT: %X.03b463.1: type = class_type @X, @X(%U) [symbolic] +// CHECK:STDOUT: %.c6c: form = init_form %U, call_param0 [symbolic] // CHECK:STDOUT: %pattern_type.51d: type = pattern_type %U [symbolic] // CHECK:STDOUT: %X.G.type.20eb90.1: type = fn_type @X.G, @X(%U) [symbolic] // CHECK:STDOUT: %X.G.f9f685.1: %X.G.type.20eb90.1 = struct_value () [symbolic] @@ -581,6 +586,7 @@ fn H() { // CHECK:STDOUT: %C.elem.7f5: type = unbound_element_type %C.b13, %X.1bc [concrete] // CHECK:STDOUT: %struct_type.base.b52: type = struct_type {.base: %X.1bc} [concrete] // CHECK:STDOUT: %complete_type.ab4: = complete_type_witness %struct_type.base.b52 [concrete] +// CHECK:STDOUT: %.941: form = init_form %i32, call_param0 [concrete] // CHECK:STDOUT: %X.G.specific_fn.54d: = specific_function %X.G.e2a, @X.G(%i32) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -629,6 +635,7 @@ fn H() { // CHECK:STDOUT: %return.param_patt: @X.G.%pattern_type (%pattern_type.51d) = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %U.ref: type = name_ref U, @X.%U.loc4_14.2 [symbolic = %U (constants.%U)] +// CHECK:STDOUT: %.loc5_13.2: form = init_form %U.ref, call_param0 [symbolic = %.loc5_13.1 (constants.%.c6c)] // CHECK:STDOUT: %return.param: ref @X.G.%U (%U) = out_param call_param0 // CHECK:STDOUT: %return: ref @X.G.%U (%U) = return_slot %return.param // CHECK:STDOUT: } @@ -673,6 +680,7 @@ fn H() { // CHECK:STDOUT: // CHECK:STDOUT: generic fn @X.G(@X.%U.loc4_14.2: type) { // CHECK:STDOUT: %U: type = symbolic_binding U, 0 [symbolic = %U (constants.%U)] +// CHECK:STDOUT: %.loc5_13.1: form = init_form %U, call_param0 [symbolic = %.loc5_13.1 (constants.%.c6c)] // CHECK:STDOUT: %pattern_type: type = pattern_type %U [symbolic = %pattern_type (constants.%pattern_type.51d)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -725,6 +733,7 @@ fn H() { // CHECK:STDOUT: // CHECK:STDOUT: specific @X.G(constants.%U) { // CHECK:STDOUT: %U => constants.%U +// CHECK:STDOUT: %.loc5_13.1 => constants.%.c6c // CHECK:STDOUT: %pattern_type => constants.%pattern_type.51d // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -768,6 +777,7 @@ fn H() { // CHECK:STDOUT: // CHECK:STDOUT: specific @X.G(constants.%i32) { // CHECK:STDOUT: %U => constants.%i32 +// CHECK:STDOUT: %.loc5_13.1 => constants.%.941 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.7ce // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -798,6 +808,7 @@ fn H() { // CHECK:STDOUT: %X.G.type.20eb90.1: type = fn_type @X.G, @X(%U) [symbolic] // CHECK:STDOUT: %X.G.f9f685.1: %X.G.type.20eb90.1 = struct_value () [symbolic] // CHECK:STDOUT: %pattern_type.51d: type = pattern_type %U [symbolic] +// CHECK:STDOUT: %.c6c: form = init_form %U, call_param0 [symbolic] // CHECK:STDOUT: %X.G.specific_fn.974: = specific_function %X.G.f9f685.1, @X.G(%U) [symbolic] // CHECK:STDOUT: %require_complete.944: = require_complete_type %U [symbolic] // CHECK:STDOUT: %X.03b463.2: type = class_type @X, @X(%T) [symbolic] @@ -815,6 +826,7 @@ fn H() { // CHECK:STDOUT: %C.elem.7f5: type = unbound_element_type %C.b13, %X.1bc [concrete] // CHECK:STDOUT: %struct_type.base.b52: type = struct_type {.base: %X.1bc} [concrete] // CHECK:STDOUT: %complete_type.ab4: = complete_type_witness %struct_type.base.b52 [concrete] +// CHECK:STDOUT: %.941: form = init_form %i32, call_param0 [concrete] // CHECK:STDOUT: %X.G.specific_fn.54d: = specific_function %X.G.e2a, @X.G(%i32) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -916,6 +928,7 @@ fn H() { // CHECK:STDOUT: // CHECK:STDOUT: generic fn @X.G(imports.%Main.import_ref.b3bc94.1: type) [from "extend_generic_symbolic_base.carbon"] { // CHECK:STDOUT: %U: type = symbolic_binding U, 0 [symbolic = %U (constants.%U)] +// CHECK:STDOUT: %.1: form = init_form %U, call_param0 [symbolic = %.1 (constants.%.c6c)] // CHECK:STDOUT: %pattern_type: type = pattern_type %U [symbolic = %pattern_type (constants.%pattern_type.51d)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -937,6 +950,7 @@ fn H() { // CHECK:STDOUT: // CHECK:STDOUT: specific @X.G(constants.%U) { // CHECK:STDOUT: %U => constants.%U +// CHECK:STDOUT: %.1 => constants.%.c6c // CHECK:STDOUT: %pattern_type => constants.%pattern_type.51d // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -980,6 +994,7 @@ fn H() { // CHECK:STDOUT: // CHECK:STDOUT: specific @X.G(constants.%i32) { // CHECK:STDOUT: %U => constants.%i32 +// CHECK:STDOUT: %.1 => constants.%.941 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.7ce // CHECK:STDOUT: // CHECK:STDOUT: !definition: diff --git a/toolchain/check/testdata/class/generic/basic.carbon b/toolchain/check/testdata/class/generic/basic.carbon index a64426b999e2..0823afdf92bb 100644 --- a/toolchain/check/testdata/class/generic/basic.carbon +++ b/toolchain/check/testdata/class/generic/basic.carbon @@ -42,9 +42,11 @@ class Declaration(T:! type); // CHECK:STDOUT: %pattern_type.893: type = pattern_type %Class [symbolic] // CHECK:STDOUT: %T.binding.as_type: type = symbolic_binding_type T, 0, %T.035 [symbolic] // CHECK:STDOUT: %ptr.e7d: type = ptr_type %T.binding.as_type [symbolic] +// CHECK:STDOUT: %.c6d: form = init_form %ptr.e7d, call_param1 [symbolic] // CHECK:STDOUT: %pattern_type.65a: type = pattern_type %ptr.e7d [symbolic] // CHECK:STDOUT: %Class.GetAddr.type: type = fn_type @Class.GetAddr, @Class(%T.035) [symbolic] // CHECK:STDOUT: %Class.GetAddr: %Class.GetAddr.type = struct_value () [symbolic] +// CHECK:STDOUT: %.075d25.1: form = init_form %T.binding.as_type, call_param1 [symbolic] // CHECK:STDOUT: %pattern_type.9b9f0c.1: type = pattern_type %T.binding.as_type [symbolic] // CHECK:STDOUT: %Class.GetValue.type: type = fn_type @Class.GetValue, @Class(%T.035) [symbolic] // CHECK:STDOUT: %Class.GetValue: %Class.GetValue.type = struct_value () [symbolic] @@ -123,8 +125,9 @@ class Declaration(T:! type); // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref: %Copy.type = name_ref T, @Class.%T.loc5_13.2 [symbolic = %T (constants.%T.035)] // CHECK:STDOUT: %T.as_type: type = facet_access_type %T.ref [symbolic = %T.binding.as_type (constants.%T.binding.as_type)] -// CHECK:STDOUT: %.loc6_36: type = converted %T.ref, %T.as_type [symbolic = %T.binding.as_type (constants.%T.binding.as_type)] -// CHECK:STDOUT: %ptr.loc6_36.2: type = ptr_type %.loc6_36 [symbolic = %ptr.loc6_36.1 (constants.%ptr.e7d)] +// CHECK:STDOUT: %.loc6_36.2: type = converted %T.ref, %T.as_type [symbolic = %T.binding.as_type (constants.%T.binding.as_type)] +// CHECK:STDOUT: %ptr.loc6_36.2: type = ptr_type %.loc6_36.2 [symbolic = %ptr.loc6_36.1 (constants.%ptr.e7d)] +// CHECK:STDOUT: %.loc6_36.3: form = init_form %ptr.loc6_36.2, call_param1 [symbolic = %.loc6_36.1 (constants.%.c6d)] // CHECK:STDOUT: %self.param: ref @Class.GetAddr.%Class (%Class) = ref_param call_param0 // CHECK:STDOUT: %.loc6_24.1: type = splice_block %Self.ref [symbolic = %Class (constants.%Class)] { // CHECK:STDOUT: %.loc6_24.2: type = specific_constant constants.%Class, @Class(constants.%T.035) [symbolic = %Class (constants.%Class)] @@ -142,7 +145,8 @@ class Declaration(T:! type); // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref: %Copy.type = name_ref T, @Class.%T.loc5_13.2 [symbolic = %T (constants.%T.035)] // CHECK:STDOUT: %T.as_type: type = facet_access_type %T.ref [symbolic = %T.binding.as_type (constants.%T.binding.as_type)] -// CHECK:STDOUT: %.loc10_32: type = converted %T.ref, %T.as_type [symbolic = %T.binding.as_type (constants.%T.binding.as_type)] +// CHECK:STDOUT: %.loc10_32.2: type = converted %T.ref, %T.as_type [symbolic = %T.binding.as_type (constants.%T.binding.as_type)] +// CHECK:STDOUT: %.loc10_32.3: form = init_form %.loc10_32.2, call_param1 [symbolic = %.loc10_32.1 (constants.%.075d25.1)] // CHECK:STDOUT: %self.param: @Class.GetValue.%Class (%Class) = value_param call_param0 // CHECK:STDOUT: %.loc10_21.1: type = splice_block %Self.ref [symbolic = %Class (constants.%Class)] { // CHECK:STDOUT: %.loc10_21.2: type = specific_constant constants.%Class, @Class(constants.%T.035) [symbolic = %Class (constants.%Class)] @@ -180,6 +184,7 @@ class Declaration(T:! type); // CHECK:STDOUT: %pattern_type.loc6_18: type = pattern_type %Class [symbolic = %pattern_type.loc6_18 (constants.%pattern_type.893)] // CHECK:STDOUT: %T.binding.as_type: type = symbolic_binding_type T, 0, %T [symbolic = %T.binding.as_type (constants.%T.binding.as_type)] // CHECK:STDOUT: %ptr.loc6_36.1: type = ptr_type %T.binding.as_type [symbolic = %ptr.loc6_36.1 (constants.%ptr.e7d)] +// CHECK:STDOUT: %.loc6_36.1: form = init_form %ptr.loc6_36.1, call_param1 [symbolic = %.loc6_36.1 (constants.%.c6d)] // CHECK:STDOUT: %pattern_type.loc6_32: type = pattern_type %ptr.loc6_36.1 [symbolic = %pattern_type.loc6_32 (constants.%pattern_type.65a)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -213,12 +218,13 @@ class Declaration(T:! type); // CHECK:STDOUT: %Class: type = class_type @Class, @Class(%T) [symbolic = %Class (constants.%Class)] // CHECK:STDOUT: %pattern_type.loc10_15: type = pattern_type %Class [symbolic = %pattern_type.loc10_15 (constants.%pattern_type.893)] // CHECK:STDOUT: %T.binding.as_type: type = symbolic_binding_type T, 0, %T [symbolic = %T.binding.as_type (constants.%T.binding.as_type)] +// CHECK:STDOUT: %.loc10_32.1: form = init_form %T.binding.as_type, call_param1 [symbolic = %.loc10_32.1 (constants.%.075d25.1)] // CHECK:STDOUT: %pattern_type.loc10_29: type = pattern_type %T.binding.as_type [symbolic = %pattern_type.loc10_29 (constants.%pattern_type.9b9f0c.1)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc10: = require_complete_type %Class [symbolic = %require_complete.loc10 (constants.%require_complete.904)] +// CHECK:STDOUT: %require_complete.loc10_19: = require_complete_type %Class [symbolic = %require_complete.loc10_19 (constants.%require_complete.904)] +// CHECK:STDOUT: %require_complete.loc10_32: = require_complete_type %T.binding.as_type [symbolic = %require_complete.loc10_32 (constants.%require_complete.67c)] // CHECK:STDOUT: %Class.elem: type = unbound_element_type %Class, %T.binding.as_type [symbolic = %Class.elem (constants.%Class.elem)] -// CHECK:STDOUT: %require_complete.loc11: = require_complete_type %T.binding.as_type [symbolic = %require_complete.loc11 (constants.%require_complete.67c)] // CHECK:STDOUT: %Copy.lookup_impl_witness: = lookup_impl_witness %T, @Copy [symbolic = %Copy.lookup_impl_witness (constants.%Copy.lookup_impl_witness.58d)] // CHECK:STDOUT: %.loc11_16.3: type = fn_type_with_self_type constants.%Copy.Op.type, %T [symbolic = %.loc11_16.3 (constants.%.72e)] // CHECK:STDOUT: %impl.elem0.loc11_16.2: @Class.GetValue.%.loc11_16.3 (%.72e) = impl_witness_access %Copy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc11_16.2 (constants.%impl.elem0.07b)] @@ -262,6 +268,7 @@ class Declaration(T:! type); // CHECK:STDOUT: %pattern_type.loc6_18 => constants.%pattern_type.893 // CHECK:STDOUT: %T.binding.as_type => constants.%T.binding.as_type // CHECK:STDOUT: %ptr.loc6_36.1 => constants.%ptr.e7d +// CHECK:STDOUT: %.loc6_36.1 => constants.%.c6d // CHECK:STDOUT: %pattern_type.loc6_32 => constants.%pattern_type.65a // CHECK:STDOUT: } // CHECK:STDOUT: @@ -270,6 +277,7 @@ class Declaration(T:! type); // CHECK:STDOUT: %Class => constants.%Class // CHECK:STDOUT: %pattern_type.loc10_15 => constants.%pattern_type.893 // CHECK:STDOUT: %T.binding.as_type => constants.%T.binding.as_type +// CHECK:STDOUT: %.loc10_32.1 => constants.%.075d25.1 // CHECK:STDOUT: %pattern_type.loc10_29 => constants.%pattern_type.9b9f0c.1 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/generic/call.carbon b/toolchain/check/testdata/class/generic/call.carbon index 6fdbffd05939..ef9c0d4dd858 100644 --- a/toolchain/check/testdata/class/generic/call.carbon +++ b/toolchain/check/testdata/class/generic/call.carbon @@ -526,17 +526,21 @@ class Outer(T:! type) { // CHECK:STDOUT: %Inner.type.e0d: type = generic_class_type @Inner, @Outer(%T) [symbolic] // CHECK:STDOUT: %Inner.generic.ada: %Inner.type.e0d = struct_value () [symbolic] // CHECK:STDOUT: %Inner.e21: type = class_type @Inner, @Inner(%T, %U) [symbolic] +// CHECK:STDOUT: %.dca: form = init_form %Outer.387, call_param0 [symbolic] // CHECK:STDOUT: %pattern_type.130: type = pattern_type %Outer.387 [symbolic] // CHECK:STDOUT: %Inner.A.type.c2f: type = fn_type @Inner.A, @Inner(%T, %U) [symbolic] // CHECK:STDOUT: %Inner.A.07b: %Inner.A.type.c2f = struct_value () [symbolic] // CHECK:STDOUT: %Outer.d2f: type = class_type @Outer, @Outer(%U) [symbolic] +// CHECK:STDOUT: %.b9d: form = init_form %Outer.d2f, call_param0 [symbolic] // CHECK:STDOUT: %pattern_type.760: type = pattern_type %Outer.d2f [symbolic] // CHECK:STDOUT: %Inner.B.type.f42: type = fn_type @Inner.B, @Inner(%T, %U) [symbolic] // CHECK:STDOUT: %Inner.B.b14: %Inner.B.type.f42 = struct_value () [symbolic] // CHECK:STDOUT: %Inner.ddc: type = class_type @Inner, @Inner(%T, %T) [symbolic] +// CHECK:STDOUT: %.80d: form = init_form %Inner.ddc, call_param0 [symbolic] // CHECK:STDOUT: %pattern_type.81e: type = pattern_type %Inner.ddc [symbolic] // CHECK:STDOUT: %Inner.C.type.912: type = fn_type @Inner.C, @Inner(%T, %U) [symbolic] // CHECK:STDOUT: %Inner.C.125: %Inner.C.type.912 = struct_value () [symbolic] +// CHECK:STDOUT: %.090: form = init_form %Inner.e21, call_param0 [symbolic] // CHECK:STDOUT: %pattern_type.0d1: type = pattern_type %Inner.e21 [symbolic] // CHECK:STDOUT: %Inner.D.type.cd0: type = fn_type @Inner.D, @Inner(%T, %U) [symbolic] // CHECK:STDOUT: %Inner.D.147: %Inner.D.type.cd0 = struct_value () [symbolic] @@ -631,6 +635,7 @@ class Outer(T:! type) { // CHECK:STDOUT: %Outer.ref: %Outer.type = name_ref Outer, file.%Outer.decl [concrete = constants.%Outer.generic] // CHECK:STDOUT: %T.ref: type = name_ref T, @Outer.%T.loc2_13.2 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %Outer.loc4_22.2: type = class_type @Outer, @Outer(constants.%T) [symbolic = %Outer.loc4_22.1 (constants.%Outer.387)] +// CHECK:STDOUT: %.loc4_22.2: form = init_form %Outer.loc4_22.2, call_param0 [symbolic = %.loc4_22.1 (constants.%.dca)] // CHECK:STDOUT: %return.param: ref @Inner.A.%Outer.loc4_22.1 (%Outer.387) = out_param call_param0 // CHECK:STDOUT: %return: ref @Inner.A.%Outer.loc4_22.1 (%Outer.387) = return_slot %return.param // CHECK:STDOUT: } @@ -641,6 +646,7 @@ class Outer(T:! type) { // CHECK:STDOUT: %Outer.ref: %Outer.type = name_ref Outer, file.%Outer.decl [concrete = constants.%Outer.generic] // CHECK:STDOUT: %U.ref: type = name_ref U, @Inner.%U.loc3_15.2 [symbolic = %U (constants.%U)] // CHECK:STDOUT: %Outer.loc7_22.2: type = class_type @Outer, @Outer(constants.%U) [symbolic = %Outer.loc7_22.1 (constants.%Outer.d2f)] +// CHECK:STDOUT: %.loc7_22.2: form = init_form %Outer.loc7_22.2, call_param0 [symbolic = %.loc7_22.1 (constants.%.b9d)] // CHECK:STDOUT: %return.param: ref @Inner.B.%Outer.loc7_22.1 (%Outer.d2f) = out_param call_param0 // CHECK:STDOUT: %return: ref @Inner.B.%Outer.loc7_22.1 (%Outer.d2f) = return_slot %return.param // CHECK:STDOUT: } @@ -648,10 +654,11 @@ class Outer(T:! type) { // CHECK:STDOUT: %return.patt: @Inner.C.%pattern_type (%pattern_type.81e) = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: @Inner.C.%pattern_type (%pattern_type.81e) = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %.loc10: @Inner.C.%Inner.type (%Inner.type.e0d) = specific_constant @Outer.%Inner.decl, @Outer(constants.%T) [symbolic = %Inner.generic (constants.%Inner.generic.ada)] -// CHECK:STDOUT: %Inner.ref: @Inner.C.%Inner.type (%Inner.type.e0d) = name_ref Inner, %.loc10 [symbolic = %Inner.generic (constants.%Inner.generic.ada)] +// CHECK:STDOUT: %.loc10_15: @Inner.C.%Inner.type (%Inner.type.e0d) = specific_constant @Outer.%Inner.decl, @Outer(constants.%T) [symbolic = %Inner.generic (constants.%Inner.generic.ada)] +// CHECK:STDOUT: %Inner.ref: @Inner.C.%Inner.type (%Inner.type.e0d) = name_ref Inner, %.loc10_15 [symbolic = %Inner.generic (constants.%Inner.generic.ada)] // CHECK:STDOUT: %T.ref: type = name_ref T, @Outer.%T.loc2_13.2 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %Inner.loc10_22.2: type = class_type @Inner, @Inner(constants.%T, constants.%T) [symbolic = %Inner.loc10_22.1 (constants.%Inner.ddc)] +// CHECK:STDOUT: %.loc10_22.2: form = init_form %Inner.loc10_22.2, call_param0 [symbolic = %.loc10_22.1 (constants.%.80d)] // CHECK:STDOUT: %return.param: ref @Inner.C.%Inner.loc10_22.1 (%Inner.ddc) = out_param call_param0 // CHECK:STDOUT: %return: ref @Inner.C.%Inner.loc10_22.1 (%Inner.ddc) = return_slot %return.param // CHECK:STDOUT: } @@ -659,10 +666,11 @@ class Outer(T:! type) { // CHECK:STDOUT: %return.patt: @Inner.D.%pattern_type (%pattern_type.0d1) = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: @Inner.D.%pattern_type (%pattern_type.0d1) = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %.loc13: @Inner.D.%Inner.type (%Inner.type.e0d) = specific_constant @Outer.%Inner.decl, @Outer(constants.%T) [symbolic = %Inner.generic (constants.%Inner.generic.ada)] -// CHECK:STDOUT: %Inner.ref: @Inner.D.%Inner.type (%Inner.type.e0d) = name_ref Inner, %.loc13 [symbolic = %Inner.generic (constants.%Inner.generic.ada)] +// CHECK:STDOUT: %.loc13_15: @Inner.D.%Inner.type (%Inner.type.e0d) = specific_constant @Outer.%Inner.decl, @Outer(constants.%T) [symbolic = %Inner.generic (constants.%Inner.generic.ada)] +// CHECK:STDOUT: %Inner.ref: @Inner.D.%Inner.type (%Inner.type.e0d) = name_ref Inner, %.loc13_15 [symbolic = %Inner.generic (constants.%Inner.generic.ada)] // CHECK:STDOUT: %U.ref: type = name_ref U, @Inner.%U.loc3_15.2 [symbolic = %U (constants.%U)] // CHECK:STDOUT: %Inner.loc13_22.2: type = class_type @Inner, @Inner(constants.%T, constants.%U) [symbolic = %Inner.loc13_22.1 (constants.%Inner.e21)] +// CHECK:STDOUT: %.loc13_22.2: form = init_form %Inner.loc13_22.2, call_param0 [symbolic = %.loc13_22.1 (constants.%.090)] // CHECK:STDOUT: %return.param: ref @Inner.D.%Inner.loc13_22.1 (%Inner.e21) = out_param call_param0 // CHECK:STDOUT: %return: ref @Inner.D.%Inner.loc13_22.1 (%Inner.e21) = return_slot %return.param // CHECK:STDOUT: } @@ -685,6 +693,7 @@ class Outer(T:! type) { // CHECK:STDOUT: generic fn @Inner.A(@Outer.%T.loc2_13.2: type, @Inner.%U.loc3_15.2: type) { // CHECK:STDOUT: %T: type = symbolic_binding T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %Outer.loc4_22.1: type = class_type @Outer, @Outer(%T) [symbolic = %Outer.loc4_22.1 (constants.%Outer.387)] +// CHECK:STDOUT: %.loc4_22.1: form = init_form %Outer.loc4_22.1, call_param0 [symbolic = %.loc4_22.1 (constants.%.dca)] // CHECK:STDOUT: %pattern_type: type = pattern_type %Outer.loc4_22.1 [symbolic = %pattern_type (constants.%pattern_type.130)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -703,6 +712,7 @@ class Outer(T:! type) { // CHECK:STDOUT: generic fn @Inner.B(@Outer.%T.loc2_13.2: type, @Inner.%U.loc3_15.2: type) { // CHECK:STDOUT: %U: type = symbolic_binding U, 1 [symbolic = %U (constants.%U)] // CHECK:STDOUT: %Outer.loc7_22.1: type = class_type @Outer, @Outer(%U) [symbolic = %Outer.loc7_22.1 (constants.%Outer.d2f)] +// CHECK:STDOUT: %.loc7_22.1: form = init_form %Outer.loc7_22.1, call_param0 [symbolic = %.loc7_22.1 (constants.%.b9d)] // CHECK:STDOUT: %pattern_type: type = pattern_type %Outer.loc7_22.1 [symbolic = %pattern_type (constants.%pattern_type.760)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -723,6 +733,7 @@ class Outer(T:! type) { // CHECK:STDOUT: %Inner.type: type = generic_class_type @Inner, @Outer(%T) [symbolic = %Inner.type (constants.%Inner.type.e0d)] // CHECK:STDOUT: %Inner.generic: @Inner.C.%Inner.type (%Inner.type.e0d) = struct_value () [symbolic = %Inner.generic (constants.%Inner.generic.ada)] // CHECK:STDOUT: %Inner.loc10_22.1: type = class_type @Inner, @Inner(%T, %T) [symbolic = %Inner.loc10_22.1 (constants.%Inner.ddc)] +// CHECK:STDOUT: %.loc10_22.1: form = init_form %Inner.loc10_22.1, call_param0 [symbolic = %.loc10_22.1 (constants.%.80d)] // CHECK:STDOUT: %pattern_type: type = pattern_type %Inner.loc10_22.1 [symbolic = %pattern_type (constants.%pattern_type.81e)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -744,6 +755,7 @@ class Outer(T:! type) { // CHECK:STDOUT: %Inner.generic: @Inner.D.%Inner.type (%Inner.type.e0d) = struct_value () [symbolic = %Inner.generic (constants.%Inner.generic.ada)] // CHECK:STDOUT: %U: type = symbolic_binding U, 1 [symbolic = %U (constants.%U)] // CHECK:STDOUT: %Inner.loc13_22.1: type = class_type @Inner, @Inner(%T, %U) [symbolic = %Inner.loc13_22.1 (constants.%Inner.e21)] +// CHECK:STDOUT: %.loc13_22.1: form = init_form %Inner.loc13_22.1, call_param0 [symbolic = %.loc13_22.1 (constants.%.090)] // CHECK:STDOUT: %pattern_type: type = pattern_type %Inner.loc13_22.1 [symbolic = %pattern_type (constants.%pattern_type.0d1)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -785,6 +797,7 @@ class Outer(T:! type) { // CHECK:STDOUT: specific @Inner.A(constants.%T, constants.%U) { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %Outer.loc4_22.1 => constants.%Outer.387 +// CHECK:STDOUT: %.loc4_22.1 => constants.%.dca // CHECK:STDOUT: %pattern_type => constants.%pattern_type.130 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -799,6 +812,7 @@ class Outer(T:! type) { // CHECK:STDOUT: specific @Inner.B(constants.%T, constants.%U) { // CHECK:STDOUT: %U => constants.%U // CHECK:STDOUT: %Outer.loc7_22.1 => constants.%Outer.d2f +// CHECK:STDOUT: %.loc7_22.1 => constants.%.b9d // CHECK:STDOUT: %pattern_type => constants.%pattern_type.760 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -822,6 +836,7 @@ class Outer(T:! type) { // CHECK:STDOUT: %Inner.type => constants.%Inner.type.e0d // CHECK:STDOUT: %Inner.generic => constants.%Inner.generic.ada // CHECK:STDOUT: %Inner.loc10_22.1 => constants.%Inner.ddc +// CHECK:STDOUT: %.loc10_22.1 => constants.%.80d // CHECK:STDOUT: %pattern_type => constants.%pattern_type.81e // CHECK:STDOUT: } // CHECK:STDOUT: @@ -831,6 +846,7 @@ class Outer(T:! type) { // CHECK:STDOUT: %Inner.generic => constants.%Inner.generic.ada // CHECK:STDOUT: %U => constants.%U // CHECK:STDOUT: %Inner.loc13_22.1 => constants.%Inner.e21 +// CHECK:STDOUT: %.loc13_22.1 => constants.%.090 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.0d1 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/generic/complete_in_conversion.carbon b/toolchain/check/testdata/class/generic/complete_in_conversion.carbon index 943d6dece06c..d0b91e980df2 100644 --- a/toolchain/check/testdata/class/generic/complete_in_conversion.carbon +++ b/toolchain/check/testdata/class/generic/complete_in_conversion.carbon @@ -42,6 +42,7 @@ fn F(a: A(0)*) { // CHECK:STDOUT: %IntLiteral: %IntLiteral.type = struct_value () [concrete] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %pattern_type.dc0: type = pattern_type Core.IntLiteral [concrete] +// CHECK:STDOUT: %.39d: form = init_form type, call_param1 [concrete] // CHECK:STDOUT: %Int.type.b3e: type = fn_type @Int.loc2 [concrete] // CHECK:STDOUT: %Int.d6d: %Int.type.b3e = struct_value () [concrete] // CHECK:STDOUT: %B: type = class_type @B [concrete] @@ -139,6 +140,7 @@ fn F(a: A(0)*) { // CHECK:STDOUT: %return.patt: %pattern_type.98f = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.98f = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { +// CHECK:STDOUT: %.loc2_33: form = init_form type, call_param1 [concrete = constants.%.39d] // CHECK:STDOUT: %N.param: Core.IntLiteral = value_param call_param0 // CHECK:STDOUT: %.loc2_27.1: type = splice_block %.loc2_27.3 [concrete = Core.IntLiteral] { // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [concrete = imports.%Core] diff --git a/toolchain/check/testdata/class/generic/field.carbon b/toolchain/check/testdata/class/generic/field.carbon index 3f213aa296eb..f85a86076eea 100644 --- a/toolchain/check/testdata/class/generic/field.carbon +++ b/toolchain/check/testdata/class/generic/field.carbon @@ -51,6 +51,7 @@ fn H(U:! Core.Copy, c: Class(U)) -> U { // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] // CHECK:STDOUT: %Class.805: type = class_type @Class, @Class(%i32) [concrete] // CHECK:STDOUT: %pattern_type.1c2: type = pattern_type %Class.805 [concrete] +// CHECK:STDOUT: %.4d5: form = init_form %i32, call_param1 [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] @@ -69,6 +70,7 @@ fn H(U:! Core.Copy, c: Class(U)) -> U { // CHECK:STDOUT: %.72e61c.1: type = fn_type_with_self_type %Copy.Op.type, %T.035 [symbolic] // CHECK:STDOUT: %impl.elem0.07b224.1: %.72e61c.1 = impl_witness_access %Copy.lookup_impl_witness.58dce0.1, element0 [symbolic] // CHECK:STDOUT: %specific_impl_fn.2c9874.1: = specific_impl_function %impl.elem0.07b224.1, @Copy.Op(%T.035) [symbolic] +// CHECK:STDOUT: %.075d25.2: form = init_form %T.binding.as_type, call_param1 [symbolic] // CHECK:STDOUT: %pattern_type.9b9f0c.2: type = pattern_type %T.binding.as_type [symbolic] // CHECK:STDOUT: %require_complete.67ca8d.1: = require_complete_type %T.binding.as_type [symbolic] // CHECK:STDOUT: %pattern_type.ce2: type = pattern_type %Copy.type [concrete] @@ -90,6 +92,7 @@ fn H(U:! Core.Copy, c: Class(U)) -> U { // CHECK:STDOUT: %U.binding.as_type.14b: type = symbolic_binding_type U, 0, %U.035 [symbolic] // CHECK:STDOUT: %Class.3168aa.2: type = class_type @Class, @Class(%U.binding.as_type.14b) [symbolic] // CHECK:STDOUT: %pattern_type.c542f5.2: type = pattern_type %Class.3168aa.2 [symbolic] +// CHECK:STDOUT: %.075d25.3: form = init_form %U.binding.as_type.14b, call_param1 [symbolic] // CHECK:STDOUT: %pattern_type.9b9f0c.3: type = pattern_type %U.binding.as_type.14b [symbolic] // CHECK:STDOUT: %H.type: type = fn_type @H [concrete] // CHECK:STDOUT: %H: %H.type = struct_value () [concrete] @@ -132,8 +135,9 @@ fn H(U:! Core.Copy, c: Class(U)) -> U { // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32.loc9_24: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc9_24: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] +// CHECK:STDOUT: %.loc9_24: form = init_form %i32.loc9_24, call_param1 [concrete = constants.%.4d5] // CHECK:STDOUT: %c.param: %Class.805 = value_param call_param0 -// CHECK:STDOUT: %.loc9: type = splice_block %Class [concrete = constants.%Class.805] { +// CHECK:STDOUT: %.loc9_18: type = splice_block %Class [concrete = constants.%Class.805] { // CHECK:STDOUT: %Class.ref: %Class.type = name_ref Class, file.%Class.decl [concrete = constants.%Class.generic] // CHECK:STDOUT: %int_32.loc9_15: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc9_15: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] @@ -152,7 +156,8 @@ fn H(U:! Core.Copy, c: Class(U)) -> U { // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc13_37: %Copy.type = name_ref T, %T.loc13_6.2 [symbolic = %T.loc13_6.1 (constants.%T.035)] // CHECK:STDOUT: %T.as_type.loc13_37: type = facet_access_type %T.ref.loc13_37 [symbolic = %T.binding.as_type (constants.%T.binding.as_type)] -// CHECK:STDOUT: %.loc13_37: type = converted %T.ref.loc13_37, %T.as_type.loc13_37 [symbolic = %T.binding.as_type (constants.%T.binding.as_type)] +// CHECK:STDOUT: %.loc13_37.2: type = converted %T.ref.loc13_37, %T.as_type.loc13_37 [symbolic = %T.binding.as_type (constants.%T.binding.as_type)] +// CHECK:STDOUT: %.loc13_37.3: form = init_form %.loc13_37.2, call_param1 [symbolic = %.loc13_37.1 (constants.%.075d25.2)] // CHECK:STDOUT: %.loc13_14: type = splice_block %Copy.ref [concrete = constants.%Copy.type] { // CHECK:STDOUT: // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [concrete = imports.%Core] @@ -180,7 +185,8 @@ fn H(U:! Core.Copy, c: Class(U)) -> U { // CHECK:STDOUT: } { // CHECK:STDOUT: %U.ref.loc17_37: %Copy.type = name_ref U, %U.loc17_6.2 [symbolic = %U.loc17_6.1 (constants.%U.035)] // CHECK:STDOUT: %U.as_type.loc17_37: type = facet_access_type %U.ref.loc17_37 [symbolic = %U.binding.as_type (constants.%U.binding.as_type.14b)] -// CHECK:STDOUT: %.loc17_37: type = converted %U.ref.loc17_37, %U.as_type.loc17_37 [symbolic = %U.binding.as_type (constants.%U.binding.as_type.14b)] +// CHECK:STDOUT: %.loc17_37.2: type = converted %U.ref.loc17_37, %U.as_type.loc17_37 [symbolic = %U.binding.as_type (constants.%U.binding.as_type.14b)] +// CHECK:STDOUT: %.loc17_37.3: form = init_form %.loc17_37.2, call_param1 [symbolic = %.loc17_37.1 (constants.%.075d25.3)] // CHECK:STDOUT: %.loc17_14: type = splice_block %Copy.ref [concrete = constants.%Copy.type] { // CHECK:STDOUT: // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [concrete = imports.%Core] @@ -243,6 +249,7 @@ fn H(U:! Core.Copy, c: Class(U)) -> U { // CHECK:STDOUT: %T.binding.as_type: type = symbolic_binding_type T, 0, %T.loc13_6.1 [symbolic = %T.binding.as_type (constants.%T.binding.as_type)] // CHECK:STDOUT: %Class.loc13_31.1: type = class_type @Class, @Class(%T.binding.as_type) [symbolic = %Class.loc13_31.1 (constants.%Class.3168aa.1)] // CHECK:STDOUT: %pattern_type.loc13_21: type = pattern_type %Class.loc13_31.1 [symbolic = %pattern_type.loc13_21 (constants.%pattern_type.c542f5.1)] +// CHECK:STDOUT: %.loc13_37.1: form = init_form %T.binding.as_type, call_param1 [symbolic = %.loc13_37.1 (constants.%.075d25.2)] // CHECK:STDOUT: %pattern_type.loc13_34: type = pattern_type %T.binding.as_type [symbolic = %pattern_type.loc13_34 (constants.%pattern_type.9b9f0c.2)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -275,6 +282,7 @@ fn H(U:! Core.Copy, c: Class(U)) -> U { // CHECK:STDOUT: %U.binding.as_type: type = symbolic_binding_type U, 0, %U.loc17_6.1 [symbolic = %U.binding.as_type (constants.%U.binding.as_type.14b)] // CHECK:STDOUT: %Class.loc17_31.1: type = class_type @Class, @Class(%U.binding.as_type) [symbolic = %Class.loc17_31.1 (constants.%Class.3168aa.2)] // CHECK:STDOUT: %pattern_type.loc17_21: type = pattern_type %Class.loc17_31.1 [symbolic = %pattern_type.loc17_21 (constants.%pattern_type.c542f5.2)] +// CHECK:STDOUT: %.loc17_37.1: form = init_form %U.binding.as_type, call_param1 [symbolic = %.loc17_37.1 (constants.%.075d25.3)] // CHECK:STDOUT: %pattern_type.loc17_34: type = pattern_type %U.binding.as_type [symbolic = %pattern_type.loc17_34 (constants.%pattern_type.9b9f0c.3)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -333,6 +341,7 @@ fn H(U:! Core.Copy, c: Class(U)) -> U { // CHECK:STDOUT: %T.binding.as_type => constants.%T.binding.as_type // CHECK:STDOUT: %Class.loc13_31.1 => constants.%Class.3168aa.1 // CHECK:STDOUT: %pattern_type.loc13_21 => constants.%pattern_type.c542f5.1 +// CHECK:STDOUT: %.loc13_37.1 => constants.%.075d25.2 // CHECK:STDOUT: %pattern_type.loc13_34 => constants.%pattern_type.9b9f0c.2 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -352,6 +361,7 @@ fn H(U:! Core.Copy, c: Class(U)) -> U { // CHECK:STDOUT: %U.binding.as_type => constants.%U.binding.as_type.14b // CHECK:STDOUT: %Class.loc17_31.1 => constants.%Class.3168aa.2 // CHECK:STDOUT: %pattern_type.loc17_21 => constants.%pattern_type.c542f5.2 +// CHECK:STDOUT: %.loc17_37.1 => constants.%.075d25.3 // CHECK:STDOUT: %pattern_type.loc17_34 => constants.%pattern_type.9b9f0c.3 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/generic/import.carbon b/toolchain/check/testdata/class/generic/import.carbon index f3456988691b..c71e688ccb4e 100644 --- a/toolchain/check/testdata/class/generic/import.carbon +++ b/toolchain/check/testdata/class/generic/import.carbon @@ -106,6 +106,7 @@ class Class(U:! type) { // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] // CHECK:STDOUT: %CompleteClass.elem: type = unbound_element_type %CompleteClass.152, %i32 [symbolic] +// CHECK:STDOUT: %.941: form = init_form %i32, call_param0 [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %CompleteClass.F.type: type = fn_type @CompleteClass.F, @CompleteClass(%T) [symbolic] // CHECK:STDOUT: %CompleteClass.F: %CompleteClass.F.type = struct_value () [symbolic] @@ -129,6 +130,7 @@ class Class(U:! type) { // CHECK:STDOUT: %bound_method: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_0.6a9: %i32 = int_value 0 [concrete] // CHECK:STDOUT: %CompleteClass.d85: type = class_type @CompleteClass, @CompleteClass(%i32) [concrete] +// CHECK:STDOUT: %.2af: form = init_form %CompleteClass.d85, call_param0 [concrete] // CHECK:STDOUT: %pattern_type.cb5: type = pattern_type %CompleteClass.d85 [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] @@ -175,6 +177,7 @@ class Class(U:! type) { // 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: %CompleteClass: type = class_type @CompleteClass, @CompleteClass(constants.%i32) [concrete = constants.%CompleteClass.d85] +// CHECK:STDOUT: %.loc11: form = init_form %CompleteClass, call_param0 [concrete = constants.%.2af] // CHECK:STDOUT: %return.param: ref %CompleteClass.d85 = out_param call_param0 // CHECK:STDOUT: %return: ref %CompleteClass.d85 = return_slot %return.param // CHECK:STDOUT: } @@ -205,6 +208,7 @@ class Class(U:! type) { // CHECK:STDOUT: } { // 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: %.loc8_13: form = init_form %i32, call_param0 [concrete = constants.%.941] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } @@ -229,8 +233,8 @@ class Class(U:! type) { // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc8_27.2: = bound_method %int_0, %specific_fn [concrete = constants.%bound_method] // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc8_27.2(%int_0) [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: %.loc8: init %i32 = converted %int_0, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: return %.loc8 to %return +// CHECK:STDOUT: %.loc8_27: init %i32 = converted %int_0, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: return %.loc8_27 to %return // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -288,6 +292,7 @@ class Class(U:! type) { // CHECK:STDOUT: %CompleteClass.F.5ed: %CompleteClass.F.type.6b4 = struct_value () [symbolic] // CHECK:STDOUT: %CompleteClass.elem.2b9: type = unbound_element_type %CompleteClass.152, %i32 [symbolic] // CHECK:STDOUT: %CompleteClass.667: type = class_type @CompleteClass, @CompleteClass(%i32) [concrete] +// CHECK:STDOUT: %.e15: form = init_form %CompleteClass.667, call_param0 [concrete] // CHECK:STDOUT: %pattern_type.b91: type = pattern_type %CompleteClass.667 [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] @@ -356,6 +361,7 @@ class Class(U:! type) { // 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: %CompleteClass: type = class_type @CompleteClass, @CompleteClass(constants.%i32) [concrete = constants.%CompleteClass.667] +// CHECK:STDOUT: %.loc8: form = init_form %CompleteClass, call_param0 [concrete = constants.%.e15] // CHECK:STDOUT: %return.param: ref %CompleteClass.667 = out_param call_param0 // CHECK:STDOUT: %return: ref %CompleteClass.667 = return_slot %return.param // CHECK:STDOUT: } @@ -461,6 +467,7 @@ class Class(U:! type) { // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %N: Core.IntLiteral = symbolic_binding N, 0 [symbolic] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] +// CHECK:STDOUT: %.941: form = init_form %i32, call_param0 [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %UseMethod.type: type = fn_type @UseMethod [concrete] // CHECK:STDOUT: %UseMethod: %UseMethod.type = struct_value () [concrete] @@ -540,6 +547,7 @@ class Class(U:! type) { // CHECK:STDOUT: } { // 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: %.loc5: form = init_form %i32.loc5, call_param0 [concrete = constants.%.941] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } @@ -549,6 +557,7 @@ class Class(U:! type) { // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32.loc10: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc10: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] +// CHECK:STDOUT: %.loc10: form = init_form %i32.loc10, call_param0 [concrete = constants.%.941] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/class/generic/init.carbon b/toolchain/check/testdata/class/generic/init.carbon index 11db11452653..b81e86fc8570 100644 --- a/toolchain/check/testdata/class/generic/init.carbon +++ b/toolchain/check/testdata/class/generic/init.carbon @@ -59,6 +59,7 @@ fn InitFromAdaptedSpecific(x: i32) -> i32 { // CHECK:STDOUT: %pattern_type.ce2: type = pattern_type %Copy.type [concrete] // CHECK:STDOUT: %T.binding.as_type: type = symbolic_binding_type T, 0, %T.035 [symbolic] // CHECK:STDOUT: %pattern_type.9b9f0c.1: type = pattern_type %T.binding.as_type [symbolic] +// CHECK:STDOUT: %.075d25.1: form = init_form %T.binding.as_type, call_param1 [symbolic] // CHECK:STDOUT: %InitFromStructGeneric.type: type = fn_type @InitFromStructGeneric [concrete] // CHECK:STDOUT: %InitFromStructGeneric: %InitFromStructGeneric.type = struct_value () [concrete] // CHECK:STDOUT: %require_complete.67c: = require_complete_type %T.binding.as_type [symbolic] @@ -85,6 +86,7 @@ fn InitFromAdaptedSpecific(x: i32) -> i32 { // CHECK:STDOUT: %N: Core.IntLiteral = symbolic_binding N, 0 [symbolic] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] +// CHECK:STDOUT: %.4d5: form = init_form %i32, call_param1 [concrete] // CHECK:STDOUT: %InitFromStructSpecific.type: type = fn_type @InitFromStructSpecific [concrete] // CHECK:STDOUT: %InitFromStructSpecific: %InitFromStructSpecific.type = struct_value () [concrete] // CHECK:STDOUT: %Class.805: type = class_type @Class, @Class(%i32) [concrete] @@ -128,7 +130,8 @@ fn InitFromAdaptedSpecific(x: i32) -> i32 { // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc9_50: %Copy.type = name_ref T, %T.loc9_26.2 [symbolic = %T.loc9_26.1 (constants.%T.035)] // CHECK:STDOUT: %T.as_type.loc9_50: type = facet_access_type %T.ref.loc9_50 [symbolic = %T.binding.as_type (constants.%T.binding.as_type)] -// CHECK:STDOUT: %.loc9_50: type = converted %T.ref.loc9_50, %T.as_type.loc9_50 [symbolic = %T.binding.as_type (constants.%T.binding.as_type)] +// CHECK:STDOUT: %.loc9_50.2: type = converted %T.ref.loc9_50, %T.as_type.loc9_50 [symbolic = %T.binding.as_type (constants.%T.binding.as_type)] +// CHECK:STDOUT: %.loc9_50.3: form = init_form %.loc9_50.2, call_param1 [symbolic = %.loc9_50.1 (constants.%.075d25.1)] // CHECK:STDOUT: %.loc9_34: type = splice_block %Copy.ref [concrete = constants.%Copy.type] { // CHECK:STDOUT: // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [concrete = imports.%Core] @@ -153,8 +156,9 @@ fn InitFromAdaptedSpecific(x: i32) -> i32 { // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32.loc14_38: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc14_38: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] +// CHECK:STDOUT: %.loc14_38: form = init_form %i32.loc14_38, call_param1 [concrete = constants.%.4d5] // CHECK:STDOUT: %x.param: %i32 = value_param call_param0 -// CHECK:STDOUT: %.loc14: type = splice_block %i32.loc14_30 [concrete = constants.%i32] { +// CHECK:STDOUT: %.loc14_30: type = splice_block %i32.loc14_30 [concrete = constants.%i32] { // CHECK:STDOUT: %int_32.loc14_30: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc14_30: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } @@ -168,6 +172,7 @@ fn InitFromAdaptedSpecific(x: i32) -> i32 { // CHECK:STDOUT: %T.loc9_26.1: %Copy.type = symbolic_binding T, 0 [symbolic = %T.loc9_26.1 (constants.%T.035)] // CHECK:STDOUT: %T.binding.as_type: type = symbolic_binding_type T, 0, %T.loc9_26.1 [symbolic = %T.binding.as_type (constants.%T.binding.as_type)] // CHECK:STDOUT: %pattern_type.loc9: type = pattern_type %T.binding.as_type [symbolic = %pattern_type.loc9 (constants.%pattern_type.9b9f0c.1)] +// CHECK:STDOUT: %.loc9_50.1: form = init_form %T.binding.as_type, call_param1 [symbolic = %.loc9_50.1 (constants.%.075d25.1)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete.loc9: = require_complete_type %T.binding.as_type [symbolic = %require_complete.loc9 (constants.%require_complete.67c)] @@ -274,6 +279,7 @@ fn InitFromAdaptedSpecific(x: i32) -> i32 { // CHECK:STDOUT: %T.loc9_26.1 => constants.%T.035 // CHECK:STDOUT: %T.binding.as_type => constants.%T.binding.as_type // CHECK:STDOUT: %pattern_type.loc9 => constants.%pattern_type.9b9f0c.1 +// CHECK:STDOUT: %.loc9_50.1 => constants.%.075d25.1 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- adapt.carbon @@ -286,6 +292,7 @@ fn InitFromAdaptedSpecific(x: i32) -> i32 { // CHECK:STDOUT: %pattern_type.ce2: type = pattern_type %Copy.type [concrete] // CHECK:STDOUT: %T.binding.as_type: type = symbolic_binding_type T, 0, %T.035 [symbolic] // CHECK:STDOUT: %pattern_type.9b9f0c.1: type = pattern_type %T.binding.as_type [symbolic] +// CHECK:STDOUT: %.075d25.1: form = init_form %T.binding.as_type, call_param1 [symbolic] // CHECK:STDOUT: %InitFromAdaptedGeneric.type: type = fn_type @InitFromAdaptedGeneric [concrete] // CHECK:STDOUT: %InitFromAdaptedGeneric: %InitFromAdaptedGeneric.type = struct_value () [concrete] // CHECK:STDOUT: %require_complete.67c: = require_complete_type %T.binding.as_type [symbolic] @@ -302,6 +309,7 @@ fn InitFromAdaptedSpecific(x: i32) -> i32 { // CHECK:STDOUT: %N: Core.IntLiteral = symbolic_binding N, 0 [symbolic] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] +// CHECK:STDOUT: %.4d5: form = init_form %i32, call_param1 [concrete] // CHECK:STDOUT: %InitFromAdaptedSpecific.type: type = fn_type @InitFromAdaptedSpecific [concrete] // CHECK:STDOUT: %InitFromAdaptedSpecific: %InitFromAdaptedSpecific.type = struct_value () [concrete] // CHECK:STDOUT: %Adapt.808: type = class_type @Adapt, @Adapt(%i32) [concrete] @@ -338,7 +346,8 @@ fn InitFromAdaptedSpecific(x: i32) -> i32 { // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc9_51: %Copy.type = name_ref T, %T.loc9_27.2 [symbolic = %T.loc9_27.1 (constants.%T.035)] // CHECK:STDOUT: %T.as_type.loc9_51: type = facet_access_type %T.ref.loc9_51 [symbolic = %T.binding.as_type (constants.%T.binding.as_type)] -// CHECK:STDOUT: %.loc9_51: type = converted %T.ref.loc9_51, %T.as_type.loc9_51 [symbolic = %T.binding.as_type (constants.%T.binding.as_type)] +// CHECK:STDOUT: %.loc9_51.2: type = converted %T.ref.loc9_51, %T.as_type.loc9_51 [symbolic = %T.binding.as_type (constants.%T.binding.as_type)] +// CHECK:STDOUT: %.loc9_51.3: form = init_form %.loc9_51.2, call_param1 [symbolic = %.loc9_51.1 (constants.%.075d25.1)] // CHECK:STDOUT: %.loc9_35: type = splice_block %Copy.ref [concrete = constants.%Copy.type] { // CHECK:STDOUT: // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [concrete = imports.%Core] @@ -363,8 +372,9 @@ fn InitFromAdaptedSpecific(x: i32) -> i32 { // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32.loc13_39: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc13_39: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] +// CHECK:STDOUT: %.loc13_39: form = init_form %i32.loc13_39, call_param1 [concrete = constants.%.4d5] // CHECK:STDOUT: %x.param: %i32 = value_param call_param0 -// CHECK:STDOUT: %.loc13: type = splice_block %i32.loc13_31 [concrete = constants.%i32] { +// CHECK:STDOUT: %.loc13_31: type = splice_block %i32.loc13_31 [concrete = constants.%i32] { // CHECK:STDOUT: %int_32.loc13_31: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc13_31: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } @@ -378,6 +388,7 @@ fn InitFromAdaptedSpecific(x: i32) -> i32 { // CHECK:STDOUT: %T.loc9_27.1: %Copy.type = symbolic_binding T, 0 [symbolic = %T.loc9_27.1 (constants.%T.035)] // CHECK:STDOUT: %T.binding.as_type: type = symbolic_binding_type T, 0, %T.loc9_27.1 [symbolic = %T.binding.as_type (constants.%T.binding.as_type)] // CHECK:STDOUT: %pattern_type: type = pattern_type %T.binding.as_type [symbolic = %pattern_type (constants.%pattern_type.9b9f0c.1)] +// CHECK:STDOUT: %.loc9_51.1: form = init_form %T.binding.as_type, call_param1 [symbolic = %.loc9_51.1 (constants.%.075d25.1)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete.loc9: = require_complete_type %T.binding.as_type [symbolic = %require_complete.loc9 (constants.%require_complete.67c)] @@ -438,5 +449,6 @@ fn InitFromAdaptedSpecific(x: i32) -> i32 { // CHECK:STDOUT: %T.loc9_27.1 => constants.%T.035 // CHECK:STDOUT: %T.binding.as_type => constants.%T.binding.as_type // CHECK:STDOUT: %pattern_type => constants.%pattern_type.9b9f0c.1 +// CHECK:STDOUT: %.loc9_51.1 => constants.%.075d25.1 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/generic/member_access.carbon b/toolchain/check/testdata/class/generic/member_access.carbon index 433ac91abbb4..fe191a069ca7 100644 --- a/toolchain/check/testdata/class/generic/member_access.carbon +++ b/toolchain/check/testdata/class/generic/member_access.carbon @@ -72,10 +72,12 @@ fn StaticMemberFunctionCall(T:! type) -> Class(T) { // CHECK:STDOUT: %require_complete.67c: = require_complete_type %T.binding.as_type [symbolic] // CHECK:STDOUT: %Class.elem.05d: type = unbound_element_type %Class.847, %T.binding.as_type [symbolic] // CHECK:STDOUT: %pattern_type.893: type = pattern_type %Class.847 [symbolic] +// CHECK:STDOUT: %.075d25.1: form = init_form %T.binding.as_type, call_param1 [symbolic] // CHECK:STDOUT: %pattern_type.9b9f0c.1: type = pattern_type %T.binding.as_type [symbolic] // CHECK:STDOUT: %Class.Get.type.8ea: type = fn_type @Class.Get, @Class(%T.035) [symbolic] // CHECK:STDOUT: %Class.Get.7d3: %Class.Get.type.8ea = struct_value () [symbolic] // CHECK:STDOUT: %ptr.e7d: type = ptr_type %T.binding.as_type [symbolic] +// CHECK:STDOUT: %.c6d: form = init_form %ptr.e7d, call_param1 [symbolic] // CHECK:STDOUT: %pattern_type.65a: type = pattern_type %ptr.e7d [symbolic] // CHECK:STDOUT: %Class.GetAddr.type.437: type = fn_type @Class.GetAddr, @Class(%T.035) [symbolic] // CHECK:STDOUT: %Class.GetAddr.7a1: %Class.GetAddr.type.437 = struct_value () [symbolic] @@ -108,6 +110,7 @@ fn StaticMemberFunctionCall(T:! type) -> Class(T) { // CHECK:STDOUT: %Copy.facet.de4: %Copy.type = facet_value %i32, (%Copy.impl_witness.f17) [concrete] // CHECK:STDOUT: %Class.06a: type = class_type @Class, @Class(%Copy.facet.de4) [concrete] // CHECK:STDOUT: %pattern_type.cea: type = pattern_type %Class.06a [concrete] +// CHECK:STDOUT: %.4d5: form = init_form %i32, call_param1 [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %Class.elem.da5: type = unbound_element_type %Class.06a, %i32 [concrete] // CHECK:STDOUT: %Class.Get.type.bea: type = fn_type @Class.Get, @Class(%Copy.facet.de4) [concrete] @@ -121,6 +124,7 @@ fn StaticMemberFunctionCall(T:! type) -> Class(T) { // CHECK:STDOUT: %Class.Get.specific_fn: = specific_function %Class.Get.275, @Class.Get(%Copy.facet.de4) [concrete] // CHECK:STDOUT: %ptr.7d6: type = ptr_type %Class.06a [concrete] // CHECK:STDOUT: %ptr.235: type = ptr_type %i32 [concrete] +// CHECK:STDOUT: %.4f9: form = init_form %ptr.235, call_param1 [concrete] // CHECK:STDOUT: %pattern_type.fe8: type = pattern_type %ptr.235 [concrete] // CHECK:STDOUT: %Class.GetAddr.specific_fn: = specific_function %Class.GetAddr.7d7, @Class.GetAddr(%Copy.facet.de4) [concrete] // CHECK:STDOUT: %complete_type.3d0: = complete_type_witness %ptr.235 [concrete] @@ -165,7 +169,6 @@ fn StaticMemberFunctionCall(T:! type) -> Class(T) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: // CHECK:STDOUT: %Class.elem: type = unbound_element_type %Class, %T.binding.as_type [symbolic = %Class.elem (constants.%Class.elem.05d)] -// CHECK:STDOUT: %require_complete.loc9: = require_complete_type %T.binding.as_type [symbolic = %require_complete.loc9 (constants.%require_complete.67c)] // CHECK:STDOUT: %Copy.lookup_impl_witness: = lookup_impl_witness %T, @Copy [symbolic = %Copy.lookup_impl_witness (constants.%Copy.lookup_impl_witness.58d)] // CHECK:STDOUT: %.loc9_16.3: type = fn_type_with_self_type constants.%Copy.Op.type, %T [symbolic = %.loc9_16.3 (constants.%.72e)] // CHECK:STDOUT: %impl.elem0.loc9_16.2: @Class.Get.%.loc9_16.3 (%.72e) = impl_witness_access %Copy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc9_16.2 (constants.%impl.elem0.07b)] @@ -284,6 +287,7 @@ fn StaticMemberFunctionCall(T:! type) -> Class(T) { // CHECK:STDOUT: %Class => constants.%Class.847 // CHECK:STDOUT: %pattern_type.loc7_10 => constants.%pattern_type.893 // CHECK:STDOUT: %T.binding.as_type => constants.%T.binding.as_type +// CHECK:STDOUT: %.loc7_27.1 => constants.%.075d25.1 // CHECK:STDOUT: %pattern_type.loc7_24 => constants.%pattern_type.9b9f0c.1 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -293,6 +297,7 @@ fn StaticMemberFunctionCall(T:! type) -> Class(T) { // CHECK:STDOUT: %pattern_type.loc13_18 => constants.%pattern_type.893 // CHECK:STDOUT: %T.binding.as_type => constants.%T.binding.as_type // CHECK:STDOUT: %ptr.loc13_36.1 => constants.%ptr.e7d +// CHECK:STDOUT: %.loc13_36.1 => constants.%.c6d // CHECK:STDOUT: %pattern_type.loc13_32 => constants.%pattern_type.65a // CHECK:STDOUT: } // CHECK:STDOUT: @@ -317,12 +322,13 @@ fn StaticMemberFunctionCall(T:! type) -> Class(T) { // CHECK:STDOUT: %Class => constants.%Class.06a // CHECK:STDOUT: %pattern_type.loc7_10 => constants.%pattern_type.cea // CHECK:STDOUT: %T.binding.as_type => constants.%i32 +// CHECK:STDOUT: %.loc7_27.1 => constants.%.4d5 // CHECK:STDOUT: %pattern_type.loc7_24 => constants.%pattern_type.7ce // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc7 => constants.%complete_type.1ec +// CHECK:STDOUT: %require_complete.loc7_14 => constants.%complete_type.1ec +// CHECK:STDOUT: %require_complete.loc7_27 => constants.%complete_type.f8a // CHECK:STDOUT: %Class.elem => constants.%Class.elem.da5 -// CHECK:STDOUT: %require_complete.loc9 => constants.%complete_type.f8a // CHECK:STDOUT: %Copy.lookup_impl_witness => constants.%Copy.impl_witness.f17 // CHECK:STDOUT: %.loc9_16.3 => constants.%.f79 // CHECK:STDOUT: %impl.elem0.loc9_16.2 => constants.%Int.as.Copy.impl.Op.664 @@ -335,6 +341,7 @@ fn StaticMemberFunctionCall(T:! type) -> Class(T) { // CHECK:STDOUT: %pattern_type.loc13_18 => constants.%pattern_type.cea // CHECK:STDOUT: %T.binding.as_type => constants.%i32 // CHECK:STDOUT: %ptr.loc13_36.1 => constants.%ptr.235 +// CHECK:STDOUT: %.loc13_36.1 => constants.%.4f9 // CHECK:STDOUT: %pattern_type.loc13_32 => constants.%pattern_type.fe8 // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -356,10 +363,10 @@ fn StaticMemberFunctionCall(T:! type) -> Class(T) { // CHECK:STDOUT: %Class.type: type = generic_class_type @Class [concrete] // CHECK:STDOUT: %Class.generic: %Class.type = struct_value () [concrete] // CHECK:STDOUT: %Class: type = class_type @Class, @Class(%T) [symbolic] +// CHECK:STDOUT: %.859: form = init_form %Class, call_param0 [symbolic] // CHECK:STDOUT: %pattern_type.466: type = pattern_type %Class [symbolic] // CHECK:STDOUT: %Class.Make.type: type = fn_type @Class.Make, @Class(%T) [symbolic] // CHECK:STDOUT: %Class.Make: %Class.Make.type = struct_value () [symbolic] -// CHECK:STDOUT: %require_complete: = require_complete_type %Class [symbolic] // CHECK:STDOUT: %Class.Make.specific_fn: = specific_function %Class.Make, @Class.Make(%T) [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -370,7 +377,7 @@ fn StaticMemberFunctionCall(T:! type) -> Class(T) { // CHECK:STDOUT: // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete: = require_complete_type %Class.loc8_49.1 [symbolic = %require_complete (constants.%require_complete)] +// CHECK:STDOUT: // CHECK:STDOUT: %Class.Make.type: type = fn_type @Class.Make, @Class(%T.loc8_29.1) [symbolic = %Class.Make.type (constants.%Class.Make.type)] // CHECK:STDOUT: %Class.Make: @StaticMemberFunctionCall.%Class.Make.type (%Class.Make.type) = struct_value () [symbolic = %Class.Make (constants.%Class.Make)] // CHECK:STDOUT: %Class.Make.specific_fn.loc10_18.2: = specific_function %Class.Make, @Class.Make(%T.loc8_29.1) [symbolic = %Class.Make.specific_fn.loc10_18.2 (constants.%Class.Make.specific_fn)] @@ -384,7 +391,7 @@ fn StaticMemberFunctionCall(T:! type) -> Class(T) { // CHECK:STDOUT: %Make.ref: @StaticMemberFunctionCall.%Class.Make.type (%Class.Make.type) = name_ref Make, %.loc10 [symbolic = %Class.Make (constants.%Class.Make)] // CHECK:STDOUT: %Class.Make.specific_fn.loc10_18.1: = specific_function %Make.ref, @Class.Make(constants.%T) [symbolic = %Class.Make.specific_fn.loc10_18.2 (constants.%Class.Make.specific_fn)] // CHECK:STDOUT: -// CHECK:STDOUT: %Class.Make.call: init @StaticMemberFunctionCall.%Class.loc8_49.1 (%Class) = call %Class.Make.specific_fn.loc10_18.1() to %.loc8 +// CHECK:STDOUT: %Class.Make.call: init @StaticMemberFunctionCall.%Class.loc8_49.1 (%Class) = call %Class.Make.specific_fn.loc10_18.1() to %.loc8_39 // CHECK:STDOUT: return %Class.Make.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -392,6 +399,7 @@ fn StaticMemberFunctionCall(T:! type) -> Class(T) { // CHECK:STDOUT: specific @StaticMemberFunctionCall(constants.%T) { // CHECK:STDOUT: %T.loc8_29.1 => constants.%T // CHECK:STDOUT: %Class.loc8_49.1 => constants.%Class +// CHECK:STDOUT: %.loc8_49.1 => constants.%.859 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.466 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/generic/member_inline.carbon b/toolchain/check/testdata/class/generic/member_inline.carbon index c9bfc21349b8..7c3646d13294 100644 --- a/toolchain/check/testdata/class/generic/member_inline.carbon +++ b/toolchain/check/testdata/class/generic/member_inline.carbon @@ -56,6 +56,7 @@ class C(T:! Core.Copy) { // CHECK:STDOUT: %Class: type = class_type @Class, @Class(%T.035) [symbolic] // CHECK:STDOUT: %T.binding.as_type: type = symbolic_binding_type T, 0, %T.035 [symbolic] // CHECK:STDOUT: %pattern_type.9b9f0c.1: type = pattern_type %T.binding.as_type [symbolic] +// CHECK:STDOUT: %.075d25.1: form = init_form %T.binding.as_type, call_param1 [symbolic] // CHECK:STDOUT: %Class.F.type: type = fn_type @Class.F, @Class(%T.035) [symbolic] // CHECK:STDOUT: %Class.F: %Class.F.type = struct_value () [symbolic] // CHECK:STDOUT: %pattern_type.893: type = pattern_type %Class [symbolic] @@ -119,7 +120,8 @@ class C(T:! Core.Copy) { // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc6_17: %Copy.type = name_ref T, @Class.%T.loc5_13.2 [symbolic = %T (constants.%T.035)] // CHECK:STDOUT: %T.as_type.loc6_17: type = facet_access_type %T.ref.loc6_17 [symbolic = %T.binding.as_type (constants.%T.binding.as_type)] -// CHECK:STDOUT: %.loc6_17: type = converted %T.ref.loc6_17, %T.as_type.loc6_17 [symbolic = %T.binding.as_type (constants.%T.binding.as_type)] +// CHECK:STDOUT: %.loc6_17.2: type = converted %T.ref.loc6_17, %T.as_type.loc6_17 [symbolic = %T.binding.as_type (constants.%T.binding.as_type)] +// CHECK:STDOUT: %.loc6_17.3: form = init_form %.loc6_17.2, call_param1 [symbolic = %.loc6_17.1 (constants.%.075d25.1)] // CHECK:STDOUT: %n.param: @Class.F.%T.binding.as_type (%T.binding.as_type) = value_param call_param0 // CHECK:STDOUT: %.loc6_11.1: type = splice_block %.loc6_11.2 [symbolic = %T.binding.as_type (constants.%T.binding.as_type)] { // CHECK:STDOUT: %T.ref.loc6_11: %Copy.type = name_ref T, @Class.%T.loc5_13.2 [symbolic = %T (constants.%T.035)] @@ -138,7 +140,8 @@ class C(T:! Core.Copy) { // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref: %Copy.type = name_ref T, @Class.%T.loc5_13.2 [symbolic = %T (constants.%T.035)] // CHECK:STDOUT: %T.as_type: type = facet_access_type %T.ref [symbolic = %T.binding.as_type (constants.%T.binding.as_type)] -// CHECK:STDOUT: %.loc10_25: type = converted %T.ref, %T.as_type [symbolic = %T.binding.as_type (constants.%T.binding.as_type)] +// CHECK:STDOUT: %.loc10_25.2: type = converted %T.ref, %T.as_type [symbolic = %T.binding.as_type (constants.%T.binding.as_type)] +// CHECK:STDOUT: %.loc10_25.3: form = init_form %.loc10_25.2, call_param1 [symbolic = %.loc10_25.1 (constants.%.075d25.1)] // CHECK:STDOUT: %self.param: @Class.G.%Class (%Class) = value_param call_param0 // CHECK:STDOUT: %.loc10_14.1: type = splice_block %Self.ref [symbolic = %Class (constants.%Class)] { // CHECK:STDOUT: %.loc10_14.2: type = specific_constant constants.%Class, @Class(constants.%T.035) [symbolic = %Class (constants.%Class)] @@ -168,6 +171,7 @@ class C(T:! Core.Copy) { // CHECK:STDOUT: %T: %Copy.type = symbolic_binding T, 0 [symbolic = %T (constants.%T.035)] // CHECK:STDOUT: %T.binding.as_type: type = symbolic_binding_type T, 0, %T [symbolic = %T.binding.as_type (constants.%T.binding.as_type)] // CHECK:STDOUT: %pattern_type: type = pattern_type %T.binding.as_type [symbolic = %pattern_type (constants.%pattern_type.9b9f0c.1)] +// CHECK:STDOUT: %.loc6_17.1: form = init_form %T.binding.as_type, call_param1 [symbolic = %.loc6_17.1 (constants.%.075d25.1)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete: = require_complete_type %T.binding.as_type [symbolic = %require_complete (constants.%require_complete.67c)] @@ -194,12 +198,13 @@ class C(T:! Core.Copy) { // CHECK:STDOUT: %Class: type = class_type @Class, @Class(%T) [symbolic = %Class (constants.%Class)] // CHECK:STDOUT: %pattern_type.loc10_8: type = pattern_type %Class [symbolic = %pattern_type.loc10_8 (constants.%pattern_type.893)] // CHECK:STDOUT: %T.binding.as_type: type = symbolic_binding_type T, 0, %T [symbolic = %T.binding.as_type (constants.%T.binding.as_type)] +// CHECK:STDOUT: %.loc10_25.1: form = init_form %T.binding.as_type, call_param1 [symbolic = %.loc10_25.1 (constants.%.075d25.1)] // CHECK:STDOUT: %pattern_type.loc10_22: type = pattern_type %T.binding.as_type [symbolic = %pattern_type.loc10_22 (constants.%pattern_type.9b9f0c.1)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc10: = require_complete_type %Class [symbolic = %require_complete.loc10 (constants.%require_complete.904)] +// CHECK:STDOUT: %require_complete.loc10_12: = require_complete_type %Class [symbolic = %require_complete.loc10_12 (constants.%require_complete.904)] +// CHECK:STDOUT: %require_complete.loc10_25: = require_complete_type %T.binding.as_type [symbolic = %require_complete.loc10_25 (constants.%require_complete.67c)] // CHECK:STDOUT: %Class.elem: type = unbound_element_type %Class, %T.binding.as_type [symbolic = %Class.elem (constants.%Class.elem)] -// CHECK:STDOUT: %require_complete.loc11: = require_complete_type %T.binding.as_type [symbolic = %require_complete.loc11 (constants.%require_complete.67c)] // CHECK:STDOUT: %Copy.lookup_impl_witness: = lookup_impl_witness %T, @Copy [symbolic = %Copy.lookup_impl_witness (constants.%Copy.lookup_impl_witness.58d)] // CHECK:STDOUT: %.loc11_16.3: type = fn_type_with_self_type constants.%Copy.Op.type, %T [symbolic = %.loc11_16.3 (constants.%.72e)] // CHECK:STDOUT: %impl.elem0.loc11_16.2: @Class.G.%.loc11_16.3 (%.72e) = impl_witness_access %Copy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc11_16.2 (constants.%impl.elem0.07b)] @@ -241,6 +246,7 @@ class C(T:! Core.Copy) { // CHECK:STDOUT: %T => constants.%T.035 // CHECK:STDOUT: %T.binding.as_type => constants.%T.binding.as_type // CHECK:STDOUT: %pattern_type => constants.%pattern_type.9b9f0c.1 +// CHECK:STDOUT: %.loc6_17.1 => constants.%.075d25.1 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Class.G(constants.%T.035) { @@ -248,6 +254,7 @@ class C(T:! Core.Copy) { // CHECK:STDOUT: %Class => constants.%Class // CHECK:STDOUT: %pattern_type.loc10_8 => constants.%pattern_type.893 // CHECK:STDOUT: %T.binding.as_type => constants.%T.binding.as_type +// CHECK:STDOUT: %.loc10_25.1 => constants.%.075d25.1 // CHECK:STDOUT: %pattern_type.loc10_22 => constants.%pattern_type.9b9f0c.1 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/generic/member_lookup.carbon b/toolchain/check/testdata/class/generic/member_lookup.carbon index 05fd83ea6437..8c4b061b1752 100644 --- a/toolchain/check/testdata/class/generic/member_lookup.carbon +++ b/toolchain/check/testdata/class/generic/member_lookup.carbon @@ -84,8 +84,8 @@ fn AccessMissingConcrete(x: Derived(i32)) -> i32 { // CHECK:STDOUT: %T.binding.as_type: type = symbolic_binding_type T, 0, %T.035 [symbolic] // CHECK:STDOUT: %Derived.ad7: type = class_type @Derived, @Derived(%T.binding.as_type) [symbolic] // CHECK:STDOUT: %pattern_type.d85: type = pattern_type %Derived.ad7 [symbolic] +// CHECK:STDOUT: %.075d25.1: form = init_form %T.binding.as_type, call_param1 [symbolic] // CHECK:STDOUT: %pattern_type.9b9f0c.1: type = pattern_type %T.binding.as_type [symbolic] -// CHECK:STDOUT: %require_complete.67c: = require_complete_type %T.binding.as_type [symbolic] // CHECK:STDOUT: %Base.ab3: type = class_type @Base, @Base(%T.binding.as_type) [symbolic] // CHECK:STDOUT: %require_complete.b68: = require_complete_type %Base.ab3 [symbolic] // CHECK:STDOUT: %Derived.elem.d6f: type = unbound_element_type %Derived.ad7, %T.binding.as_type [symbolic] @@ -133,9 +133,8 @@ fn AccessMissingConcrete(x: Derived(i32)) -> i32 { // CHECK:STDOUT: !definition: // CHECK:STDOUT: // CHECK:STDOUT: %Base: type = class_type @Base, @Base(%T.binding.as_type) [symbolic = %Base (constants.%Base.ab3)] -// CHECK:STDOUT: %require_complete.loc21_11: = require_complete_type %Base [symbolic = %require_complete.loc21_11 (constants.%require_complete.b68)] +// CHECK:STDOUT: %require_complete.loc21: = require_complete_type %Base [symbolic = %require_complete.loc21 (constants.%require_complete.b68)] // CHECK:STDOUT: %Base.elem: type = unbound_element_type %Base, %T.binding.as_type [symbolic = %Base.elem (constants.%Base.elem.384)] -// CHECK:STDOUT: %require_complete.loc21_13: = require_complete_type %T.binding.as_type [symbolic = %require_complete.loc21_13 (constants.%require_complete.67c)] // CHECK:STDOUT: %Copy.lookup_impl_witness: = lookup_impl_witness %T.loc19_15.1, @Copy [symbolic = %Copy.lookup_impl_witness (constants.%Copy.lookup_impl_witness.58d)] // CHECK:STDOUT: %.loc21_11.5: type = fn_type_with_self_type constants.%Copy.Op.type, %T.loc19_15.1 [symbolic = %.loc21_11.5 (constants.%.72e)] // CHECK:STDOUT: %impl.elem0.loc21_11.2: @AccessBase.%.loc21_11.5 (%.72e) = impl_witness_access %Copy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc21_11.2 (constants.%impl.elem0.07b)] @@ -164,6 +163,7 @@ fn AccessMissingConcrete(x: Derived(i32)) -> i32 { // CHECK:STDOUT: %T.binding.as_type => constants.%T.binding.as_type // CHECK:STDOUT: %Derived.loc13_45.1 => constants.%Derived.ad7 // CHECK:STDOUT: %pattern_type.loc13_33 => constants.%pattern_type.d85 +// CHECK:STDOUT: %.loc13_51.1 => constants.%.075d25.1 // CHECK:STDOUT: %pattern_type.loc13_48 => constants.%pattern_type.9b9f0c.1 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -172,6 +172,7 @@ fn AccessMissingConcrete(x: Derived(i32)) -> i32 { // CHECK:STDOUT: %T.binding.as_type => constants.%T.binding.as_type // CHECK:STDOUT: %Derived.loc19_42.1 => constants.%Derived.ad7 // CHECK:STDOUT: %pattern_type.loc19_30 => constants.%pattern_type.d85 +// CHECK:STDOUT: %.loc19_48.1 => constants.%.075d25.1 // CHECK:STDOUT: %pattern_type.loc19_45 => constants.%pattern_type.9b9f0c.1 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/generic/member_out_of_line.carbon b/toolchain/check/testdata/class/generic/member_out_of_line.carbon index cc249bfb2819..4ebf01bf230a 100644 --- a/toolchain/check/testdata/class/generic/member_out_of_line.carbon +++ b/toolchain/check/testdata/class/generic/member_out_of_line.carbon @@ -123,6 +123,7 @@ fn Generic(T:! ()).WrongType() {} // CHECK:STDOUT: %Class: type = class_type @Class, @Class(%T.035) [symbolic] // CHECK:STDOUT: %T.binding.as_type: type = symbolic_binding_type T, 0, %T.035 [symbolic] // CHECK:STDOUT: %pattern_type.9b9f0c.1: type = pattern_type %T.binding.as_type [symbolic] +// CHECK:STDOUT: %.075d25.1: form = init_form %T.binding.as_type, call_param1 [symbolic] // CHECK:STDOUT: %Class.F.type: type = fn_type @Class.F, @Class(%T.035) [symbolic] // CHECK:STDOUT: %Class.F: %Class.F.type = struct_value () [symbolic] // CHECK:STDOUT: %pattern_type.893: type = pattern_type %Class [symbolic] @@ -174,7 +175,8 @@ fn Generic(T:! ()).WrongType() {} // CHECK:STDOUT: %T.loc11: %Copy.type = symbolic_binding T, 0 [symbolic = @Class.%T.loc5_13.1 (constants.%T.035)] // CHECK:STDOUT: %T.ref.loc11_36: %Copy.type = name_ref T, %T.loc11 [symbolic = %T.loc6 (constants.%T.035)] // CHECK:STDOUT: %T.as_type.loc11_36: type = facet_access_type %T.ref.loc11_36 [symbolic = %T.binding.as_type (constants.%T.binding.as_type)] -// CHECK:STDOUT: %.loc11_36: type = converted %T.ref.loc11_36, %T.as_type.loc11_36 [symbolic = %T.binding.as_type (constants.%T.binding.as_type)] +// CHECK:STDOUT: %.loc11_36.1: type = converted %T.ref.loc11_36, %T.as_type.loc11_36 [symbolic = %T.binding.as_type (constants.%T.binding.as_type)] +// CHECK:STDOUT: %.loc11_36.2: form = init_form %.loc11_36.1, call_param1 [symbolic = %.loc6_17.1 (constants.%.075d25.1)] // CHECK:STDOUT: %n.param.loc11: @Class.F.%T.binding.as_type (%T.binding.as_type) = value_param call_param0 // CHECK:STDOUT: %.loc11_30.1: type = splice_block %.loc11_30.2 [symbolic = %T.binding.as_type (constants.%T.binding.as_type)] { // CHECK:STDOUT: %T.ref.loc11_30: %Copy.type = name_ref T, %T.loc11 [symbolic = %T.loc6 (constants.%T.035)] @@ -199,7 +201,8 @@ fn Generic(T:! ()).WrongType() {} // CHECK:STDOUT: %T.loc15: %Copy.type = symbolic_binding T, 0 [symbolic = @Class.%T.loc5_13.1 (constants.%T.035)] // CHECK:STDOUT: %T.ref.loc15: %Copy.type = name_ref T, %T.loc15 [symbolic = %T.loc7 (constants.%T.035)] // CHECK:STDOUT: %T.as_type.loc15: type = facet_access_type %T.ref.loc15 [symbolic = %T.binding.as_type (constants.%T.binding.as_type)] -// CHECK:STDOUT: %.loc15_44: type = converted %T.ref.loc15, %T.as_type.loc15 [symbolic = %T.binding.as_type (constants.%T.binding.as_type)] +// CHECK:STDOUT: %.loc15_44.1: type = converted %T.ref.loc15, %T.as_type.loc15 [symbolic = %T.binding.as_type (constants.%T.binding.as_type)] +// CHECK:STDOUT: %.loc15_44.2: form = init_form %.loc15_44.1, call_param1 [symbolic = %.loc7_25.1 (constants.%.075d25.1)] // CHECK:STDOUT: %self.param.loc15: @Class.G.%Class (%Class) = value_param call_param0 // CHECK:STDOUT: %.loc15_33.1: type = splice_block %Self.ref.loc15 [symbolic = %Class (constants.%Class)] { // CHECK:STDOUT: %.loc15_33.2: type = specific_constant constants.%Class, @Class(constants.%T.035) [symbolic = %Class (constants.%Class)] @@ -235,7 +238,8 @@ fn Generic(T:! ()).WrongType() {} // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc6_17: %Copy.type = name_ref T, @Class.%T.loc5_13.2 [symbolic = %T.loc6 (constants.%T.035)] // CHECK:STDOUT: %T.as_type.loc6_17: type = facet_access_type %T.ref.loc6_17 [symbolic = %T.binding.as_type (constants.%T.binding.as_type)] -// CHECK:STDOUT: %.loc6_17: type = converted %T.ref.loc6_17, %T.as_type.loc6_17 [symbolic = %T.binding.as_type (constants.%T.binding.as_type)] +// CHECK:STDOUT: %.loc6_17.2: type = converted %T.ref.loc6_17, %T.as_type.loc6_17 [symbolic = %T.binding.as_type (constants.%T.binding.as_type)] +// CHECK:STDOUT: %.loc6_17.3: form = init_form %.loc6_17.2, call_param1 [symbolic = %.loc6_17.1 (constants.%.075d25.1)] // CHECK:STDOUT: %n.param.loc6: @Class.F.%T.binding.as_type (%T.binding.as_type) = value_param call_param0 // CHECK:STDOUT: %.loc6_11.1: type = splice_block %.loc6_11.2 [symbolic = %T.binding.as_type (constants.%T.binding.as_type)] { // CHECK:STDOUT: %T.ref.loc6_11: %Copy.type = name_ref T, @Class.%T.loc5_13.2 [symbolic = %T.loc6 (constants.%T.035)] @@ -254,7 +258,8 @@ fn Generic(T:! ()).WrongType() {} // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc7: %Copy.type = name_ref T, @Class.%T.loc5_13.2 [symbolic = %T.loc7 (constants.%T.035)] // CHECK:STDOUT: %T.as_type.loc7: type = facet_access_type %T.ref.loc7 [symbolic = %T.binding.as_type (constants.%T.binding.as_type)] -// CHECK:STDOUT: %.loc7_25: type = converted %T.ref.loc7, %T.as_type.loc7 [symbolic = %T.binding.as_type (constants.%T.binding.as_type)] +// CHECK:STDOUT: %.loc7_25.2: type = converted %T.ref.loc7, %T.as_type.loc7 [symbolic = %T.binding.as_type (constants.%T.binding.as_type)] +// CHECK:STDOUT: %.loc7_25.3: form = init_form %.loc7_25.2, call_param1 [symbolic = %.loc7_25.1 (constants.%.075d25.1)] // CHECK:STDOUT: %self.param.loc7: @Class.G.%Class (%Class) = value_param call_param0 // CHECK:STDOUT: %.loc7_14.1: type = splice_block %Self.ref.loc7 [symbolic = %Class (constants.%Class)] { // CHECK:STDOUT: %.loc7_14.2: type = specific_constant constants.%Class, @Class(constants.%T.035) [symbolic = %Class (constants.%Class)] @@ -284,6 +289,7 @@ fn Generic(T:! ()).WrongType() {} // CHECK:STDOUT: %T.loc6: %Copy.type = symbolic_binding T, 0 [symbolic = %T.loc6 (constants.%T.035)] // CHECK:STDOUT: %T.binding.as_type: type = symbolic_binding_type T, 0, %T.loc6 [symbolic = %T.binding.as_type (constants.%T.binding.as_type)] // CHECK:STDOUT: %pattern_type: type = pattern_type %T.binding.as_type [symbolic = %pattern_type (constants.%pattern_type.9b9f0c.1)] +// CHECK:STDOUT: %.loc6_17.1: form = init_form %T.binding.as_type, call_param1 [symbolic = %.loc6_17.1 (constants.%.075d25.1)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete: = require_complete_type %T.binding.as_type [symbolic = %require_complete (constants.%require_complete.67c)] @@ -310,12 +316,13 @@ fn Generic(T:! ()).WrongType() {} // CHECK:STDOUT: %Class: type = class_type @Class, @Class(%T.loc7) [symbolic = %Class (constants.%Class)] // CHECK:STDOUT: %pattern_type.loc7_8: type = pattern_type %Class [symbolic = %pattern_type.loc7_8 (constants.%pattern_type.893)] // CHECK:STDOUT: %T.binding.as_type: type = symbolic_binding_type T, 0, %T.loc7 [symbolic = %T.binding.as_type (constants.%T.binding.as_type)] +// CHECK:STDOUT: %.loc7_25.1: form = init_form %T.binding.as_type, call_param1 [symbolic = %.loc7_25.1 (constants.%.075d25.1)] // CHECK:STDOUT: %pattern_type.loc7_22: type = pattern_type %T.binding.as_type [symbolic = %pattern_type.loc7_22 (constants.%pattern_type.9b9f0c.1)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc15: = require_complete_type %Class [symbolic = %require_complete.loc15 (constants.%require_complete.904)] +// CHECK:STDOUT: %require_complete.loc15_31: = require_complete_type %Class [symbolic = %require_complete.loc15_31 (constants.%require_complete.904)] +// CHECK:STDOUT: %require_complete.loc15_44: = require_complete_type %T.binding.as_type [symbolic = %require_complete.loc15_44 (constants.%require_complete.67c)] // CHECK:STDOUT: %Class.elem: type = unbound_element_type %Class, %T.binding.as_type [symbolic = %Class.elem (constants.%Class.elem)] -// CHECK:STDOUT: %require_complete.loc16: = require_complete_type %T.binding.as_type [symbolic = %require_complete.loc16 (constants.%require_complete.67c)] // CHECK:STDOUT: %Copy.lookup_impl_witness: = lookup_impl_witness %T.loc7, @Copy [symbolic = %Copy.lookup_impl_witness (constants.%Copy.lookup_impl_witness.58d)] // CHECK:STDOUT: %.loc16_14.3: type = fn_type_with_self_type constants.%Copy.Op.type, %T.loc7 [symbolic = %.loc16_14.3 (constants.%.72e)] // CHECK:STDOUT: %impl.elem0.loc16_14.2: @Class.G.%.loc16_14.3 (%.72e) = impl_witness_access %Copy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc16_14.2 (constants.%impl.elem0.07b)] @@ -357,6 +364,7 @@ fn Generic(T:! ()).WrongType() {} // CHECK:STDOUT: %T.loc6 => constants.%T.035 // CHECK:STDOUT: %T.binding.as_type => constants.%T.binding.as_type // CHECK:STDOUT: %pattern_type => constants.%pattern_type.9b9f0c.1 +// CHECK:STDOUT: %.loc6_17.1 => constants.%.075d25.1 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Class.G(constants.%T.035) { @@ -364,6 +372,7 @@ fn Generic(T:! ()).WrongType() {} // CHECK:STDOUT: %Class => constants.%Class // CHECK:STDOUT: %pattern_type.loc7_8 => constants.%pattern_type.893 // CHECK:STDOUT: %T.binding.as_type => constants.%T.binding.as_type +// CHECK:STDOUT: %.loc7_25.1 => constants.%.075d25.1 // CHECK:STDOUT: %pattern_type.loc7_22 => constants.%pattern_type.9b9f0c.1 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/generic/member_type.carbon b/toolchain/check/testdata/class/generic/member_type.carbon index b403c3e2e7f6..025c2dd1a096 100644 --- a/toolchain/check/testdata/class/generic/member_type.carbon +++ b/toolchain/check/testdata/class/generic/member_type.carbon @@ -75,6 +75,7 @@ fn Test() -> i32 { // CHECK:STDOUT: %struct_type.n.47a: type = struct_type {.n: %T.binding.as_type} [symbolic] // CHECK:STDOUT: %complete_type.072: = complete_type_witness %struct_type.n.47a [symbolic] // CHECK:STDOUT: %pattern_type.9b9f0c.1: type = pattern_type %T.binding.as_type [symbolic] +// CHECK:STDOUT: %.6e4: form = init_form %Inner.bcf, call_param1 [symbolic] // CHECK:STDOUT: %pattern_type.611: type = pattern_type %Inner.bcf [symbolic] // CHECK:STDOUT: %Outer.F.type.2fb: type = fn_type @Outer.F, @Outer(%T.035) [symbolic] // CHECK:STDOUT: %Outer.F.5e3: %Outer.F.type.2fb = struct_value () [symbolic] @@ -91,6 +92,7 @@ fn Test() -> i32 { // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %N: Core.IntLiteral = symbolic_binding N, 0 [symbolic] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] +// CHECK:STDOUT: %.941: form = init_form %i32, call_param0 [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %Test.type: type = fn_type @Test [concrete] // CHECK:STDOUT: %Test: %Test.type = struct_value () [concrete] @@ -113,6 +115,7 @@ fn Test() -> i32 { // CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] // CHECK:STDOUT: %Copy.impl_witness.006: = impl_witness imports.%Copy.impl_witness_table.b6d [concrete] // CHECK:STDOUT: %Copy.facet.cdd: %Copy.type = facet_value Core.IntLiteral, (%Copy.impl_witness.006) [concrete] +// CHECK:STDOUT: %.091: form = init_form %Inner.74c, call_param1 [concrete] // CHECK:STDOUT: %Outer.F.specific_fn: = specific_function %Outer.F.119, @Outer.F(%Copy.facet.de4) [concrete] // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] @@ -181,6 +184,7 @@ fn Test() -> i32 { // CHECK:STDOUT: } { // 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: %.loc12: form = init_form %i32.loc12, call_param0 [concrete = constants.%.941] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } @@ -202,8 +206,9 @@ fn Test() -> i32 { // CHECK:STDOUT: %return.patt: @Outer.F.%pattern_type.loc9_14 (%pattern_type.611) = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: @Outer.F.%pattern_type.loc9_14 (%pattern_type.611) = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %.loc9_17: type = specific_constant @Outer.%Inner.decl, @Outer(constants.%T.035) [symbolic = %Inner (constants.%Inner.bcf)] -// CHECK:STDOUT: %Inner.ref: type = name_ref Inner, %.loc9_17 [symbolic = %Inner (constants.%Inner.bcf)] +// CHECK:STDOUT: %.loc9_17.2: type = specific_constant @Outer.%Inner.decl, @Outer(constants.%T.035) [symbolic = %Inner (constants.%Inner.bcf)] +// CHECK:STDOUT: %Inner.ref: type = name_ref Inner, %.loc9_17.2 [symbolic = %Inner (constants.%Inner.bcf)] +// CHECK:STDOUT: %.loc9_17.3: form = init_form %Inner.ref, call_param1 [symbolic = %.loc9_17.1 (constants.%.6e4)] // CHECK:STDOUT: %n.param: @Outer.F.%T.binding.as_type (%T.binding.as_type) = value_param call_param0 // CHECK:STDOUT: %.loc9_11.1: type = splice_block %.loc9_11.2 [symbolic = %T.binding.as_type (constants.%T.binding.as_type)] { // CHECK:STDOUT: %T.ref: %Copy.type = name_ref T, @Outer.%T.loc4_13.2 [symbolic = %T (constants.%T.035)] @@ -255,6 +260,7 @@ fn Test() -> i32 { // CHECK:STDOUT: %T.binding.as_type: type = symbolic_binding_type T, 0, %T [symbolic = %T.binding.as_type (constants.%T.binding.as_type)] // CHECK:STDOUT: %pattern_type.loc9_8: type = pattern_type %T.binding.as_type [symbolic = %pattern_type.loc9_8 (constants.%pattern_type.9b9f0c.1)] // CHECK:STDOUT: %Inner: type = class_type @Inner, @Inner(%T) [symbolic = %Inner (constants.%Inner.bcf)] +// CHECK:STDOUT: %.loc9_17.1: form = init_form %Inner, call_param1 [symbolic = %.loc9_17.1 (constants.%.6e4)] // CHECK:STDOUT: %pattern_type.loc9_14: type = pattern_type %Inner [symbolic = %pattern_type.loc9_14 (constants.%pattern_type.611)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -366,6 +372,7 @@ fn Test() -> i32 { // CHECK:STDOUT: %T.binding.as_type => constants.%T.binding.as_type // CHECK:STDOUT: %pattern_type.loc9_8 => constants.%pattern_type.9b9f0c.1 // CHECK:STDOUT: %Inner => constants.%Inner.bcf +// CHECK:STDOUT: %.loc9_17.1 => constants.%.6e4 // CHECK:STDOUT: %pattern_type.loc9_14 => constants.%pattern_type.611 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -394,6 +401,7 @@ fn Test() -> i32 { // CHECK:STDOUT: %T.binding.as_type => constants.%i32 // CHECK:STDOUT: %pattern_type.loc9_8 => constants.%pattern_type.7ce // CHECK:STDOUT: %Inner => constants.%Inner.74c +// CHECK:STDOUT: %.loc9_17.1 => constants.%.091 // CHECK:STDOUT: %pattern_type.loc9_14 => constants.%pattern_type.35b // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -421,6 +429,7 @@ fn Test() -> i32 { // CHECK:STDOUT: %Self.d55: %Inner.type.6ef = symbolic_binding Self, 1 [symbolic] // CHECK:STDOUT: %Self.binding.as_type.534: type = symbolic_binding_type Self, 1, %Self.d55 [symbolic] // CHECK:STDOUT: %pattern_type.72a: type = pattern_type %Self.binding.as_type.534 [symbolic] +// CHECK:STDOUT: %.e5f: form = init_form %T, call_param1 [symbolic] // CHECK:STDOUT: %pattern_type.51d: type = pattern_type %T [symbolic] // CHECK:STDOUT: %Inner.F.type.31e: type = fn_type @Inner.F, @Inner(%T) [symbolic] // CHECK:STDOUT: %Inner.F.3c5: %Inner.F.type.31e = struct_value () [symbolic] @@ -458,10 +467,12 @@ fn Test() -> i32 { // CHECK:STDOUT: %Inner.assoc_type.564: type = assoc_entity_type @Inner, @Inner(%i32) [concrete] // CHECK:STDOUT: %assoc0.43a: %Inner.assoc_type.564 = assoc_entity element0, @Inner.%Inner.F.decl [concrete] // CHECK:STDOUT: %pattern_type.9c8: type = pattern_type %D [concrete] +// CHECK:STDOUT: %.4d5: form = init_form %i32, call_param1 [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %D.as.Inner.impl.F.type: type = fn_type @D.as.Inner.impl.F [concrete] // CHECK:STDOUT: %D.as.Inner.impl.F: %D.as.Inner.impl.F.type = struct_value () [concrete] // CHECK:STDOUT: %Inner.facet.dc9: %Inner.type.94a = facet_value %D, (%Inner.impl_witness.667) [concrete] +// CHECK:STDOUT: %.941: form = init_form %i32, call_param0 [concrete] // CHECK:STDOUT: %Test.type: type = fn_type @Test [concrete] // CHECK:STDOUT: %Test: %Test.type = struct_value () [concrete] // CHECK:STDOUT: %i32.builtin: type = int_type signed, %int_32 [concrete] @@ -514,6 +525,7 @@ fn Test() -> i32 { // CHECK:STDOUT: } { // 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: %.loc22: form = init_form %i32.loc22, call_param0 [concrete = constants.%.941] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } @@ -538,6 +550,7 @@ fn Test() -> i32 { // CHECK:STDOUT: %return.param_patt: @Inner.F.%pattern_type.loc6_24 (%pattern_type.51d) = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref: type = name_ref T, @Outer.%T.loc4_13.2 [symbolic = %T (constants.%T)] +// CHECK:STDOUT: %.loc6_27.2: form = init_form %T.ref, call_param1 [symbolic = %.loc6_27.1 (constants.%.e5f)] // CHECK:STDOUT: %self.param: @Inner.F.%Self.binding.as_type (%Self.binding.as_type.534) = value_param call_param0 // CHECK:STDOUT: %.loc6_16.1: type = splice_block %.loc6_16.3 [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type.534)] { // CHECK:STDOUT: %.loc6_16.2: @Inner.F.%Inner.type (%Inner.type.6ef) = specific_constant @Inner.%Self.loc5_19.1, @Inner(constants.%T) [symbolic = %Self (constants.%Self.d55)] @@ -580,6 +593,7 @@ fn Test() -> i32 { // CHECK:STDOUT: %return.param_patt: @C.as.Inner.impl.F.%pattern_type.loc11_23 (%pattern_type.51d) = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref: type = name_ref T, @Outer.%T.loc4_13.2 [symbolic = %T (constants.%T)] +// CHECK:STDOUT: %.loc11_26.2: form = init_form %T.ref, call_param1 [symbolic = %.loc11_26.1 (constants.%.e5f)] // CHECK:STDOUT: %self.param: @C.as.Inner.impl.F.%C (%C.131) = value_param call_param0 // CHECK:STDOUT: %.loc11_18.1: type = splice_block %C.ref [symbolic = %C (constants.%C.131)] { // CHECK:STDOUT: %.loc11_18.2: type = specific_constant @Outer.%C.decl, @Outer(constants.%T) [symbolic = %C (constants.%C.131)] @@ -610,6 +624,7 @@ fn Test() -> i32 { // CHECK:STDOUT: } { // 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: %.loc18: form = init_form %i32, call_param1 [concrete = constants.%.4d5] // CHECK:STDOUT: %self.param: %D = value_param call_param0 // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [concrete = constants.%D] // CHECK:STDOUT: %self: %D = value_binding self, %self.param @@ -691,6 +706,7 @@ fn Test() -> i32 { // CHECK:STDOUT: %Self: @Inner.F.%Inner.type (%Inner.type.6ef) = symbolic_binding Self, 1 [symbolic = %Self (constants.%Self.d55)] // CHECK:STDOUT: %Self.binding.as_type: type = symbolic_binding_type Self, 1, %Self [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type.534)] // CHECK:STDOUT: %pattern_type.loc6_10: type = pattern_type %Self.binding.as_type [symbolic = %pattern_type.loc6_10 (constants.%pattern_type.72a)] +// CHECK:STDOUT: %.loc6_27.1: form = init_form %T, call_param1 [symbolic = %.loc6_27.1 (constants.%.e5f)] // CHECK:STDOUT: %pattern_type.loc6_24: type = pattern_type %T [symbolic = %pattern_type.loc6_24 (constants.%pattern_type.51d)] // CHECK:STDOUT: // CHECK:STDOUT: fn(%self.param: @Inner.F.%Self.binding.as_type (%Self.binding.as_type.534)) -> %return.param: @Inner.F.%T (%T); @@ -700,6 +716,7 @@ fn Test() -> i32 { // CHECK:STDOUT: %T: type = symbolic_binding T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %C: type = class_type @C, @C(%T) [symbolic = %C (constants.%C.131)] // CHECK:STDOUT: %pattern_type.loc11_12: type = pattern_type %C [symbolic = %pattern_type.loc11_12 (constants.%pattern_type.fe7)] +// CHECK:STDOUT: %.loc11_26.1: form = init_form %T, call_param1 [symbolic = %.loc11_26.1 (constants.%.e5f)] // CHECK:STDOUT: %pattern_type.loc11_23: type = pattern_type %T [symbolic = %pattern_type.loc11_23 (constants.%pattern_type.51d)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -803,6 +820,7 @@ fn Test() -> i32 { // CHECK:STDOUT: %Self => constants.%Self.d55 // CHECK:STDOUT: %Self.binding.as_type => constants.%Self.binding.as_type.534 // CHECK:STDOUT: %pattern_type.loc6_10 => constants.%pattern_type.72a +// CHECK:STDOUT: %.loc6_27.1 => constants.%.e5f // CHECK:STDOUT: %pattern_type.loc6_24 => constants.%pattern_type.51d // CHECK:STDOUT: } // CHECK:STDOUT: @@ -826,6 +844,7 @@ fn Test() -> i32 { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %C => constants.%C.131 // CHECK:STDOUT: %pattern_type.loc11_12 => constants.%pattern_type.fe7 +// CHECK:STDOUT: %.loc11_26.1 => constants.%.e5f // CHECK:STDOUT: %pattern_type.loc11_23 => constants.%pattern_type.51d // CHECK:STDOUT: } // CHECK:STDOUT: @@ -835,6 +854,7 @@ fn Test() -> i32 { // CHECK:STDOUT: %Self => constants.%Inner.facet.921 // CHECK:STDOUT: %Self.binding.as_type => constants.%C.131 // CHECK:STDOUT: %pattern_type.loc6_10 => constants.%pattern_type.fe7 +// CHECK:STDOUT: %.loc6_27.1 => constants.%.e5f // CHECK:STDOUT: %pattern_type.loc6_24 => constants.%pattern_type.51d // CHECK:STDOUT: } // CHECK:STDOUT: @@ -844,6 +864,7 @@ fn Test() -> i32 { // CHECK:STDOUT: %Self => constants.%Inner.facet.f78 // CHECK:STDOUT: %Self.binding.as_type => constants.%C.131 // CHECK:STDOUT: %pattern_type.loc6_10 => constants.%pattern_type.fe7 +// CHECK:STDOUT: %.loc6_27.1 => constants.%.e5f // CHECK:STDOUT: %pattern_type.loc6_24 => constants.%pattern_type.51d // CHECK:STDOUT: } // CHECK:STDOUT: @@ -876,6 +897,7 @@ fn Test() -> i32 { // CHECK:STDOUT: %Self => constants.%Inner.facet.dc9 // CHECK:STDOUT: %Self.binding.as_type => constants.%D // CHECK:STDOUT: %pattern_type.loc6_10 => constants.%pattern_type.9c8 +// CHECK:STDOUT: %.loc6_27.1 => constants.%.4d5 // CHECK:STDOUT: %pattern_type.loc6_24 => constants.%pattern_type.7ce // CHECK:STDOUT: } // CHECK:STDOUT: @@ -895,6 +917,7 @@ fn Test() -> i32 { // CHECK:STDOUT: %T => constants.%i32 // CHECK:STDOUT: %C => constants.%C.d3f // CHECK:STDOUT: %pattern_type.loc11_12 => constants.%pattern_type.129 +// CHECK:STDOUT: %.loc11_26.1 => constants.%.4d5 // CHECK:STDOUT: %pattern_type.loc11_23 => constants.%pattern_type.7ce // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -919,6 +942,7 @@ fn Test() -> i32 { // CHECK:STDOUT: %Self => constants.%Inner.facet.ac9 // CHECK:STDOUT: %Self.binding.as_type => constants.%C.d3f // CHECK:STDOUT: %pattern_type.loc6_10 => constants.%pattern_type.129 +// CHECK:STDOUT: %.loc6_27.1 => constants.%.4d5 // CHECK:STDOUT: %pattern_type.loc6_24 => constants.%pattern_type.7ce // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/generic/method_deduce.carbon b/toolchain/check/testdata/class/generic/method_deduce.carbon index bb1594c31a48..85dcc6f2eed6 100644 --- a/toolchain/check/testdata/class/generic/method_deduce.carbon +++ b/toolchain/check/testdata/class/generic/method_deduce.carbon @@ -47,10 +47,12 @@ fn CallGenericMethodWithNonDeducedParam(c: Class(A)) -> (A, B) { // CHECK:STDOUT: %tuple.type.24b: type = tuple_type (type, type) [concrete] // CHECK:STDOUT: %tuple.4b9: %tuple.type.24b = tuple_value (%T, %U) [symbolic] // CHECK:STDOUT: %tuple.type.a5e: type = tuple_type (%T, %U) [symbolic] +// CHECK:STDOUT: %.5b7: form = init_form %tuple.type.a5e, call_param0 [symbolic] // CHECK:STDOUT: %pattern_type.eee: type = pattern_type %tuple.type.a5e [symbolic] // CHECK:STDOUT: %Class.Get.type.ab7: type = fn_type @Class.Get, @Class(%T) [symbolic] // CHECK:STDOUT: %Class.Get.ecd: %Class.Get.type.ab7 = struct_value () [symbolic] // CHECK:STDOUT: %pattern_type.51d: type = pattern_type %T [symbolic] +// CHECK:STDOUT: %.541: form = init_form %tuple.type.a5e, call_param1 [symbolic] // CHECK:STDOUT: %Class.GetNoDeduce.type.cf2: type = fn_type @Class.GetNoDeduce, @Class(%T) [symbolic] // CHECK:STDOUT: %Class.GetNoDeduce.1a5: %Class.GetNoDeduce.type.cf2 = struct_value () [symbolic] // CHECK:STDOUT: %require_complete.220: = require_complete_type %tuple.type.a5e [symbolic] @@ -61,6 +63,7 @@ fn CallGenericMethodWithNonDeducedParam(c: Class(A)) -> (A, B) { // CHECK:STDOUT: %pattern_type.36c: type = pattern_type %Class.802 [concrete] // CHECK:STDOUT: %tuple.5bc: %tuple.type.24b = tuple_value (%A, %B) [concrete] // CHECK:STDOUT: %tuple.type.e87: type = tuple_type (%A, %B) [concrete] +// CHECK:STDOUT: %.c61: form = init_form %tuple.type.e87, call_param1 [concrete] // CHECK:STDOUT: %pattern_type.b74: type = pattern_type %tuple.type.e87 [concrete] // CHECK:STDOUT: %CallGenericMethod.type: type = fn_type @CallGenericMethod [concrete] // CHECK:STDOUT: %CallGenericMethod: %CallGenericMethod.type = struct_value () [concrete] @@ -68,6 +71,7 @@ fn CallGenericMethodWithNonDeducedParam(c: Class(A)) -> (A, B) { // CHECK:STDOUT: %Class.Get.5f3: %Class.Get.type.a01 = struct_value () [concrete] // CHECK:STDOUT: %Class.GetNoDeduce.type.902: type = fn_type @Class.GetNoDeduce, @Class(%A) [concrete] // CHECK:STDOUT: %Class.GetNoDeduce.472: %Class.GetNoDeduce.type.902 = struct_value () [concrete] +// CHECK:STDOUT: %.a4d: form = init_form %tuple.type.e87, call_param0 [concrete] // CHECK:STDOUT: %Class.Get.specific_fn.54d: = specific_function %Class.Get.5f3, @Class.Get(%A, %B) [concrete] // CHECK:STDOUT: %CallGenericMethodWithNonDeducedParam.type: type = fn_type @CallGenericMethodWithNonDeducedParam [concrete] // CHECK:STDOUT: %CallGenericMethodWithNonDeducedParam: %CallGenericMethodWithNonDeducedParam.type = struct_value () [concrete] @@ -118,6 +122,7 @@ fn CallGenericMethodWithNonDeducedParam(c: Class(A)) -> (A, B) { // CHECK:STDOUT: %B.ref.loc23: type = name_ref B, file.%B.decl [concrete = constants.%B] // CHECK:STDOUT: %.loc23_43.1: %tuple.type.24b = tuple_literal (%A.ref.loc23_39, %B.ref.loc23) [concrete = constants.%tuple.5bc] // CHECK:STDOUT: %.loc23_43.2: type = converted %.loc23_43.1, constants.%tuple.type.e87 [concrete = constants.%tuple.type.e87] +// CHECK:STDOUT: %.loc23_43.3: form = init_form %.loc23_43.2, call_param1 [concrete = constants.%.c61] // CHECK:STDOUT: %c.param: %Class.802 = value_param call_param0 // CHECK:STDOUT: %.loc23_32: type = splice_block %Class [concrete = constants.%Class.802] { // CHECK:STDOUT: %Class.ref: %Class.type = name_ref Class, file.%Class.decl [concrete = constants.%Class.generic] @@ -138,6 +143,7 @@ fn CallGenericMethodWithNonDeducedParam(c: Class(A)) -> (A, B) { // CHECK:STDOUT: %B.ref.loc27: type = name_ref B, file.%B.decl [concrete = constants.%B] // CHECK:STDOUT: %.loc27_62.1: %tuple.type.24b = tuple_literal (%A.ref.loc27_58, %B.ref.loc27) [concrete = constants.%tuple.5bc] // CHECK:STDOUT: %.loc27_62.2: type = converted %.loc27_62.1, constants.%tuple.type.e87 [concrete = constants.%tuple.type.e87] +// CHECK:STDOUT: %.loc27_62.3: form = init_form %.loc27_62.2, call_param1 [concrete = constants.%.c61] // CHECK:STDOUT: %c.param: %Class.802 = value_param call_param0 // CHECK:STDOUT: %.loc27_51: type = splice_block %Class [concrete = constants.%Class.802] { // CHECK:STDOUT: %Class.ref: %Class.type = name_ref Class, file.%Class.decl [concrete = constants.%Class.generic] @@ -183,8 +189,9 @@ fn CallGenericMethodWithNonDeducedParam(c: Class(A)) -> (A, B) { // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref: type = name_ref T, @Class.%T.loc18_13.2 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %U.ref.loc19_27: type = name_ref U, %U.loc19_10.2 [symbolic = %U.loc19_10.1 (constants.%U)] -// CHECK:STDOUT: %.loc19_28.1: %tuple.type.24b = tuple_literal (%T.ref, %U.ref.loc19_27) [symbolic = %tuple (constants.%tuple.4b9)] -// CHECK:STDOUT: %.loc19_28.2: type = converted %.loc19_28.1, constants.%tuple.type.a5e [symbolic = %tuple.type (constants.%tuple.type.a5e)] +// CHECK:STDOUT: %.loc19_28.2: %tuple.type.24b = tuple_literal (%T.ref, %U.ref.loc19_27) [symbolic = %tuple (constants.%tuple.4b9)] +// CHECK:STDOUT: %.loc19_28.3: type = converted %.loc19_28.2, constants.%tuple.type.a5e [symbolic = %tuple.type (constants.%tuple.type.a5e)] +// CHECK:STDOUT: %.loc19_28.4: form = init_form %.loc19_28.3, call_param0 [symbolic = %.loc19_28.1 (constants.%.5b7)] // CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] // CHECK:STDOUT: %U.loc19_10.2: type = symbolic_binding U, 1 [symbolic = %U.loc19_10.1 (constants.%U)] // CHECK:STDOUT: %return.param: ref @Class.Get.%tuple.type (%tuple.type.a5e) = out_param call_param0 @@ -199,8 +206,9 @@ fn CallGenericMethodWithNonDeducedParam(c: Class(A)) -> (A, B) { // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc20_38: type = name_ref T, @Class.%T.loc18_13.2 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %U.ref.loc20_41: type = name_ref U, %U.loc20_24.2 [symbolic = %U.loc20_24.1 (constants.%U)] -// CHECK:STDOUT: %.loc20_42.1: %tuple.type.24b = tuple_literal (%T.ref.loc20_38, %U.ref.loc20_41) [symbolic = %tuple (constants.%tuple.4b9)] -// CHECK:STDOUT: %.loc20_42.2: type = converted %.loc20_42.1, constants.%tuple.type.a5e [symbolic = %tuple.type (constants.%tuple.type.a5e)] +// CHECK:STDOUT: %.loc20_42.2: %tuple.type.24b = tuple_literal (%T.ref.loc20_38, %U.ref.loc20_41) [symbolic = %tuple (constants.%tuple.4b9)] +// CHECK:STDOUT: %.loc20_42.3: type = converted %.loc20_42.2, constants.%tuple.type.a5e [symbolic = %tuple.type (constants.%tuple.type.a5e)] +// CHECK:STDOUT: %.loc20_42.4: form = init_form %.loc20_42.3, call_param1 [symbolic = %.loc20_42.1 (constants.%.541)] // CHECK:STDOUT: %x.param: @Class.GetNoDeduce.%T (%T) = value_param call_param0 // CHECK:STDOUT: %T.ref.loc20_21: type = name_ref T, @Class.%T.loc18_13.2 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %x: @Class.GetNoDeduce.%T (%T) = value_binding x, %x.param @@ -225,6 +233,7 @@ fn CallGenericMethodWithNonDeducedParam(c: Class(A)) -> (A, B) { // CHECK:STDOUT: %T: type = symbolic_binding T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %tuple: %tuple.type.24b = tuple_value (%T, %U.loc19_10.1) [symbolic = %tuple (constants.%tuple.4b9)] // CHECK:STDOUT: %tuple.type: type = tuple_type (%T, %U.loc19_10.1) [symbolic = %tuple.type (constants.%tuple.type.a5e)] +// CHECK:STDOUT: %.loc19_28.1: form = init_form %tuple.type, call_param0 [symbolic = %.loc19_28.1 (constants.%.5b7)] // CHECK:STDOUT: %pattern_type: type = pattern_type %tuple.type [symbolic = %pattern_type (constants.%pattern_type.eee)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -251,14 +260,15 @@ fn CallGenericMethodWithNonDeducedParam(c: Class(A)) -> (A, B) { // CHECK:STDOUT: %U.loc20_24.1: type = symbolic_binding U, 1 [symbolic = %U.loc20_24.1 (constants.%U)] // CHECK:STDOUT: %tuple: %tuple.type.24b = tuple_value (%T, %U.loc20_24.1) [symbolic = %tuple (constants.%tuple.4b9)] // CHECK:STDOUT: %tuple.type: type = tuple_type (%T, %U.loc20_24.1) [symbolic = %tuple.type (constants.%tuple.type.a5e)] +// CHECK:STDOUT: %.loc20_42.1: form = init_form %tuple.type, call_param1 [symbolic = %.loc20_42.1 (constants.%.541)] // CHECK:STDOUT: %pattern_type.loc20_34: type = pattern_type %tuple.type [symbolic = %pattern_type.loc20_34 (constants.%pattern_type.eee)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete.loc20_19: = require_complete_type %T [symbolic = %require_complete.loc20_19 (constants.%require_complete.944)] +// CHECK:STDOUT: %require_complete.loc20_42: = require_complete_type %tuple.type [symbolic = %require_complete.loc20_42 (constants.%require_complete.220)] // CHECK:STDOUT: %Class.GetNoDeduce.type: type = fn_type @Class.GetNoDeduce, @Class(%T) [symbolic = %Class.GetNoDeduce.type (constants.%Class.GetNoDeduce.type.cf2)] // CHECK:STDOUT: %Class.GetNoDeduce: @Class.GetNoDeduce.%Class.GetNoDeduce.type (%Class.GetNoDeduce.type.cf2) = struct_value () [symbolic = %Class.GetNoDeduce (constants.%Class.GetNoDeduce.1a5)] // CHECK:STDOUT: %Class.GetNoDeduce.specific_fn.loc20_53.2: = specific_function %Class.GetNoDeduce, @Class.GetNoDeduce(%T, %U.loc20_24.1) [symbolic = %Class.GetNoDeduce.specific_fn.loc20_53.2 (constants.%Class.GetNoDeduce.specific_fn.710)] -// CHECK:STDOUT: %require_complete.loc20_70: = require_complete_type %tuple.type [symbolic = %require_complete.loc20_70 (constants.%require_complete.220)] // CHECK:STDOUT: // CHECK:STDOUT: fn(%x.param: @Class.GetNoDeduce.%T (%T)) -> %return.param: @Class.GetNoDeduce.%tuple.type (%tuple.type.a5e) { // CHECK:STDOUT: !entry: @@ -322,6 +332,7 @@ fn CallGenericMethodWithNonDeducedParam(c: Class(A)) -> (A, B) { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %tuple => constants.%tuple.4b9 // CHECK:STDOUT: %tuple.type => constants.%tuple.type.a5e +// CHECK:STDOUT: %.loc19_28.1 => constants.%.5b7 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.eee // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -337,14 +348,15 @@ fn CallGenericMethodWithNonDeducedParam(c: Class(A)) -> (A, B) { // CHECK:STDOUT: %U.loc20_24.1 => constants.%U // CHECK:STDOUT: %tuple => constants.%tuple.4b9 // CHECK:STDOUT: %tuple.type => constants.%tuple.type.a5e +// CHECK:STDOUT: %.loc20_42.1 => constants.%.541 // CHECK:STDOUT: %pattern_type.loc20_34 => constants.%pattern_type.eee // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete.loc20_19 => constants.%require_complete.944 +// CHECK:STDOUT: %require_complete.loc20_42 => constants.%require_complete.220 // CHECK:STDOUT: %Class.GetNoDeduce.type => constants.%Class.GetNoDeduce.type.cf2 // CHECK:STDOUT: %Class.GetNoDeduce => constants.%Class.GetNoDeduce.1a5 // CHECK:STDOUT: %Class.GetNoDeduce.specific_fn.loc20_53.2 => constants.%Class.GetNoDeduce.specific_fn.710 -// CHECK:STDOUT: %require_complete.loc20_70 => constants.%require_complete.220 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Class(constants.%A) { @@ -362,6 +374,7 @@ fn CallGenericMethodWithNonDeducedParam(c: Class(A)) -> (A, B) { // CHECK:STDOUT: %T => constants.%A // CHECK:STDOUT: %tuple => constants.%tuple.5bc // CHECK:STDOUT: %tuple.type => constants.%tuple.type.e87 +// CHECK:STDOUT: %.loc19_28.1 => constants.%.a4d // CHECK:STDOUT: %pattern_type => constants.%pattern_type.b74 // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -377,13 +390,14 @@ fn CallGenericMethodWithNonDeducedParam(c: Class(A)) -> (A, B) { // CHECK:STDOUT: %U.loc20_24.1 => constants.%B // CHECK:STDOUT: %tuple => constants.%tuple.5bc // CHECK:STDOUT: %tuple.type => constants.%tuple.type.e87 +// CHECK:STDOUT: %.loc20_42.1 => constants.%.c61 // CHECK:STDOUT: %pattern_type.loc20_34 => constants.%pattern_type.b74 // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete.loc20_19 => constants.%complete_type.357 +// CHECK:STDOUT: %require_complete.loc20_42 => constants.%complete_type.f71 // CHECK:STDOUT: %Class.GetNoDeduce.type => constants.%Class.GetNoDeduce.type.902 // CHECK:STDOUT: %Class.GetNoDeduce => constants.%Class.GetNoDeduce.472 // CHECK:STDOUT: %Class.GetNoDeduce.specific_fn.loc20_53.2 => constants.%Class.GetNoDeduce.specific_fn.83b -// CHECK:STDOUT: %require_complete.loc20_70 => constants.%complete_type.f71 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/generic/self.carbon b/toolchain/check/testdata/class/generic/self.carbon index bfaed6e8639c..b35a08c67316 100644 --- a/toolchain/check/testdata/class/generic/self.carbon +++ b/toolchain/check/testdata/class/generic/self.carbon @@ -34,6 +34,7 @@ class Class(T:! type) { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %Class.generic: %Class.type = struct_value () [concrete] // CHECK:STDOUT: %Class: type = class_type @Class, @Class(%T) [symbolic] +// CHECK:STDOUT: %.859: form = init_form %Class, call_param0 [symbolic] // CHECK:STDOUT: %pattern_type.466: type = pattern_type %Class [symbolic] // CHECK:STDOUT: %Class.MakeSelf.type: type = fn_type @Class.MakeSelf, @Class(%T) [symbolic] // CHECK:STDOUT: %Class.MakeSelf: %Class.MakeSelf.type = struct_value () [symbolic] @@ -96,8 +97,9 @@ class Class(T:! type) { // CHECK:STDOUT: %return.patt: @Class.MakeSelf.%pattern_type (%pattern_type.466) = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: @Class.MakeSelf.%pattern_type (%pattern_type.466) = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %.loc18_20: type = specific_constant constants.%Class, @Class(constants.%T) [symbolic = %Class (constants.%Class)] -// CHECK:STDOUT: %Self.ref: type = name_ref Self, %.loc18_20 [symbolic = %Class (constants.%Class)] +// CHECK:STDOUT: %.loc18_20.2: type = specific_constant constants.%Class, @Class(constants.%T) [symbolic = %Class (constants.%Class)] +// CHECK:STDOUT: %Self.ref: type = name_ref Self, %.loc18_20.2 [symbolic = %Class (constants.%Class)] +// CHECK:STDOUT: %.loc18_20.3: form = init_form %Self.ref, call_param0 [symbolic = %.loc18_20.1 (constants.%.859)] // CHECK:STDOUT: %return.param: ref @Class.MakeSelf.%Class (%Class) = out_param call_param0 // CHECK:STDOUT: %return: ref @Class.MakeSelf.%Class (%Class) = return_slot %return.param // CHECK:STDOUT: } @@ -108,6 +110,7 @@ class Class(T:! type) { // CHECK:STDOUT: %Class.ref: %Class.type = name_ref Class, file.%Class.decl [concrete = constants.%Class.generic] // CHECK:STDOUT: %T.ref: type = name_ref T, @Class.%T.loc15_13.2 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %Class.loc19_28.2: type = class_type @Class, @Class(constants.%T) [symbolic = %Class.loc19_28.1 (constants.%Class)] +// CHECK:STDOUT: %.loc19_28.2: form = init_form %Class.loc19_28.2, call_param0 [symbolic = %.loc19_28.1 (constants.%.859)] // CHECK:STDOUT: %return.param: ref @Class.MakeClass.%Class.loc19_28.1 (%Class) = out_param call_param0 // CHECK:STDOUT: %return: ref @Class.MakeClass.%Class.loc19_28.1 (%Class) = return_slot %return.param // CHECK:STDOUT: } @@ -128,6 +131,7 @@ class Class(T:! type) { // CHECK:STDOUT: generic fn @Class.MakeSelf(@Class.%T.loc15_13.2: type) { // CHECK:STDOUT: %T: type = symbolic_binding T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %Class: type = class_type @Class, @Class(%T) [symbolic = %Class (constants.%Class)] +// CHECK:STDOUT: %.loc18_20.1: form = init_form %Class, call_param0 [symbolic = %.loc18_20.1 (constants.%.859)] // CHECK:STDOUT: %pattern_type: type = pattern_type %Class [symbolic = %pattern_type (constants.%pattern_type.466)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -146,6 +150,7 @@ class Class(T:! type) { // CHECK:STDOUT: generic fn @Class.MakeClass(@Class.%T.loc15_13.2: type) { // CHECK:STDOUT: %T: type = symbolic_binding T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %Class.loc19_28.1: type = class_type @Class, @Class(%T) [symbolic = %Class.loc19_28.1 (constants.%Class)] +// CHECK:STDOUT: %.loc19_28.1: form = init_form %Class.loc19_28.1, call_param0 [symbolic = %.loc19_28.1 (constants.%.859)] // CHECK:STDOUT: %pattern_type: type = pattern_type %Class.loc19_28.1 [symbolic = %pattern_type (constants.%pattern_type.466)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -236,6 +241,7 @@ class Class(T:! type) { // CHECK:STDOUT: specific @Class.MakeSelf(constants.%T) { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %Class => constants.%Class +// CHECK:STDOUT: %.loc18_20.1 => constants.%.859 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.466 // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -246,6 +252,7 @@ class Class(T:! type) { // CHECK:STDOUT: specific @Class.MakeClass(constants.%T) { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %Class.loc19_28.1 => constants.%Class +// CHECK:STDOUT: %.loc19_28.1 => constants.%.859 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.466 // CHECK:STDOUT: // CHECK:STDOUT: !definition: diff --git a/toolchain/check/testdata/class/inheritance_access.carbon b/toolchain/check/testdata/class/inheritance_access.carbon index 2b9c5b33e371..4ba7fc7fa55b 100644 --- a/toolchain/check/testdata/class/inheritance_access.carbon +++ b/toolchain/check/testdata/class/inheritance_access.carbon @@ -301,6 +301,7 @@ class B { // CHECK:STDOUT: %tuple.type.24b: type = tuple_type (type, type) [concrete] // CHECK:STDOUT: %tuple.95a: %tuple.type.24b = tuple_value (%i32, %i32) [concrete] // CHECK:STDOUT: %tuple.type.d07: type = tuple_type (%i32, %i32) [concrete] +// CHECK:STDOUT: %.204: form = init_form %tuple.type.d07, call_param1 [concrete] // CHECK:STDOUT: %pattern_type.511: type = pattern_type %tuple.type.d07 [concrete] // CHECK:STDOUT: %Circle.GetPosition.type: type = fn_type @Circle.GetPosition [concrete] // CHECK:STDOUT: %Circle.GetPosition: %Circle.GetPosition.type = struct_value () [concrete] @@ -373,6 +374,7 @@ class B { // CHECK:STDOUT: %i32.loc12_41: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %.loc12_44.1: %tuple.type.24b = tuple_literal (%i32.loc12_36, %i32.loc12_41) [concrete = constants.%tuple.95a] // CHECK:STDOUT: %.loc12_44.2: type = converted %.loc12_44.1, constants.%tuple.type.d07 [concrete = constants.%tuple.type.d07] +// CHECK:STDOUT: %.loc12_44.3: form = init_form %.loc12_44.2, call_param1 [concrete = constants.%.204] // CHECK:STDOUT: %self.param: %Circle = value_param call_param0 // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%Circle [concrete = constants.%Circle] // CHECK:STDOUT: %self: %Circle = value_binding self, %self.param @@ -441,6 +443,7 @@ class B { // CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] +// CHECK:STDOUT: %.941: form = init_form %i32, call_param0 [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %B.F.type: type = fn_type @B.F [concrete] // CHECK:STDOUT: %B.F: %B.F.type = struct_value () [concrete] @@ -450,6 +453,7 @@ class B { // CHECK:STDOUT: %C.elem: type = unbound_element_type %C, %B [concrete] // CHECK:STDOUT: %pattern_type.7c7: type = pattern_type %C [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %.3e7: form = init_form %empty_tuple.type, call_param1 [concrete] // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %C.G.type: type = fn_type @C.G [concrete] // CHECK:STDOUT: %C.G: %C.G.type = struct_value () [concrete] @@ -498,6 +502,7 @@ class B { // CHECK:STDOUT: } { // 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: %.loc10: form = init_form %i32, call_param0 [concrete = constants.%.941] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } @@ -523,6 +528,7 @@ class B { // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc15_26.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc15_26.2: type = converted %.loc15_26.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %.loc15_26.3: form = init_form %.loc15_26.2, call_param1 [concrete = constants.%.3e7] // CHECK:STDOUT: %self.param: %C = value_param call_param0 // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C [concrete = constants.%C] // CHECK:STDOUT: %self: %C = value_binding self, %self.param @@ -580,6 +586,7 @@ class B { // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.0b5, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] // CHECK:STDOUT: %bound_method: = bound_method %int_5.64b, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_5.0f6: %i32 = int_value 5 [concrete] +// CHECK:STDOUT: %.941: form = init_form %i32, call_param0 [concrete] // CHECK:STDOUT: %A.SomeProtectedFunction.type: type = fn_type @A.SomeProtectedFunction [concrete] // CHECK:STDOUT: %A.SomeProtectedFunction: %A.SomeProtectedFunction.type = struct_value () [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] @@ -655,6 +662,7 @@ class B { // CHECK:STDOUT: } { // 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: %.loc6: form = init_form %i32, call_param0 [concrete = constants.%.941] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } @@ -677,6 +685,7 @@ class B { // CHECK:STDOUT: } { // 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: %.loc14: form = init_form %i32, call_param0 [concrete = constants.%.941] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } @@ -686,6 +695,7 @@ class B { // CHECK:STDOUT: } { // 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: %.loc18: form = init_form %i32, call_param0 [concrete = constants.%.941] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } @@ -747,6 +757,7 @@ class B { // CHECK:STDOUT: %Square: type = class_type @Square [concrete] // CHECK:STDOUT: %Square.elem: type = unbound_element_type %Square, %Shape [concrete] // CHECK:STDOUT: %pattern_type.1d2: type = pattern_type %Square [concrete] +// CHECK:STDOUT: %.4d5: form = init_form %i32, call_param1 [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %Square.GetPosition.type: type = fn_type @Square.GetPosition [concrete] // CHECK:STDOUT: %Square.GetPosition: %Square.GetPosition.type = struct_value () [concrete] @@ -797,6 +808,7 @@ class B { // CHECK:STDOUT: } { // 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: %.loc11: form = init_form %i32, call_param1 [concrete = constants.%.4d5] // CHECK:STDOUT: %self.param: %Square = value_param call_param0 // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%Square [concrete = constants.%Square] // CHECK:STDOUT: %self: %Square = value_binding self, %self.param @@ -1044,6 +1056,7 @@ class B { // CHECK:STDOUT: %complete_type.0d1: = complete_type_witness %struct_type.base.5af [concrete] // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %C.elem: type = unbound_element_type %C, %B [concrete] +// CHECK:STDOUT: %.941: form = init_form %i32, call_param0 [concrete] // CHECK:STDOUT: %C.G1.type: type = fn_type @C.G1 [concrete] // CHECK:STDOUT: %C.G1: %C.G1.type = struct_value () [concrete] // CHECK:STDOUT: %C.G2.type: type = fn_type @C.G2 [concrete] @@ -1134,6 +1147,7 @@ class B { // CHECK:STDOUT: } { // 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: %.loc25: form = init_form %i32, call_param0 [concrete = constants.%.941] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } @@ -1280,6 +1294,7 @@ class B { // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.e8c = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.6bc) [concrete] // CHECK:STDOUT: %.863: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: = bound_method %int_5.64b, %Core.IntLiteral.as.ImplicitAs.impl.Convert.0b5 [concrete] +// CHECK:STDOUT: %.4d5: form = init_form %i32, call_param1 [concrete] // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.0b5, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] // CHECK:STDOUT: %bound_method: = bound_method %int_5.64b, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_5.0f6: %i32 = int_value 5 [concrete] @@ -1288,6 +1303,7 @@ class B { // CHECK:STDOUT: %Internal: type = class_type @Internal [concrete] // CHECK:STDOUT: %B: type = class_type @B [concrete] // CHECK:STDOUT: %B.elem: type = unbound_element_type %B, %Internal [concrete] +// CHECK:STDOUT: %.941: form = init_form %i32, call_param0 [concrete] // CHECK:STDOUT: %B.G.type: type = fn_type @B.G [concrete] // CHECK:STDOUT: %B.G: %B.G.type = struct_value () [concrete] // CHECK:STDOUT: %pattern_type.1f4: type = pattern_type %B [concrete] @@ -1399,6 +1415,7 @@ class B { // CHECK:STDOUT: } { // 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: %.loc16: form = init_form %i32, call_param0 [concrete = constants.%.941] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } @@ -1410,6 +1427,7 @@ class B { // CHECK:STDOUT: } { // 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: %.loc36: form = init_form %i32, call_param1 [concrete = constants.%.4d5] // CHECK:STDOUT: %self.param: %B = value_param call_param0 // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%B [concrete = constants.%B] // CHECK:STDOUT: %self: %B = value_binding self, %self.param diff --git a/toolchain/check/testdata/class/init.carbon b/toolchain/check/testdata/class/init.carbon index d7a24b26771e..163ab7cc5af0 100644 --- a/toolchain/check/testdata/class/init.carbon +++ b/toolchain/check/testdata/class/init.carbon @@ -41,6 +41,7 @@ fn MakeReorder(n: i32, next: Class*) -> Class { // CHECK:STDOUT: %complete_type.bf0: = complete_type_witness %struct_type.n.next [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %pattern_type.018: type = pattern_type %ptr.8e5 [concrete] +// CHECK:STDOUT: %.a8b: form = init_form %Class, call_param2 [concrete] // CHECK:STDOUT: %pattern_type.904: type = pattern_type %Class [concrete] // CHECK:STDOUT: %Make.type: type = fn_type @Make [concrete] // CHECK:STDOUT: %Make: %Make.type = struct_value () [concrete] @@ -101,6 +102,7 @@ fn MakeReorder(n: i32, next: Class*) -> Class { // CHECK:STDOUT: %return.param_patt: %pattern_type.904 = out_param_pattern %return.patt, call_param2 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %Class.ref.loc20_34: type = name_ref Class, file.%Class.decl [concrete = constants.%Class] +// CHECK:STDOUT: %.loc20_34: form = init_form %Class.ref.loc20_34, call_param2 [concrete = constants.%.a8b] // CHECK:STDOUT: %n.param: %i32 = value_param call_param0 // CHECK:STDOUT: %.loc20_12: type = splice_block %i32 [concrete = constants.%i32] { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] @@ -125,6 +127,7 @@ fn MakeReorder(n: i32, next: Class*) -> Class { // CHECK:STDOUT: %return.param_patt: %pattern_type.904 = out_param_pattern %return.patt, call_param2 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %Class.ref.loc24_41: type = name_ref Class, file.%Class.decl [concrete = constants.%Class] +// CHECK:STDOUT: %.loc24_41: form = init_form %Class.ref.loc24_41, call_param2 [concrete = constants.%.a8b] // CHECK:STDOUT: %n.param: %i32 = value_param call_param0 // CHECK:STDOUT: %.loc24_19: type = splice_block %i32 [concrete = constants.%i32] { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] diff --git a/toolchain/check/testdata/class/init_as.carbon b/toolchain/check/testdata/class/init_as.carbon index 359b1e041e67..f24b68e8da1e 100644 --- a/toolchain/check/testdata/class/init_as.carbon +++ b/toolchain/check/testdata/class/init_as.carbon @@ -34,6 +34,7 @@ fn F() -> i32 { // CHECK:STDOUT: %Class.elem: type = unbound_element_type %Class, %i32 [concrete] // CHECK:STDOUT: %struct_type.a.b.501: type = struct_type {.a: %i32, .b: %i32} [concrete] // CHECK:STDOUT: %complete_type.705: = complete_type_witness %struct_type.a.b.501 [concrete] +// CHECK:STDOUT: %.941: form = init_form %i32, call_param0 [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] @@ -109,6 +110,7 @@ fn F() -> i32 { // CHECK:STDOUT: } { // 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: %.loc20: form = init_form %i32, call_param0 [concrete = constants.%.941] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/class/init_nested.carbon b/toolchain/check/testdata/class/init_nested.carbon index 2b3a766a95e2..406ee5ba1781 100644 --- a/toolchain/check/testdata/class/init_nested.carbon +++ b/toolchain/check/testdata/class/init_nested.carbon @@ -39,6 +39,7 @@ fn MakeOuter() -> Outer { // CHECK:STDOUT: %Inner.elem: type = unbound_element_type %Inner, %i32 [concrete] // CHECK:STDOUT: %struct_type.a.b: type = struct_type {.a: %i32, .b: %i32} [concrete] // CHECK:STDOUT: %complete_type.705: = complete_type_witness %struct_type.a.b [concrete] +// CHECK:STDOUT: %.74f: form = init_form %Inner, call_param0 [concrete] // CHECK:STDOUT: %pattern_type.84b: type = pattern_type %Inner [concrete] // CHECK:STDOUT: %MakeInner.type: type = fn_type @MakeInner [concrete] // CHECK:STDOUT: %MakeInner: %MakeInner.type = struct_value () [concrete] @@ -46,6 +47,7 @@ fn MakeOuter() -> Outer { // CHECK:STDOUT: %Outer.elem: type = unbound_element_type %Outer, %Inner [concrete] // CHECK:STDOUT: %struct_type.c.d.8f4: type = struct_type {.c: %Inner, .d: %Inner} [concrete] // CHECK:STDOUT: %complete_type.3ed: = complete_type_witness %struct_type.c.d.8f4 [concrete] +// CHECK:STDOUT: %.416: form = init_form %Outer, call_param0 [concrete] // CHECK:STDOUT: %pattern_type.9ae: type = pattern_type %Outer [concrete] // CHECK:STDOUT: %MakeOuter.type: type = fn_type @MakeOuter [concrete] // CHECK:STDOUT: %MakeOuter: %MakeOuter.type = struct_value () [concrete] @@ -75,6 +77,7 @@ fn MakeOuter() -> Outer { // CHECK:STDOUT: %return.param_patt: %pattern_type.84b = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %Inner.ref: type = name_ref Inner, file.%Inner.decl [concrete = constants.%Inner] +// CHECK:STDOUT: %.loc20: form = init_form %Inner.ref, call_param0 [concrete = constants.%.74f] // CHECK:STDOUT: %return.param: ref %Inner = out_param call_param0 // CHECK:STDOUT: %return: ref %Inner = return_slot %return.param // CHECK:STDOUT: } @@ -84,6 +87,7 @@ fn MakeOuter() -> Outer { // CHECK:STDOUT: %return.param_patt: %pattern_type.9ae = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %Outer.ref: type = name_ref Outer, file.%Outer.decl [concrete = constants.%Outer] +// CHECK:STDOUT: %.loc27: form = init_form %Outer.ref, call_param0 [concrete = constants.%.416] // CHECK:STDOUT: %return.param: ref %Outer = out_param call_param0 // CHECK:STDOUT: %return: ref %Outer = return_slot %return.param // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/class/local.carbon b/toolchain/check/testdata/class/local.carbon index 79a7ff80ffc4..cca2c2dccb55 100644 --- a/toolchain/check/testdata/class/local.carbon +++ b/toolchain/check/testdata/class/local.carbon @@ -37,12 +37,14 @@ class A { // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %N: Core.IntLiteral = symbolic_binding N, 0 [symbolic] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] +// CHECK:STDOUT: %.941: form = init_form %i32, call_param0 [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %A.F.type: type = fn_type @A.F [concrete] // CHECK:STDOUT: %A.F: %A.F.type = struct_value () [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %B: type = class_type @B [concrete] +// CHECK:STDOUT: %.9f6: form = init_form %B, call_param0 [concrete] // CHECK:STDOUT: %pattern_type.971: type = pattern_type %B [concrete] // CHECK:STDOUT: %B.Make.type: type = fn_type @B.Make [concrete] // CHECK:STDOUT: %B.Make: %B.Make.type = struct_value () [concrete] @@ -119,6 +121,7 @@ class A { // CHECK:STDOUT: } { // 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: %.loc16: form = init_form %i32, call_param0 [concrete = constants.%.941] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } @@ -136,6 +139,7 @@ class A { // CHECK:STDOUT: %return.param_patt: %pattern_type.971 = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %Self.ref.loc18: type = name_ref Self, constants.%B [concrete = constants.%B] +// CHECK:STDOUT: %.loc18: form = init_form %Self.ref.loc18, call_param0 [concrete = constants.%.9f6] // CHECK:STDOUT: %return.param: ref %B = out_param call_param0 // CHECK:STDOUT: %return: ref %B = return_slot %return.param // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/class/method.carbon b/toolchain/check/testdata/class/method.carbon index 1f313a0a99e6..dc5e2a2f256e 100644 --- a/toolchain/check/testdata/class/method.carbon +++ b/toolchain/check/testdata/class/method.carbon @@ -73,6 +73,7 @@ fn CallGOnInitializingExpr() -> i32 { // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %N: Core.IntLiteral = symbolic_binding N, 0 [symbolic] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] +// CHECK:STDOUT: %.4d5: form = init_form %i32, call_param1 [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %Class.F.type: type = fn_type @Class.F [concrete] // CHECK:STDOUT: %Class.F: %Class.F.type = struct_value () [concrete] @@ -95,6 +96,7 @@ fn CallGOnInitializingExpr() -> i32 { // CHECK:STDOUT: %Call: %Call.type = struct_value () [concrete] // CHECK:STDOUT: %CallAlias.type: type = fn_type @CallAlias [concrete] // CHECK:STDOUT: %CallAlias: %CallAlias.type = struct_value () [concrete] +// CHECK:STDOUT: %.941: form = init_form %i32, call_param0 [concrete] // CHECK:STDOUT: %CallOnConstBoundMethod.type: type = fn_type @CallOnConstBoundMethod [concrete] // CHECK:STDOUT: %CallOnConstBoundMethod: %CallOnConstBoundMethod.type = struct_value () [concrete] // CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] @@ -128,6 +130,7 @@ fn CallGOnInitializingExpr() -> i32 { // CHECK:STDOUT: %CallFThroughPointer: %CallFThroughPointer.type = struct_value () [concrete] // CHECK:STDOUT: %CallGThroughPointer.type: type = fn_type @CallGThroughPointer [concrete] // CHECK:STDOUT: %CallGThroughPointer: %CallGThroughPointer.type = struct_value () [concrete] +// CHECK:STDOUT: %.7f1: form = init_form %Class, call_param0 [concrete] // CHECK:STDOUT: %Make.type: type = fn_type @Make [concrete] // CHECK:STDOUT: %Make: %Make.type = struct_value () [concrete] // CHECK:STDOUT: %CallFOnInitializingExpr.type: type = fn_type @CallFOnInitializingExpr [concrete] @@ -179,6 +182,7 @@ fn CallGOnInitializingExpr() -> i32 { // CHECK:STDOUT: } { // 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: %.loc24: form = init_form %i32.loc24, call_param1 [concrete = constants.%.4d5] // CHECK:STDOUT: %self.param.loc24: %Class = value_param call_param0 // CHECK:STDOUT: %Self.ref.loc24: type = name_ref Self, constants.%Class [concrete = constants.%Class] // CHECK:STDOUT: %self.loc24: %Class = value_binding self, %self.param.loc24 @@ -193,6 +197,7 @@ fn CallGOnInitializingExpr() -> i32 { // CHECK:STDOUT: } { // 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: %.loc28: form = init_form %i32, call_param1 [concrete = constants.%.4d5] // CHECK:STDOUT: %c.param: %Class = value_param call_param0 // CHECK:STDOUT: %Class.ref: type = name_ref Class, file.%Class.decl [concrete = constants.%Class] // CHECK:STDOUT: %c: %Class = value_binding c, %c.param @@ -207,6 +212,7 @@ fn CallGOnInitializingExpr() -> i32 { // CHECK:STDOUT: } { // 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: %.loc34: form = init_form %i32, call_param1 [concrete = constants.%.4d5] // CHECK:STDOUT: %c.param: %Class = value_param call_param0 // CHECK:STDOUT: %Class.ref: type = name_ref Class, file.%Class.decl [concrete = constants.%Class] // CHECK:STDOUT: %c: %Class = value_binding c, %c.param @@ -219,6 +225,7 @@ fn CallGOnInitializingExpr() -> i32 { // CHECK:STDOUT: } { // 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: %.loc38: form = init_form %i32, call_param0 [concrete = constants.%.941] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } @@ -228,6 +235,7 @@ fn CallGOnInitializingExpr() -> i32 { // CHECK:STDOUT: } { // 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: %.loc42: form = init_form %i32, call_param0 [concrete = constants.%.941] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } @@ -239,8 +247,9 @@ fn CallGOnInitializingExpr() -> i32 { // CHECK:STDOUT: } { // 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: %.loc47_38: form = init_form %i32, call_param1 [concrete = constants.%.4d5] // CHECK:STDOUT: %p.param: %ptr.8e5 = value_param call_param0 -// CHECK:STDOUT: %.loc47: type = splice_block %ptr [concrete = constants.%ptr.8e5] { +// CHECK:STDOUT: %.loc47_32: type = splice_block %ptr [concrete = constants.%ptr.8e5] { // CHECK:STDOUT: %Class.ref: type = name_ref Class, file.%Class.decl [concrete = constants.%Class] // CHECK:STDOUT: %ptr: type = ptr_type %Class.ref [concrete = constants.%ptr.8e5] // CHECK:STDOUT: } @@ -256,8 +265,9 @@ fn CallGOnInitializingExpr() -> i32 { // CHECK:STDOUT: } { // 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: %.loc51_38: form = init_form %i32, call_param1 [concrete = constants.%.4d5] // CHECK:STDOUT: %p.param: %ptr.8e5 = value_param call_param0 -// CHECK:STDOUT: %.loc51: type = splice_block %ptr [concrete = constants.%ptr.8e5] { +// CHECK:STDOUT: %.loc51_32: type = splice_block %ptr [concrete = constants.%ptr.8e5] { // CHECK:STDOUT: %Class.ref: type = name_ref Class, file.%Class.decl [concrete = constants.%Class] // CHECK:STDOUT: %ptr: type = ptr_type %Class.ref [concrete = constants.%ptr.8e5] // CHECK:STDOUT: } @@ -270,6 +280,7 @@ fn CallGOnInitializingExpr() -> i32 { // CHECK:STDOUT: %return.param_patt: %pattern_type.904 = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %Class.ref: type = name_ref Class, file.%Class.decl [concrete = constants.%Class] +// CHECK:STDOUT: %.loc55: form = init_form %Class.ref, call_param0 [concrete = constants.%.7f1] // CHECK:STDOUT: %return.param: ref %Class = out_param call_param0 // CHECK:STDOUT: %return: ref %Class = return_slot %return.param // CHECK:STDOUT: } @@ -279,6 +290,7 @@ fn CallGOnInitializingExpr() -> i32 { // CHECK:STDOUT: } { // 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: %.loc57: form = init_form %i32, call_param0 [concrete = constants.%.941] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } @@ -288,6 +300,7 @@ fn CallGOnInitializingExpr() -> i32 { // CHECK:STDOUT: } { // 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: %.loc61: form = init_form %i32, call_param0 [concrete = constants.%.941] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } @@ -302,6 +315,7 @@ fn CallGOnInitializingExpr() -> i32 { // CHECK:STDOUT: } { // 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: %.loc16: form = init_form %i32.loc16, call_param1 [concrete = constants.%.4d5] // CHECK:STDOUT: %self.param.loc16: %Class = value_param call_param0 // CHECK:STDOUT: %Self.ref.loc16: type = name_ref Self, constants.%Class [concrete = constants.%Class] // CHECK:STDOUT: %self.loc16: %Class = value_binding self, %self.param.loc16 @@ -316,6 +330,7 @@ fn CallGOnInitializingExpr() -> i32 { // CHECK:STDOUT: } { // 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: %.loc17: form = init_form %i32, call_param1 [concrete = constants.%.4d5] // CHECK:STDOUT: %self.param: ref %Class = ref_param call_param0 // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%Class [concrete = constants.%Class] // CHECK:STDOUT: %self: ref %Class = ref_binding self, %self.param diff --git a/toolchain/check/testdata/class/nested_name.carbon b/toolchain/check/testdata/class/nested_name.carbon index 7801887b1bbc..0b52b9fb9299 100644 --- a/toolchain/check/testdata/class/nested_name.carbon +++ b/toolchain/check/testdata/class/nested_name.carbon @@ -43,6 +43,7 @@ fn G(o: Outer) { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %pattern_type.86a: type = pattern_type %Inner [concrete] +// CHECK:STDOUT: %.4d5: form = init_form %i32, call_param1 [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] @@ -96,8 +97,9 @@ fn G(o: Outer) { // CHECK:STDOUT: } { // 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: %.loc21_26: form = init_form %i32, call_param1 [concrete = constants.%.4d5] // CHECK:STDOUT: %oi.param: %Inner = value_param call_param0 -// CHECK:STDOUT: %.loc21: type = splice_block %Inner.ref [concrete = constants.%Inner] { +// CHECK:STDOUT: %.loc21_15: type = splice_block %Inner.ref [concrete = constants.%Inner] { // CHECK:STDOUT: %Outer.ref: type = name_ref Outer, file.%Outer.decl [concrete = constants.%Outer] // CHECK:STDOUT: %Inner.ref: type = name_ref Inner, @Outer.%Inner.decl [concrete = constants.%Inner] // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/class/raw_self.carbon b/toolchain/check/testdata/class/raw_self.carbon index ea8805c9a09f..f73123acf01a 100644 --- a/toolchain/check/testdata/class/raw_self.carbon +++ b/toolchain/check/testdata/class/raw_self.carbon @@ -42,6 +42,7 @@ fn Class.G[self: Self](r#self: i32) -> (i32, i32) { // CHECK:STDOUT: %tuple.type.24b: type = tuple_type (type, type) [concrete] // CHECK:STDOUT: %tuple.95a: %tuple.type.24b = tuple_value (%i32, %i32) [concrete] // CHECK:STDOUT: %tuple.type.d07: type = tuple_type (%i32, %i32) [concrete] +// CHECK:STDOUT: %.38b: form = init_form %tuple.type.d07, call_param2 [concrete] // CHECK:STDOUT: %pattern_type.511: type = pattern_type %tuple.type.d07 [concrete] // CHECK:STDOUT: %Class.G.type: type = fn_type @Class.G [concrete] // CHECK:STDOUT: %Class.G: %Class.G.type = struct_value () [concrete] @@ -110,6 +111,7 @@ fn Class.G[self: Self](r#self: i32) -> (i32, i32) { // CHECK:STDOUT: %i32.loc25_46: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %.loc25_49.1: %tuple.type.24b = tuple_literal (%i32.loc25_41, %i32.loc25_46) [concrete = constants.%tuple.95a] // CHECK:STDOUT: %.loc25_49.2: type = converted %.loc25_49.1, constants.%tuple.type.d07 [concrete = constants.%tuple.type.d07] +// CHECK:STDOUT: %.loc25_49.3: form = init_form %.loc25_49.2, call_param2 [concrete = constants.%.38b] // CHECK:STDOUT: %self.param.loc25_16: %Class = value_param call_param0 // CHECK:STDOUT: %Self.ref.loc25: type = name_ref Self, constants.%Class [concrete = constants.%Class] // CHECK:STDOUT: %self.loc25_12: %Class = value_binding self, %self.param.loc25_16 @@ -155,6 +157,7 @@ fn Class.G[self: Self](r#self: i32) -> (i32, i32) { // CHECK:STDOUT: %i32.loc17_42: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %.loc17_45.1: %tuple.type.24b = tuple_literal (%i32.loc17_37, %i32.loc17_42) [concrete = constants.%tuple.95a] // CHECK:STDOUT: %.loc17_45.2: type = converted %.loc17_45.1, constants.%tuple.type.d07 [concrete = constants.%tuple.type.d07] +// CHECK:STDOUT: %.loc17_45.3: form = init_form %.loc17_45.2, call_param2 [concrete = constants.%.38b] // CHECK:STDOUT: %self.param.loc17_12: %Class = value_param call_param0 // CHECK:STDOUT: %Self.ref.loc17: type = name_ref Self, constants.%Class [concrete = constants.%Class] // CHECK:STDOUT: %self.loc17_8: %Class = value_binding self, %self.param.loc17_12 diff --git a/toolchain/check/testdata/class/reenter_scope.carbon b/toolchain/check/testdata/class/reenter_scope.carbon index 88a1b0eae776..2a8deca4f40f 100644 --- a/toolchain/check/testdata/class/reenter_scope.carbon +++ b/toolchain/check/testdata/class/reenter_scope.carbon @@ -30,6 +30,7 @@ fn Class.F() -> i32 { // CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] +// CHECK:STDOUT: %.941: form = init_form %i32, call_param0 [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %Class.F.type: type = fn_type @Class.F [concrete] // CHECK:STDOUT: %Class.F: %Class.F.type = struct_value () [concrete] @@ -61,6 +62,7 @@ fn Class.F() -> i32 { // CHECK:STDOUT: } { // 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: %.loc20: form = init_form %i32.loc20, call_param0 [concrete = constants.%.941] // CHECK:STDOUT: %return.param.loc20: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return.loc20: ref %i32 = return_slot %return.param.loc20 // CHECK:STDOUT: } @@ -73,6 +75,7 @@ fn Class.F() -> i32 { // CHECK:STDOUT: } { // 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: %.loc16: form = init_form %i32.loc16, call_param0 [concrete = constants.%.941] // CHECK:STDOUT: %return.param.loc16: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return.loc16: ref %i32 = return_slot %return.param.loc16 // CHECK:STDOUT: } @@ -82,6 +85,7 @@ fn Class.F() -> i32 { // CHECK:STDOUT: } { // 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: %.loc17: form = init_form %i32, call_param0 [concrete = constants.%.941] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/class/reorder.carbon b/toolchain/check/testdata/class/reorder.carbon index 08797613bde7..63120f470046 100644 --- a/toolchain/check/testdata/class/reorder.carbon +++ b/toolchain/check/testdata/class/reorder.carbon @@ -30,6 +30,7 @@ class Class { // CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] +// CHECK:STDOUT: %.941: form = init_form %i32, call_param0 [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %Class.G.type: type = fn_type @Class.G [concrete] // CHECK:STDOUT: %Class.G: %Class.G.type = struct_value () [concrete] @@ -85,6 +86,7 @@ class Class { // CHECK:STDOUT: } { // 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: %.loc16: form = init_form %i32, call_param0 [concrete = constants.%.941] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } @@ -94,6 +96,7 @@ class Class { // CHECK:STDOUT: } { // 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: %.loc20: form = init_form %i32, call_param0 [concrete = constants.%.941] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/class/scope.carbon b/toolchain/check/testdata/class/scope.carbon index f02fa565ccec..d0e699a42c53 100644 --- a/toolchain/check/testdata/class/scope.carbon +++ b/toolchain/check/testdata/class/scope.carbon @@ -40,6 +40,7 @@ fn Run() { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] +// CHECK:STDOUT: %.941: form = init_form %i32, call_param0 [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %Class.F.type: type = fn_type @Class.F [concrete] // CHECK:STDOUT: %Class.F: %Class.F.type = struct_value () [concrete] @@ -107,6 +108,7 @@ fn Run() { // CHECK:STDOUT: } { // 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: %.loc25: form = init_form %i32, call_param0 [concrete = constants.%.941] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } @@ -120,6 +122,7 @@ fn Run() { // CHECK:STDOUT: } { // 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: %.loc16: form = init_form %i32, call_param0 [concrete = constants.%.941] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } @@ -129,6 +132,7 @@ fn Run() { // CHECK:STDOUT: } { // 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: %.loc20: form = init_form %i32, call_param0 [concrete = constants.%.941] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/class/self.carbon b/toolchain/check/testdata/class/self.carbon index 6ce36bcc3c28..71aadd486365 100644 --- a/toolchain/check/testdata/class/self.carbon +++ b/toolchain/check/testdata/class/self.carbon @@ -56,6 +56,7 @@ class Class { // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %N: Core.IntLiteral = symbolic_binding N, 0 [symbolic] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] +// CHECK:STDOUT: %.4d5: form = init_form %i32, call_param1 [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %Class.F.type: type = fn_type @Class.F [concrete] // CHECK:STDOUT: %Class.F: %Class.F.type = struct_value () [concrete] @@ -104,6 +105,7 @@ class Class { // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32.loc11: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc11: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] +// CHECK:STDOUT: %.loc11: form = init_form %i32.loc11, call_param1 [concrete = constants.%.4d5] // CHECK:STDOUT: %self.param.loc11: %Class = value_param call_param0 // CHECK:STDOUT: %Self.ref.loc11: type = name_ref Self, constants.%Class [concrete = constants.%Class] // CHECK:STDOUT: %self.loc11: %Class = value_binding self, %self.param.loc11 @@ -118,6 +120,7 @@ class Class { // CHECK:STDOUT: } { // 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: %.loc15: form = init_form %i32.loc15, call_param1 [concrete = constants.%.4d5] // CHECK:STDOUT: %self.param.loc15: ref %Class = ref_param call_param0 // CHECK:STDOUT: %Self.ref.loc15: type = name_ref Self, constants.%Class [concrete = constants.%Class] // CHECK:STDOUT: %self.loc15: ref %Class = ref_binding self, %self.param.loc15 @@ -135,6 +138,7 @@ class Class { // CHECK:STDOUT: } { // 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: %.loc5: form = init_form %i32.loc5, call_param1 [concrete = constants.%.4d5] // CHECK:STDOUT: %self.param.loc5: %Class = value_param call_param0 // CHECK:STDOUT: %Self.ref.loc5: type = name_ref Self, constants.%Class [concrete = constants.%Class] // CHECK:STDOUT: %self.loc5: %Class = value_binding self, %self.param.loc5 @@ -149,6 +153,7 @@ class Class { // CHECK:STDOUT: } { // 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: %.loc6: form = init_form %i32.loc6, call_param1 [concrete = constants.%.4d5] // CHECK:STDOUT: %self.param.loc6: ref %Class = ref_param call_param0 // CHECK:STDOUT: %Self.ref.loc6: type = name_ref Self, constants.%Class [concrete = constants.%Class] // CHECK:STDOUT: %self.loc6: ref %Class = ref_binding self, %self.param.loc6 @@ -231,16 +236,12 @@ class Class { // CHECK:STDOUT: %Class.F.decl: %Class.F.type = fn_decl @Class.F [concrete = constants.%Class.F] { // CHECK:STDOUT: %self.patt: %pattern_type.904 = value_binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.904 = value_param_pattern %self.patt, call_param0 [concrete] -// CHECK:STDOUT: %return.patt: = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %self.ref: %Class = name_ref self, %self // CHECK:STDOUT: %.loc12: type = converted %self.ref, [concrete = ] // CHECK:STDOUT: %self.param: %Class = value_param call_param0 // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%Class [concrete = constants.%Class] // CHECK:STDOUT: %self: %Class = value_binding self, %self.param -// CHECK:STDOUT: %return.param: ref = out_param call_param1 -// CHECK:STDOUT: %return: ref = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%empty_struct_type [concrete = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type @@ -250,5 +251,5 @@ class Class { // CHECK:STDOUT: .F = %Class.F.decl // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Class.F(%self.param: %Class) -> ; +// CHECK:STDOUT: fn @Class.F(%self.param: %Class); // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/self_conversion.carbon b/toolchain/check/testdata/class/self_conversion.carbon index 103521b75484..284310d37eb6 100644 --- a/toolchain/check/testdata/class/self_conversion.carbon +++ b/toolchain/check/testdata/class/self_conversion.carbon @@ -52,6 +52,7 @@ fn Call(p: Derived*) -> i32 { // CHECK:STDOUT: %Derived: type = class_type @Derived [concrete] // CHECK:STDOUT: %Derived.elem: type = unbound_element_type %Derived, %Base [concrete] // CHECK:STDOUT: %pattern_type.101: type = pattern_type %Base [concrete] +// CHECK:STDOUT: %.4d5: form = init_form %i32, call_param1 [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %Derived.SelfBase.type: type = fn_type @Derived.SelfBase [concrete] // CHECK:STDOUT: %Derived.SelfBase: %Derived.SelfBase.type = struct_value () [concrete] @@ -127,6 +128,7 @@ fn Call(p: Derived*) -> i32 { // CHECK:STDOUT: } { // 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: %.loc26: form = init_form %i32.loc26, call_param1 [concrete = constants.%.4d5] // CHECK:STDOUT: %self.param.loc26: %Base = value_param call_param0 // CHECK:STDOUT: %Base.ref.loc26: type = name_ref Base, file.%Base.decl [concrete = constants.%Base] // CHECK:STDOUT: %self.loc26: %Base = value_binding self, %self.param.loc26 @@ -149,8 +151,9 @@ fn Call(p: Derived*) -> i32 { // CHECK:STDOUT: } { // 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: %.loc34_25: form = init_form %i32, call_param1 [concrete = constants.%.4d5] // CHECK:STDOUT: %p.param: %ptr.f74 = value_param call_param0 -// CHECK:STDOUT: %.loc34: type = splice_block %ptr [concrete = constants.%ptr.f74] { +// CHECK:STDOUT: %.loc34_19: type = splice_block %ptr [concrete = constants.%ptr.f74] { // CHECK:STDOUT: %Derived.ref: type = name_ref Derived, file.%Derived.decl [concrete = constants.%Derived] // CHECK:STDOUT: %ptr: type = ptr_type %Derived.ref [concrete = constants.%ptr.f74] // CHECK:STDOUT: } @@ -184,6 +187,7 @@ fn Call(p: Derived*) -> i32 { // CHECK:STDOUT: } { // 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: %.loc22: form = init_form %i32.loc22, call_param1 [concrete = constants.%.4d5] // CHECK:STDOUT: %self.param.loc22: %Base = value_param call_param0 // CHECK:STDOUT: %Base.ref.loc22: type = name_ref Base, file.%Base.decl [concrete = constants.%Base] // CHECK:STDOUT: %self.loc22: %Base = value_binding self, %self.param.loc22 diff --git a/toolchain/check/testdata/class/self_type.carbon b/toolchain/check/testdata/class/self_type.carbon index 7b85ba278bc8..122176b8f004 100644 --- a/toolchain/check/testdata/class/self_type.carbon +++ b/toolchain/check/testdata/class/self_type.carbon @@ -35,9 +35,11 @@ fn Class.F[self: Self]() -> i32 { // CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] +// CHECK:STDOUT: %.4d5: form = init_form %i32, call_param1 [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %Class.F.type: type = fn_type @Class.F [concrete] // CHECK:STDOUT: %Class.F: %Class.F.type = struct_value () [concrete] +// CHECK:STDOUT: %.7f1: form = init_form %Class, call_param0 [concrete] // CHECK:STDOUT: %Class.Make.type: type = fn_type @Class.Make [concrete] // CHECK:STDOUT: %Class.Make: %Class.Make.type = struct_value () [concrete] // CHECK:STDOUT: %ptr.8e5: type = ptr_type %Class [concrete] @@ -85,6 +87,7 @@ fn Class.F[self: Self]() -> i32 { // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32.loc25: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc25: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] +// CHECK:STDOUT: %.loc25: form = init_form %i32.loc25, call_param1 [concrete = constants.%.4d5] // CHECK:STDOUT: %self.param.loc25: %Class = value_param call_param0 // CHECK:STDOUT: %Self.ref.loc25: type = name_ref Self, constants.%Class [concrete = constants.%Class] // CHECK:STDOUT: %self.loc25: %Class = value_binding self, %self.param.loc25 @@ -102,6 +105,7 @@ fn Class.F[self: Self]() -> i32 { // CHECK:STDOUT: } { // 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: %.loc16: form = init_form %i32.loc16, call_param1 [concrete = constants.%.4d5] // CHECK:STDOUT: %self.param.loc16: %Class = value_param call_param0 // CHECK:STDOUT: %Self.ref.loc16: type = name_ref Self, constants.%Class [concrete = constants.%Class] // CHECK:STDOUT: %self.loc16: %Class = value_binding self, %self.param.loc16 @@ -113,6 +117,7 @@ fn Class.F[self: Self]() -> i32 { // CHECK:STDOUT: %return.param_patt: %pattern_type.904 = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %Self.ref.loc17: type = name_ref Self, constants.%Class [concrete = constants.%Class] +// CHECK:STDOUT: %.loc17: form = init_form %Self.ref.loc17, call_param0 [concrete = constants.%.7f1] // CHECK:STDOUT: %return.param: ref %Class = out_param call_param0 // CHECK:STDOUT: %return: ref %Class = return_slot %return.param // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/class/static_method.carbon b/toolchain/check/testdata/class/static_method.carbon index 60374519abe4..9fd04aea356e 100644 --- a/toolchain/check/testdata/class/static_method.carbon +++ b/toolchain/check/testdata/class/static_method.carbon @@ -30,6 +30,7 @@ fn Run() -> i32 { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] +// CHECK:STDOUT: %.941: form = init_form %i32, call_param0 [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %Class.F.type: type = fn_type @Class.F [concrete] // CHECK:STDOUT: %Class.F: %Class.F.type = struct_value () [concrete] @@ -68,6 +69,7 @@ fn Run() -> i32 { // CHECK:STDOUT: } { // 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: %.loc19: form = init_form %i32, call_param0 [concrete = constants.%.941] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } @@ -82,6 +84,7 @@ fn Run() -> i32 { // CHECK:STDOUT: } { // 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: %.loc16: form = init_form %i32, call_param0 [concrete = constants.%.941] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/class/virtual_modifiers.carbon b/toolchain/check/testdata/class/virtual_modifiers.carbon index dcd16479ce1d..986ded13f951 100644 --- a/toolchain/check/testdata/class/virtual_modifiers.carbon +++ b/toolchain/check/testdata/class/virtual_modifiers.carbon @@ -1985,6 +1985,7 @@ class T2(G2:! type) { // CHECK:STDOUT: %ImplicitAs.type.8c9: type = facet_type <@ImplicitAs, @ImplicitAs(%T1)> [concrete] // CHECK:STDOUT: %ImplicitAs.impl_witness: = impl_witness @T2.as.ImplicitAs.impl.%ImplicitAs.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.b8b: type = pattern_type %T2 [concrete] +// CHECK:STDOUT: %.a4b: form = init_form %T1, call_param1 [concrete] // CHECK:STDOUT: %pattern_type.818: type = pattern_type %T1 [concrete] // CHECK:STDOUT: %T2.as.ImplicitAs.impl.Convert.type: type = fn_type @T2.as.ImplicitAs.impl.Convert [concrete] // CHECK:STDOUT: %T2.as.ImplicitAs.impl.Convert: %T2.as.ImplicitAs.impl.Convert.type = struct_value () [concrete] @@ -2001,6 +2002,7 @@ class T2(G2:! type) { // CHECK:STDOUT: %Derived: type = class_type @Derived [concrete] // CHECK:STDOUT: %Derived.elem: type = unbound_element_type %Derived, %Base [concrete] // CHECK:STDOUT: %pattern_type.9f6: type = pattern_type %Derived [concrete] +// CHECK:STDOUT: %.ad5: form = init_form %T2, call_param1 [concrete] // CHECK:STDOUT: %Derived.F.type: type = fn_type @Derived.F [concrete] // CHECK:STDOUT: %Derived.F: %Derived.F.type = struct_value () [concrete] // CHECK:STDOUT: %Derived.vtable_decl: ref %ptr.454 = vtable_decl @Derived.vtable [concrete] @@ -2047,6 +2049,7 @@ class T2(G2:! type) { // CHECK:STDOUT: %return.param_patt: %pattern_type.818 = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %T1.ref: type = name_ref T1, file.%T1.decl [concrete = constants.%T1] +// CHECK:STDOUT: %.loc11: form = init_form %T1.ref, call_param1 [concrete = constants.%.a4b] // CHECK:STDOUT: %self.param: %T2 = value_param call_param0 // CHECK:STDOUT: %Self.ref: type = name_ref Self, @T2.as.ImplicitAs.impl.%T2.ref [concrete = constants.%T2] // CHECK:STDOUT: %self: %T2 = value_binding self, %self.param @@ -2086,6 +2089,7 @@ class T2(G2:! type) { // CHECK:STDOUT: %return.param_patt: %pattern_type.818 = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %T1.ref: type = name_ref T1, file.%T1.decl [concrete = constants.%T1] +// CHECK:STDOUT: %.loc17: form = init_form %T1.ref, call_param1 [concrete = constants.%.a4b] // CHECK:STDOUT: %self.param: %Base = value_param call_param0 // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%Base [concrete = constants.%Base] // CHECK:STDOUT: %self: %Base = value_binding self, %self.param @@ -2114,6 +2118,7 @@ class T2(G2:! type) { // CHECK:STDOUT: %return.param_patt: %pattern_type.b8b = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %T2.ref: type = name_ref T2, file.%T2.decl [concrete = constants.%T2] +// CHECK:STDOUT: %.loc29: form = init_form %T2.ref, call_param1 [concrete = constants.%.ad5] // CHECK:STDOUT: %self.param: %Derived = value_param call_param0 // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%Derived [concrete = constants.%Derived] // CHECK:STDOUT: %self: %Derived = value_binding self, %self.param diff --git a/toolchain/check/testdata/const/basics.carbon b/toolchain/check/testdata/const/basics.carbon index 560cf26129bd..2cb87a151ff1 100644 --- a/toolchain/check/testdata/const/basics.carbon +++ b/toolchain/check/testdata/const/basics.carbon @@ -164,6 +164,7 @@ fn PassConstReferenceToReference(p: const X*) { // CHECK:STDOUT: %ptr.c45: type = ptr_type %const.0e5 [concrete] // CHECK:STDOUT: %ptr.728: type = ptr_type %ptr.c45 [concrete] // CHECK:STDOUT: %pattern_type.559: type = pattern_type %ptr.728 [concrete] +// CHECK:STDOUT: %.c2e: form = init_form %ptr.728, call_param1 [concrete] // CHECK:STDOUT: %A.type: type = fn_type @A [concrete] // CHECK:STDOUT: %A: %A.type = struct_value () [concrete] // CHECK:STDOUT: %Copy.type: type = facet_type <@Copy> [concrete] @@ -183,6 +184,7 @@ fn PassConstReferenceToReference(p: const X*) { // CHECK:STDOUT: %ptr.31e: type = ptr_type %C [concrete] // CHECK:STDOUT: %const.8ce: type = const_type %ptr.31e [concrete] // CHECK:STDOUT: %pattern_type.665: type = pattern_type %const.8ce [concrete] +// CHECK:STDOUT: %.395: form = init_form %const.8ce, call_param1 [concrete] // CHECK:STDOUT: %B.type: type = fn_type @B [concrete] // CHECK:STDOUT: %B: %B.type = struct_value () [concrete] // CHECK:STDOUT: %Copy.impl_witness.2c7: = impl_witness imports.%Copy.impl_witness_table.c3a, @ptr.as.Copy.impl(%C) [concrete] @@ -213,8 +215,9 @@ fn PassConstReferenceToReference(p: const X*) { // CHECK:STDOUT: %const.loc6_23: type = const_type %C.ref.loc6_29 [concrete = constants.%const.0e5] // CHECK:STDOUT: %ptr.loc6_30: type = ptr_type %const.loc6_23 [concrete = constants.%ptr.c45] // CHECK:STDOUT: %ptr.loc6_31: type = ptr_type %ptr.loc6_30 [concrete = constants.%ptr.728] +// CHECK:STDOUT: %.loc6_31: form = init_form %ptr.loc6_31, call_param1 [concrete = constants.%.c2e] // CHECK:STDOUT: %p.param: %ptr.728 = value_param call_param0 -// CHECK:STDOUT: %.loc6: type = splice_block %ptr.loc6_17 [concrete = constants.%ptr.728] { +// CHECK:STDOUT: %.loc6_17: type = splice_block %ptr.loc6_17 [concrete = constants.%ptr.728] { // CHECK:STDOUT: %C.ref.loc6_15: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %const.loc6_9: type = const_type %C.ref.loc6_15 [concrete = constants.%const.0e5] // CHECK:STDOUT: %ptr.loc6_16: type = ptr_type %const.loc6_9 [concrete = constants.%ptr.c45] @@ -233,8 +236,9 @@ fn PassConstReferenceToReference(p: const X*) { // CHECK:STDOUT: %C.ref.loc10_31: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %ptr.loc10_32: type = ptr_type %C.ref.loc10_31 [concrete = constants.%ptr.31e] // CHECK:STDOUT: %const.loc10_24: type = const_type %ptr.loc10_32 [concrete = constants.%const.8ce] +// CHECK:STDOUT: %.loc10_24: form = init_form %const.loc10_24, call_param1 [concrete = constants.%.395] // CHECK:STDOUT: %p.param: %const.8ce = value_param call_param0 -// CHECK:STDOUT: %.loc10: type = splice_block %const.loc10_9 [concrete = constants.%const.8ce] { +// CHECK:STDOUT: %.loc10_9: type = splice_block %const.loc10_9 [concrete = constants.%const.8ce] { // CHECK:STDOUT: %C.ref.loc10_16: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %ptr.loc10_17: type = ptr_type %C.ref.loc10_16 [concrete = constants.%ptr.31e] // CHECK:STDOUT: %const.loc10_9: type = const_type %ptr.loc10_17 [concrete = constants.%const.8ce] @@ -275,6 +279,7 @@ fn PassConstReferenceToReference(p: const X*) { // CHECK:STDOUT: %ptr.c45: type = ptr_type %const.0e5 [concrete] // CHECK:STDOUT: %ptr.728: type = ptr_type %ptr.c45 [concrete] // CHECK:STDOUT: %pattern_type.559: type = pattern_type %ptr.728 [concrete] +// CHECK:STDOUT: %.c2e: form = init_form %ptr.728, call_param1 [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] // CHECK:STDOUT: %Copy.type: type = facet_type <@Copy> [concrete] @@ -307,8 +312,9 @@ fn PassConstReferenceToReference(p: const X*) { // CHECK:STDOUT: %const.loc11_23: type = const_type %const.loc11_30 [concrete = constants.%const.0e5] // CHECK:STDOUT: %ptr.loc11_38: type = ptr_type %const.loc11_23 [concrete = constants.%ptr.c45] // CHECK:STDOUT: %ptr.loc11_39: type = ptr_type %ptr.loc11_38 [concrete = constants.%ptr.728] +// CHECK:STDOUT: %.loc11_39: form = init_form %ptr.loc11_39, call_param1 [concrete = constants.%.c2e] // CHECK:STDOUT: %p.param: %ptr.728 = value_param call_param0 -// CHECK:STDOUT: %.loc11: type = splice_block %ptr.loc11_17 [concrete = constants.%ptr.728] { +// CHECK:STDOUT: %.loc11_17: type = splice_block %ptr.loc11_17 [concrete = constants.%ptr.728] { // CHECK:STDOUT: %C.ref.loc11_15: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %const.loc11_9: type = const_type %C.ref.loc11_15 [concrete = constants.%const.0e5] // CHECK:STDOUT: %ptr.loc11_16: type = ptr_type %const.loc11_9 [concrete = constants.%ptr.c45] diff --git a/toolchain/check/testdata/deduce/array.carbon b/toolchain/check/testdata/deduce/array.carbon index 64cbe6afa41b..bbad50f9b76d 100644 --- a/toolchain/check/testdata/deduce/array.carbon +++ b/toolchain/check/testdata/deduce/array.carbon @@ -158,6 +158,7 @@ fn G() { // CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [concrete] // CHECK:STDOUT: %array_type.3ec: type = array_type %int_3, %T [symbolic] // CHECK:STDOUT: %pattern_type.b3f: type = pattern_type %array_type.3ec [symbolic] +// CHECK:STDOUT: %.e5f: form = init_form %T, call_param1 [symbolic] // CHECK:STDOUT: %pattern_type.51d: type = pattern_type %T [symbolic] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] @@ -165,6 +166,7 @@ fn G() { // CHECK:STDOUT: %require_complete.944: = require_complete_type %T [symbolic] // CHECK:STDOUT: %require_complete.ff3: = require_complete_type %array_type.3ec [symbolic] // CHECK:STDOUT: %F.specific_fn.643: = specific_function %F, @F(%T) [symbolic] +// CHECK:STDOUT: %.64f: form = init_form %C, call_param0 [concrete] // CHECK:STDOUT: %pattern_type.7c7: type = pattern_type %C [concrete] // CHECK:STDOUT: %G.type: type = fn_type @G [concrete] // CHECK:STDOUT: %G: %G.type = struct_value () [concrete] @@ -178,6 +180,7 @@ fn G() { // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete] // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete] // CHECK:STDOUT: %array: %array_type.931 = tuple_value (%C.val, %C.val, %C.val) [concrete] +// CHECK:STDOUT: %.887: form = init_form %C, call_param1 [concrete] // CHECK:STDOUT: %F.specific_fn.540: = specific_function %F, @F(%C) [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] // CHECK:STDOUT: %DestroyOp.type: type = fn_type @DestroyOp [concrete] @@ -211,6 +214,7 @@ fn G() { // CHECK:STDOUT: %return.param_patt: @F.%pattern_type.loc6_32 (%pattern_type.51d) = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc6_35: type = name_ref T, %T.loc6_6.2 [symbolic = %T.loc6_6.1 (constants.%T)] +// CHECK:STDOUT: %.loc6_35.2: form = init_form %T.ref.loc6_35, call_param1 [symbolic = %.loc6_35.1 (constants.%.e5f)] // CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] // CHECK:STDOUT: %T.loc6_6.2: type = symbolic_binding T, 0 [symbolic = %T.loc6_6.1 (constants.%T)] // CHECK:STDOUT: %a.param: @F.%array_type.loc6_29.1 (%array_type.3ec) = value_param call_param0 @@ -228,6 +232,7 @@ fn G() { // CHECK:STDOUT: %return.param_patt: %pattern_type.7c7 = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc8: type = name_ref C, file.%C.decl [concrete = constants.%C] +// CHECK:STDOUT: %.loc8_11: form = init_form %C.ref.loc8, call_param0 [concrete = constants.%.64f] // CHECK:STDOUT: %return.param: ref %C = out_param call_param0 // CHECK:STDOUT: %return: ref %C = return_slot %return.param // CHECK:STDOUT: } @@ -245,6 +250,7 @@ fn G() { // CHECK:STDOUT: %T.loc6_6.1: type = symbolic_binding T, 0 [symbolic = %T.loc6_6.1 (constants.%T)] // CHECK:STDOUT: %array_type.loc6_29.1: type = array_type constants.%int_3, %T.loc6_6.1 [symbolic = %array_type.loc6_29.1 (constants.%array_type.3ec)] // CHECK:STDOUT: %pattern_type.loc6_16: type = pattern_type %array_type.loc6_29.1 [symbolic = %pattern_type.loc6_16 (constants.%pattern_type.b3f)] +// CHECK:STDOUT: %.loc6_35.1: form = init_form %T.loc6_6.1, call_param1 [symbolic = %.loc6_35.1 (constants.%.e5f)] // CHECK:STDOUT: %pattern_type.loc6_32: type = pattern_type %T.loc6_6.1 [symbolic = %pattern_type.loc6_32 (constants.%pattern_type.51d)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -298,9 +304,9 @@ fn G() { // CHECK:STDOUT: %F.ref: %F.type = name_ref F, file.%F.decl [concrete = constants.%F] // CHECK:STDOUT: %a.ref: ref %array_type.931 = name_ref a, %a // CHECK:STDOUT: %F.specific_fn: = specific_function %F.ref, @F(constants.%C) [concrete = constants.%F.specific_fn.540] -// CHECK:STDOUT: %.loc8: ref %C = splice_block %return {} +// CHECK:STDOUT: %.loc8_8: ref %C = splice_block %return {} // CHECK:STDOUT: %.loc10: %array_type.931 = acquire_value %a.ref -// CHECK:STDOUT: %F.call: init %C = call %F.specific_fn(%.loc10) to %.loc8 +// CHECK:STDOUT: %F.call: init %C = call %F.specific_fn(%.loc10) to %.loc8_8 // CHECK:STDOUT: %DestroyOp.bound: = bound_method %a.var, constants.%DestroyOp // CHECK:STDOUT: %DestroyOp.call: init %empty_tuple.type = call %DestroyOp.bound(%a.var) // CHECK:STDOUT: return %F.call to %return @@ -312,6 +318,7 @@ fn G() { // CHECK:STDOUT: %T.loc6_6.1 => constants.%T // CHECK:STDOUT: %array_type.loc6_29.1 => constants.%array_type.3ec // CHECK:STDOUT: %pattern_type.loc6_16 => constants.%pattern_type.b3f +// CHECK:STDOUT: %.loc6_35.1 => constants.%.e5f // CHECK:STDOUT: %pattern_type.loc6_32 => constants.%pattern_type.51d // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -324,6 +331,7 @@ fn G() { // CHECK:STDOUT: %T.loc6_6.1 => constants.%C // CHECK:STDOUT: %array_type.loc6_29.1 => constants.%array_type.931 // CHECK:STDOUT: %pattern_type.loc6_16 => constants.%pattern_type.f21 +// CHECK:STDOUT: %.loc6_35.1 => constants.%.887 // CHECK:STDOUT: %pattern_type.loc6_32 => constants.%pattern_type.7c7 // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -351,6 +359,7 @@ fn G() { // CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] +// CHECK:STDOUT: %.4d5: form = init_form %i32, call_param1 [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] @@ -371,6 +380,7 @@ fn G() { // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.0b5, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] // CHECK:STDOUT: %bound_method.7fa: = bound_method %N, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [symbolic] // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.7fa(%N) [symbolic] +// CHECK:STDOUT: %.941: form = init_form %i32, call_param0 [concrete] // CHECK:STDOUT: %G.type: type = fn_type @G [concrete] // CHECK:STDOUT: %G: %G.type = struct_value () [concrete] // CHECK:STDOUT: %int_3.1ba: Core.IntLiteral = int_value 3 [concrete] @@ -429,6 +439,7 @@ fn G() { // CHECK:STDOUT: } { // 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: %.loc6_48: form = init_form %i32, call_param1 [concrete = constants.%.4d5] // CHECK:STDOUT: %.loc6_26.1: type = splice_block %.loc6_26.3 [concrete = Core.IntLiteral] { // CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [concrete = imports.%Core] @@ -454,6 +465,7 @@ fn G() { // CHECK:STDOUT: } { // 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: %.loc8: form = init_form %i32, call_param0 [concrete = constants.%.941] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } @@ -738,6 +750,7 @@ fn G() { // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete] // CHECK:STDOUT: %array_type.a0b: type = array_type %int_2, %T [symbolic] // CHECK:STDOUT: %pattern_type.b42: type = pattern_type %array_type.a0b [symbolic] +// CHECK:STDOUT: %.e5ffed.1: form = init_form %T, call_param1 [symbolic] // CHECK:STDOUT: %pattern_type.51d1c4.1: type = pattern_type %T [symbolic] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] @@ -745,6 +758,7 @@ fn G() { // CHECK:STDOUT: %require_complete.944: = require_complete_type %T [symbolic] // CHECK:STDOUT: %require_complete.fc9: = require_complete_type %array_type.a0b [symbolic] // CHECK:STDOUT: %F.specific_fn.643: = specific_function %F, @F(%T) [symbolic] +// CHECK:STDOUT: %.64f: form = init_form %C, call_param0 [concrete] // CHECK:STDOUT: %pattern_type.7c7: type = pattern_type %C [concrete] // CHECK:STDOUT: %G.type: type = fn_type @G [concrete] // CHECK:STDOUT: %G: %G.type = struct_value () [concrete] @@ -760,6 +774,7 @@ fn G() { // CHECK:STDOUT: %array: %array_type.931 = tuple_value (%C.val, %C.val, %C.val) [concrete] // CHECK:STDOUT: %array_type.158: type = array_type %int_2, %C [concrete] // CHECK:STDOUT: %pattern_type.6d3: type = pattern_type %array_type.158 [concrete] +// CHECK:STDOUT: %.887: form = init_form %C, call_param1 [concrete] // CHECK:STDOUT: %F.specific_fn.540: = specific_function %F, @F(%C) [concrete] // CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] @@ -797,6 +812,7 @@ fn G() { // CHECK:STDOUT: %return.param_patt: @F.%pattern_type.loc6_32 (%pattern_type.51d1c4.1) = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc6_35: type = name_ref T, %T.loc6_6.2 [symbolic = %T.loc6_6.1 (constants.%T)] +// CHECK:STDOUT: %.loc6_35.2: form = init_form %T.ref.loc6_35, call_param1 [symbolic = %.loc6_35.1 (constants.%.e5ffed.1)] // CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] // CHECK:STDOUT: %T.loc6_6.2: type = symbolic_binding T, 0 [symbolic = %T.loc6_6.1 (constants.%T)] // CHECK:STDOUT: %a.param: @F.%array_type.loc6_29.1 (%array_type.a0b) = value_param call_param0 @@ -814,6 +830,7 @@ fn G() { // CHECK:STDOUT: %return.param_patt: %pattern_type.7c7 = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc8: type = name_ref C, file.%C.decl [concrete = constants.%C] +// CHECK:STDOUT: %.loc8_11: form = init_form %C.ref.loc8, call_param0 [concrete = constants.%.64f] // CHECK:STDOUT: %return.param: ref %C = out_param call_param0 // CHECK:STDOUT: %return: ref %C = return_slot %return.param // CHECK:STDOUT: } @@ -831,6 +848,7 @@ fn G() { // CHECK:STDOUT: %T.loc6_6.1: type = symbolic_binding T, 0 [symbolic = %T.loc6_6.1 (constants.%T)] // CHECK:STDOUT: %array_type.loc6_29.1: type = array_type constants.%int_2, %T.loc6_6.1 [symbolic = %array_type.loc6_29.1 (constants.%array_type.a0b)] // CHECK:STDOUT: %pattern_type.loc6_16: type = pattern_type %array_type.loc6_29.1 [symbolic = %pattern_type.loc6_16 (constants.%pattern_type.b42)] +// CHECK:STDOUT: %.loc6_35.1: form = init_form %T.loc6_6.1, call_param1 [symbolic = %.loc6_35.1 (constants.%.e5ffed.1)] // CHECK:STDOUT: %pattern_type.loc6_32: type = pattern_type %T.loc6_6.1 [symbolic = %pattern_type.loc6_32 (constants.%pattern_type.51d1c4.1)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -884,9 +902,9 @@ fn G() { // CHECK:STDOUT: %F.ref: %F.type = name_ref F, file.%F.decl [concrete = constants.%F] // CHECK:STDOUT: %a.ref: ref %array_type.931 = name_ref a, %a // CHECK:STDOUT: %F.specific_fn: = specific_function %F.ref, @F(constants.%C) [concrete = constants.%F.specific_fn.540] -// CHECK:STDOUT: %.loc8: ref %C = splice_block %return {} +// CHECK:STDOUT: %.loc8_8: ref %C = splice_block %return {} // CHECK:STDOUT: %.loc21: %array_type.158 = converted %a.ref, [concrete = ] -// CHECK:STDOUT: %F.call: init %C = call %F.specific_fn() to %.loc8 +// CHECK:STDOUT: %F.call: init %C = call %F.specific_fn() to %.loc8_8 // CHECK:STDOUT: %DestroyOp.bound: = bound_method %a.var, constants.%DestroyOp // CHECK:STDOUT: %DestroyOp.call: init %empty_tuple.type = call %DestroyOp.bound(%a.var) // CHECK:STDOUT: return %F.call to %return @@ -898,6 +916,7 @@ fn G() { // CHECK:STDOUT: %T.loc6_6.1 => constants.%T // CHECK:STDOUT: %array_type.loc6_29.1 => constants.%array_type.a0b // CHECK:STDOUT: %pattern_type.loc6_16 => constants.%pattern_type.b42 +// CHECK:STDOUT: %.loc6_35.1 => constants.%.e5ffed.1 // CHECK:STDOUT: %pattern_type.loc6_32 => constants.%pattern_type.51d1c4.1 // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -910,6 +929,7 @@ fn G() { // CHECK:STDOUT: %T.loc6_6.1 => constants.%C // CHECK:STDOUT: %array_type.loc6_29.1 => constants.%array_type.158 // CHECK:STDOUT: %pattern_type.loc6_16 => constants.%pattern_type.6d3 +// CHECK:STDOUT: %.loc6_35.1 => constants.%.887 // CHECK:STDOUT: %pattern_type.loc6_32 => constants.%pattern_type.7c7 // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -938,6 +958,7 @@ fn G() { // CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] +// CHECK:STDOUT: %.4d5: form = init_form %i32, call_param1 [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] @@ -958,6 +979,7 @@ fn G() { // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.0b5, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] // CHECK:STDOUT: %bound_method.7fa: = bound_method %N, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [symbolic] // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.7fa(%N) [symbolic] +// CHECK:STDOUT: %.941: form = init_form %i32, call_param0 [concrete] // CHECK:STDOUT: %G.type: type = fn_type @G [concrete] // CHECK:STDOUT: %G: %G.type = struct_value () [concrete] // CHECK:STDOUT: %int_3.1ba: Core.IntLiteral = int_value 3 [concrete] @@ -1020,6 +1042,7 @@ fn G() { // CHECK:STDOUT: } { // 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: %.loc7_48: form = init_form %i32, call_param1 [concrete = constants.%.4d5] // CHECK:STDOUT: %.loc7_26.1: type = splice_block %.loc7_26.3 [concrete = Core.IntLiteral] { // CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [concrete = imports.%Core] @@ -1045,6 +1068,7 @@ fn G() { // CHECK:STDOUT: } { // 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: %.loc9: form = init_form %i32, call_param0 [concrete = constants.%.941] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } @@ -1186,6 +1210,7 @@ fn G() { // CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.call: init Core.IntLiteral = call %bound_method.d76(%N.5de) [symbolic] // CHECK:STDOUT: %array_type.8c3: type = array_type %Int.as.ImplicitAs.impl.Convert.call, %C [symbolic] // CHECK:STDOUT: %pattern_type.0fb: type = pattern_type %array_type.8c3 [symbolic] +// CHECK:STDOUT: %.4d5: form = init_form %i32, call_param1 [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] // CHECK:STDOUT: %require_complete.a24: = require_complete_type %array_type.8c3 [symbolic] @@ -1201,6 +1226,7 @@ fn G() { // CHECK:STDOUT: %Int.as.Copy.impl.Op.bound: = bound_method %N.5de, %Int.as.Copy.impl.Op.664 [symbolic] // CHECK:STDOUT: %Int.as.Copy.impl.Op.specific_fn: = specific_function %Int.as.Copy.impl.Op.664, @Int.as.Copy.impl.Op(%int_32) [concrete] // CHECK:STDOUT: %bound_method.207: = bound_method %N.5de, %Int.as.Copy.impl.Op.specific_fn [symbolic] +// CHECK:STDOUT: %.941: form = init_form %i32, call_param0 [concrete] // CHECK:STDOUT: %G.type: type = fn_type @G [concrete] // CHECK:STDOUT: %G: %G.type = struct_value () [concrete] // CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [concrete] @@ -1256,6 +1282,7 @@ fn G() { // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32.loc6_34: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc6_34: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] +// CHECK:STDOUT: %.loc6_34: form = init_form %i32.loc6_34, call_param1 [concrete = constants.%.4d5] // CHECK:STDOUT: %.loc6_10: type = splice_block %i32.loc6_10 [concrete = constants.%i32] { // CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] // CHECK:STDOUT: %int_32.loc6_10: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] @@ -1285,6 +1312,7 @@ fn G() { // CHECK:STDOUT: } { // 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: %.loc8: form = init_form %i32, call_param0 [concrete = constants.%.941] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/deduce/generic_type.carbon b/toolchain/check/testdata/deduce/generic_type.carbon index 91f0ae095ed2..afe3b556d94e 100644 --- a/toolchain/check/testdata/deduce/generic_type.carbon +++ b/toolchain/check/testdata/deduce/generic_type.carbon @@ -83,6 +83,7 @@ fn G() -> i32 { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %D: type = class_type @D [concrete] // CHECK:STDOUT: %pattern_type.3d5: type = pattern_type %C.5a3 [symbolic] +// CHECK:STDOUT: %.e5f: form = init_form %T, call_param1 [symbolic] // CHECK:STDOUT: %pattern_type.51d: type = pattern_type %T [symbolic] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] @@ -91,6 +92,7 @@ fn G() -> i32 { // CHECK:STDOUT: %F.specific_fn.643: = specific_function %F, @F(%T) [symbolic] // CHECK:STDOUT: %C.302: type = class_type @C, @C(%D) [concrete] // CHECK:STDOUT: %pattern_type.a7e: type = pattern_type %C.302 [concrete] +// CHECK:STDOUT: %.bb8: form = init_form %D, call_param1 [concrete] // CHECK:STDOUT: %pattern_type.9c8: type = pattern_type %D [concrete] // CHECK:STDOUT: %G.type: type = fn_type @G [concrete] // CHECK:STDOUT: %G: %G.type = struct_value () [concrete] @@ -128,6 +130,7 @@ fn G() -> i32 { // CHECK:STDOUT: %return.param_patt: @F.%pattern_type.loc7_25 (%pattern_type.51d) = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc7_28: type = name_ref T, %T.loc7_6.2 [symbolic = %T.loc7_6.1 (constants.%T)] +// CHECK:STDOUT: %.loc7_28.2: form = init_form %T.ref.loc7_28, call_param1 [symbolic = %.loc7_28.1 (constants.%.e5f)] // CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] // CHECK:STDOUT: %T.loc7_6.2: type = symbolic_binding T, 0 [symbolic = %T.loc7_6.1 (constants.%T)] // CHECK:STDOUT: %p.param: @F.%C.loc7_22.1 (%C.5a3) = value_param call_param0 @@ -147,6 +150,7 @@ fn G() -> i32 { // CHECK:STDOUT: %return.param_patt: %pattern_type.9c8 = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %D.ref.loc9_18: type = name_ref D, file.%D.decl [concrete = constants.%D] +// CHECK:STDOUT: %.loc9_18: form = init_form %D.ref.loc9_18, call_param1 [concrete = constants.%.bb8] // CHECK:STDOUT: %p.param: %C.302 = value_param call_param0 // CHECK:STDOUT: %.loc9_12: type = splice_block %C [concrete = constants.%C.302] { // CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [concrete = constants.%C.generic] @@ -185,6 +189,7 @@ fn G() -> i32 { // CHECK:STDOUT: %T.loc7_6.1: type = symbolic_binding T, 0 [symbolic = %T.loc7_6.1 (constants.%T)] // CHECK:STDOUT: %C.loc7_22.1: type = class_type @C, @C(%T.loc7_6.1) [symbolic = %C.loc7_22.1 (constants.%C.5a3)] // CHECK:STDOUT: %pattern_type.loc7_16: type = pattern_type %C.loc7_22.1 [symbolic = %pattern_type.loc7_16 (constants.%pattern_type.3d5)] +// CHECK:STDOUT: %.loc7_28.1: form = init_form %T.loc7_6.1, call_param1 [symbolic = %.loc7_28.1 (constants.%.e5f)] // CHECK:STDOUT: %pattern_type.loc7_25: type = pattern_type %T.loc7_6.1 [symbolic = %pattern_type.loc7_25 (constants.%pattern_type.51d)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -223,6 +228,7 @@ fn G() -> i32 { // CHECK:STDOUT: %T.loc7_6.1 => constants.%T // CHECK:STDOUT: %C.loc7_22.1 => constants.%C.5a3 // CHECK:STDOUT: %pattern_type.loc7_16 => constants.%pattern_type.3d5 +// CHECK:STDOUT: %.loc7_28.1 => constants.%.e5f // CHECK:STDOUT: %pattern_type.loc7_25 => constants.%pattern_type.51d // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -241,6 +247,7 @@ fn G() -> i32 { // CHECK:STDOUT: %T.loc7_6.1 => constants.%D // CHECK:STDOUT: %C.loc7_22.1 => constants.%C.302 // CHECK:STDOUT: %pattern_type.loc7_16 => constants.%pattern_type.a7e +// CHECK:STDOUT: %.loc7_28.1 => constants.%.bb8 // CHECK:STDOUT: %pattern_type.loc7_25 => constants.%pattern_type.9c8 // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -263,6 +270,7 @@ fn G() -> i32 { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %pattern_type.7be: type = pattern_type %I.3cf [symbolic] +// CHECK:STDOUT: %.887: form = init_form %C, call_param1 [concrete] // CHECK:STDOUT: %pattern_type.7c7: type = pattern_type %C [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] @@ -306,6 +314,7 @@ fn G() -> i32 { // CHECK:STDOUT: %return.param_patt: %pattern_type.7c7 = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] +// CHECK:STDOUT: %.loc7_28: form = init_form %C.ref, call_param1 [concrete = constants.%.887] // CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] // CHECK:STDOUT: %T.loc7_6.2: type = symbolic_binding T, 0 [symbolic = %T.loc7_6.1 (constants.%T)] // CHECK:STDOUT: %p.param: @F.%I.loc7_22.1 (%I.3cf) = value_param call_param0 @@ -325,6 +334,7 @@ fn G() -> i32 { // CHECK:STDOUT: %return.param_patt: %pattern_type.7c7 = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc9_18: type = name_ref C, file.%C.decl [concrete = constants.%C] +// CHECK:STDOUT: %.loc9_18: form = init_form %C.ref.loc9_18, call_param1 [concrete = constants.%.887] // CHECK:STDOUT: %p.param: %I.bce = value_param call_param0 // CHECK:STDOUT: %.loc9_12: type = splice_block %I [concrete = constants.%I.bce] { // CHECK:STDOUT: %I.ref: %I.type = name_ref I, file.%I.decl [concrete = constants.%I.generic] @@ -444,6 +454,7 @@ fn G() -> i32 { // CHECK:STDOUT: %tuple.type.24b: type = tuple_type (type, type) [concrete] // CHECK:STDOUT: %tuple.4b9: %tuple.type.24b = tuple_value (%T, %U) [symbolic] // CHECK:STDOUT: %tuple.type.a5e: type = tuple_type (%T, %U) [symbolic] +// CHECK:STDOUT: %.541: form = init_form %tuple.type.a5e, call_param1 [symbolic] // CHECK:STDOUT: %pattern_type.eee: type = pattern_type %tuple.type.a5e [symbolic] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] @@ -457,6 +468,7 @@ fn G() -> i32 { // CHECK:STDOUT: %pattern_type.204: type = pattern_type %Inner.240 [concrete] // CHECK:STDOUT: %tuple.a0a: %tuple.type.24b = tuple_value (%C, %D) [concrete] // CHECK:STDOUT: %tuple.type.281: type = tuple_type (%C, %D) [concrete] +// CHECK:STDOUT: %.21e: form = init_form %tuple.type.281, call_param1 [concrete] // CHECK:STDOUT: %pattern_type.881: type = pattern_type %tuple.type.281 [concrete] // CHECK:STDOUT: %G.type: type = fn_type @G [concrete] // CHECK:STDOUT: %G: %G.type = struct_value () [concrete] @@ -499,8 +511,9 @@ fn G() -> i32 { // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc13_52: type = name_ref T, %T.loc13_6.2 [symbolic = %T.loc13_6.1 (constants.%T)] // CHECK:STDOUT: %U.ref.loc13_55: type = name_ref U, %U.loc13_16.2 [symbolic = %U.loc13_16.1 (constants.%U)] -// CHECK:STDOUT: %.loc13_56.1: %tuple.type.24b = tuple_literal (%T.ref.loc13_52, %U.ref.loc13_55) [symbolic = %tuple (constants.%tuple.4b9)] -// CHECK:STDOUT: %.loc13_56.2: type = converted %.loc13_56.1, constants.%tuple.type.a5e [symbolic = %tuple.type (constants.%tuple.type.a5e)] +// CHECK:STDOUT: %.loc13_56.2: %tuple.type.24b = tuple_literal (%T.ref.loc13_52, %U.ref.loc13_55) [symbolic = %tuple (constants.%tuple.4b9)] +// CHECK:STDOUT: %.loc13_56.3: type = converted %.loc13_56.2, constants.%tuple.type.a5e [symbolic = %tuple.type (constants.%tuple.type.a5e)] +// CHECK:STDOUT: %.loc13_56.4: form = init_form %.loc13_56.3, call_param1 [symbolic = %.loc13_56.1 (constants.%.541)] // CHECK:STDOUT: %.Self.1: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] // CHECK:STDOUT: %T.loc13_6.2: type = symbolic_binding T, 0 [symbolic = %T.loc13_6.1 (constants.%T)] // CHECK:STDOUT: %.Self.2: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] @@ -529,6 +542,7 @@ fn G() -> i32 { // CHECK:STDOUT: %D.ref.loc15_35: type = name_ref D, file.%D.decl [concrete = constants.%D] // CHECK:STDOUT: %.loc15_36.1: %tuple.type.24b = tuple_literal (%C.ref.loc15_32, %D.ref.loc15_35) [concrete = constants.%tuple.a0a] // CHECK:STDOUT: %.loc15_36.2: type = converted %.loc15_36.1, constants.%tuple.type.281 [concrete = constants.%tuple.type.281] +// CHECK:STDOUT: %.loc15_36.3: form = init_form %.loc15_36.2, call_param1 [concrete = constants.%.21e] // CHECK:STDOUT: %p.param: %Inner.240 = value_param call_param0 // CHECK:STDOUT: %.loc15_25: type = splice_block %Inner [concrete = constants.%Inner.240] { // CHECK:STDOUT: %Outer.ref: %Outer.type = name_ref Outer, file.%Outer.decl [concrete = constants.%Outer.generic] @@ -609,6 +623,7 @@ fn G() -> i32 { // CHECK:STDOUT: %pattern_type.loc13_26: type = pattern_type %Inner.loc13_45.1 [symbolic = %pattern_type.loc13_26 (constants.%pattern_type.0d1)] // CHECK:STDOUT: %tuple: %tuple.type.24b = tuple_value (%T.loc13_6.1, %U.loc13_16.1) [symbolic = %tuple (constants.%tuple.4b9)] // CHECK:STDOUT: %tuple.type: type = tuple_type (%T.loc13_6.1, %U.loc13_16.1) [symbolic = %tuple.type (constants.%tuple.type.a5e)] +// CHECK:STDOUT: %.loc13_56.1: form = init_form %tuple.type, call_param1 [symbolic = %.loc13_56.1 (constants.%.541)] // CHECK:STDOUT: %pattern_type.loc13_48: type = pattern_type %tuple.type [symbolic = %pattern_type.loc13_48 (constants.%pattern_type.eee)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -662,6 +677,7 @@ fn G() -> i32 { // CHECK:STDOUT: %pattern_type.loc13_26 => constants.%pattern_type.0d1 // CHECK:STDOUT: %tuple => constants.%tuple.4b9 // CHECK:STDOUT: %tuple.type => constants.%tuple.type.a5e +// CHECK:STDOUT: %.loc13_56.1 => constants.%.541 // CHECK:STDOUT: %pattern_type.loc13_48 => constants.%pattern_type.eee // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -695,6 +711,7 @@ fn G() -> i32 { // CHECK:STDOUT: %pattern_type.loc13_26 => constants.%pattern_type.204 // CHECK:STDOUT: %tuple => constants.%tuple.a0a // CHECK:STDOUT: %tuple.type => constants.%tuple.type.281 +// CHECK:STDOUT: %.loc13_56.1 => constants.%.21e // CHECK:STDOUT: %pattern_type.loc13_48 => constants.%pattern_type.881 // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -722,6 +739,7 @@ fn G() -> i32 { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %pattern_type.43d: type = pattern_type %WithNontype.205 [symbolic] +// CHECK:STDOUT: %.4d5: form = init_form %i32, call_param1 [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] // CHECK:STDOUT: %require_complete.643: = require_complete_type %WithNontype.205 [symbolic] @@ -737,6 +755,7 @@ fn G() -> i32 { // CHECK:STDOUT: %Int.as.Copy.impl.Op.bound.e78: = bound_method %N.5de, %Int.as.Copy.impl.Op.664 [symbolic] // CHECK:STDOUT: %Int.as.Copy.impl.Op.specific_fn: = specific_function %Int.as.Copy.impl.Op.664, @Int.as.Copy.impl.Op(%int_32) [concrete] // CHECK:STDOUT: %bound_method.207: = bound_method %N.5de, %Int.as.Copy.impl.Op.specific_fn [symbolic] +// CHECK:STDOUT: %.941: form = init_form %i32, call_param0 [concrete] // CHECK:STDOUT: %G.type: type = fn_type @G [concrete] // CHECK:STDOUT: %G: %G.type = struct_value () [concrete] // CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] @@ -814,6 +833,7 @@ fn G() -> i32 { // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32.loc6_37: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc6_37: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] +// CHECK:STDOUT: %.loc6_37: form = init_form %i32.loc6_37, call_param1 [concrete = constants.%.4d5] // CHECK:STDOUT: %.loc6_10: type = splice_block %i32.loc6_10 [concrete = constants.%i32] { // CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] // CHECK:STDOUT: %int_32.loc6_10: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] @@ -836,6 +856,7 @@ fn G() -> i32 { // CHECK:STDOUT: } { // 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: %.loc8: form = init_form %i32, call_param0 [concrete = constants.%.941] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/deduce/int_float.carbon b/toolchain/check/testdata/deduce/int_float.carbon index 795666fac434..c68f7b1557b4 100644 --- a/toolchain/check/testdata/deduce/int_float.carbon +++ b/toolchain/check/testdata/deduce/int_float.carbon @@ -49,6 +49,7 @@ fn G(a: f64) -> Core.IntLiteral() { // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %Int: type = class_type @Int, @Int(%N) [symbolic] // CHECK:STDOUT: %pattern_type.764: type = pattern_type %Int [symbolic] +// CHECK:STDOUT: %.026: form = init_form Core.IntLiteral, call_param1 [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] // CHECK:STDOUT: %require_complete.901: = require_complete_type %Int [symbolic] @@ -105,6 +106,7 @@ fn G(a: f64) -> Core.IntLiteral() { // CHECK:STDOUT: %IntLiteral.call.loc4_64: init type = call %IntLiteral.ref.loc4_52() [concrete = Core.IntLiteral] // CHECK:STDOUT: %.loc4_64.1: type = value_of_initializer %IntLiteral.call.loc4_64 [concrete = Core.IntLiteral] // CHECK:STDOUT: %.loc4_64.2: type = converted %IntLiteral.call.loc4_64, %.loc4_64.1 [concrete = Core.IntLiteral] +// CHECK:STDOUT: %.loc4_64.3: form = init_form %.loc4_64.2, call_param1 [concrete = constants.%.026] // CHECK:STDOUT: %.loc4_26.1: type = splice_block %.loc4_26.3 [concrete = Core.IntLiteral] { // CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] // CHECK:STDOUT: %Core.ref.loc4_10: = name_ref Core, imports.%Core [concrete = imports.%Core] @@ -136,6 +138,7 @@ fn G(a: f64) -> Core.IntLiteral() { // CHECK:STDOUT: %IntLiteral.call: init type = call %IntLiteral.ref() [concrete = Core.IntLiteral] // CHECK:STDOUT: %.loc8_33.1: type = value_of_initializer %IntLiteral.call [concrete = Core.IntLiteral] // CHECK:STDOUT: %.loc8_33.2: type = converted %IntLiteral.call, %.loc8_33.1 [concrete = Core.IntLiteral] +// CHECK:STDOUT: %.loc8_33.3: form = init_form %.loc8_33.2, call_param1 [concrete = constants.%.026] // CHECK:STDOUT: %a.param: %i64 = value_param call_param0 // CHECK:STDOUT: %.loc8_9: type = splice_block %i64 [concrete = constants.%i64] { // CHECK:STDOUT: %int_64: Core.IntLiteral = int_value 64 [concrete = constants.%int_64] @@ -204,6 +207,7 @@ fn G(a: f64) -> Core.IntLiteral() { // CHECK:STDOUT: %Float.generic: %Float.type = struct_value () [concrete] // CHECK:STDOUT: %Float: type = class_type @Float, @Float(%N) [symbolic] // CHECK:STDOUT: %pattern_type.7d0: type = pattern_type %Float [symbolic] +// CHECK:STDOUT: %.026: form = init_form Core.IntLiteral, call_param1 [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] // CHECK:STDOUT: %require_complete.dc0: = require_complete_type %Float [symbolic] @@ -260,6 +264,7 @@ fn G(a: f64) -> Core.IntLiteral() { // CHECK:STDOUT: %IntLiteral.call.loc4_66: init type = call %IntLiteral.ref.loc4_54() [concrete = Core.IntLiteral] // CHECK:STDOUT: %.loc4_66.1: type = value_of_initializer %IntLiteral.call.loc4_66 [concrete = Core.IntLiteral] // CHECK:STDOUT: %.loc4_66.2: type = converted %IntLiteral.call.loc4_66, %.loc4_66.1 [concrete = Core.IntLiteral] +// CHECK:STDOUT: %.loc4_66.3: form = init_form %.loc4_66.2, call_param1 [concrete = constants.%.026] // CHECK:STDOUT: %.loc4_26.1: type = splice_block %.loc4_26.3 [concrete = Core.IntLiteral] { // CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] // CHECK:STDOUT: %Core.ref.loc4_10: = name_ref Core, imports.%Core [concrete = imports.%Core] @@ -291,6 +296,7 @@ fn G(a: f64) -> Core.IntLiteral() { // CHECK:STDOUT: %IntLiteral.call: init type = call %IntLiteral.ref() [concrete = Core.IntLiteral] // CHECK:STDOUT: %.loc8_33.1: type = value_of_initializer %IntLiteral.call [concrete = Core.IntLiteral] // CHECK:STDOUT: %.loc8_33.2: type = converted %IntLiteral.call, %.loc8_33.1 [concrete = Core.IntLiteral] +// CHECK:STDOUT: %.loc8_33.3: form = init_form %.loc8_33.2, call_param1 [concrete = constants.%.026] // CHECK:STDOUT: %a.param: %f64.d77 = value_param call_param0 // CHECK:STDOUT: %.loc8_9: type = splice_block %f64 [concrete = constants.%f64.d77] { // CHECK:STDOUT: %int_64: Core.IntLiteral = int_value 64 [concrete = constants.%int_64] diff --git a/toolchain/check/testdata/deduce/tuple.carbon b/toolchain/check/testdata/deduce/tuple.carbon index c01f0df43d7e..45ee58f161c5 100644 --- a/toolchain/check/testdata/deduce/tuple.carbon +++ b/toolchain/check/testdata/deduce/tuple.carbon @@ -73,6 +73,7 @@ fn G(pair: (C, D)) -> D { // CHECK:STDOUT: %tuple.4b9: %tuple.type.24b = tuple_value (%T, %U) [symbolic] // CHECK:STDOUT: %tuple.type.a5e: type = tuple_type (%T, %U) [symbolic] // CHECK:STDOUT: %pattern_type.eee: type = pattern_type %tuple.type.a5e [symbolic] +// CHECK:STDOUT: %.ead: form = init_form %U, call_param1 [symbolic] // CHECK:STDOUT: %pattern_type.946: type = pattern_type %U [symbolic] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] @@ -82,6 +83,7 @@ fn G(pair: (C, D)) -> D { // CHECK:STDOUT: %tuple.a0a: %tuple.type.24b = tuple_value (%C, %D) [concrete] // CHECK:STDOUT: %tuple.type.281: type = tuple_type (%C, %D) [concrete] // CHECK:STDOUT: %pattern_type.881: type = pattern_type %tuple.type.281 [concrete] +// CHECK:STDOUT: %.bb8: form = init_form %D, call_param1 [concrete] // CHECK:STDOUT: %pattern_type.9c8: type = pattern_type %D [concrete] // CHECK:STDOUT: %G.type: type = fn_type @G [concrete] // CHECK:STDOUT: %G: %G.type = struct_value () [concrete] @@ -116,6 +118,7 @@ fn G(pair: (C, D)) -> D { // CHECK:STDOUT: %return.param_patt: @F.%pattern_type.loc7_40 (%pattern_type.946) = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %U.ref.loc7_43: type = name_ref U, %U.loc7_16.2 [symbolic = %U.loc7_16.1 (constants.%U)] +// CHECK:STDOUT: %.loc7_43.2: form = init_form %U.ref.loc7_43, call_param1 [symbolic = %.loc7_43.1 (constants.%.ead)] // CHECK:STDOUT: %.Self.1: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] // CHECK:STDOUT: %T.loc7_6.2: type = symbolic_binding T, 0 [symbolic = %T.loc7_6.1 (constants.%T)] // CHECK:STDOUT: %.Self.2: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] @@ -138,6 +141,7 @@ fn G(pair: (C, D)) -> D { // CHECK:STDOUT: %return.param_patt: %pattern_type.9c8 = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %D.ref.loc9_23: type = name_ref D, file.%D.decl [concrete = constants.%D] +// CHECK:STDOUT: %.loc9_23: form = init_form %D.ref.loc9_23, call_param1 [concrete = constants.%.bb8] // CHECK:STDOUT: %pair.param: %tuple.type.281 = value_param call_param0 // CHECK:STDOUT: %.loc9_17.1: type = splice_block %.loc9_17.3 [concrete = constants.%tuple.type.281] { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] @@ -173,6 +177,7 @@ fn G(pair: (C, D)) -> D { // CHECK:STDOUT: %tuple: %tuple.type.24b = tuple_value (%T.loc7_6.1, %U.loc7_16.1) [symbolic = %tuple (constants.%tuple.4b9)] // CHECK:STDOUT: %tuple.type: type = tuple_type (%T.loc7_6.1, %U.loc7_16.1) [symbolic = %tuple.type (constants.%tuple.type.a5e)] // CHECK:STDOUT: %pattern_type.loc7_26: type = pattern_type %tuple.type [symbolic = %pattern_type.loc7_26 (constants.%pattern_type.eee)] +// CHECK:STDOUT: %.loc7_43.1: form = init_form %U.loc7_16.1, call_param1 [symbolic = %.loc7_43.1 (constants.%.ead)] // CHECK:STDOUT: %pattern_type.loc7_40: type = pattern_type %U.loc7_16.1 [symbolic = %pattern_type.loc7_40 (constants.%pattern_type.946)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -207,6 +212,7 @@ fn G(pair: (C, D)) -> D { // CHECK:STDOUT: %tuple => constants.%tuple.4b9 // CHECK:STDOUT: %tuple.type => constants.%tuple.type.a5e // CHECK:STDOUT: %pattern_type.loc7_26 => constants.%pattern_type.eee +// CHECK:STDOUT: %.loc7_43.1 => constants.%.ead // CHECK:STDOUT: %pattern_type.loc7_40 => constants.%pattern_type.946 // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -221,6 +227,7 @@ fn G(pair: (C, D)) -> D { // CHECK:STDOUT: %tuple => constants.%tuple.a0a // CHECK:STDOUT: %tuple.type => constants.%tuple.type.281 // CHECK:STDOUT: %pattern_type.loc7_26 => constants.%pattern_type.881 +// CHECK:STDOUT: %.loc7_43.1 => constants.%.bb8 // CHECK:STDOUT: %pattern_type.loc7_40 => constants.%pattern_type.9c8 // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -255,6 +262,7 @@ fn G(pair: (C, D)) -> D { // CHECK:STDOUT: %tuple.9c9: %tuple.type.d07 = tuple_value (%A, %B) [symbolic] // CHECK:STDOUT: %HasPair.2e7: type = class_type @HasPair, @HasPair(%tuple.9c9) [symbolic] // CHECK:STDOUT: %pattern_type.dc2: type = pattern_type %HasPair.2e7 [symbolic] +// CHECK:STDOUT: %.4d5: form = init_form %i32, call_param1 [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] // CHECK:STDOUT: %require_complete.76f: = require_complete_type %HasPair.2e7 [symbolic] @@ -352,6 +360,7 @@ fn G(pair: (C, D)) -> D { // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32.loc6_47: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc6_47: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] +// CHECK:STDOUT: %.loc6_47: form = init_form %i32.loc6_47, call_param1 [concrete = constants.%.4d5] // CHECK:STDOUT: %.loc6_10: type = splice_block %i32.loc6_10 [concrete = constants.%i32] { // CHECK:STDOUT: %.Self.2: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] // CHECK:STDOUT: %int_32.loc6_10: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] @@ -386,6 +395,7 @@ fn G(pair: (C, D)) -> D { // CHECK:STDOUT: } { // 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: %.loc8_29: form = init_form %i32, call_param1 [concrete = constants.%.4d5] // CHECK:STDOUT: %h.param: %HasPair.867 = value_param call_param0 // CHECK:STDOUT: %.loc8_23.1: type = splice_block %HasPair [concrete = constants.%HasPair.867] { // CHECK:STDOUT: %HasPair.ref: %HasPair.type = name_ref HasPair, file.%HasPair.decl [concrete = constants.%HasPair.generic] @@ -515,12 +525,14 @@ fn G(pair: (C, D)) -> D { // CHECK:STDOUT: %tuple.11e: %tuple.type.24b = tuple_value (%T, %T) [symbolic] // CHECK:STDOUT: %tuple.type.07a: type = tuple_type (%T, %T) [symbolic] // CHECK:STDOUT: %pattern_type.c3f: type = pattern_type %tuple.type.07a [symbolic] +// CHECK:STDOUT: %.e5f: form = init_form %T, call_param1 [symbolic] // CHECK:STDOUT: %pattern_type.51d: type = pattern_type %T [symbolic] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] // CHECK:STDOUT: %tuple.a0a: %tuple.type.24b = tuple_value (%C, %D) [concrete] // CHECK:STDOUT: %tuple.type.281: type = tuple_type (%C, %D) [concrete] // CHECK:STDOUT: %pattern_type.881: type = pattern_type %tuple.type.281 [concrete] +// CHECK:STDOUT: %.bb8: form = init_form %D, call_param1 [concrete] // CHECK:STDOUT: %pattern_type.9c8: type = pattern_type %D [concrete] // CHECK:STDOUT: %G.type: type = fn_type @G [concrete] // CHECK:STDOUT: %G: %G.type = struct_value () [concrete] @@ -552,6 +564,7 @@ fn G(pair: (C, D)) -> D { // CHECK:STDOUT: %return.param_patt: @F.%pattern_type.loc7_30 (%pattern_type.51d) = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc7_33: type = name_ref T, %T.loc7_6.2 [symbolic = %T.loc7_6.1 (constants.%T)] +// CHECK:STDOUT: %.loc7_33.2: form = init_form %T.ref.loc7_33, call_param1 [symbolic = %.loc7_33.1 (constants.%.e5f)] // CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] // CHECK:STDOUT: %T.loc7_6.2: type = symbolic_binding T, 0 [symbolic = %T.loc7_6.1 (constants.%T)] // CHECK:STDOUT: %pair.param: @F.%tuple.type (%tuple.type.07a) = value_param call_param0 @@ -572,6 +585,7 @@ fn G(pair: (C, D)) -> D { // CHECK:STDOUT: %return.param_patt: %pattern_type.9c8 = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %D.ref.loc9_23: type = name_ref D, file.%D.decl [concrete = constants.%D] +// CHECK:STDOUT: %.loc9_23: form = init_form %D.ref.loc9_23, call_param1 [concrete = constants.%.bb8] // CHECK:STDOUT: %pair.param: %tuple.type.281 = value_param call_param0 // CHECK:STDOUT: %.loc9_17.1: type = splice_block %.loc9_17.3 [concrete = constants.%tuple.type.281] { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] @@ -606,6 +620,7 @@ fn G(pair: (C, D)) -> D { // CHECK:STDOUT: %tuple: %tuple.type.24b = tuple_value (%T.loc7_6.1, %T.loc7_6.1) [symbolic = %tuple (constants.%tuple.11e)] // CHECK:STDOUT: %tuple.type: type = tuple_type (%T.loc7_6.1, %T.loc7_6.1) [symbolic = %tuple.type (constants.%tuple.type.07a)] // CHECK:STDOUT: %pattern_type.loc7_16: type = pattern_type %tuple.type [symbolic = %pattern_type.loc7_16 (constants.%pattern_type.c3f)] +// CHECK:STDOUT: %.loc7_33.1: form = init_form %T.loc7_6.1, call_param1 [symbolic = %.loc7_33.1 (constants.%.e5f)] // CHECK:STDOUT: %pattern_type.loc7_30: type = pattern_type %T.loc7_6.1 [symbolic = %pattern_type.loc7_30 (constants.%pattern_type.51d)] // CHECK:STDOUT: // CHECK:STDOUT: fn(%pair.param: @F.%tuple.type (%tuple.type.07a)) -> @F.%T.loc7_6.1 (%T); @@ -623,6 +638,7 @@ fn G(pair: (C, D)) -> D { // CHECK:STDOUT: %tuple => constants.%tuple.11e // CHECK:STDOUT: %tuple.type => constants.%tuple.type.07a // CHECK:STDOUT: %pattern_type.loc7_16 => constants.%pattern_type.c3f +// CHECK:STDOUT: %.loc7_33.1 => constants.%.e5f // CHECK:STDOUT: %pattern_type.loc7_30 => constants.%pattern_type.51d // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/deduce/type_operator.carbon b/toolchain/check/testdata/deduce/type_operator.carbon index 05043a2bbedd..47baf1dc18ed 100644 --- a/toolchain/check/testdata/deduce/type_operator.carbon +++ b/toolchain/check/testdata/deduce/type_operator.carbon @@ -79,6 +79,7 @@ fn G(p: C*) -> const C { // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %ptr.e8f: type = ptr_type %T [symbolic] // CHECK:STDOUT: %pattern_type.4f4: type = pattern_type %ptr.e8f [symbolic] +// CHECK:STDOUT: %.e5f: form = init_form %T, call_param1 [symbolic] // CHECK:STDOUT: %pattern_type.51d: type = pattern_type %T [symbolic] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] @@ -87,6 +88,7 @@ fn G(p: C*) -> const C { // CHECK:STDOUT: %F.specific_fn.643: = specific_function %F, @F(%T) [symbolic] // CHECK:STDOUT: %ptr.31e: type = ptr_type %C [concrete] // CHECK:STDOUT: %pattern_type.506: type = pattern_type %ptr.31e [concrete] +// CHECK:STDOUT: %.887: form = init_form %C, call_param1 [concrete] // CHECK:STDOUT: %pattern_type.7c7: type = pattern_type %C [concrete] // CHECK:STDOUT: %G.type: type = fn_type @G [concrete] // CHECK:STDOUT: %G: %G.type = struct_value () [concrete] @@ -118,6 +120,7 @@ fn G(p: C*) -> const C { // CHECK:STDOUT: %return.param_patt: @F.%pattern_type.loc6_23 (%pattern_type.51d) = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc6_26: type = name_ref T, %T.loc6_6.2 [symbolic = %T.loc6_6.1 (constants.%T)] +// CHECK:STDOUT: %.loc6_26.2: form = init_form %T.ref.loc6_26, call_param1 [symbolic = %.loc6_26.1 (constants.%.e5f)] // CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] // CHECK:STDOUT: %T.loc6_6.2: type = symbolic_binding T, 0 [symbolic = %T.loc6_6.1 (constants.%T)] // CHECK:STDOUT: %p.param: @F.%ptr.loc6_20.1 (%ptr.e8f) = value_param call_param0 @@ -136,6 +139,7 @@ fn G(p: C*) -> const C { // CHECK:STDOUT: %return.param_patt: %pattern_type.7c7 = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc8_16: type = name_ref C, file.%C.decl [concrete = constants.%C] +// CHECK:STDOUT: %.loc8_16: form = init_form %C.ref.loc8_16, call_param1 [concrete = constants.%.887] // CHECK:STDOUT: %p.param: %ptr.31e = value_param call_param0 // CHECK:STDOUT: %.loc8_10: type = splice_block %ptr [concrete = constants.%ptr.31e] { // CHECK:STDOUT: %C.ref.loc8_9: type = name_ref C, file.%C.decl [concrete = constants.%C] @@ -159,6 +163,7 @@ fn G(p: C*) -> const C { // CHECK:STDOUT: %T.loc6_6.1: type = symbolic_binding T, 0 [symbolic = %T.loc6_6.1 (constants.%T)] // CHECK:STDOUT: %ptr.loc6_20.1: type = ptr_type %T.loc6_6.1 [symbolic = %ptr.loc6_20.1 (constants.%ptr.e8f)] // CHECK:STDOUT: %pattern_type.loc6_16: type = pattern_type %ptr.loc6_20.1 [symbolic = %pattern_type.loc6_16 (constants.%pattern_type.4f4)] +// CHECK:STDOUT: %.loc6_26.1: form = init_form %T.loc6_6.1, call_param1 [symbolic = %.loc6_26.1 (constants.%.e5f)] // CHECK:STDOUT: %pattern_type.loc6_23: type = pattern_type %T.loc6_6.1 [symbolic = %pattern_type.loc6_23 (constants.%pattern_type.51d)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -191,6 +196,7 @@ fn G(p: C*) -> const C { // CHECK:STDOUT: %T.loc6_6.1 => constants.%T // CHECK:STDOUT: %ptr.loc6_20.1 => constants.%ptr.e8f // CHECK:STDOUT: %pattern_type.loc6_16 => constants.%pattern_type.4f4 +// CHECK:STDOUT: %.loc6_26.1 => constants.%.e5f // CHECK:STDOUT: %pattern_type.loc6_23 => constants.%pattern_type.51d // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -203,6 +209,7 @@ fn G(p: C*) -> const C { // CHECK:STDOUT: %T.loc6_6.1 => constants.%C // CHECK:STDOUT: %ptr.loc6_20.1 => constants.%ptr.31e // CHECK:STDOUT: %pattern_type.loc6_16 => constants.%pattern_type.506 +// CHECK:STDOUT: %.loc6_26.1 => constants.%.887 // CHECK:STDOUT: %pattern_type.loc6_23 => constants.%pattern_type.7c7 // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -224,6 +231,7 @@ fn G(p: C*) -> const C { // CHECK:STDOUT: %const.4ff: type = const_type %T [symbolic] // CHECK:STDOUT: %ptr.a15: type = ptr_type %const.4ff [symbolic] // CHECK:STDOUT: %pattern_type.26f: type = pattern_type %ptr.a15 [symbolic] +// CHECK:STDOUT: %.e5f: form = init_form %T, call_param1 [symbolic] // CHECK:STDOUT: %pattern_type.51d: type = pattern_type %T [symbolic] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] @@ -233,6 +241,7 @@ fn G(p: C*) -> const C { // CHECK:STDOUT: %const.0e5: type = const_type %C [concrete] // CHECK:STDOUT: %ptr.c45: type = ptr_type %const.0e5 [concrete] // CHECK:STDOUT: %pattern_type.6eb: type = pattern_type %ptr.c45 [concrete] +// CHECK:STDOUT: %.887: form = init_form %C, call_param1 [concrete] // CHECK:STDOUT: %pattern_type.7c7: type = pattern_type %C [concrete] // CHECK:STDOUT: %G.type: type = fn_type @G [concrete] // CHECK:STDOUT: %G: %G.type = struct_value () [concrete] @@ -264,6 +273,7 @@ fn G(p: C*) -> const C { // CHECK:STDOUT: %return.param_patt: @F.%pattern_type.loc6_29 (%pattern_type.51d) = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc6_32: type = name_ref T, %T.loc6_6.2 [symbolic = %T.loc6_6.1 (constants.%T)] +// CHECK:STDOUT: %.loc6_32.2: form = init_form %T.ref.loc6_32, call_param1 [symbolic = %.loc6_32.1 (constants.%.e5f)] // CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] // CHECK:STDOUT: %T.loc6_6.2: type = symbolic_binding T, 0 [symbolic = %T.loc6_6.1 (constants.%T)] // CHECK:STDOUT: %p.param: @F.%ptr.loc6_26.1 (%ptr.a15) = value_param call_param0 @@ -283,6 +293,7 @@ fn G(p: C*) -> const C { // CHECK:STDOUT: %return.param_patt: %pattern_type.7c7 = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc8_22: type = name_ref C, file.%C.decl [concrete = constants.%C] +// CHECK:STDOUT: %.loc8_22: form = init_form %C.ref.loc8_22, call_param1 [concrete = constants.%.887] // CHECK:STDOUT: %p.param: %ptr.c45 = value_param call_param0 // CHECK:STDOUT: %.loc8_16: type = splice_block %ptr [concrete = constants.%ptr.c45] { // CHECK:STDOUT: %C.ref.loc8_15: type = name_ref C, file.%C.decl [concrete = constants.%C] @@ -308,6 +319,7 @@ fn G(p: C*) -> const C { // CHECK:STDOUT: %const.loc6_19.1: type = const_type %T.loc6_6.1 [symbolic = %const.loc6_19.1 (constants.%const.4ff)] // CHECK:STDOUT: %ptr.loc6_26.1: type = ptr_type %const.loc6_19.1 [symbolic = %ptr.loc6_26.1 (constants.%ptr.a15)] // CHECK:STDOUT: %pattern_type.loc6_16: type = pattern_type %ptr.loc6_26.1 [symbolic = %pattern_type.loc6_16 (constants.%pattern_type.26f)] +// CHECK:STDOUT: %.loc6_32.1: form = init_form %T.loc6_6.1, call_param1 [symbolic = %.loc6_32.1 (constants.%.e5f)] // CHECK:STDOUT: %pattern_type.loc6_29: type = pattern_type %T.loc6_6.1 [symbolic = %pattern_type.loc6_29 (constants.%pattern_type.51d)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -341,6 +353,7 @@ fn G(p: C*) -> const C { // CHECK:STDOUT: %const.loc6_19.1 => constants.%const.4ff // CHECK:STDOUT: %ptr.loc6_26.1 => constants.%ptr.a15 // CHECK:STDOUT: %pattern_type.loc6_16 => constants.%pattern_type.26f +// CHECK:STDOUT: %.loc6_32.1 => constants.%.e5f // CHECK:STDOUT: %pattern_type.loc6_29 => constants.%pattern_type.51d // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -354,6 +367,7 @@ fn G(p: C*) -> const C { // CHECK:STDOUT: %const.loc6_19.1 => constants.%const.0e5 // CHECK:STDOUT: %ptr.loc6_26.1 => constants.%ptr.c45 // CHECK:STDOUT: %pattern_type.loc6_16 => constants.%pattern_type.6eb +// CHECK:STDOUT: %.loc6_32.1 => constants.%.887 // CHECK:STDOUT: %pattern_type.loc6_29 => constants.%pattern_type.7c7 // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -374,6 +388,7 @@ fn G(p: C*) -> const C { // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %ptr.e8f: type = ptr_type %T [symbolic] // CHECK:STDOUT: %pattern_type.4f4: type = pattern_type %ptr.e8f [symbolic] +// CHECK:STDOUT: %.e5f: form = init_form %T, call_param1 [symbolic] // CHECK:STDOUT: %pattern_type.51d: type = pattern_type %T [symbolic] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] @@ -383,6 +398,7 @@ fn G(p: C*) -> const C { // CHECK:STDOUT: %const: type = const_type %C [concrete] // CHECK:STDOUT: %ptr.c45: type = ptr_type %const [concrete] // CHECK:STDOUT: %pattern_type.6eb: type = pattern_type %ptr.c45 [concrete] +// CHECK:STDOUT: %.b91: form = init_form %const, call_param1 [concrete] // CHECK:STDOUT: %pattern_type.03b: type = pattern_type %const [concrete] // CHECK:STDOUT: %G.type: type = fn_type @G [concrete] // CHECK:STDOUT: %G: %G.type = struct_value () [concrete] @@ -414,6 +430,7 @@ fn G(p: C*) -> const C { // CHECK:STDOUT: %return.param_patt: @F.%pattern_type.loc6_23 (%pattern_type.51d) = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc6_26: type = name_ref T, %T.loc6_6.2 [symbolic = %T.loc6_6.1 (constants.%T)] +// CHECK:STDOUT: %.loc6_26.2: form = init_form %T.ref.loc6_26, call_param1 [symbolic = %.loc6_26.1 (constants.%.e5f)] // CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] // CHECK:STDOUT: %T.loc6_6.2: type = symbolic_binding T, 0 [symbolic = %T.loc6_6.1 (constants.%T)] // CHECK:STDOUT: %p.param: @F.%ptr.loc6_20.1 (%ptr.e8f) = value_param call_param0 @@ -433,6 +450,7 @@ fn G(p: C*) -> const C { // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc8_28: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %const.loc8_22: type = const_type %C.ref.loc8_28 [concrete = constants.%const] +// CHECK:STDOUT: %.loc8_22: form = init_form %const.loc8_22, call_param1 [concrete = constants.%.b91] // CHECK:STDOUT: %p.param: %ptr.c45 = value_param call_param0 // CHECK:STDOUT: %.loc8_16: type = splice_block %ptr [concrete = constants.%ptr.c45] { // CHECK:STDOUT: %C.ref.loc8_15: type = name_ref C, file.%C.decl [concrete = constants.%C] @@ -457,6 +475,7 @@ fn G(p: C*) -> const C { // CHECK:STDOUT: %T.loc6_6.1: type = symbolic_binding T, 0 [symbolic = %T.loc6_6.1 (constants.%T)] // CHECK:STDOUT: %ptr.loc6_20.1: type = ptr_type %T.loc6_6.1 [symbolic = %ptr.loc6_20.1 (constants.%ptr.e8f)] // CHECK:STDOUT: %pattern_type.loc6_16: type = pattern_type %ptr.loc6_20.1 [symbolic = %pattern_type.loc6_16 (constants.%pattern_type.4f4)] +// CHECK:STDOUT: %.loc6_26.1: form = init_form %T.loc6_6.1, call_param1 [symbolic = %.loc6_26.1 (constants.%.e5f)] // CHECK:STDOUT: %pattern_type.loc6_23: type = pattern_type %T.loc6_6.1 [symbolic = %pattern_type.loc6_23 (constants.%pattern_type.51d)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -489,6 +508,7 @@ fn G(p: C*) -> const C { // CHECK:STDOUT: %T.loc6_6.1 => constants.%T // CHECK:STDOUT: %ptr.loc6_20.1 => constants.%ptr.e8f // CHECK:STDOUT: %pattern_type.loc6_16 => constants.%pattern_type.4f4 +// CHECK:STDOUT: %.loc6_26.1 => constants.%.e5f // CHECK:STDOUT: %pattern_type.loc6_23 => constants.%pattern_type.51d // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -501,6 +521,7 @@ fn G(p: C*) -> const C { // CHECK:STDOUT: %T.loc6_6.1 => constants.%const // CHECK:STDOUT: %ptr.loc6_20.1 => constants.%ptr.c45 // CHECK:STDOUT: %pattern_type.loc6_16 => constants.%pattern_type.6eb +// CHECK:STDOUT: %.loc6_26.1 => constants.%.b91 // CHECK:STDOUT: %pattern_type.loc6_23 => constants.%pattern_type.03b // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -522,6 +543,7 @@ fn G(p: C*) -> const C { // CHECK:STDOUT: %const.4ff: type = const_type %T [symbolic] // CHECK:STDOUT: %ptr.a15: type = ptr_type %const.4ff [symbolic] // CHECK:STDOUT: %pattern_type.26f: type = pattern_type %ptr.a15 [symbolic] +// CHECK:STDOUT: %.e5f: form = init_form %T, call_param1 [symbolic] // CHECK:STDOUT: %pattern_type.51d: type = pattern_type %T [symbolic] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] @@ -531,6 +553,7 @@ fn G(p: C*) -> const C { // CHECK:STDOUT: %ptr.31e: type = ptr_type %C [concrete] // CHECK:STDOUT: %pattern_type.506: type = pattern_type %ptr.31e [concrete] // CHECK:STDOUT: %const.0e5: type = const_type %C [concrete] +// CHECK:STDOUT: %.b91: form = init_form %const.0e5, call_param1 [concrete] // CHECK:STDOUT: %pattern_type.03b: type = pattern_type %const.0e5 [concrete] // CHECK:STDOUT: %G.type: type = fn_type @G [concrete] // CHECK:STDOUT: %G: %G.type = struct_value () [concrete] @@ -560,6 +583,7 @@ fn G(p: C*) -> const C { // CHECK:STDOUT: %return.param_patt: @F.%pattern_type.loc6_29 (%pattern_type.51d) = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc6_32: type = name_ref T, %T.loc6_6.2 [symbolic = %T.loc6_6.1 (constants.%T)] +// CHECK:STDOUT: %.loc6_32.2: form = init_form %T.ref.loc6_32, call_param1 [symbolic = %.loc6_32.1 (constants.%.e5f)] // CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] // CHECK:STDOUT: %T.loc6_6.2: type = symbolic_binding T, 0 [symbolic = %T.loc6_6.1 (constants.%T)] // CHECK:STDOUT: %p.param: @F.%ptr.loc6_26.1 (%ptr.a15) = value_param call_param0 @@ -580,8 +604,9 @@ fn G(p: C*) -> const C { // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc8_22: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %const: type = const_type %C.ref.loc8_22 [concrete = constants.%const.0e5] +// CHECK:STDOUT: %.loc8_16: form = init_form %const, call_param1 [concrete = constants.%.b91] // CHECK:STDOUT: %p.param: %ptr.31e = value_param call_param0 -// CHECK:STDOUT: %.loc8: type = splice_block %ptr [concrete = constants.%ptr.31e] { +// CHECK:STDOUT: %.loc8_10: type = splice_block %ptr [concrete = constants.%ptr.31e] { // CHECK:STDOUT: %C.ref.loc8_9: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %ptr: type = ptr_type %C.ref.loc8_9 [concrete = constants.%ptr.31e] // CHECK:STDOUT: } @@ -604,6 +629,7 @@ fn G(p: C*) -> const C { // CHECK:STDOUT: %const.loc6_19.1: type = const_type %T.loc6_6.1 [symbolic = %const.loc6_19.1 (constants.%const.4ff)] // CHECK:STDOUT: %ptr.loc6_26.1: type = ptr_type %const.loc6_19.1 [symbolic = %ptr.loc6_26.1 (constants.%ptr.a15)] // CHECK:STDOUT: %pattern_type.loc6_16: type = pattern_type %ptr.loc6_26.1 [symbolic = %pattern_type.loc6_16 (constants.%pattern_type.26f)] +// CHECK:STDOUT: %.loc6_32.1: form = init_form %T.loc6_6.1, call_param1 [symbolic = %.loc6_32.1 (constants.%.e5f)] // CHECK:STDOUT: %pattern_type.loc6_29: type = pattern_type %T.loc6_6.1 [symbolic = %pattern_type.loc6_29 (constants.%pattern_type.51d)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -634,6 +660,7 @@ fn G(p: C*) -> const C { // CHECK:STDOUT: %const.loc6_19.1 => constants.%const.4ff // CHECK:STDOUT: %ptr.loc6_26.1 => constants.%ptr.a15 // CHECK:STDOUT: %pattern_type.loc6_16 => constants.%pattern_type.26f +// CHECK:STDOUT: %.loc6_32.1 => constants.%.e5f // CHECK:STDOUT: %pattern_type.loc6_29 => constants.%pattern_type.51d // CHECK:STDOUT: // CHECK:STDOUT: !definition: diff --git a/toolchain/check/testdata/facet/access.carbon b/toolchain/check/testdata/facet/access.carbon index 25e3eaf91858..6da37c558d4c 100644 --- a/toolchain/check/testdata/facet/access.carbon +++ b/toolchain/check/testdata/facet/access.carbon @@ -465,6 +465,7 @@ fn F2(U:! Z) { // CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.%I.Make.decl [concrete] // CHECK:STDOUT: %T: %I.type = symbolic_binding T, 0 [symbolic] // CHECK:STDOUT: %T.binding.as_type: type = symbolic_binding_type T, 0, %T [symbolic] +// CHECK:STDOUT: %.a23: form = init_form %T.binding.as_type, call_param0 [symbolic] // CHECK:STDOUT: %pattern_type.422: type = pattern_type %T.binding.as_type [symbolic] // CHECK:STDOUT: %I.lookup_impl_witness: = lookup_impl_witness %T, @I [symbolic] // CHECK:STDOUT: %.37d: type = fn_type_with_self_type %I.Make.type, %T [symbolic] @@ -502,6 +503,7 @@ fn F2(U:! Z) { // CHECK:STDOUT: specific @Use(constants.%T) { // CHECK:STDOUT: %T.loc8_8.1 => constants.%T // CHECK:STDOUT: %T.binding.as_type => constants.%T.binding.as_type +// CHECK:STDOUT: %.loc8_18.1 => constants.%.a23 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.422 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -516,6 +518,7 @@ fn F2(U:! Z) { // CHECK:STDOUT: %pattern_type.9d9: type = pattern_type %I.type [concrete] // CHECK:STDOUT: %T.binding.as_type: type = symbolic_binding_type T, 0, %T [symbolic] // CHECK:STDOUT: %pattern_type.422: type = pattern_type %T.binding.as_type [symbolic] +// CHECK:STDOUT: %.33a: form = init_form %T.binding.as_type, call_param1 [symbolic] // CHECK:STDOUT: %Use.type: type = fn_type @Use [concrete] // CHECK:STDOUT: %Use: %Use.type = struct_value () [concrete] // CHECK:STDOUT: %require_complete: = require_complete_type %T.binding.as_type [symbolic] @@ -538,7 +541,8 @@ fn F2(U:! Z) { // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc9_24: %I.type = name_ref T, %T.loc9_8.2 [symbolic = %T.loc9_8.1 (constants.%T)] // CHECK:STDOUT: %T.as_type.loc9_24: type = facet_access_type %T.ref.loc9_24 [symbolic = %T.binding.as_type (constants.%T.binding.as_type)] -// CHECK:STDOUT: %.loc9_24: type = converted %T.ref.loc9_24, %T.as_type.loc9_24 [symbolic = %T.binding.as_type (constants.%T.binding.as_type)] +// CHECK:STDOUT: %.loc9_24.2: type = converted %T.ref.loc9_24, %T.as_type.loc9_24 [symbolic = %T.binding.as_type (constants.%T.binding.as_type)] +// CHECK:STDOUT: %.loc9_24.3: form = init_form %.loc9_24.2, call_param1 [symbolic = %.loc9_24.1 (constants.%.33a)] // CHECK:STDOUT: %.loc9_12: type = splice_block %I.ref [concrete = constants.%I.type] { // CHECK:STDOUT: // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] @@ -560,6 +564,7 @@ fn F2(U:! Z) { // CHECK:STDOUT: %T.loc9_8.1: %I.type = symbolic_binding T, 0 [symbolic = %T.loc9_8.1 (constants.%T)] // CHECK:STDOUT: %T.binding.as_type: type = symbolic_binding_type T, 0, %T.loc9_8.1 [symbolic = %T.binding.as_type (constants.%T.binding.as_type)] // CHECK:STDOUT: %pattern_type: type = pattern_type %T.binding.as_type [symbolic = %pattern_type (constants.%pattern_type.422)] +// CHECK:STDOUT: %.loc9_24.1: form = init_form %T.binding.as_type, call_param1 [symbolic = %.loc9_24.1 (constants.%.33a)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete: = require_complete_type %T.binding.as_type [symbolic = %require_complete (constants.%require_complete)] @@ -586,6 +591,7 @@ fn F2(U:! Z) { // CHECK:STDOUT: %T.loc9_8.1 => constants.%T // CHECK:STDOUT: %T.binding.as_type => constants.%T.binding.as_type // CHECK:STDOUT: %pattern_type => constants.%pattern_type.422 +// CHECK:STDOUT: %.loc9_24.1 => constants.%.33a // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- access_selfless_method.carbon @@ -645,6 +651,7 @@ fn F2(U:! Z) { // CHECK:STDOUT: %T: %I.type = symbolic_binding T, 0 [symbolic] // CHECK:STDOUT: %T.binding.as_type: type = symbolic_binding_type T, 0, %T [symbolic] // CHECK:STDOUT: %pattern_type.422: type = pattern_type %T.binding.as_type [symbolic] +// CHECK:STDOUT: %.33a: form = init_form %T.binding.as_type, call_param1 [symbolic] // CHECK:STDOUT: %I.lookup_impl_witness: = lookup_impl_witness %T, @I [symbolic] // CHECK:STDOUT: %.854: type = fn_type_with_self_type %I.Copy.type, %T [symbolic] // CHECK:STDOUT: %impl.elem0: %.854 = impl_witness_access %I.lookup_impl_witness, element0 [symbolic] @@ -685,6 +692,7 @@ fn F2(U:! Z) { // CHECK:STDOUT: %T.loc8_16.1 => constants.%T // CHECK:STDOUT: %T.binding.as_type => constants.%T.binding.as_type // CHECK:STDOUT: %pattern_type => constants.%pattern_type.422 +// CHECK:STDOUT: %.loc8_32.1 => constants.%.33a // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- access_constant_in_self_facet.carbon @@ -704,6 +712,7 @@ fn F2(U:! Z) { // CHECK:STDOUT: %pattern_type.dc8: type = pattern_type %A_where.type [concrete] // CHECK:STDOUT: %AA.binding.as_type: type = symbolic_binding_type AA, 0, %AA [symbolic] // CHECK:STDOUT: %A.lookup_impl_witness.6c3: = lookup_impl_witness %AA, @A [symbolic] +// CHECK:STDOUT: %.62c: form = init_form %empty_tuple.type, call_param0 [concrete] // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] @@ -721,8 +730,9 @@ fn F2(U:! Z) { // CHECK:STDOUT: %AA.ref: %A_where.type = name_ref AA, %AA.loc6_6.2 [symbolic = %AA.loc6_6.1 (constants.%AA)] // CHECK:STDOUT: %X.ref.loc6_33: %A.assoc_type = name_ref X, @X.%assoc0 [concrete = constants.%assoc0] // CHECK:STDOUT: %AA.as_type: type = facet_access_type %AA.ref [symbolic = %AA.binding.as_type (constants.%AA.binding.as_type)] -// CHECK:STDOUT: %.loc6_33: type = converted %AA.ref, %AA.as_type [symbolic = %AA.binding.as_type (constants.%AA.binding.as_type)] +// CHECK:STDOUT: %.loc6_33.1: type = converted %AA.ref, %AA.as_type [symbolic = %AA.binding.as_type (constants.%AA.binding.as_type)] // CHECK:STDOUT: %impl.elem0.loc6_33: type = impl_witness_access constants.%A.lookup_impl_witness.6c3, element0 [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %.loc6_33.2: form = init_form %impl.elem0.loc6_33, call_param0 [concrete = constants.%.62c] // CHECK:STDOUT: %.loc6_13.1: type = splice_block %.loc6_13.2 [concrete = constants.%A_where.type] { // CHECK:STDOUT: // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [concrete = constants.%A.type] @@ -800,10 +810,12 @@ fn F2(U:! Z) { // CHECK:STDOUT: %pattern_type.77e: type = pattern_type %facet_type.82c [concrete] // CHECK:STDOUT: %AB.binding.as_type: type = symbolic_binding_type AB, 0, %AB [symbolic] // CHECK:STDOUT: %A.lookup_impl_witness.1b9: = lookup_impl_witness %AB, @A [symbolic] +// CHECK:STDOUT: %.62c: form = init_form %empty_tuple.type, call_param0 [concrete] // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] // CHECK:STDOUT: %B.lookup_impl_witness.97b: = lookup_impl_witness %AB, @B [symbolic] +// CHECK:STDOUT: %.e6e: form = init_form %empty_struct_type, call_param0 [concrete] // CHECK:STDOUT: %pattern_type.a96: type = pattern_type %empty_struct_type [concrete] // CHECK:STDOUT: %G.type: type = fn_type @G [concrete] // CHECK:STDOUT: %G: %G.type = struct_value () [concrete] @@ -823,8 +835,9 @@ fn F2(U:! Z) { // CHECK:STDOUT: %AB.ref: %facet_type.82c = name_ref AB, %AB.loc14_6.2 [symbolic = %AB.loc14_6.1 (constants.%AB)] // CHECK:STDOUT: %X.ref.loc14_49: %A.assoc_type = name_ref X, @X.%assoc0 [concrete = constants.%assoc0.c5a] // CHECK:STDOUT: %AB.as_type: type = facet_access_type %AB.ref [symbolic = %AB.binding.as_type (constants.%AB.binding.as_type)] -// CHECK:STDOUT: %.loc14_49: type = converted %AB.ref, %AB.as_type [symbolic = %AB.binding.as_type (constants.%AB.binding.as_type)] +// CHECK:STDOUT: %.loc14_49.1: type = converted %AB.ref, %AB.as_type [symbolic = %AB.binding.as_type (constants.%AB.binding.as_type)] // CHECK:STDOUT: %impl.elem0.loc14_49: type = impl_witness_access constants.%A.lookup_impl_witness.1b9, element0 [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %.loc14_49.2: form = init_form %impl.elem0.loc14_49, call_param0 [concrete = constants.%.62c] // CHECK:STDOUT: %.loc14_17.1: type = splice_block %.loc14_17.2 [concrete = constants.%facet_type.82c] { // CHECK:STDOUT: // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [concrete = constants.%A.type] @@ -867,8 +880,9 @@ fn F2(U:! Z) { // CHECK:STDOUT: %AB.ref: %facet_type.82c = name_ref AB, %AB.loc18_6.2 [symbolic = %AB.loc18_6.1 (constants.%AB)] // CHECK:STDOUT: %Y.ref.loc18_49: %B.assoc_type = name_ref Y, @Y.%assoc0 [concrete = constants.%assoc0.a7f] // CHECK:STDOUT: %AB.as_type: type = facet_access_type %AB.ref [symbolic = %AB.binding.as_type (constants.%AB.binding.as_type)] -// CHECK:STDOUT: %.loc18_49: type = converted %AB.ref, %AB.as_type [symbolic = %AB.binding.as_type (constants.%AB.binding.as_type)] +// CHECK:STDOUT: %.loc18_49.1: type = converted %AB.ref, %AB.as_type [symbolic = %AB.binding.as_type (constants.%AB.binding.as_type)] // CHECK:STDOUT: %impl.elem0.loc18_49: type = impl_witness_access constants.%B.lookup_impl_witness.97b, element0 [concrete = constants.%empty_struct_type] +// CHECK:STDOUT: %.loc18_49.2: form = init_form %impl.elem0.loc18_49, call_param0 [concrete = constants.%.e6e] // CHECK:STDOUT: %.loc18_17.1: type = splice_block %.loc18_17.2 [concrete = constants.%facet_type.82c] { // CHECK:STDOUT: // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [concrete = constants.%A.type] diff --git a/toolchain/check/testdata/facet/fail_deduction_uses_runtime_type_conversion.carbon b/toolchain/check/testdata/facet/fail_deduction_uses_runtime_type_conversion.carbon index 257fa75381aa..a92733ece1d7 100644 --- a/toolchain/check/testdata/facet/fail_deduction_uses_runtime_type_conversion.carbon +++ b/toolchain/check/testdata/facet/fail_deduction_uses_runtime_type_conversion.carbon @@ -63,6 +63,7 @@ fn G(holds_to: HoldsType((RuntimeConvertTo, )), from:! RuntimeConvertFrom) { // CHECK:STDOUT: %ImplicitAs.impl_witness: = impl_witness @RuntimeConvertFrom.as.ImplicitAs.impl.%ImplicitAs.impl_witness_table [concrete] // CHECK:STDOUT: %ImplicitAs.Convert.type.559: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%RuntimeConvertTo) [concrete] // CHECK:STDOUT: %pattern_type.6bd: type = pattern_type %RuntimeConvertFrom [concrete] +// CHECK:STDOUT: %.95e: form = init_form %RuntimeConvertTo, call_param1 [concrete] // CHECK:STDOUT: %pattern_type.c89: type = pattern_type %RuntimeConvertTo [concrete] // CHECK:STDOUT: %RuntimeConvertFrom.as.ImplicitAs.impl.Convert.type: type = fn_type @RuntimeConvertFrom.as.ImplicitAs.impl.Convert [concrete] // CHECK:STDOUT: %RuntimeConvertFrom.as.ImplicitAs.impl.Convert: %RuntimeConvertFrom.as.ImplicitAs.impl.Convert.type = struct_value () [concrete] @@ -188,6 +189,7 @@ fn G(holds_to: HoldsType((RuntimeConvertTo, )), from:! RuntimeConvertFrom) { // CHECK:STDOUT: %return.param_patt: %pattern_type.c89 = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %RuntimeConvertTo.ref: type = name_ref RuntimeConvertTo, file.%RuntimeConvertTo.decl [concrete = constants.%RuntimeConvertTo] +// CHECK:STDOUT: %.loc24_31: form = init_form %RuntimeConvertTo.ref, call_param1 [concrete = constants.%.95e] // CHECK:STDOUT: %self.param: %RuntimeConvertFrom = value_param call_param0 // CHECK:STDOUT: %Self.ref: type = name_ref Self, @RuntimeConvertFrom.as.ImplicitAs.impl.%RuntimeConvertFrom.ref [concrete = constants.%RuntimeConvertFrom] // CHECK:STDOUT: %self: %RuntimeConvertFrom = value_binding self, %self.param diff --git a/toolchain/check/testdata/facet/period_self.carbon b/toolchain/check/testdata/facet/period_self.carbon index 9da7197a78e8..0401a4720e39 100644 --- a/toolchain/check/testdata/facet/period_self.carbon +++ b/toolchain/check/testdata/facet/period_self.carbon @@ -379,6 +379,7 @@ fn F[U:! Core.Destroy where .Self impls I(.Self)](u: U) { // CHECK:STDOUT: %T.binding.as_type: type = symbolic_binding_type T, 0, %T.706 [symbolic] // CHECK:STDOUT: %I.lookup_impl_witness.94d: = lookup_impl_witness %T.706, @I, @I(%.Self.binding.as_type.8db) [symbolic] // CHECK:STDOUT: %I.facet: %I.type.bee = facet_value %T.binding.as_type, (%I.lookup_impl_witness.94d) [symbolic] +// CHECK:STDOUT: %.62c: form = init_form %empty_tuple.type, call_param0 [concrete] // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] @@ -407,6 +408,7 @@ fn F[U:! Core.Destroy where .Self impls I(.Self)](u: U) { // CHECK:STDOUT: %T.as_type: type = facet_access_type %T.ref [symbolic = %T.binding.as_type (constants.%T.binding.as_type)] // CHECK:STDOUT: %.loc8_39.2: type = converted %T.ref, %T.as_type [symbolic = %T.binding.as_type (constants.%T.binding.as_type)] // CHECK:STDOUT: %impl.elem0.loc8_39: type = impl_witness_access constants.%I.lookup_impl_witness.94d, element0 [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %.loc8_39.3: form = init_form %impl.elem0.loc8_39, call_param0 [concrete = constants.%.62c] // CHECK:STDOUT: %.loc8_19.1: type = splice_block %.loc8_19.2 [symbolic_self = constants.%I_where.type] { // CHECK:STDOUT: // CHECK:STDOUT: %I.ref: %I.type.609 = name_ref I, file.%I.decl [concrete = constants.%I.generic] @@ -443,6 +445,7 @@ fn F[U:! Core.Destroy where .Self impls I(.Self)](u: U) { // CHECK:STDOUT: %T.as_type: type = facet_access_type %T.ref [symbolic = %T.binding.as_type (constants.%T.binding.as_type)] // CHECK:STDOUT: %.loc12_47.2: type = converted %T.ref, %T.as_type [symbolic = %T.binding.as_type (constants.%T.binding.as_type)] // CHECK:STDOUT: %impl.elem0.loc12_47: type = impl_witness_access constants.%I.lookup_impl_witness.94d, element0 [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %.loc12_47.3: form = init_form %impl.elem0.loc12_47, call_param0 [concrete = constants.%.62c] // CHECK:STDOUT: %.loc12_27.1: type = splice_block %.loc12_27.2 [symbolic_self = constants.%I_where.type] { // CHECK:STDOUT: // CHECK:STDOUT: %I.ref: %I.type.609 = name_ref I, file.%I.decl [concrete = constants.%I.generic] diff --git a/toolchain/check/testdata/facet/self_in_interface_param.carbon b/toolchain/check/testdata/facet/self_in_interface_param.carbon index ed3733a2abb4..e6a24cd6deb1 100644 --- a/toolchain/check/testdata/facet/self_in_interface_param.carbon +++ b/toolchain/check/testdata/facet/self_in_interface_param.carbon @@ -44,6 +44,7 @@ fn G(_:! I(.Self) where .I1 = ()) {} // CHECK:STDOUT: %pattern_type.033: type = pattern_type %I_where.type [symbolic_self] // CHECK:STDOUT: %T.binding.as_type: type = symbolic_binding_type T, 0, %T.706 [symbolic] // CHECK:STDOUT: %I.lookup_impl_witness.94d: = lookup_impl_witness %T.706, @I, @I(%.Self.binding.as_type.8db) [symbolic] +// CHECK:STDOUT: %.62c: form = init_form %empty_tuple.type, call_param0 [concrete] // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] @@ -61,6 +62,7 @@ fn G(_:! I(.Self) where .I1 = ()) {} // CHECK:STDOUT: %T.as_type: type = facet_access_type %T.ref [symbolic = %T.binding.as_type (constants.%T.binding.as_type)] // CHECK:STDOUT: %.loc18_39.2: type = converted %T.ref, %T.as_type [symbolic = %T.binding.as_type (constants.%T.binding.as_type)] // CHECK:STDOUT: %impl.elem0.loc18_39: type = impl_witness_access constants.%I.lookup_impl_witness.94d, element0 [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %.loc18_39.3: form = init_form %impl.elem0.loc18_39, call_param0 [concrete = constants.%.62c] // CHECK:STDOUT: %.loc18_19.1: type = splice_block %.loc18_19.2 [symbolic_self = constants.%I_where.type] { // CHECK:STDOUT: // CHECK:STDOUT: %I.ref: %I.type.609 = name_ref I, file.%I.decl [concrete = constants.%I.generic] diff --git a/toolchain/check/testdata/for/actual.carbon b/toolchain/check/testdata/for/actual.carbon index a6364ed1cee5..9a6a3a50547d 100644 --- a/toolchain/check/testdata/for/actual.carbon +++ b/toolchain/check/testdata/for/actual.carbon @@ -66,6 +66,7 @@ fn Read(y:! Core.IntLiteral()) { // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %Int.fc6021.1: type = class_type @Int, @Int(%N) [symbolic] // CHECK:STDOUT: %pattern_type.764eab.1: type = pattern_type %Int.fc6021.1 [symbolic] +// CHECK:STDOUT: %.5f2: form = init_form %IntRange.265, call_param2 [symbolic] // CHECK:STDOUT: %pattern_type.b16: type = pattern_type %IntRange.265 [symbolic] // CHECK:STDOUT: %IntRange.Make.type.1df: type = fn_type @IntRange.Make, @IntRange(%N) [symbolic] // CHECK:STDOUT: %IntRange.Make.8a9: %IntRange.Make.type.1df = struct_value () [symbolic] @@ -89,6 +90,7 @@ fn Read(y:! Core.IntLiteral()) { // CHECK:STDOUT: %require_complete.9019d7.1: = require_complete_type %Int.fc6021.1 [symbolic] // CHECK:STDOUT: %Int.as.Copy.impl.Op.type.824: type = fn_type @Int.as.Copy.impl.Op, @Int.as.Copy.impl(%N) [symbolic] // CHECK:STDOUT: %Int.as.Copy.impl.Op.9b9: %Int.as.Copy.impl.Op.type.824 = struct_value () [symbolic] +// CHECK:STDOUT: %.7b282e.1: form = init_form %Int.fc6021.1, call_param1 [symbolic] // CHECK:STDOUT: %.4f8: require_specific_def_type = require_specific_def @Int.as.Copy.impl(%N) [symbolic] // CHECK:STDOUT: %Copy.lookup_impl_witness.7a8: = lookup_impl_witness %Int.fc6021.1, @Copy [symbolic] // CHECK:STDOUT: %facet_value: %facet_type = facet_value %Int.fc6021.1, (%custom_witness.8095d9.1, %Copy.lookup_impl_witness.7a8) [symbolic] @@ -111,6 +113,7 @@ fn Read(y:! Core.IntLiteral()) { // CHECK:STDOUT: %OptionalStorage.lookup_impl_witness.b62: = lookup_impl_witness %Int.fc6021.1, @OptionalStorage [symbolic] // CHECK:STDOUT: %OptionalStorage.facet.01e: %OptionalStorage.type = facet_value %Int.fc6021.1, (%OptionalStorage.lookup_impl_witness.b62) [symbolic] // CHECK:STDOUT: %Optional.e48: type = class_type @Optional, @Optional(%OptionalStorage.facet.01e) [symbolic] +// CHECK:STDOUT: %.6a7: form = init_form %Optional.e48, call_param2 [symbolic] // CHECK:STDOUT: %pattern_type.0c2: type = pattern_type %Optional.e48 [symbolic] // CHECK:STDOUT: %IntRange.as.Iterate.impl.Next.type: type = fn_type @IntRange.as.Iterate.impl.Next, @IntRange.as.Iterate.impl(%N) [symbolic] // CHECK:STDOUT: %IntRange.as.Iterate.impl.Next: %IntRange.as.Iterate.impl.Next.type = struct_value () [symbolic] @@ -168,6 +171,7 @@ fn Read(y:! Core.IntLiteral()) { // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %IntRange.a89: type = class_type @IntRange, @IntRange(%int_32) [concrete] +// CHECK:STDOUT: %.273: form = init_form %IntRange.a89, call_param1 [concrete] // CHECK:STDOUT: %pattern_type.615: type = pattern_type %IntRange.a89 [concrete] // CHECK:STDOUT: %Range.type: type = fn_type @Range [concrete] // CHECK:STDOUT: %Range: %Range.type = struct_value () [concrete] @@ -183,6 +187,7 @@ fn Read(y:! Core.IntLiteral()) { // CHECK:STDOUT: %struct_type.start.end.d0a: type = struct_type {.start: %i32, .end: %i32} [concrete] // CHECK:STDOUT: %complete_type.c45: = complete_type_witness %struct_type.start.end.d0a [concrete] // CHECK:STDOUT: %int_0.5c6: Core.IntLiteral = int_value 0 [concrete] +// CHECK:STDOUT: %.e73: form = init_form %IntRange.a89, call_param2 [concrete] // CHECK:STDOUT: %IntRange.Make.specific_fn: = specific_function %IntRange.Make.3e9, @IntRange.Make(%int_32) [concrete] // CHECK:STDOUT: %ImplicitAs.type.e8c: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] // CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete] @@ -277,6 +282,7 @@ fn Read(y:! Core.IntLiteral()) { // CHECK:STDOUT: %IntRange.ref.loc26: %IntRange.type = name_ref IntRange, file.%IntRange.decl [concrete = constants.%IntRange.generic] // CHECK:STDOUT: %int_32.loc26_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %IntRange.loc26: type = class_type @IntRange, @IntRange(constants.%int_32) [concrete = constants.%IntRange.a89] +// CHECK:STDOUT: %.loc26_34: form = init_form %IntRange.loc26, call_param1 [concrete = constants.%.273] // CHECK:STDOUT: %end.param: %i32 = value_param call_param0 // CHECK:STDOUT: %.loc26_15: type = splice_block %i32 [concrete = constants.%i32] { // CHECK:STDOUT: %int_32.loc26_15: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] @@ -318,6 +324,7 @@ fn Read(y:! Core.IntLiteral()) { // CHECK:STDOUT: %Int.ref: %Int.type = name_ref Int, imports.%Core.Int [concrete = constants.%Int.generic] // CHECK:STDOUT: %N.ref: Core.IntLiteral = name_ref N, @IntRange.%N.loc4_16.2 [symbolic = %N (constants.%N)] // CHECK:STDOUT: %Int.loc10_45.2: type = class_type @Int, @Int(constants.%N) [symbolic = %Int.loc10_45.1 (constants.%Int.fc6021.1)] +// CHECK:STDOUT: %.loc10_45.2: form = init_form %Int.loc10_45.2, call_param1 [symbolic = %.loc10_45.1 (constants.%.7b282e.1)] // CHECK:STDOUT: %self.param: @IntRange.as.Iterate.impl.NewCursor.%IntRange (%IntRange.265) = value_param call_param0 // CHECK:STDOUT: %.loc10_24.1: type = splice_block %Self.ref [symbolic = %IntRange (constants.%IntRange.265)] { // CHECK:STDOUT: %.loc10_24.2: type = specific_constant constants.%IntRange.265, @IntRange(constants.%N) [symbolic = %IntRange (constants.%IntRange.265)] @@ -342,8 +349,9 @@ fn Read(y:! Core.IntLiteral()) { // CHECK:STDOUT: %N.ref.loc11_73: Core.IntLiteral = name_ref N, @IntRange.%N.loc4_16.2 [symbolic = %N (constants.%N)] // CHECK:STDOUT: %Int.loc11_74: type = class_type @Int, @Int(constants.%N) [symbolic = %Int.loc11_43.1 (constants.%Int.fc6021.1)] // CHECK:STDOUT: %OptionalStorage.facet.loc11_75.2: %OptionalStorage.type = facet_value %Int.loc11_74, (constants.%OptionalStorage.lookup_impl_witness.b62) [symbolic = %OptionalStorage.facet.loc11_75.1 (constants.%OptionalStorage.facet.01e)] -// CHECK:STDOUT: %.loc11_75.2: %OptionalStorage.type = converted %Int.loc11_74, %OptionalStorage.facet.loc11_75.2 [symbolic = %OptionalStorage.facet.loc11_75.1 (constants.%OptionalStorage.facet.01e)] +// CHECK:STDOUT: %.loc11_75.3: %OptionalStorage.type = converted %Int.loc11_74, %OptionalStorage.facet.loc11_75.2 [symbolic = %OptionalStorage.facet.loc11_75.1 (constants.%OptionalStorage.facet.01e)] // CHECK:STDOUT: %Optional.loc11_75.2: type = class_type @Optional, @Optional(constants.%OptionalStorage.facet.01e) [symbolic = %Optional.loc11_75.1 (constants.%Optional.e48)] +// CHECK:STDOUT: %.loc11_75.4: form = init_form %Optional.loc11_75.2, call_param2 [symbolic = %.loc11_75.2 (constants.%.6a7)] // CHECK:STDOUT: %self.param: @IntRange.as.Iterate.impl.Next.%IntRange (%IntRange.265) = value_param call_param0 // CHECK:STDOUT: %.loc11_19.1: type = splice_block %Self.ref [symbolic = %IntRange (constants.%IntRange.265)] { // CHECK:STDOUT: %.loc11_19.2: type = specific_constant constants.%IntRange.265, @IntRange(constants.%N) [symbolic = %IntRange (constants.%IntRange.265)] @@ -398,8 +406,9 @@ fn Read(y:! Core.IntLiteral()) { // CHECK:STDOUT: %return.patt: @IntRange.Make.%pattern_type.loc5_49 (%pattern_type.b16) = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: @IntRange.Make.%pattern_type.loc5_49 (%pattern_type.b16) = out_param_pattern %return.patt, call_param2 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %.loc5_52: type = specific_constant constants.%IntRange.265, @IntRange(constants.%N) [symbolic = %IntRange (constants.%IntRange.265)] -// CHECK:STDOUT: %Self.ref: type = name_ref Self, %.loc5_52 [symbolic = %IntRange (constants.%IntRange.265)] +// CHECK:STDOUT: %.loc5_52.2: type = specific_constant constants.%IntRange.265, @IntRange(constants.%N) [symbolic = %IntRange (constants.%IntRange.265)] +// CHECK:STDOUT: %Self.ref: type = name_ref Self, %.loc5_52.2 [symbolic = %IntRange (constants.%IntRange.265)] +// CHECK:STDOUT: %.loc5_52.3: form = init_form %Self.ref, call_param2 [symbolic = %.loc5_52.1 (constants.%.5f2)] // CHECK:STDOUT: %start.param: @IntRange.Make.%Int.loc5_28.1 (%Int.fc6021.1) = value_param call_param0 // CHECK:STDOUT: %.loc5_28: type = splice_block %Int.loc5_28.2 [symbolic = %Int.loc5_28.1 (constants.%Int.fc6021.1)] { // CHECK:STDOUT: %Core.ref.loc5_18: = name_ref Core, imports.%Core [concrete = imports.%Core] @@ -477,6 +486,7 @@ fn Read(y:! Core.IntLiteral()) { // CHECK:STDOUT: %Int.loc5_28.1: type = class_type @Int, @Int(%N) [symbolic = %Int.loc5_28.1 (constants.%Int.fc6021.1)] // CHECK:STDOUT: %pattern_type.loc5_11: type = pattern_type %Int.loc5_28.1 [symbolic = %pattern_type.loc5_11 (constants.%pattern_type.764eab.1)] // CHECK:STDOUT: %IntRange: type = class_type @IntRange, @IntRange(%N) [symbolic = %IntRange (constants.%IntRange.265)] +// CHECK:STDOUT: %.loc5_52.1: form = init_form %IntRange, call_param2 [symbolic = %.loc5_52.1 (constants.%.5f2)] // CHECK:STDOUT: %pattern_type.loc5_49: type = pattern_type %IntRange [symbolic = %pattern_type.loc5_49 (constants.%pattern_type.b16)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -522,12 +532,13 @@ fn Read(y:! Core.IntLiteral()) { // CHECK:STDOUT: %IntRange: type = class_type @IntRange, @IntRange(%N) [symbolic = %IntRange (constants.%IntRange.265)] // CHECK:STDOUT: %pattern_type.loc10_18: type = pattern_type %IntRange [symbolic = %pattern_type.loc10_18 (constants.%pattern_type.b16)] // CHECK:STDOUT: %Int.loc10_45.1: type = class_type @Int, @Int(%N) [symbolic = %Int.loc10_45.1 (constants.%Int.fc6021.1)] +// CHECK:STDOUT: %.loc10_45.1: form = init_form %Int.loc10_45.1, call_param1 [symbolic = %.loc10_45.1 (constants.%.7b282e.1)] // CHECK:STDOUT: %pattern_type.loc10_32: type = pattern_type %Int.loc10_45.1 [symbolic = %pattern_type.loc10_32 (constants.%pattern_type.764eab.1)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete.loc10_22: = require_complete_type %IntRange [symbolic = %require_complete.loc10_22 (constants.%require_complete.8a1)] +// CHECK:STDOUT: %require_complete.loc10_45: = require_complete_type %Int.loc10_45.1 [symbolic = %require_complete.loc10_45 (constants.%require_complete.9019d7.1)] // CHECK:STDOUT: %IntRange.elem: type = unbound_element_type %IntRange, %Int.loc10_45.1 [symbolic = %IntRange.elem (constants.%IntRange.elem.541)] -// CHECK:STDOUT: %require_complete.loc10_60: = require_complete_type %Int.loc10_45.1 [symbolic = %require_complete.loc10_60 (constants.%require_complete.9019d7.1)] // CHECK:STDOUT: %.loc10_60.3: require_specific_def_type = require_specific_def @Int.as.Copy.impl(%N) [symbolic = %.loc10_60.3 (constants.%.4f8)] // CHECK:STDOUT: %Copy.lookup_impl_witness: = lookup_impl_witness %Int.loc10_45.1, @Copy [symbolic = %Copy.lookup_impl_witness (constants.%Copy.lookup_impl_witness.7a8)] // CHECK:STDOUT: %Copy.facet: %Copy.type = facet_value %Int.loc10_45.1, (%Copy.lookup_impl_witness) [symbolic = %Copy.facet (constants.%Copy.facet.3b9)] @@ -563,6 +574,7 @@ fn Read(y:! Core.IntLiteral()) { // CHECK:STDOUT: %OptionalStorage.lookup_impl_witness: = lookup_impl_witness %Int.loc11_43.1, @OptionalStorage [symbolic = %OptionalStorage.lookup_impl_witness (constants.%OptionalStorage.lookup_impl_witness.b62)] // CHECK:STDOUT: %OptionalStorage.facet.loc11_75.1: %OptionalStorage.type = facet_value %Int.loc11_43.1, (%OptionalStorage.lookup_impl_witness) [symbolic = %OptionalStorage.facet.loc11_75.1 (constants.%OptionalStorage.facet.01e)] // CHECK:STDOUT: %Optional.loc11_75.1: type = class_type @Optional, @Optional(%OptionalStorage.facet.loc11_75.1) [symbolic = %Optional.loc11_75.1 (constants.%Optional.e48)] +// CHECK:STDOUT: %.loc11_75.2: form = init_form %Optional.loc11_75.1, call_param2 [symbolic = %.loc11_75.2 (constants.%.6a7)] // CHECK:STDOUT: %pattern_type.loc11_47: type = pattern_type %Optional.loc11_75.1 [symbolic = %pattern_type.loc11_47 (constants.%pattern_type.0c2)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -740,6 +752,7 @@ fn Read(y:! Core.IntLiteral()) { // CHECK:STDOUT: %Int.loc5_28.1 => constants.%Int.fc6021.1 // CHECK:STDOUT: %pattern_type.loc5_11 => constants.%pattern_type.764eab.1 // CHECK:STDOUT: %IntRange => constants.%IntRange.265 +// CHECK:STDOUT: %.loc5_52.1 => constants.%.5f2 // CHECK:STDOUT: %pattern_type.loc5_49 => constants.%pattern_type.b16 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -768,6 +781,7 @@ fn Read(y:! Core.IntLiteral()) { // CHECK:STDOUT: %IntRange => constants.%IntRange.265 // CHECK:STDOUT: %pattern_type.loc10_18 => constants.%pattern_type.b16 // CHECK:STDOUT: %Int.loc10_45.1 => constants.%Int.fc6021.1 +// CHECK:STDOUT: %.loc10_45.1 => constants.%.7b282e.1 // CHECK:STDOUT: %pattern_type.loc10_32 => constants.%pattern_type.764eab.1 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -784,6 +798,7 @@ fn Read(y:! Core.IntLiteral()) { // CHECK:STDOUT: %OptionalStorage.lookup_impl_witness => constants.%OptionalStorage.lookup_impl_witness.b62 // CHECK:STDOUT: %OptionalStorage.facet.loc11_75.1 => constants.%OptionalStorage.facet.01e // CHECK:STDOUT: %Optional.loc11_75.1 => constants.%Optional.e48 +// CHECK:STDOUT: %.loc11_75.2 => constants.%.6a7 // CHECK:STDOUT: %pattern_type.loc11_47 => constants.%pattern_type.0c2 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -807,6 +822,7 @@ fn Read(y:! Core.IntLiteral()) { // CHECK:STDOUT: %Int.loc5_28.1 => constants.%i32 // CHECK:STDOUT: %pattern_type.loc5_11 => constants.%pattern_type.7ce // CHECK:STDOUT: %IntRange => constants.%IntRange.a89 +// CHECK:STDOUT: %.loc5_52.1 => constants.%.e73 // CHECK:STDOUT: %pattern_type.loc5_49 => constants.%pattern_type.615 // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -848,6 +864,7 @@ fn Read(y:! Core.IntLiteral()) { // CHECK:STDOUT: %IntRange.Make.type.1df: type = fn_type @IntRange.Make, @IntRange(%N) [symbolic] // CHECK:STDOUT: %IntRange.Make.8a9: %IntRange.Make.type.1df = struct_value () [symbolic] // CHECK:STDOUT: %pattern_type.b16: type = pattern_type %IntRange.265 [symbolic] +// CHECK:STDOUT: %.5f2: form = init_form %IntRange.265, call_param2 [symbolic] // CHECK:STDOUT: %Copy.lookup_impl_witness.4c7: = lookup_impl_witness %Int.b6d943.1, @Copy [symbolic] // CHECK:STDOUT: %Copy.facet: %Copy.type = facet_value %Int.b6d943.1, (%Copy.lookup_impl_witness.4c7) [symbolic] // CHECK:STDOUT: %Copy.Op.type: type = fn_type @Copy.Op [concrete] @@ -1007,17 +1024,18 @@ fn Read(y:! Core.IntLiteral()) { // CHECK:STDOUT: %Int: type = class_type @Int, @Int(%N) [symbolic = %Int (constants.%Int.b6d943.1)] // CHECK:STDOUT: %pattern_type.1: type = pattern_type %Int [symbolic = %pattern_type.1 (constants.%pattern_type.bb68b6.1)] // CHECK:STDOUT: %IntRange: type = class_type @IntRange, @IntRange(%N) [symbolic = %IntRange (constants.%IntRange.265)] +// CHECK:STDOUT: %.1: form = init_form %IntRange, call_param2 [symbolic = %.1 (constants.%.5f2)] // CHECK:STDOUT: %pattern_type.2: type = pattern_type %IntRange [symbolic = %pattern_type.2 (constants.%pattern_type.b16)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete.1: = require_complete_type %IntRange [symbolic = %require_complete.1 (constants.%require_complete.8a1)] // CHECK:STDOUT: %require_complete.2: = require_complete_type %Int [symbolic = %require_complete.2 (constants.%require_complete.2ded7d.1)] // CHECK:STDOUT: %struct_type.start.end: type = struct_type {.start: @IntRange.Make.%Int (%Int.b6d943.1), .end: @IntRange.Make.%Int (%Int.b6d943.1)} [symbolic = %struct_type.start.end (constants.%struct_type.start.end.79a)] -// CHECK:STDOUT: %.1: require_specific_def_type = require_specific_def @Int.as.Copy.impl(%N) [symbolic = %.1 (constants.%.b26)] +// CHECK:STDOUT: %.2: require_specific_def_type = require_specific_def @Int.as.Copy.impl(%N) [symbolic = %.2 (constants.%.b26)] // CHECK:STDOUT: %Copy.lookup_impl_witness: = lookup_impl_witness %Int, @Copy [symbolic = %Copy.lookup_impl_witness (constants.%Copy.lookup_impl_witness.4c7)] // CHECK:STDOUT: %Copy.facet: %Copy.type = facet_value %Int, (%Copy.lookup_impl_witness) [symbolic = %Copy.facet (constants.%Copy.facet)] -// CHECK:STDOUT: %.2: type = fn_type_with_self_type constants.%Copy.Op.type, %Copy.facet [symbolic = %.2 (constants.%.72c)] -// CHECK:STDOUT: %impl.elem0: @IntRange.Make.%.2 (%.72c) = impl_witness_access %Copy.lookup_impl_witness, element0 [symbolic = %impl.elem0 (constants.%impl.elem0.82f)] +// CHECK:STDOUT: %.3: type = fn_type_with_self_type constants.%Copy.Op.type, %Copy.facet [symbolic = %.3 (constants.%.72c)] +// CHECK:STDOUT: %impl.elem0: @IntRange.Make.%.3 (%.72c) = impl_witness_access %Copy.lookup_impl_witness, element0 [symbolic = %impl.elem0 (constants.%impl.elem0.82f)] // CHECK:STDOUT: %specific_impl_fn: = specific_impl_function %impl.elem0, @Copy.Op(%Copy.facet) [symbolic = %specific_impl_fn (constants.%specific_impl_fn.7d1)] // CHECK:STDOUT: // CHECK:STDOUT: fn; @@ -1051,6 +1069,7 @@ fn Read(y:! Core.IntLiteral()) { // CHECK:STDOUT: %Int => constants.%Int.b6d943.1 // CHECK:STDOUT: %pattern_type.1 => constants.%pattern_type.bb68b6.1 // CHECK:STDOUT: %IntRange => constants.%IntRange.265 +// CHECK:STDOUT: %.1 => constants.%.5f2 // CHECK:STDOUT: %pattern_type.2 => constants.%pattern_type.b16 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/function/builtin/adapted_type.carbon b/toolchain/check/testdata/function/builtin/adapted_type.carbon index b1786c2d574c..be9b29dd113c 100644 --- a/toolchain/check/testdata/function/builtin/adapted_type.carbon +++ b/toolchain/check/testdata/function/builtin/adapted_type.carbon @@ -53,22 +53,26 @@ fn Int(N: MyIntLiteral) -> type = "int.make_type_signed"; // CHECK:STDOUT: --- adapt.carbon // CHECK:STDOUT: // CHECK:STDOUT: constants { +// CHECK:STDOUT: %.d96: form = init_form type, call_param0 [concrete] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %IntLiteral.type: type = fn_type @IntLiteral [concrete] // CHECK:STDOUT: %IntLiteral: %IntLiteral.type = struct_value () [concrete] // CHECK:STDOUT: %MyIntLiteral: type = class_type @MyIntLiteral [concrete] // CHECK:STDOUT: %complete_type.972: = complete_type_witness Core.IntLiteral [concrete] // CHECK:STDOUT: %pattern_type.d59: type = pattern_type %MyIntLiteral [concrete] +// CHECK:STDOUT: %.39d: form = init_form type, call_param1 [concrete] // CHECK:STDOUT: %Int.type: type = fn_type @Int [concrete] // CHECK:STDOUT: %Int: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %MyInt32: type = class_type @MyInt32 [concrete] // CHECK:STDOUT: %int_32.be0: Core.IntLiteral = int_value 32 [concrete] // CHECK:STDOUT: %int_32.2f2: %MyIntLiteral = int_value 32 [concrete] // CHECK:STDOUT: %i32.builtin: type = int_type signed, %int_32.2f2 [concrete] +// CHECK:STDOUT: %.a06: form = init_form %MyInt32, call_param1 [concrete] // CHECK:STDOUT: %pattern_type.4d1: type = pattern_type %MyInt32 [concrete] // CHECK:STDOUT: %MyInt32.Make.type: type = fn_type @MyInt32.Make [concrete] // CHECK:STDOUT: %MyInt32.Make: %MyInt32.Make.type = struct_value () [concrete] // CHECK:STDOUT: %complete_type.833: = complete_type_witness %i32.builtin [concrete] +// CHECK:STDOUT: %.f9b: form = init_form %MyInt32, call_param2 [concrete] // CHECK:STDOUT: %MyAdd.type: type = fn_type @MyAdd [concrete] // CHECK:STDOUT: %MyAdd: %MyAdd.type = struct_value () [concrete] // CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] @@ -93,6 +97,7 @@ fn Int(N: MyIntLiteral) -> type = "int.make_type_signed"; // CHECK:STDOUT: %return.patt: %pattern_type.98f = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.98f = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { +// CHECK:STDOUT: %.loc4: form = init_form type, call_param0 [concrete = constants.%.d96] // CHECK:STDOUT: %return.param: ref type = out_param call_param0 // CHECK:STDOUT: %return: ref type = return_slot %return.param // CHECK:STDOUT: } @@ -103,6 +108,7 @@ fn Int(N: MyIntLiteral) -> type = "int.make_type_signed"; // CHECK:STDOUT: %return.patt: %pattern_type.98f = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.98f = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { +// CHECK:STDOUT: %.loc10: form = init_form type, call_param1 [concrete = constants.%.39d] // CHECK:STDOUT: %N.param: %MyIntLiteral = value_param call_param0 // CHECK:STDOUT: %MyIntLiteral.ref: type = name_ref MyIntLiteral, file.%MyIntLiteral.decl [concrete = constants.%MyIntLiteral] // CHECK:STDOUT: %N: %MyIntLiteral = value_binding N, %N.param @@ -117,6 +123,7 @@ fn Int(N: MyIntLiteral) -> type = "int.make_type_signed"; // CHECK:STDOUT: %return.param_patt: %pattern_type.4d1 = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %MyInt32.ref.loc18: type = name_ref MyInt32, file.%MyInt32.decl [concrete = constants.%MyInt32] +// CHECK:STDOUT: %.loc18: form = init_form %MyInt32.ref.loc18, call_param1 [concrete = constants.%.a06] // CHECK:STDOUT: %a.param.loc18: %MyIntLiteral = value_param call_param0 // CHECK:STDOUT: %MyIntLiteral.ref.loc18: type = name_ref MyIntLiteral, file.%MyIntLiteral.decl [concrete = constants.%MyIntLiteral] // CHECK:STDOUT: %a.loc18: %MyIntLiteral = value_binding a, %a.param.loc18 @@ -132,6 +139,7 @@ fn Int(N: MyIntLiteral) -> type = "int.make_type_signed"; // CHECK:STDOUT: %return.param_patt: %pattern_type.4d1 = out_param_pattern %return.patt, call_param2 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %MyInt32.ref.loc20_37: type = name_ref MyInt32, file.%MyInt32.decl [concrete = constants.%MyInt32] +// CHECK:STDOUT: %.loc20: form = init_form %MyInt32.ref.loc20_37, call_param2 [concrete = constants.%.f9b] // CHECK:STDOUT: %a.param: %MyInt32 = value_param call_param0 // CHECK:STDOUT: %MyInt32.ref.loc20_13: type = name_ref MyInt32, file.%MyInt32.decl [concrete = constants.%MyInt32] // CHECK:STDOUT: %a: %MyInt32 = value_binding a, %a.param @@ -181,6 +189,7 @@ fn Int(N: MyIntLiteral) -> type = "int.make_type_signed"; // CHECK:STDOUT: %return.param_patt: %pattern_type.4d1 = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %MyInt32.ref.loc15: type = name_ref MyInt32, file.%MyInt32.decl [concrete = constants.%MyInt32] +// CHECK:STDOUT: %.loc15: form = init_form %MyInt32.ref.loc15, call_param1 [concrete = constants.%.a06] // CHECK:STDOUT: %a.param.loc15: %MyIntLiteral = value_param call_param0 // CHECK:STDOUT: %MyIntLiteral.ref.loc15: type = name_ref MyIntLiteral, file.%MyIntLiteral.decl [concrete = constants.%MyIntLiteral] // CHECK:STDOUT: %a.loc15: %MyIntLiteral = value_binding a, %a.param.loc15 @@ -240,6 +249,7 @@ fn Int(N: MyIntLiteral) -> type = "int.make_type_signed"; // CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %pattern_type.d59: type = pattern_type %MyIntLiteral [concrete] +// CHECK:STDOUT: %.39d: form = init_form type, call_param1 [concrete] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %Int.type: type = fn_type @Int [concrete] // CHECK:STDOUT: %Int: %Int.type = struct_value () [concrete] @@ -257,6 +267,7 @@ fn Int(N: MyIntLiteral) -> type = "int.make_type_signed"; // CHECK:STDOUT: %return.patt: %pattern_type.98f = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.98f = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { +// CHECK:STDOUT: %.loc12: form = init_form type, call_param1 [concrete = constants.%.39d] // CHECK:STDOUT: %N.param: %MyIntLiteral = value_param call_param0 // CHECK:STDOUT: %MyIntLiteral.ref: type = name_ref MyIntLiteral, file.%MyIntLiteral.decl [concrete = constants.%MyIntLiteral] // CHECK:STDOUT: %N: %MyIntLiteral = value_binding N, %N.param diff --git a/toolchain/check/testdata/function/builtin/call.carbon b/toolchain/check/testdata/function/builtin/call.carbon index 6ab626c5f7aa..54032d0ed581 100644 --- a/toolchain/check/testdata/function/builtin/call.carbon +++ b/toolchain/check/testdata/function/builtin/call.carbon @@ -28,6 +28,7 @@ fn RuntimeCall(a: i32, b: i32) -> i32 { // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] +// CHECK:STDOUT: %.88a: form = init_form %i32, call_param2 [concrete] // CHECK:STDOUT: %Add.type: type = fn_type @Add [concrete] // CHECK:STDOUT: %Add: %Add.type = struct_value () [concrete] // CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] @@ -105,6 +106,7 @@ fn RuntimeCall(a: i32, b: i32) -> i32 { // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32.loc15_27: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc15_27: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] +// CHECK:STDOUT: %.loc15_27: form = init_form %i32.loc15_27, call_param2 [concrete = constants.%.88a] // CHECK:STDOUT: %a.param: %i32 = value_param call_param0 // CHECK:STDOUT: %.loc15_11: type = splice_block %i32.loc15_11 [concrete = constants.%i32] { // CHECK:STDOUT: %int_32.loc15_11: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] @@ -168,6 +170,7 @@ fn RuntimeCall(a: i32, b: i32) -> i32 { // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32.loc19_35: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc19_35: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] +// CHECK:STDOUT: %.loc19_35: form = init_form %i32.loc19_35, call_param2 [concrete = constants.%.88a] // CHECK:STDOUT: %a.param: %i32 = value_param call_param0 // CHECK:STDOUT: %.loc19_19: type = splice_block %i32.loc19_19 [concrete = constants.%i32] { // CHECK:STDOUT: %int_32.loc19_19: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] diff --git a/toolchain/check/testdata/function/builtin/call_from_operator.carbon b/toolchain/check/testdata/function/builtin/call_from_operator.carbon index d64ea800ae2e..2e373849042d 100644 --- a/toolchain/check/testdata/function/builtin/call_from_operator.carbon +++ b/toolchain/check/testdata/function/builtin/call_from_operator.carbon @@ -56,10 +56,12 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: --- core.carbon // CHECK:STDOUT: // CHECK:STDOUT: constants { +// CHECK:STDOUT: %.d96: form = init_form type, call_param0 [concrete] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %IntLiteral.type: type = fn_type @IntLiteral [concrete] // CHECK:STDOUT: %IntLiteral: %IntLiteral.type = struct_value () [concrete] // CHECK:STDOUT: %pattern_type.dc0: type = pattern_type Core.IntLiteral [concrete] +// CHECK:STDOUT: %.39d: form = init_form type, call_param1 [concrete] // CHECK:STDOUT: %Int.type: type = fn_type @Int [concrete] // CHECK:STDOUT: %Int: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] @@ -71,6 +73,7 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: %Self.a37: %AddWith.type.26b = symbolic_binding Self, 1 [symbolic] // CHECK:STDOUT: %Self.binding.as_type.73e: type = symbolic_binding_type Self, 1, %Self.a37 [symbolic] // CHECK:STDOUT: %pattern_type.1f3: type = pattern_type %Self.binding.as_type.73e [symbolic] +// CHECK:STDOUT: %.e4b: form = init_form %Self.binding.as_type.73e, call_param2 [symbolic] // CHECK:STDOUT: %AddWith.Op.type.421: type = fn_type @AddWith.Op, @AddWith(%T) [symbolic] // CHECK:STDOUT: %AddWith.Op.59b: %AddWith.Op.type.421 = struct_value () [symbolic] // CHECK:STDOUT: %AddWith.assoc_type.5ad: type = assoc_entity_type @AddWith, @AddWith(%T) [symbolic] @@ -81,6 +84,7 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: %Self.a8c: %As.type.b54 = symbolic_binding Self, 1 [symbolic] // CHECK:STDOUT: %Self.binding.as_type.69d: type = symbolic_binding_type Self, 1, %Self.a8c [symbolic] // CHECK:STDOUT: %pattern_type.24e: type = pattern_type %Self.binding.as_type.69d [symbolic] +// CHECK:STDOUT: %.e5f: form = init_form %T, call_param1 [symbolic] // CHECK:STDOUT: %pattern_type.51d: type = pattern_type %T [symbolic] // CHECK:STDOUT: %As.Convert.type.d47: type = fn_type @As.Convert, @As(%T) [symbolic] // CHECK:STDOUT: %As.Convert.4a7: %As.Convert.type.d47 = struct_value () [symbolic] @@ -106,6 +110,7 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: %AddWith.assoc_type.97c: type = assoc_entity_type @AddWith, @AddWith(%i32.builtin) [concrete] // CHECK:STDOUT: %assoc0.61e: %AddWith.assoc_type.97c = assoc_entity element0, @AddWith.%AddWith.Op.decl [concrete] // CHECK:STDOUT: %pattern_type.956: type = pattern_type %i32.builtin [concrete] +// CHECK:STDOUT: %.4c4: form = init_form %i32.builtin, call_param2 [concrete] // CHECK:STDOUT: %i32.builtin.as.AddWith.impl.Op.type: type = fn_type @i32.builtin.as.AddWith.impl.Op [concrete] // CHECK:STDOUT: %i32.builtin.as.AddWith.impl.Op: %i32.builtin.as.AddWith.impl.Op.type = struct_value () [concrete] // CHECK:STDOUT: %AddWith.facet: %AddWith.type.aed = facet_value %i32.builtin, (%AddWith.impl_witness) [concrete] @@ -116,6 +121,7 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: %As.Convert.701: %As.Convert.type.063 = struct_value () [concrete] // CHECK:STDOUT: %As.assoc_type.c44: type = assoc_entity_type @As, @As(%i32.builtin) [concrete] // CHECK:STDOUT: %assoc0.d89: %As.assoc_type.c44 = assoc_entity element0, @As.%As.Convert.decl [concrete] +// CHECK:STDOUT: %.8b6: form = init_form %i32.builtin, call_param1 [concrete] // CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.type: type = fn_type @Core.IntLiteral.as.As.impl.Convert [concrete] // CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert: %Core.IntLiteral.as.As.impl.Convert.type = struct_value () [concrete] // CHECK:STDOUT: %As.facet: %As.type.1ed = facet_value Core.IntLiteral, (%As.impl_witness) [concrete] @@ -136,6 +142,7 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: %ImplicitAs.Convert.aec: %ImplicitAs.Convert.type.785 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.assoc_type.793: type = assoc_entity_type @ImplicitAs, @ImplicitAs(Core.IntLiteral) [concrete] // CHECK:STDOUT: %assoc0.49f: %ImplicitAs.assoc_type.793 = assoc_entity element0, @ImplicitAs.%ImplicitAs.Convert.decl [concrete] +// CHECK:STDOUT: %.026: form = init_form Core.IntLiteral, call_param1 [concrete] // CHECK:STDOUT: %i32.builtin.as.ImplicitAs.impl.Convert.type: type = fn_type @i32.builtin.as.ImplicitAs.impl.Convert [concrete] // CHECK:STDOUT: %i32.builtin.as.ImplicitAs.impl.Convert: %i32.builtin.as.ImplicitAs.impl.Convert.type = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.facet.c5c: %ImplicitAs.type.79c = facet_value %i32.builtin, (%ImplicitAs.impl_witness.985) [concrete] @@ -153,6 +160,7 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: %return.patt: %pattern_type.98f = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.98f = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { +// CHECK:STDOUT: %.loc4: form = init_form type, call_param0 [concrete = constants.%.d96] // CHECK:STDOUT: %return.param: ref type = out_param call_param0 // CHECK:STDOUT: %return: ref type = return_slot %return.param // CHECK:STDOUT: } @@ -162,6 +170,7 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: %return.patt: %pattern_type.98f = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.98f = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { +// CHECK:STDOUT: %.loc5_28: form = init_form type, call_param1 [concrete = constants.%.39d] // CHECK:STDOUT: %N.param: Core.IntLiteral = value_param call_param0 // CHECK:STDOUT: %.loc5_22.1: type = splice_block %.loc5_22.3 [concrete = Core.IntLiteral] { // CHECK:STDOUT: %IntLiteral.ref: %IntLiteral.type = name_ref IntLiteral, file.%IntLiteral.decl [concrete = constants.%IntLiteral] @@ -262,10 +271,11 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: %return.patt: @AddWith.Op.%pattern_type (%pattern_type.1f3) = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: @AddWith.Op.%pattern_type (%pattern_type.1f3) = out_param_pattern %return.patt, call_param2 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %.loc8_37.1: @AddWith.Op.%AddWith.type (%AddWith.type.26b) = specific_constant @AddWith.%Self.loc7_29.1, @AddWith(constants.%T) [symbolic = %Self (constants.%Self.a37)] -// CHECK:STDOUT: %Self.ref.loc8_37: @AddWith.Op.%AddWith.type (%AddWith.type.26b) = name_ref Self, %.loc8_37.1 [symbolic = %Self (constants.%Self.a37)] +// CHECK:STDOUT: %.loc8_37.2: @AddWith.Op.%AddWith.type (%AddWith.type.26b) = specific_constant @AddWith.%Self.loc7_29.1, @AddWith(constants.%T) [symbolic = %Self (constants.%Self.a37)] +// CHECK:STDOUT: %Self.ref.loc8_37: @AddWith.Op.%AddWith.type (%AddWith.type.26b) = name_ref Self, %.loc8_37.2 [symbolic = %Self (constants.%Self.a37)] // CHECK:STDOUT: %Self.as_type.loc8_37: type = facet_access_type %Self.ref.loc8_37 [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type.73e)] -// CHECK:STDOUT: %.loc8_37.2: type = converted %Self.ref.loc8_37, %Self.as_type.loc8_37 [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type.73e)] +// CHECK:STDOUT: %.loc8_37.3: type = converted %Self.ref.loc8_37, %Self.as_type.loc8_37 [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type.73e)] +// CHECK:STDOUT: %.loc8_37.4: form = init_form %.loc8_37.3, call_param2 [symbolic = %.loc8_37.1 (constants.%.e4b)] // CHECK:STDOUT: %self.param: @AddWith.Op.%Self.binding.as_type (%Self.binding.as_type.73e) = value_param call_param0 // CHECK:STDOUT: %.loc8_15.1: type = splice_block %.loc8_15.3 [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type.73e)] { // CHECK:STDOUT: %.loc8_15.2: @AddWith.Op.%AddWith.type (%AddWith.type.26b) = specific_constant @AddWith.%Self.loc7_29.1, @AddWith(constants.%T) [symbolic = %Self (constants.%Self.a37)] @@ -316,6 +326,7 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: %return.param_patt: @As.Convert.%pattern_type.loc12_28 (%pattern_type.51d) = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref: type = name_ref T, @As.%T.loc11_14.2 [symbolic = %T (constants.%T)] +// CHECK:STDOUT: %.loc12_31.2: form = init_form %T.ref, call_param1 [symbolic = %.loc12_31.1 (constants.%.e5f)] // CHECK:STDOUT: %self.param: @As.Convert.%Self.binding.as_type (%Self.binding.as_type.69d) = value_param call_param0 // CHECK:STDOUT: %.loc12_20.1: type = splice_block %.loc12_20.3 [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type.69d)] { // CHECK:STDOUT: %.loc12_20.2: @As.Convert.%As.type (%As.type.b54) = specific_constant @As.%Self.loc11_24.1, @As(constants.%T) [symbolic = %Self (constants.%Self.a8c)] @@ -359,6 +370,7 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: %return.param_patt: @ImplicitAs.Convert.%pattern_type.loc16_28 (%pattern_type.51d) = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref: type = name_ref T, @ImplicitAs.%T.loc15_22.2 [symbolic = %T (constants.%T)] +// CHECK:STDOUT: %.loc16_31.2: form = init_form %T.ref, call_param1 [symbolic = %.loc16_31.1 (constants.%.e5f)] // CHECK:STDOUT: %self.param: @ImplicitAs.Convert.%Self.binding.as_type (%Self.binding.as_type.984) = value_param call_param0 // CHECK:STDOUT: %.loc16_20.1: type = splice_block %.loc16_20.3 [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type.984)] { // CHECK:STDOUT: %.loc16_20.2: @ImplicitAs.Convert.%ImplicitAs.type (%ImplicitAs.type.9fe) = specific_constant @ImplicitAs.%Self.loc15_32.1, @ImplicitAs(constants.%T) [symbolic = %Self (constants.%Self.7c0)] @@ -392,6 +404,7 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: %return.param_patt: %pattern_type.956 = out_param_pattern %return.patt, call_param2 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %Self.ref.loc20_37: type = name_ref Self, @i32.builtin.as.AddWith.impl.%.loc19_6.2 [concrete = constants.%i32.builtin] +// CHECK:STDOUT: %.loc20: form = init_form %Self.ref.loc20_37, call_param2 [concrete = constants.%.4c4] // CHECK:STDOUT: %self.param: %i32.builtin = value_param call_param0 // CHECK:STDOUT: %Self.ref.loc20_15: type = name_ref Self, @i32.builtin.as.AddWith.impl.%.loc19_6.2 [concrete = constants.%i32.builtin] // CHECK:STDOUT: %self: %i32.builtin = value_binding self, %self.param @@ -420,6 +433,7 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: %Int.call: init type = call constants.%Int(%int_32) [concrete = constants.%i32.builtin] // CHECK:STDOUT: %.loc24_31.1: type = value_of_initializer %Int.call [concrete = constants.%i32.builtin] // CHECK:STDOUT: %.loc24_31.2: type = converted %Int.call, %.loc24_31.1 [concrete = constants.%i32.builtin] +// CHECK:STDOUT: %.loc24_31.3: form = init_form %.loc24_31.2, call_param1 [concrete = constants.%.8b6] // CHECK:STDOUT: %self.param: Core.IntLiteral = value_param call_param0 // CHECK:STDOUT: %Self.ref: type = name_ref Self, @Core.IntLiteral.as.As.impl.%.loc23_17.2 [concrete = Core.IntLiteral] // CHECK:STDOUT: %self: Core.IntLiteral = value_binding self, %self.param @@ -445,6 +459,7 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: %Int.call: init type = call constants.%Int(%int_32) [concrete = constants.%i32.builtin] // CHECK:STDOUT: %.loc28_31.1: type = value_of_initializer %Int.call [concrete = constants.%i32.builtin] // CHECK:STDOUT: %.loc28_31.2: type = converted %Int.call, %.loc28_31.1 [concrete = constants.%i32.builtin] +// CHECK:STDOUT: %.loc28_31.3: form = init_form %.loc28_31.2, call_param1 [concrete = constants.%.8b6] // CHECK:STDOUT: %self.param: Core.IntLiteral = value_param call_param0 // CHECK:STDOUT: %Self.ref: type = name_ref Self, @Core.IntLiteral.as.ImplicitAs.impl.%.loc27_17.2 [concrete = Core.IntLiteral] // CHECK:STDOUT: %self: Core.IntLiteral = value_binding self, %self.param @@ -470,6 +485,7 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: %IntLiteral.call: init type = call %IntLiteral.ref() [concrete = Core.IntLiteral] // CHECK:STDOUT: %.loc32_42.1: type = value_of_initializer %IntLiteral.call [concrete = Core.IntLiteral] // CHECK:STDOUT: %.loc32_42.2: type = converted %IntLiteral.call, %.loc32_42.1 [concrete = Core.IntLiteral] +// CHECK:STDOUT: %.loc32_42.3: form = init_form %.loc32_42.2, call_param1 [concrete = constants.%.026] // CHECK:STDOUT: %self.param: %i32.builtin = value_param call_param0 // CHECK:STDOUT: %Self.ref: type = name_ref Self, @i32.builtin.as.ImplicitAs.impl.%.loc31_6.2 [concrete = constants.%i32.builtin] // CHECK:STDOUT: %self: %i32.builtin = value_binding self, %self.param @@ -495,6 +511,7 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: %Self: @AddWith.Op.%AddWith.type (%AddWith.type.26b) = symbolic_binding Self, 1 [symbolic = %Self (constants.%Self.a37)] // CHECK:STDOUT: %Self.binding.as_type: type = symbolic_binding_type Self, 1, %Self [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type.73e)] // CHECK:STDOUT: %pattern_type: type = pattern_type %Self.binding.as_type [symbolic = %pattern_type (constants.%pattern_type.1f3)] +// CHECK:STDOUT: %.loc8_37.1: form = init_form %Self.binding.as_type, call_param2 [symbolic = %.loc8_37.1 (constants.%.e4b)] // CHECK:STDOUT: // CHECK:STDOUT: fn(%self.param: @AddWith.Op.%Self.binding.as_type (%Self.binding.as_type.73e), %other.param: @AddWith.Op.%Self.binding.as_type (%Self.binding.as_type.73e)) -> @AddWith.Op.%Self.binding.as_type (%Self.binding.as_type.73e); // CHECK:STDOUT: } @@ -505,6 +522,7 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: %Self: @As.Convert.%As.type (%As.type.b54) = symbolic_binding Self, 1 [symbolic = %Self (constants.%Self.a8c)] // CHECK:STDOUT: %Self.binding.as_type: type = symbolic_binding_type Self, 1, %Self [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type.69d)] // CHECK:STDOUT: %pattern_type.loc12_14: type = pattern_type %Self.binding.as_type [symbolic = %pattern_type.loc12_14 (constants.%pattern_type.24e)] +// CHECK:STDOUT: %.loc12_31.1: form = init_form %T, call_param1 [symbolic = %.loc12_31.1 (constants.%.e5f)] // CHECK:STDOUT: %pattern_type.loc12_28: type = pattern_type %T [symbolic = %pattern_type.loc12_28 (constants.%pattern_type.51d)] // CHECK:STDOUT: // CHECK:STDOUT: fn(%self.param: @As.Convert.%Self.binding.as_type (%Self.binding.as_type.69d)) -> @As.Convert.%T (%T); @@ -516,6 +534,7 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: %Self: @ImplicitAs.Convert.%ImplicitAs.type (%ImplicitAs.type.9fe) = symbolic_binding Self, 1 [symbolic = %Self (constants.%Self.7c0)] // CHECK:STDOUT: %Self.binding.as_type: type = symbolic_binding_type Self, 1, %Self [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type.984)] // CHECK:STDOUT: %pattern_type.loc16_14: type = pattern_type %Self.binding.as_type [symbolic = %pattern_type.loc16_14 (constants.%pattern_type.8de)] +// CHECK:STDOUT: %.loc16_31.1: form = init_form %T, call_param1 [symbolic = %.loc16_31.1 (constants.%.e5f)] // CHECK:STDOUT: %pattern_type.loc16_28: type = pattern_type %T [symbolic = %pattern_type.loc16_28 (constants.%pattern_type.51d)] // CHECK:STDOUT: // CHECK:STDOUT: fn(%self.param: @ImplicitAs.Convert.%Self.binding.as_type (%Self.binding.as_type.984)) -> @ImplicitAs.Convert.%T (%T); @@ -539,6 +558,7 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: %Self => constants.%Self.a37 // CHECK:STDOUT: %Self.binding.as_type => constants.%Self.binding.as_type.73e // CHECK:STDOUT: %pattern_type => constants.%pattern_type.1f3 +// CHECK:STDOUT: %.loc8_37.1 => constants.%.e4b // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @As(constants.%T) { @@ -551,6 +571,7 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: %Self => constants.%Self.a8c // CHECK:STDOUT: %Self.binding.as_type => constants.%Self.binding.as_type.69d // CHECK:STDOUT: %pattern_type.loc12_14 => constants.%pattern_type.24e +// CHECK:STDOUT: %.loc12_31.1 => constants.%.e5f // CHECK:STDOUT: %pattern_type.loc12_28 => constants.%pattern_type.51d // CHECK:STDOUT: } // CHECK:STDOUT: @@ -564,6 +585,7 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: %Self => constants.%Self.7c0 // CHECK:STDOUT: %Self.binding.as_type => constants.%Self.binding.as_type.984 // CHECK:STDOUT: %pattern_type.loc16_14 => constants.%pattern_type.8de +// CHECK:STDOUT: %.loc16_31.1 => constants.%.e5f // CHECK:STDOUT: %pattern_type.loc16_28 => constants.%pattern_type.51d // CHECK:STDOUT: } // CHECK:STDOUT: @@ -585,6 +607,7 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: %Self => constants.%AddWith.facet // CHECK:STDOUT: %Self.binding.as_type => constants.%i32.builtin // CHECK:STDOUT: %pattern_type => constants.%pattern_type.956 +// CHECK:STDOUT: %.loc8_37.1 => constants.%.4c4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @As(constants.%i32.builtin) { @@ -605,6 +628,7 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: %Self => constants.%As.facet // CHECK:STDOUT: %Self.binding.as_type => Core.IntLiteral // CHECK:STDOUT: %pattern_type.loc12_14 => constants.%pattern_type.dc0 +// CHECK:STDOUT: %.loc12_31.1 => constants.%.8b6 // CHECK:STDOUT: %pattern_type.loc12_28 => constants.%pattern_type.956 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -626,6 +650,7 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: %Self => constants.%ImplicitAs.facet.b36 // CHECK:STDOUT: %Self.binding.as_type => Core.IntLiteral // CHECK:STDOUT: %pattern_type.loc16_14 => constants.%pattern_type.dc0 +// CHECK:STDOUT: %.loc16_31.1 => constants.%.8b6 // CHECK:STDOUT: %pattern_type.loc16_28 => constants.%pattern_type.956 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -647,6 +672,7 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: %Self => constants.%ImplicitAs.facet.c5c // CHECK:STDOUT: %Self.binding.as_type => constants.%i32.builtin // CHECK:STDOUT: %pattern_type.loc16_14 => constants.%pattern_type.956 +// CHECK:STDOUT: %.loc16_31.1 => constants.%.026 // CHECK:STDOUT: %pattern_type.loc16_28 => constants.%pattern_type.dc0 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -670,6 +696,7 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: %pattern_type.51d: type = pattern_type %T [symbolic] // CHECK:STDOUT: %Self.binding.as_type.297: type = symbolic_binding_type Self, 1, %Self.2d0 [symbolic] // CHECK:STDOUT: %pattern_type.760: type = pattern_type %Self.binding.as_type.297 [symbolic] +// CHECK:STDOUT: %.e5f: form = init_form %T, call_param1 [symbolic] // CHECK:STDOUT: %As.type.ffe: type = facet_type <@As, @As(%i32.builtin)> [concrete] // CHECK:STDOUT: %Self.af0: %As.type.ffe = symbolic_binding Self, 1 [symbolic] // CHECK:STDOUT: %As.Convert.type.378: type = fn_type @As.Convert, @As(%i32.builtin) [concrete] @@ -697,6 +724,7 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: %AddWith.Op.b1d: %AddWith.Op.type.216 = struct_value () [symbolic] // CHECK:STDOUT: %Self.binding.as_type.14b: type = symbolic_binding_type Self, 1, %Self.b7c [symbolic] // CHECK:STDOUT: %pattern_type.259: type = pattern_type %Self.binding.as_type.14b [symbolic] +// CHECK:STDOUT: %.baa: form = init_form %Self.binding.as_type.14b, call_param2 [symbolic] // CHECK:STDOUT: %AddWith.type.46d: type = facet_type <@AddWith, @AddWith(%i32.builtin)> [concrete] // CHECK:STDOUT: %Self.365: %AddWith.type.46d = symbolic_binding Self, 1 [symbolic] // CHECK:STDOUT: %AddWith.Op.type.0b7: type = fn_type @AddWith.Op, @AddWith(%i32.builtin) [concrete] @@ -963,6 +991,7 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: %Self: @As.Convert.%As.type (%As.type.223) = symbolic_binding Self, 1 [symbolic = %Self (constants.%Self.2d0)] // CHECK:STDOUT: %Self.binding.as_type: type = symbolic_binding_type Self, 1, %Self [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type.297)] // CHECK:STDOUT: %pattern_type.1: type = pattern_type %Self.binding.as_type [symbolic = %pattern_type.1 (constants.%pattern_type.760)] +// CHECK:STDOUT: %.1: form = init_form %T, call_param1 [symbolic = %.1 (constants.%.e5f)] // CHECK:STDOUT: %pattern_type.2: type = pattern_type %T [symbolic = %pattern_type.2 (constants.%pattern_type.51d)] // CHECK:STDOUT: // CHECK:STDOUT: fn; @@ -976,6 +1005,7 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: %Self: @AddWith.Op.%AddWith.type (%AddWith.type.6d9) = symbolic_binding Self, 1 [symbolic = %Self (constants.%Self.b7c)] // CHECK:STDOUT: %Self.binding.as_type: type = symbolic_binding_type Self, 1, %Self [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type.14b)] // CHECK:STDOUT: %pattern_type: type = pattern_type %Self.binding.as_type [symbolic = %pattern_type (constants.%pattern_type.259)] +// CHECK:STDOUT: %.1: form = init_form %Self.binding.as_type, call_param2 [symbolic = %.1 (constants.%.baa)] // CHECK:STDOUT: // CHECK:STDOUT: fn; // CHECK:STDOUT: } @@ -988,6 +1018,7 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: %Self: @ImplicitAs.Convert.%ImplicitAs.type (%ImplicitAs.type.031) = symbolic_binding Self, 1 [symbolic = %Self (constants.%Self.738)] // CHECK:STDOUT: %Self.binding.as_type: type = symbolic_binding_type Self, 1, %Self [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type.a44)] // CHECK:STDOUT: %pattern_type.1: type = pattern_type %Self.binding.as_type [symbolic = %pattern_type.1 (constants.%pattern_type.e9a)] +// CHECK:STDOUT: %.1: form = init_form %T, call_param1 [symbolic = %.1 (constants.%.e5f)] // CHECK:STDOUT: %pattern_type.2: type = pattern_type %T [symbolic = %pattern_type.2 (constants.%pattern_type.51d)] // CHECK:STDOUT: // CHECK:STDOUT: fn; @@ -1058,6 +1089,7 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: %Self => constants.%Self.2d0 // CHECK:STDOUT: %Self.binding.as_type => constants.%Self.binding.as_type.297 // CHECK:STDOUT: %pattern_type.1 => constants.%pattern_type.760 +// CHECK:STDOUT: %.1 => constants.%.e5f // CHECK:STDOUT: %pattern_type.2 => constants.%pattern_type.51d // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1083,6 +1115,7 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: %Self => constants.%Self.b7c // CHECK:STDOUT: %Self.binding.as_type => constants.%Self.binding.as_type.14b // CHECK:STDOUT: %pattern_type => constants.%pattern_type.259 +// CHECK:STDOUT: %.1 => constants.%.baa // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @AddWith(constants.%i32.builtin) { @@ -1107,6 +1140,7 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: %Self => constants.%Self.738 // CHECK:STDOUT: %Self.binding.as_type => constants.%Self.binding.as_type.a44 // CHECK:STDOUT: %pattern_type.1 => constants.%pattern_type.e9a +// CHECK:STDOUT: %.1 => constants.%.e5f // CHECK:STDOUT: %pattern_type.2 => constants.%pattern_type.51d // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/function/builtin/definition.carbon b/toolchain/check/testdata/function/builtin/definition.carbon index 7f99c77eacf1..3306feb8cf67 100644 --- a/toolchain/check/testdata/function/builtin/definition.carbon +++ b/toolchain/check/testdata/function/builtin/definition.carbon @@ -22,6 +22,7 @@ fn Add(a: i32, b: i32) -> i32 = "int.sadd"; // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] +// CHECK:STDOUT: %.88a: form = init_form %i32, call_param2 [concrete] // CHECK:STDOUT: %Add.type: type = fn_type @Add [concrete] // CHECK:STDOUT: %Add: %Add.type = struct_value () [concrete] // CHECK:STDOUT: } @@ -51,6 +52,7 @@ fn Add(a: i32, b: i32) -> i32 = "int.sadd"; // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32.loc15_27: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc15_27: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] +// CHECK:STDOUT: %.loc15_27: form = init_form %i32.loc15_27, call_param2 [concrete = constants.%.88a] // CHECK:STDOUT: %a.param: %i32 = value_param call_param0 // CHECK:STDOUT: %.loc15_11: type = splice_block %i32.loc15_11 [concrete = constants.%i32] { // CHECK:STDOUT: %int_32.loc15_11: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] diff --git a/toolchain/check/testdata/function/builtin/fail_redefined.carbon b/toolchain/check/testdata/function/builtin/fail_redefined.carbon index e41fa2c93b29..56c212c9bdfc 100644 --- a/toolchain/check/testdata/function/builtin/fail_redefined.carbon +++ b/toolchain/check/testdata/function/builtin/fail_redefined.carbon @@ -51,6 +51,7 @@ fn C(n: i32, m: i32) -> i32 = "int.sadd"; // CHECK:STDOUT: %N: Core.IntLiteral = symbolic_binding N, 0 [symbolic] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] +// CHECK:STDOUT: %.88a: form = init_form %i32, call_param2 [concrete] // CHECK:STDOUT: %A.type.8165c1.1: type = fn_type @A.loc15 [concrete] // CHECK:STDOUT: %A.8aef9d.1: %A.type.8165c1.1 = struct_value () [concrete] // CHECK:STDOUT: %A.type.8165c1.2: type = fn_type @A.loc23 [concrete] @@ -106,6 +107,7 @@ fn C(n: i32, m: i32) -> i32 = "int.sadd"; // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32.loc15_25: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc15_25: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] +// CHECK:STDOUT: %.loc15_25: form = init_form %i32.loc15_25, call_param2 [concrete = constants.%.88a] // CHECK:STDOUT: %n.param: %i32 = value_param call_param0 // CHECK:STDOUT: %.loc15_9: type = splice_block %i32.loc15_9 [concrete = constants.%i32] { // CHECK:STDOUT: %int_32.loc15_9: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] @@ -131,6 +133,7 @@ fn C(n: i32, m: i32) -> i32 = "int.sadd"; // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32.loc23_25: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc23_25: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] +// CHECK:STDOUT: %.loc23_25: form = init_form %i32.loc23_25, call_param2 [concrete = constants.%.88a] // CHECK:STDOUT: %n.param: %i32 = value_param call_param0 // CHECK:STDOUT: %.loc23_9: type = splice_block %i32.loc23_9 [concrete = constants.%i32] { // CHECK:STDOUT: %int_32.loc23_9: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] @@ -156,6 +159,7 @@ fn C(n: i32, m: i32) -> i32 = "int.sadd"; // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32.loc25_25: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc25_25: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] +// CHECK:STDOUT: %.loc25_25: form = init_form %i32.loc25_25, call_param2 [concrete = constants.%.88a] // CHECK:STDOUT: %n.param: %i32 = value_param call_param0 // CHECK:STDOUT: %.loc25_9: type = splice_block %i32.loc25_9 [concrete = constants.%i32] { // CHECK:STDOUT: %int_32.loc25_9: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] @@ -181,6 +185,7 @@ fn C(n: i32, m: i32) -> i32 = "int.sadd"; // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32.loc33_25: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc33_25: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] +// CHECK:STDOUT: %.loc33_25: form = init_form %i32.loc33_25, call_param2 [concrete = constants.%.88a] // CHECK:STDOUT: %n.param: %i32 = value_param call_param0 // CHECK:STDOUT: %.loc33_9: type = splice_block %i32.loc33_9 [concrete = constants.%i32] { // CHECK:STDOUT: %int_32.loc33_9: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] @@ -206,6 +211,7 @@ fn C(n: i32, m: i32) -> i32 = "int.sadd"; // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32.loc35_25: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc35_25: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] +// CHECK:STDOUT: %.loc35_25: form = init_form %i32.loc35_25, call_param2 [concrete = constants.%.88a] // CHECK:STDOUT: %n.param: %i32 = value_param call_param0 // CHECK:STDOUT: %.loc35_9: type = splice_block %i32.loc35_9 [concrete = constants.%i32] { // CHECK:STDOUT: %int_32.loc35_9: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] @@ -231,6 +237,7 @@ fn C(n: i32, m: i32) -> i32 = "int.sadd"; // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32.loc43_25: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc43_25: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] +// CHECK:STDOUT: %.loc43_25: form = init_form %i32.loc43_25, call_param2 [concrete = constants.%.88a] // CHECK:STDOUT: %n.param: %i32 = value_param call_param0 // CHECK:STDOUT: %.loc43_9: type = splice_block %i32.loc43_9 [concrete = constants.%i32] { // CHECK:STDOUT: %int_32.loc43_9: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] diff --git a/toolchain/check/testdata/function/builtin/import.carbon b/toolchain/check/testdata/function/builtin/import.carbon index 07cc545db38f..ac405a68994f 100644 --- a/toolchain/check/testdata/function/builtin/import.carbon +++ b/toolchain/check/testdata/function/builtin/import.carbon @@ -34,19 +34,24 @@ var arr: array(i32, Core.AsIntLiteral(Core.TestAdd(Core.AsI32(1), Core.AsI32(2)) // CHECK:STDOUT: --- core.carbon // CHECK:STDOUT: // CHECK:STDOUT: constants { +// CHECK:STDOUT: %.d96: form = init_form type, call_param0 [concrete] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %IntLiteral.type: type = fn_type @IntLiteral [concrete] // CHECK:STDOUT: %IntLiteral: %IntLiteral.type = struct_value () [concrete] // CHECK:STDOUT: %pattern_type.dc0: type = pattern_type Core.IntLiteral [concrete] +// CHECK:STDOUT: %.39d: form = init_form type, call_param1 [concrete] // CHECK:STDOUT: %Int.type: type = fn_type @Int [concrete] // CHECK:STDOUT: %Int: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] // CHECK:STDOUT: %i32.builtin: type = int_type signed, %int_32 [concrete] +// CHECK:STDOUT: %.8b6: form = init_form %i32.builtin, call_param1 [concrete] // CHECK:STDOUT: %pattern_type.956: type = pattern_type %i32.builtin [concrete] // CHECK:STDOUT: %AsI32.type: type = fn_type @AsI32 [concrete] // CHECK:STDOUT: %AsI32: %AsI32.type = struct_value () [concrete] +// CHECK:STDOUT: %.026: form = init_form Core.IntLiteral, call_param1 [concrete] // CHECK:STDOUT: %AsIntLiteral.type: type = fn_type @AsIntLiteral [concrete] // CHECK:STDOUT: %AsIntLiteral: %AsIntLiteral.type = struct_value () [concrete] +// CHECK:STDOUT: %.4c4: form = init_form %i32.builtin, call_param2 [concrete] // CHECK:STDOUT: %TestAdd.type: type = fn_type @TestAdd [concrete] // CHECK:STDOUT: %TestAdd: %TestAdd.type = struct_value () [concrete] // CHECK:STDOUT: } @@ -63,6 +68,7 @@ var arr: array(i32, Core.AsIntLiteral(Core.TestAdd(Core.AsI32(1), Core.AsI32(2)) // CHECK:STDOUT: %return.patt: %pattern_type.98f = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.98f = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { +// CHECK:STDOUT: %.loc5: form = init_form type, call_param0 [concrete = constants.%.d96] // CHECK:STDOUT: %return.param: ref type = out_param call_param0 // CHECK:STDOUT: %return: ref type = return_slot %return.param // CHECK:STDOUT: } @@ -72,6 +78,7 @@ var arr: array(i32, Core.AsIntLiteral(Core.TestAdd(Core.AsI32(1), Core.AsI32(2)) // CHECK:STDOUT: %return.patt: %pattern_type.98f = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.98f = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { +// CHECK:STDOUT: %.loc6_28: form = init_form type, call_param1 [concrete = constants.%.39d] // CHECK:STDOUT: %N.param: Core.IntLiteral = value_param call_param0 // CHECK:STDOUT: %.loc6_22.1: type = splice_block %.loc6_22.3 [concrete = Core.IntLiteral] { // CHECK:STDOUT: %IntLiteral.ref: %IntLiteral.type = name_ref IntLiteral, file.%IntLiteral.decl [concrete = constants.%IntLiteral] @@ -93,6 +100,7 @@ var arr: array(i32, Core.AsIntLiteral(Core.TestAdd(Core.AsI32(1), Core.AsI32(2)) // CHECK:STDOUT: %Int.call: init type = call constants.%Int(%int_32) [concrete = constants.%i32.builtin] // CHECK:STDOUT: %.loc8_30.1: type = value_of_initializer %Int.call [concrete = constants.%i32.builtin] // CHECK:STDOUT: %.loc8_30.2: type = converted %Int.call, %.loc8_30.1 [concrete = constants.%i32.builtin] +// CHECK:STDOUT: %.loc8_30.3: form = init_form %.loc8_30.2, call_param1 [concrete = constants.%.8b6] // CHECK:STDOUT: %a.param: Core.IntLiteral = value_param call_param0 // CHECK:STDOUT: %.loc8_24.1: type = splice_block %.loc8_24.3 [concrete = Core.IntLiteral] { // CHECK:STDOUT: %IntLiteral.ref: %IntLiteral.type = name_ref IntLiteral, file.%IntLiteral.decl [concrete = constants.%IntLiteral] @@ -114,6 +122,7 @@ var arr: array(i32, Core.AsIntLiteral(Core.TestAdd(Core.AsI32(1), Core.AsI32(2)) // CHECK:STDOUT: %IntLiteral.call: init type = call %IntLiteral.ref() [concrete = Core.IntLiteral] // CHECK:STDOUT: %.loc9_39.1: type = value_of_initializer %IntLiteral.call [concrete = Core.IntLiteral] // CHECK:STDOUT: %.loc9_39.2: type = converted %IntLiteral.call, %.loc9_39.1 [concrete = Core.IntLiteral] +// CHECK:STDOUT: %.loc9_39.3: form = init_form %.loc9_39.2, call_param1 [concrete = constants.%.026] // CHECK:STDOUT: %a.param: %i32.builtin = value_param call_param0 // CHECK:STDOUT: %.loc9_20.1: type = splice_block %.loc9_20.3 [concrete = constants.%i32.builtin] { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] @@ -137,6 +146,7 @@ var arr: array(i32, Core.AsIntLiteral(Core.TestAdd(Core.AsI32(1), Core.AsI32(2)) // CHECK:STDOUT: %Int.call.loc11_31: init type = call constants.%Int(%int_32.loc11_31) [concrete = constants.%i32.builtin] // CHECK:STDOUT: %.loc11_31.1: type = value_of_initializer %Int.call.loc11_31 [concrete = constants.%i32.builtin] // CHECK:STDOUT: %.loc11_31.2: type = converted %Int.call.loc11_31, %.loc11_31.1 [concrete = constants.%i32.builtin] +// CHECK:STDOUT: %.loc11_31.3: form = init_form %.loc11_31.2, call_param2 [concrete = constants.%.4c4] // CHECK:STDOUT: %a.param: %i32.builtin = value_param call_param0 // CHECK:STDOUT: %.loc11_15.1: type = splice_block %.loc11_15.3 [concrete = constants.%i32.builtin] { // CHECK:STDOUT: %int_32.loc11_15: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] diff --git a/toolchain/check/testdata/function/builtin/method.carbon b/toolchain/check/testdata/function/builtin/method.carbon index c7aa6dad5cd8..6c3836334f2c 100644 --- a/toolchain/check/testdata/function/builtin/method.carbon +++ b/toolchain/check/testdata/function/builtin/method.carbon @@ -29,6 +29,7 @@ var arr: array(i32, (1 as i32).(I.F)(2)); // CHECK:STDOUT: %Self.ab9: %I.type = symbolic_binding Self, 0 [symbolic] // CHECK:STDOUT: %Self.binding.as_type.d31: type = symbolic_binding_type Self, 0, %Self.ab9 [symbolic] // CHECK:STDOUT: %pattern_type.fa0: type = pattern_type %Self.binding.as_type.d31 [symbolic] +// CHECK:STDOUT: %.1fc: form = init_form %Self.binding.as_type.d31, call_param2 [symbolic] // CHECK:STDOUT: %I.F.type: type = fn_type @I.F [concrete] // CHECK:STDOUT: %I.F: %I.F.type = struct_value () [concrete] // CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type @I [concrete] @@ -39,6 +40,7 @@ var arr: array(i32, (1 as i32).(I.F)(2)); // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness @i32.as.I.impl.%I.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] +// CHECK:STDOUT: %.88a: form = init_form %i32, call_param2 [concrete] // CHECK:STDOUT: %i32.as.I.impl.F.type: type = fn_type @i32.as.I.impl.F [concrete] // CHECK:STDOUT: %i32.as.I.impl.F: %i32.as.I.impl.F.type = struct_value () [concrete] // CHECK:STDOUT: %I.facet: %I.type = facet_value %i32, (%I.impl_witness) [concrete] @@ -185,7 +187,8 @@ var arr: array(i32, (1 as i32).(I.F)(2)); // CHECK:STDOUT: } { // CHECK:STDOUT: %Self.ref.loc16_36: %I.type = name_ref Self, @I.%Self [symbolic = %Self (constants.%Self.ab9)] // CHECK:STDOUT: %Self.as_type.loc16_36: type = facet_access_type %Self.ref.loc16_36 [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type.d31)] -// CHECK:STDOUT: %.loc16_36: type = converted %Self.ref.loc16_36, %Self.as_type.loc16_36 [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type.d31)] +// CHECK:STDOUT: %.loc16_36.2: type = converted %Self.ref.loc16_36, %Self.as_type.loc16_36 [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type.d31)] +// CHECK:STDOUT: %.loc16_36.3: form = init_form %.loc16_36.2, call_param2 [symbolic = %.loc16_36.1 (constants.%.1fc)] // CHECK:STDOUT: %self.param: @I.F.%Self.binding.as_type (%Self.binding.as_type.d31) = value_param call_param0 // CHECK:STDOUT: %.loc16_14.1: type = splice_block %.loc16_14.2 [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type.d31)] { // CHECK:STDOUT: %Self.ref.loc16_14: %I.type = name_ref Self, @I.%Self [symbolic = %Self (constants.%Self.ab9)] @@ -224,6 +227,7 @@ var arr: array(i32, (1 as i32).(I.F)(2)); // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32.loc20_34: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc20_34: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] +// CHECK:STDOUT: %.loc20_34: form = init_form %i32.loc20_34, call_param2 [concrete = constants.%.88a] // CHECK:STDOUT: %self.param: %i32 = value_param call_param0 // CHECK:STDOUT: %.loc20_14: type = splice_block %i32.loc20_14 [concrete = constants.%i32] { // CHECK:STDOUT: %int_32.loc20_14: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] @@ -251,6 +255,7 @@ var arr: array(i32, (1 as i32).(I.F)(2)); // CHECK:STDOUT: %Self: %I.type = symbolic_binding Self, 0 [symbolic = %Self (constants.%Self.ab9)] // CHECK:STDOUT: %Self.binding.as_type: type = symbolic_binding_type Self, 0, %Self [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type.d31)] // CHECK:STDOUT: %pattern_type: type = pattern_type %Self.binding.as_type [symbolic = %pattern_type (constants.%pattern_type.fa0)] +// CHECK:STDOUT: %.loc16_36.1: form = init_form %Self.binding.as_type, call_param2 [symbolic = %.loc16_36.1 (constants.%.1fc)] // CHECK:STDOUT: // CHECK:STDOUT: fn(%self.param: @I.F.%Self.binding.as_type (%Self.binding.as_type.d31), %other.param: @I.F.%Self.binding.as_type (%Self.binding.as_type.d31)) -> @I.F.%Self.binding.as_type (%Self.binding.as_type.d31); // CHECK:STDOUT: } @@ -261,11 +266,13 @@ var arr: array(i32, (1 as i32).(I.F)(2)); // CHECK:STDOUT: %Self => constants.%Self.ab9 // CHECK:STDOUT: %Self.binding.as_type => constants.%Self.binding.as_type.d31 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.fa0 +// CHECK:STDOUT: %.loc16_36.1 => constants.%.1fc // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @I.F(constants.%I.facet) { // CHECK:STDOUT: %Self => constants.%I.facet // CHECK:STDOUT: %Self.binding.as_type => constants.%i32 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.7ce +// CHECK:STDOUT: %.loc16_36.1 => constants.%.88a // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/function/builtin/positional.carbon b/toolchain/check/testdata/function/builtin/positional.carbon index 3c688efcda43..c744a346ca55 100644 --- a/toolchain/check/testdata/function/builtin/positional.carbon +++ b/toolchain/check/testdata/function/builtin/positional.carbon @@ -41,6 +41,7 @@ fn Mul = "int.smul"; // CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] +// CHECK:STDOUT: %.941: form = init_form %i32, call_param0 [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %Add.type: type = fn_type @Add [concrete] // CHECK:STDOUT: %Add: %Add.type = struct_value () [concrete] @@ -70,6 +71,7 @@ fn Mul = "int.smul"; // CHECK:STDOUT: } { // 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: %.loc10: form = init_form %i32, call_param0 [concrete = constants.%.941] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/function/call/alias.carbon b/toolchain/check/testdata/function/call/alias.carbon index 39009d898eb3..eb0aec939c64 100644 --- a/toolchain/check/testdata/function/call/alias.carbon +++ b/toolchain/check/testdata/function/call/alias.carbon @@ -25,6 +25,7 @@ fn Main() { // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %.62c: form = init_form %empty_tuple.type, call_param0 [concrete] // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %A.type: type = fn_type @A [concrete] // CHECK:STDOUT: %A: %A.type = struct_value () [concrete] @@ -58,6 +59,7 @@ fn Main() { // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc15_12.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc15_12.2: type = converted %.loc15_12.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %.loc15_12.3: form = init_form %.loc15_12.2, call_param0 [concrete = constants.%.62c] // CHECK:STDOUT: %return.param: ref %empty_tuple.type = out_param call_param0 // CHECK:STDOUT: %return: ref %empty_tuple.type = return_slot %return.param // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/function/call/empty_struct.carbon b/toolchain/check/testdata/function/call/empty_struct.carbon index 09ef31bd4973..56901273de02 100644 --- a/toolchain/check/testdata/function/call/empty_struct.carbon +++ b/toolchain/check/testdata/function/call/empty_struct.carbon @@ -26,6 +26,7 @@ fn Main() { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %empty_struct_type [concrete] +// CHECK:STDOUT: %.631: form = init_form %empty_struct_type, call_param1 [concrete] // CHECK:STDOUT: %Echo.type: type = fn_type @Echo [concrete] // CHECK:STDOUT: %Echo: %Echo.type = struct_value () [concrete] // CHECK:STDOUT: %Main.type: type = fn_type @Main [concrete] @@ -45,6 +46,7 @@ fn Main() { // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc15_20.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc15_20.2: type = converted %.loc15_20.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] +// CHECK:STDOUT: %.loc15_20.3: form = init_form %.loc15_20.2, call_param1 [concrete = constants.%.631] // CHECK:STDOUT: %a.param: %empty_struct_type = value_param call_param0 // CHECK:STDOUT: %.loc15_13.1: type = splice_block %.loc15_13.3 [concrete = constants.%empty_struct_type] { // CHECK:STDOUT: %.loc15_13.2: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] diff --git a/toolchain/check/testdata/function/call/empty_tuple.carbon b/toolchain/check/testdata/function/call/empty_tuple.carbon index 0170f89fd420..08e4621b8685 100644 --- a/toolchain/check/testdata/function/call/empty_tuple.carbon +++ b/toolchain/check/testdata/function/call/empty_tuple.carbon @@ -26,6 +26,7 @@ fn Main() { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %empty_tuple.type [concrete] +// CHECK:STDOUT: %.3e7: form = init_form %empty_tuple.type, call_param1 [concrete] // CHECK:STDOUT: %Echo.type: type = fn_type @Echo [concrete] // CHECK:STDOUT: %Echo: %Echo.type = struct_value () [concrete] // CHECK:STDOUT: %Main.type: type = fn_type @Main [concrete] @@ -45,6 +46,7 @@ fn Main() { // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc15_20.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc15_20.2: type = converted %.loc15_20.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %.loc15_20.3: form = init_form %.loc15_20.2, call_param1 [concrete = constants.%.3e7] // CHECK:STDOUT: %a.param: %empty_tuple.type = value_param call_param0 // CHECK:STDOUT: %.loc15_13.1: type = splice_block %.loc15_13.3 [concrete = constants.%empty_tuple.type] { // CHECK:STDOUT: %.loc15_13.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] diff --git a/toolchain/check/testdata/function/call/fail_return_type_mismatch.carbon b/toolchain/check/testdata/function/call/fail_return_type_mismatch.carbon index f3998f87b357..c99d48076e4a 100644 --- a/toolchain/check/testdata/function/call/fail_return_type_mismatch.carbon +++ b/toolchain/check/testdata/function/call/fail_return_type_mismatch.carbon @@ -33,6 +33,7 @@ fn Run() { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %Float.generic: %Float.type = struct_value () [concrete] // CHECK:STDOUT: %f64.d77: type = class_type @Float, @Float(%int_64) [concrete] +// CHECK:STDOUT: %.08f: form = init_form %f64.d77, call_param0 [concrete] // CHECK:STDOUT: %pattern_type.0ae: type = pattern_type %f64.d77 [concrete] // CHECK:STDOUT: %Foo.type: type = fn_type @Foo [concrete] // CHECK:STDOUT: %Foo: %Foo.type = struct_value () [concrete] @@ -95,6 +96,7 @@ fn Run() { // CHECK:STDOUT: } { // CHECK:STDOUT: %int_64: Core.IntLiteral = int_value 64 [concrete = constants.%int_64] // CHECK:STDOUT: %f64: type = class_type @Float, @Float(constants.%int_64) [concrete = constants.%f64.d77] +// CHECK:STDOUT: %.loc15_13: form = init_form %f64, call_param0 [concrete = constants.%.08f] // CHECK:STDOUT: %return.param: ref %f64.d77 = out_param call_param0 // CHECK:STDOUT: %return: ref %f64.d77 = return_slot %return.param // CHECK:STDOUT: } @@ -109,8 +111,8 @@ fn Run() { // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.FloatLiteral.as.ImplicitAs.impl.Convert(constants.%int_64) [concrete = constants.%Core.FloatLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc15_29.2: = bound_method %float, %specific_fn [concrete = constants.%bound_method] // CHECK:STDOUT: %Core.FloatLiteral.as.ImplicitAs.impl.Convert.call: init %f64.d77 = call %bound_method.loc15_29.2(%float) [concrete = constants.%float.d20] -// CHECK:STDOUT: %.loc15: init %f64.d77 = converted %float, %Core.FloatLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%float.d20] -// CHECK:STDOUT: return %.loc15 to %return +// CHECK:STDOUT: %.loc15_29: init %f64.d77 = converted %float, %Core.FloatLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%float.d20] +// CHECK:STDOUT: return %.loc15_29 to %return // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Run() { diff --git a/toolchain/check/testdata/function/call/i32.carbon b/toolchain/check/testdata/function/call/i32.carbon index 493c55f0ab42..725636210dd6 100644 --- a/toolchain/check/testdata/function/call/i32.carbon +++ b/toolchain/check/testdata/function/call/i32.carbon @@ -30,6 +30,7 @@ fn Main() { // CHECK:STDOUT: %N: Core.IntLiteral = symbolic_binding N, 0 [symbolic] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] +// CHECK:STDOUT: %.4d5: form = init_form %i32, call_param1 [concrete] // CHECK:STDOUT: %Echo.type: type = fn_type @Echo [concrete] // CHECK:STDOUT: %Echo: %Echo.type = struct_value () [concrete] // CHECK:STDOUT: %Copy.type: type = facet_type <@Copy> [concrete] @@ -100,8 +101,9 @@ fn Main() { // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32.loc15_20: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc15_20: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] +// CHECK:STDOUT: %.loc15_20: form = init_form %i32.loc15_20, call_param1 [concrete = constants.%.4d5] // CHECK:STDOUT: %a.param: %i32 = value_param call_param0 -// CHECK:STDOUT: %.loc15: type = splice_block %i32.loc15_12 [concrete = constants.%i32] { +// CHECK:STDOUT: %.loc15_12: type = splice_block %i32.loc15_12 [concrete = constants.%i32] { // CHECK:STDOUT: %int_32.loc15_12: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc15_12: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/function/call/prefer_unqualified_lookup.carbon b/toolchain/check/testdata/function/call/prefer_unqualified_lookup.carbon index 490f250ae466..46de0b234c51 100644 --- a/toolchain/check/testdata/function/call/prefer_unqualified_lookup.carbon +++ b/toolchain/check/testdata/function/call/prefer_unqualified_lookup.carbon @@ -42,6 +42,7 @@ fn Class(F:! type).Inner.G() -> i32 { return F(); } // CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] +// CHECK:STDOUT: %.941: form = init_form %i32, call_param0 [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %Inner.F.type: type = fn_type @Inner.F, @Inner(%F) [symbolic] // CHECK:STDOUT: %Inner.F: %Inner.F.type = struct_value () [symbolic] @@ -102,6 +103,7 @@ fn Class(F:! type).Inner.G() -> i32 { return F(); } // CHECK:STDOUT: %F.loc13_10: type = symbolic_binding F, 0 [symbolic = @Class.%F.loc5_13.1 (constants.%F)] // 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: %.loc13_33: form = init_form %i32.loc13, call_param0 [concrete = constants.%.941] // CHECK:STDOUT: %return.param.loc13: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return.loc13: ref %i32 = return_slot %return.param.loc13 // CHECK:STDOUT: } @@ -139,6 +141,7 @@ fn Class(F:! type).Inner.G() -> i32 { return F(); } // CHECK:STDOUT: } { // 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: %.loc8_15: form = init_form %i32, call_param0 [concrete = constants.%.941] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } @@ -148,6 +151,7 @@ fn Class(F:! type).Inner.G() -> i32 { return F(); } // CHECK:STDOUT: } { // 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: %.loc9: form = init_form %i32.loc9, call_param0 [concrete = constants.%.941] // CHECK:STDOUT: %return.param.loc9: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return.loc9: ref %i32 = return_slot %return.param.loc9 // CHECK:STDOUT: } @@ -172,8 +176,8 @@ fn Class(F:! type).Inner.G() -> i32 { return F(); } // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc8_29.2: = bound_method %int_0, %specific_fn [concrete = constants.%bound_method] // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc8_29.2(%int_0) [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: %.loc8: init %i32 = converted %int_0, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: return %.loc8 to %return +// CHECK:STDOUT: %.loc8_29: init %i32 = converted %int_0, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: return %.loc8_29 to %return // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -186,8 +190,8 @@ fn Class(F:! type).Inner.G() -> i32 { return F(); } // CHECK:STDOUT: // CHECK:STDOUT: fn() -> %i32 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc13: @Inner.G.%Inner.F.type (%Inner.F.type) = specific_constant @Inner.%Inner.F.decl, @Inner(constants.%F) [symbolic = %Inner.F (constants.%Inner.F)] -// CHECK:STDOUT: %F.ref: @Inner.G.%Inner.F.type (%Inner.F.type) = name_ref F, %.loc13 [symbolic = %Inner.F (constants.%Inner.F)] +// CHECK:STDOUT: %.loc13_46: @Inner.G.%Inner.F.type (%Inner.F.type) = specific_constant @Inner.%Inner.F.decl, @Inner(constants.%F) [symbolic = %Inner.F (constants.%Inner.F)] +// CHECK:STDOUT: %F.ref: @Inner.G.%Inner.F.type (%Inner.F.type) = name_ref F, %.loc13_46 [symbolic = %Inner.F (constants.%Inner.F)] // CHECK:STDOUT: %Inner.F.specific_fn.loc13_46.1: = specific_function %F.ref, @Inner.F(constants.%F) [symbolic = %Inner.F.specific_fn.loc13_46.2 (constants.%Inner.F.specific_fn)] // CHECK:STDOUT: %Inner.F.call: init %i32 = call %Inner.F.specific_fn.loc13_46.1() // CHECK:STDOUT: return %Inner.F.call to %return.loc13 diff --git a/toolchain/check/testdata/function/declaration/fail_import_incomplete_return.carbon b/toolchain/check/testdata/function/declaration/fail_import_incomplete_return.carbon index fd9ee552e5a9..747b14505f38 100644 --- a/toolchain/check/testdata/function/declaration/fail_import_incomplete_return.carbon +++ b/toolchain/check/testdata/function/declaration/fail_import_incomplete_return.carbon @@ -93,11 +93,13 @@ fn CallFAndGIncomplete() { // CHECK:STDOUT: constants { // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %D: type = class_type @D [concrete] +// CHECK:STDOUT: %.64f: form = init_form %C, call_param0 [concrete] // CHECK:STDOUT: %pattern_type.7c7: type = pattern_type %C [concrete] // CHECK:STDOUT: %ReturnCUnused.type: type = fn_type @ReturnCUnused [concrete] // CHECK:STDOUT: %ReturnCUnused: %ReturnCUnused.type = struct_value () [concrete] // CHECK:STDOUT: %ReturnCUsed.type: type = fn_type @ReturnCUsed [concrete] // CHECK:STDOUT: %ReturnCUsed: %ReturnCUsed.type = struct_value () [concrete] +// CHECK:STDOUT: %.101: form = init_form %D, call_param0 [concrete] // CHECK:STDOUT: %pattern_type.9c8: type = pattern_type %D [concrete] // CHECK:STDOUT: %ReturnDUnused.type: type = fn_type @ReturnDUnused [concrete] // CHECK:STDOUT: %ReturnDUnused: %ReturnDUnused.type = struct_value () [concrete] @@ -135,6 +137,7 @@ fn CallFAndGIncomplete() { // CHECK:STDOUT: %return.param_patt: %pattern_type.7c7 = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] +// CHECK:STDOUT: %.loc7: form = init_form %C.ref, call_param0 [concrete = constants.%.64f] // CHECK:STDOUT: %return.param: ref %C = out_param call_param0 // CHECK:STDOUT: %return: ref %C = return_slot %return.param // CHECK:STDOUT: } @@ -143,6 +146,7 @@ fn CallFAndGIncomplete() { // CHECK:STDOUT: %return.param_patt: %pattern_type.7c7 = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] +// CHECK:STDOUT: %.loc8: form = init_form %C.ref, call_param0 [concrete = constants.%.64f] // CHECK:STDOUT: %return.param: ref %C = out_param call_param0 // CHECK:STDOUT: %return: ref %C = return_slot %return.param // CHECK:STDOUT: } @@ -151,6 +155,7 @@ fn CallFAndGIncomplete() { // CHECK:STDOUT: %return.param_patt: %pattern_type.9c8 = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl.loc5 [concrete = constants.%D] +// CHECK:STDOUT: %.loc9: form = init_form %D.ref, call_param0 [concrete = constants.%.101] // CHECK:STDOUT: %return.param: ref %D = out_param call_param0 // CHECK:STDOUT: %return: ref %D = return_slot %return.param // CHECK:STDOUT: } @@ -159,6 +164,7 @@ fn CallFAndGIncomplete() { // CHECK:STDOUT: %return.param_patt: %pattern_type.9c8 = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl.loc5 [concrete = constants.%D] +// CHECK:STDOUT: %.loc10: form = init_form %D.ref, call_param0 [concrete = constants.%.101] // CHECK:STDOUT: %return.param: ref %D = out_param call_param0 // CHECK:STDOUT: %return: ref %D = return_slot %return.param // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/function/declaration/fail_todo_no_params.carbon b/toolchain/check/testdata/function/declaration/fail_todo_no_params.carbon index ceedebb114b8..21cb3e15d4a2 100644 --- a/toolchain/check/testdata/function/declaration/fail_todo_no_params.carbon +++ b/toolchain/check/testdata/function/declaration/fail_todo_no_params.carbon @@ -121,6 +121,7 @@ fn A { // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %.62c: form = init_form %empty_tuple.type, call_param0 [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %A.type: type = fn_type @A [concrete] // CHECK:STDOUT: %A: %A.type = struct_value () [concrete] @@ -136,6 +137,7 @@ fn A { // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc7_10.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc7_10.2: type = converted %.loc7_10.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %.loc7_10.3: form = init_form %.loc7_10.2, call_param0 [concrete = constants.%.62c] // CHECK:STDOUT: %return.param: ref %empty_tuple.type = out_param call_param0 // CHECK:STDOUT: %return: ref %empty_tuple.type = return_slot %return.param // CHECK:STDOUT: } @@ -148,6 +150,7 @@ fn A { // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %.62c: form = init_form %empty_tuple.type, call_param0 [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %A.type: type = fn_type @A [concrete] // CHECK:STDOUT: %A: %A.type = struct_value () [concrete] @@ -163,6 +166,7 @@ fn A { // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc7_12.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc7_12.2: type = converted %.loc7_12.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %.loc7_12.3: form = init_form %.loc7_12.2, call_param0 [concrete = constants.%.62c] // CHECK:STDOUT: %return.param: ref %empty_tuple.type = out_param call_param0 // CHECK:STDOUT: %return: ref %empty_tuple.type = return_slot %return.param // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/function/declaration/import.carbon b/toolchain/check/testdata/function/declaration/import.carbon index 3468caff46a9..0c229dd3f18d 100644 --- a/toolchain/check/testdata/function/declaration/import.carbon +++ b/toolchain/check/testdata/function/declaration/import.carbon @@ -270,6 +270,7 @@ import library "extern_api"; // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] +// CHECK:STDOUT: %.4d5: form = init_form %i32, call_param1 [concrete] // CHECK:STDOUT: %B.type: type = fn_type @B [concrete] // CHECK:STDOUT: %B: %B.type = struct_value () [concrete] // CHECK:STDOUT: %tuple.type.85c: type = tuple_type (type) [concrete] @@ -277,6 +278,7 @@ import library "extern_api"; // CHECK:STDOUT: %tuple.type.a1c: type = tuple_type (%i32) [concrete] // CHECK:STDOUT: %pattern_type.b74: type = pattern_type %tuple.type.a1c [concrete] // CHECK:STDOUT: %struct_type.c: type = struct_type {.c: %i32} [concrete] +// CHECK:STDOUT: %.d06: form = init_form %struct_type.c, call_param1 [concrete] // CHECK:STDOUT: %pattern_type.688: type = pattern_type %struct_type.c [concrete] // CHECK:STDOUT: %C.type: type = fn_type @C [concrete] // CHECK:STDOUT: %C: %C.type = struct_value () [concrete] @@ -314,8 +316,9 @@ import library "extern_api"; // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32.loc5_17: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc5_17: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] +// CHECK:STDOUT: %.loc5_17: form = init_form %i32.loc5_17, call_param1 [concrete = constants.%.4d5] // CHECK:STDOUT: %b.param: %i32 = value_param call_param0 -// CHECK:STDOUT: %.loc5: type = splice_block %i32.loc5_9 [concrete = constants.%i32] { +// CHECK:STDOUT: %.loc5_9: type = splice_block %i32.loc5_9 [concrete = constants.%i32] { // CHECK:STDOUT: %int_32.loc5_9: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc5_9: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } @@ -332,6 +335,7 @@ import library "extern_api"; // CHECK:STDOUT: %int_32.loc6_25: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc6_25: 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: %.loc6_28: form = init_form %struct_type.c, call_param1 [concrete = constants.%.d06] // CHECK:STDOUT: %c.param: %tuple.type.a1c = value_param call_param0 // CHECK:STDOUT: %.loc6_14.1: type = splice_block %.loc6_14.3 [concrete = constants.%tuple.type.a1c] { // CHECK:STDOUT: %int_32.loc6_10: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] @@ -370,6 +374,7 @@ import library "extern_api"; // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] +// CHECK:STDOUT: %.4d5: form = init_form %i32, call_param1 [concrete] // CHECK:STDOUT: %B.type: type = fn_type @B [concrete] // CHECK:STDOUT: %B: %B.type = struct_value () [concrete] // CHECK:STDOUT: %tuple.type.85c: type = tuple_type (type) [concrete] @@ -377,6 +382,7 @@ import library "extern_api"; // CHECK:STDOUT: %tuple.type.a1c: type = tuple_type (%i32) [concrete] // CHECK:STDOUT: %pattern_type.b74: type = pattern_type %tuple.type.a1c [concrete] // CHECK:STDOUT: %struct_type.c: type = struct_type {.c: %i32} [concrete] +// CHECK:STDOUT: %.d06: form = init_form %struct_type.c, call_param1 [concrete] // CHECK:STDOUT: %pattern_type.688: type = pattern_type %struct_type.c [concrete] // CHECK:STDOUT: %C.type: type = fn_type @C [concrete] // CHECK:STDOUT: %C: %C.type = struct_value () [concrete] @@ -414,8 +420,9 @@ import library "extern_api"; // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32.loc5_52: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc5_52: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] +// CHECK:STDOUT: %.loc5_52: form = init_form %i32.loc5_52, call_param1 [concrete = constants.%.4d5] // CHECK:STDOUT: %b.param: %i32 = value_param call_param0 -// CHECK:STDOUT: %.loc5: type = splice_block %i32.loc5_44 [concrete = constants.%i32] { +// CHECK:STDOUT: %.loc5_44: type = splice_block %i32.loc5_44 [concrete = constants.%i32] { // CHECK:STDOUT: %int_32.loc5_44: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc5_44: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } @@ -432,6 +439,7 @@ import library "extern_api"; // CHECK:STDOUT: %int_32.loc6_60: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc6_60: 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: %.loc6_63: form = init_form %struct_type.c, call_param1 [concrete = constants.%.d06] // CHECK:STDOUT: %c.param: %tuple.type.a1c = value_param call_param0 // CHECK:STDOUT: %.loc6_49.1: type = splice_block %.loc6_49.3 [concrete = constants.%tuple.type.a1c] { // CHECK:STDOUT: %int_32.loc6_45: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] @@ -658,12 +666,14 @@ import library "extern_api"; // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] +// CHECK:STDOUT: %.4d5: form = init_form %i32, call_param1 [concrete] // CHECK:STDOUT: %B.type: type = fn_type @B [concrete] // CHECK:STDOUT: %B: %B.type = struct_value () [concrete] // CHECK:STDOUT: %tuple.type.85c: type = tuple_type (type) [concrete] // CHECK:STDOUT: %tuple.896: %tuple.type.85c = tuple_value (%i32) [concrete] // CHECK:STDOUT: %tuple.type.a1c: type = tuple_type (%i32) [concrete] // CHECK:STDOUT: %struct_type.c: type = struct_type {.c: %i32} [concrete] +// CHECK:STDOUT: %.d06: form = init_form %struct_type.c, call_param1 [concrete] // CHECK:STDOUT: %pattern_type.688: type = pattern_type %struct_type.c [concrete] // CHECK:STDOUT: %C.type: type = fn_type @C [concrete] // CHECK:STDOUT: %C: %C.type = struct_value () [concrete] @@ -732,8 +742,9 @@ import library "extern_api"; // CHECK:STDOUT: %B.decl: %B.type = fn_decl @B [concrete = constants.%B] {} { // CHECK:STDOUT: %int_32.loc23_24: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc23_24: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] +// CHECK:STDOUT: %.loc23_24: form = init_form %i32.loc23_24, call_param1 [concrete = constants.%.4d5] // CHECK:STDOUT: %b.param: %i32 = value_param call_param0 -// CHECK:STDOUT: %.loc23: type = splice_block %i32.loc23_16 [concrete = constants.%i32] { +// CHECK:STDOUT: %.loc23_16: type = splice_block %i32.loc23_16 [concrete = constants.%i32] { // CHECK:STDOUT: %int_32.loc23_16: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc23_16: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } @@ -745,6 +756,7 @@ import library "extern_api"; // CHECK:STDOUT: %int_32.loc32_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc32_32: 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: %.loc32_35: form = init_form %struct_type.c, call_param1 [concrete = constants.%.d06] // CHECK:STDOUT: %c.param: %tuple.type.a1c = value_param call_param0 // CHECK:STDOUT: %.loc32_21.1: type = splice_block %.loc32_21.3 [concrete = constants.%tuple.type.a1c] { // CHECK:STDOUT: %int_32.loc32_17: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] @@ -883,8 +895,10 @@ import library "extern_api"; // CHECK:STDOUT: %D: %D.type = struct_value () [concrete] // CHECK:STDOUT: %E.type: type = fn_type @E [concrete] // CHECK:STDOUT: %E: %E.type = struct_value () [concrete] +// CHECK:STDOUT: %.49e: form = init_form %i32, call_param1 [concrete] // CHECK:STDOUT: %tuple.type.85c: type = tuple_type (type) [concrete] // CHECK:STDOUT: %tuple.38e: %tuple.type.85c = tuple_value (%i32) [concrete] +// CHECK:STDOUT: %.407: form = init_form %struct_type.c, call_param1 [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] @@ -946,8 +960,9 @@ import library "extern_api"; // CHECK:STDOUT: %B.decl: %B.type = fn_decl @B [concrete = constants.%B] {} { // CHECK:STDOUT: %int_32.loc7_24: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc7_24: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] +// CHECK:STDOUT: %.loc7_24: form = init_form %i32.loc7_24, call_param1 [concrete = constants.%.49e] // CHECK:STDOUT: %b.param: %i32 = value_param call_param0 -// CHECK:STDOUT: %.loc7: type = splice_block %i32.loc7_16 [concrete = constants.%i32] { +// CHECK:STDOUT: %.loc7_16: type = splice_block %i32.loc7_16 [concrete = constants.%i32] { // CHECK:STDOUT: %int_32.loc7_16: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc7_16: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } @@ -959,6 +974,7 @@ import library "extern_api"; // CHECK:STDOUT: %int_32.loc8_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc8_32: 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: %.loc8_35: form = init_form %struct_type.c, call_param1 [concrete = constants.%.407] // CHECK:STDOUT: %c.param: %tuple.type.dd4 = value_param call_param0 // CHECK:STDOUT: %.loc8_21.1: type = splice_block %.loc8_21.3 [concrete = constants.%tuple.type.dd4] { // CHECK:STDOUT: %int_32.loc8_17: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] diff --git a/toolchain/check/testdata/function/declaration/ref.carbon b/toolchain/check/testdata/function/declaration/ref.carbon new file mode 100644 index 000000000000..f42c90e279e2 --- /dev/null +++ b/toolchain/check/testdata/function/declaration/ref.carbon @@ -0,0 +1,24 @@ +// Part of the Carbon Language project, under the Apache License v2.0 with LLVM +// Exceptions. See /LICENSE for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/int.carbon +// EXTRA-ARGS: --dump-sem-ir-ranges=only +// +// AUTOUPDATE +// TIP: To test this file alone, run: +// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/function/declaration/ref.carbon +// TIP: To dump output, run: +// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/function/declaration/ref.carbon + +// --- fail_todo_ref_return.carbon + +fn F() -> ref i32; + +fn G() { + // CHECK:STDERR: fail_todo_ref_return.carbon:[[@LINE+4]]:20: error: cannot bind durable reference to non-reference value of type `i32` [ConversionFailureNonRefToRef] + // CHECK:STDERR: let ref x: i32 = F(); + // CHECK:STDERR: ^~~ + // CHECK:STDERR: + let ref x: i32 = F(); +} diff --git a/toolchain/check/testdata/function/definition/fail_decl_param_mismatch.carbon b/toolchain/check/testdata/function/definition/fail_decl_param_mismatch.carbon index 9e107328792e..c90af02a4d52 100644 --- a/toolchain/check/testdata/function/definition/fail_decl_param_mismatch.carbon +++ b/toolchain/check/testdata/function/definition/fail_decl_param_mismatch.carbon @@ -89,6 +89,7 @@ fn K() -> {} { return {}; } // CHECK:STDOUT: %H.414c03.2: %H.type.7917a6.2 = struct_value () [concrete] // CHECK:STDOUT: %I.type.f30c8e.1: type = fn_type @I.loc42 [concrete] // CHECK:STDOUT: %I.73832e.1: %I.type.f30c8e.1 = struct_value () [concrete] +// CHECK:STDOUT: %.62c: form = init_form %empty_tuple.type, call_param0 [concrete] // CHECK:STDOUT: %I.type.f30c8e.2: type = fn_type @I.loc50 [concrete] // CHECK:STDOUT: %I.73832e.2: %I.type.f30c8e.2 = struct_value () [concrete] // CHECK:STDOUT: %J.type.fe0423.1: type = fn_type @J.loc52 [concrete] @@ -99,6 +100,7 @@ fn K() -> {} { return {}; } // CHECK:STDOUT: %K.548a8d.1: %K.type.4b1c50.1 = struct_value () [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] +// CHECK:STDOUT: %.e6e: form = init_form %empty_struct_type, call_param0 [concrete] // CHECK:STDOUT: %pattern_type.a96: type = pattern_type %empty_struct_type [concrete] // CHECK:STDOUT: %K.type.4b1c50.2: type = fn_type @K.loc70 [concrete] // CHECK:STDOUT: %K.548a8d.2: %K.type.4b1c50.2 = struct_value () [concrete] @@ -162,6 +164,7 @@ fn K() -> {} { return {}; } // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc50_12.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc50_12.2: type = converted %.loc50_12.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %.loc50_12.3: form = init_form %.loc50_12.2, call_param0 [concrete = constants.%.62c] // CHECK:STDOUT: %return.param: ref %empty_tuple.type = out_param call_param0 // CHECK:STDOUT: %return: ref %empty_tuple.type = return_slot %return.param // CHECK:STDOUT: } @@ -171,6 +174,7 @@ fn K() -> {} { return {}; } // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc52_12.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc52_12.2: type = converted %.loc52_12.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %.loc52_12.3: form = init_form %.loc52_12.2, call_param0 [concrete = constants.%.62c] // CHECK:STDOUT: %return.param: ref %empty_tuple.type = out_param call_param0 // CHECK:STDOUT: %return: ref %empty_tuple.type = return_slot %return.param // CHECK:STDOUT: } @@ -181,6 +185,7 @@ fn K() -> {} { return {}; } // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc62_12.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc62_12.2: type = converted %.loc62_12.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %.loc62_12.3: form = init_form %.loc62_12.2, call_param0 [concrete = constants.%.62c] // CHECK:STDOUT: %return.param: ref %empty_tuple.type = out_param call_param0 // CHECK:STDOUT: %return: ref %empty_tuple.type = return_slot %return.param // CHECK:STDOUT: } @@ -190,6 +195,7 @@ fn K() -> {} { return {}; } // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc70_12.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc70_12.2: type = converted %.loc70_12.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] +// CHECK:STDOUT: %.loc70_12.3: form = init_form %.loc70_12.2, call_param0 [concrete = constants.%.e6e] // CHECK:STDOUT: %return.param: ref %empty_struct_type = out_param call_param0 // CHECK:STDOUT: %return: ref %empty_struct_type = return_slot %return.param // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/function/definition/import.carbon b/toolchain/check/testdata/function/definition/import.carbon index 2971986befdc..9bd903accf36 100644 --- a/toolchain/check/testdata/function/definition/import.carbon +++ b/toolchain/check/testdata/function/definition/import.carbon @@ -125,6 +125,7 @@ fn D() {} // CHECK:STDOUT: %N: Core.IntLiteral = symbolic_binding N, 0 [symbolic] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] +// CHECK:STDOUT: %.4d5: form = init_form %i32, call_param1 [concrete] // CHECK:STDOUT: %B.type: type = fn_type @B [concrete] // CHECK:STDOUT: %B: %B.type = struct_value () [concrete] // CHECK:STDOUT: %Copy.type: type = facet_type <@Copy> [concrete] @@ -142,6 +143,7 @@ fn D() {} // CHECK:STDOUT: %tuple.type.a1c: type = tuple_type (%i32) [concrete] // CHECK:STDOUT: %pattern_type.b74: type = pattern_type %tuple.type.a1c [concrete] // CHECK:STDOUT: %struct_type.c: type = struct_type {.c: %i32} [concrete] +// CHECK:STDOUT: %.d06: form = init_form %struct_type.c, call_param1 [concrete] // CHECK:STDOUT: %pattern_type.688: type = pattern_type %struct_type.c [concrete] // CHECK:STDOUT: %C.type: type = fn_type @C [concrete] // CHECK:STDOUT: %C: %C.type = struct_value () [concrete] @@ -181,8 +183,9 @@ fn D() {} // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32.loc5_17: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc5_17: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] +// CHECK:STDOUT: %.loc5_17: form = init_form %i32.loc5_17, call_param1 [concrete = constants.%.4d5] // CHECK:STDOUT: %b.param: %i32 = value_param call_param0 -// CHECK:STDOUT: %.loc5: type = splice_block %i32.loc5_9 [concrete = constants.%i32] { +// CHECK:STDOUT: %.loc5_9: type = splice_block %i32.loc5_9 [concrete = constants.%i32] { // CHECK:STDOUT: %int_32.loc5_9: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc5_9: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } @@ -199,6 +202,7 @@ fn D() {} // CHECK:STDOUT: %int_32.loc6_25: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc6_25: 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: %.loc6_28: form = init_form %struct_type.c, call_param1 [concrete = constants.%.d06] // CHECK:STDOUT: %c.param: %tuple.type.a1c = value_param call_param0 // CHECK:STDOUT: %.loc6_14.1: type = splice_block %.loc6_14.3 [concrete = constants.%tuple.type.a1c] { // CHECK:STDOUT: %int_32.loc6_10: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] @@ -427,6 +431,7 @@ fn D() {} // CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] +// CHECK:STDOUT: %.4d5: form = init_form %i32, call_param1 [concrete] // CHECK:STDOUT: %B.type: type = fn_type @B [concrete] // CHECK:STDOUT: %B: %B.type = struct_value () [concrete] // CHECK:STDOUT: } @@ -457,8 +462,9 @@ fn D() {} // CHECK:STDOUT: %B.decl: %B.type = fn_decl @B [concrete = constants.%B] {} { // CHECK:STDOUT: %int_32.loc23_17: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc23_17: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] +// CHECK:STDOUT: %.loc23_17: form = init_form %i32.loc23_17, call_param1 [concrete = constants.%.4d5] // CHECK:STDOUT: %b.param: %i32 = value_param call_param0 -// CHECK:STDOUT: %.loc23: type = splice_block %i32.loc23_9 [concrete = constants.%i32] { +// CHECK:STDOUT: %.loc23_9: type = splice_block %i32.loc23_9 [concrete = constants.%i32] { // CHECK:STDOUT: %int_32.loc23_9: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc23_9: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/function/definition/syntactic_merge.carbon b/toolchain/check/testdata/function/definition/syntactic_merge.carbon index e98e1681f085..541e160fba31 100644 --- a/toolchain/check/testdata/function/definition/syntactic_merge.carbon +++ b/toolchain/check/testdata/function/definition/syntactic_merge.carbon @@ -769,6 +769,7 @@ fn Foo(a: const (const C)) {} // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] +// CHECK:STDOUT: %.64f: form = init_form %C, call_param0 [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %C [concrete] // CHECK:STDOUT: %Foo.type: type = fn_type @Foo [concrete] // CHECK:STDOUT: %Foo: %Foo.type = struct_value () [concrete] @@ -790,6 +791,7 @@ fn Foo(a: const (const C)) {} // CHECK:STDOUT: %return.param_patt: %pattern_type = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] +// CHECK:STDOUT: %.loc7: form = init_form %C.ref, call_param0 [concrete = constants.%.64f] // CHECK:STDOUT: %return.param.loc7: ref %C = out_param call_param0 // CHECK:STDOUT: %return.loc7: ref %C = return_slot %return.param.loc7 // CHECK:STDOUT: } @@ -798,6 +800,7 @@ fn Foo(a: const (const C)) {} // CHECK:STDOUT: %return.param_patt: %pattern_type = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D [concrete = constants.%C] +// CHECK:STDOUT: %.loc8_13: form = init_form %D.ref, call_param0 [concrete = constants.%.64f] // CHECK:STDOUT: %return.param.loc8: ref %C = out_param call_param0 // CHECK:STDOUT: %return.loc8: ref %C = return_slot %return.param.loc8 // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/function/generic/call.carbon b/toolchain/check/testdata/function/generic/call.carbon index 29f93d616617..94f241a14f58 100644 --- a/toolchain/check/testdata/function/generic/call.carbon +++ b/toolchain/check/testdata/function/generic/call.carbon @@ -78,6 +78,7 @@ fn CallSpecific(x: C*) -> C* { // CHECK:STDOUT: %pattern_type.ce2: type = pattern_type %Copy.type [concrete] // CHECK:STDOUT: %T.binding.as_type: type = symbolic_binding_type T, 0, %T.035 [symbolic] // CHECK:STDOUT: %pattern_type.9b9f0c.1: type = pattern_type %T.binding.as_type [symbolic] +// CHECK:STDOUT: %.075d25.1: form = init_form %T.binding.as_type, call_param1 [symbolic] // CHECK:STDOUT: %Function.type: type = fn_type @Function [concrete] // CHECK:STDOUT: %Function: %Function.type = struct_value () [concrete] // CHECK:STDOUT: %require_complete.67c: = require_complete_type %T.binding.as_type [symbolic] @@ -92,6 +93,7 @@ fn CallSpecific(x: C*) -> C* { // CHECK:STDOUT: %ptr.as.Copy.impl.Op.type.2d4: type = fn_type @ptr.as.Copy.impl.Op, @ptr.as.Copy.impl(%T.67d) [symbolic] // CHECK:STDOUT: %ptr.as.Copy.impl.Op.74e: %ptr.as.Copy.impl.Op.type.2d4 = struct_value () [symbolic] // CHECK:STDOUT: %pattern_type.4f4: type = pattern_type %ptr.e8f [symbolic] +// CHECK:STDOUT: %.ba4: form = init_form %ptr.e8f, call_param1 [symbolic] // CHECK:STDOUT: %Function.specific_fn.a87: = specific_function %Function, @Function(%T.035) [symbolic] // CHECK:STDOUT: %.2f2: require_specific_def_type = require_specific_def @ptr.as.Copy.impl(%T.67d) [symbolic] // CHECK:STDOUT: %Copy.lookup_impl_witness.2e6: = lookup_impl_witness %ptr.e8f, @Copy [symbolic] @@ -100,6 +102,7 @@ fn CallSpecific(x: C*) -> C* { // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %ptr.31e: type = ptr_type %C [concrete] // CHECK:STDOUT: %pattern_type.506: type = pattern_type %ptr.31e [concrete] +// CHECK:STDOUT: %.485: form = init_form %ptr.31e, call_param1 [concrete] // CHECK:STDOUT: %Copy.impl_witness.2c7: = impl_witness imports.%Copy.impl_witness_table.c3a, @ptr.as.Copy.impl(%C) [concrete] // CHECK:STDOUT: %ptr.as.Copy.impl.Op.type.411: type = fn_type @ptr.as.Copy.impl.Op, @ptr.as.Copy.impl(%C) [concrete] // CHECK:STDOUT: %ptr.as.Copy.impl.Op.ed9: %ptr.as.Copy.impl.Op.type.411 = struct_value () [concrete] @@ -134,7 +137,8 @@ fn CallSpecific(x: C*) -> C* { // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc5_37: %Copy.type = name_ref T, %T.loc5_13.2 [symbolic = %T.loc5_13.1 (constants.%T.035)] // CHECK:STDOUT: %T.as_type.loc5_37: type = facet_access_type %T.ref.loc5_37 [symbolic = %T.binding.as_type (constants.%T.binding.as_type)] -// CHECK:STDOUT: %.loc5_37: type = converted %T.ref.loc5_37, %T.as_type.loc5_37 [symbolic = %T.binding.as_type (constants.%T.binding.as_type)] +// CHECK:STDOUT: %.loc5_37.2: type = converted %T.ref.loc5_37, %T.as_type.loc5_37 [symbolic = %T.binding.as_type (constants.%T.binding.as_type)] +// CHECK:STDOUT: %.loc5_37.3: form = init_form %.loc5_37.2, call_param1 [symbolic = %.loc5_37.1 (constants.%.075d25.1)] // CHECK:STDOUT: %.loc5_21: type = splice_block %Copy.ref [concrete = constants.%Copy.type] { // CHECK:STDOUT: // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [concrete = imports.%Core] @@ -157,6 +161,7 @@ fn CallSpecific(x: C*) -> C* { // CHECK:STDOUT: %T.loc5_13.1: %Copy.type = symbolic_binding T, 0 [symbolic = %T.loc5_13.1 (constants.%T.035)] // CHECK:STDOUT: %T.binding.as_type: type = symbolic_binding_type T, 0, %T.loc5_13.1 [symbolic = %T.binding.as_type (constants.%T.binding.as_type)] // CHECK:STDOUT: %pattern_type: type = pattern_type %T.binding.as_type [symbolic = %pattern_type (constants.%pattern_type.9b9f0c.1)] +// CHECK:STDOUT: %.loc5_37.1: form = init_form %T.binding.as_type, call_param1 [symbolic = %.loc5_37.1 (constants.%.075d25.1)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete: = require_complete_type %T.binding.as_type [symbolic = %require_complete (constants.%require_complete.67c)] @@ -248,6 +253,7 @@ fn CallSpecific(x: C*) -> C* { // CHECK:STDOUT: %T.loc5_13.1 => constants.%T.035 // CHECK:STDOUT: %T.binding.as_type => constants.%T.binding.as_type // CHECK:STDOUT: %pattern_type => constants.%pattern_type.9b9f0c.1 +// CHECK:STDOUT: %.loc5_37.1 => constants.%.075d25.1 // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete => constants.%require_complete.67c @@ -261,18 +267,21 @@ fn CallSpecific(x: C*) -> C* { // CHECK:STDOUT: %T.loc10_16.1 => constants.%T.035 // CHECK:STDOUT: %T.binding.as_type => constants.%T.binding.as_type // CHECK:STDOUT: %pattern_type => constants.%pattern_type.9b9f0c.1 +// CHECK:STDOUT: %.loc10_40.1 => constants.%.075d25.1 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @CallGenericPtr(constants.%T.67d) { // CHECK:STDOUT: %T.loc16_19.1 => constants.%T.67d // CHECK:STDOUT: %ptr.loc16_33.1 => constants.%ptr.e8f // CHECK:STDOUT: %pattern_type => constants.%pattern_type.4f4 +// CHECK:STDOUT: %.loc16_40.1 => constants.%.ba4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Function(constants.%Copy.facet.c25) { // CHECK:STDOUT: %T.loc5_13.1 => constants.%Copy.facet.c25 // CHECK:STDOUT: %T.binding.as_type => constants.%ptr.e8f // CHECK:STDOUT: %pattern_type => constants.%pattern_type.4f4 +// CHECK:STDOUT: %.loc5_37.1 => constants.%.ba4 // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete => constants.%require_complete.ef1 @@ -286,6 +295,7 @@ fn CallSpecific(x: C*) -> C* { // CHECK:STDOUT: %T.loc5_13.1 => constants.%Copy.facet.a7f // CHECK:STDOUT: %T.binding.as_type => constants.%ptr.31e // CHECK:STDOUT: %pattern_type => constants.%pattern_type.506 +// CHECK:STDOUT: %.loc5_37.1 => constants.%.485 // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete => constants.%complete_type.17a @@ -303,6 +313,7 @@ fn CallSpecific(x: C*) -> C* { // CHECK:STDOUT: %pattern_type.ce2: type = pattern_type %Copy.type [concrete] // CHECK:STDOUT: %T.binding.as_type: type = symbolic_binding_type T, 0, %T.035 [symbolic] // CHECK:STDOUT: %pattern_type.9b9f0c.1: type = pattern_type %T.binding.as_type [symbolic] +// CHECK:STDOUT: %.075d25.1: form = init_form %T.binding.as_type, call_param1 [symbolic] // CHECK:STDOUT: %Function.type: type = fn_type @Function [concrete] // CHECK:STDOUT: %Function: %Function.type = struct_value () [concrete] // CHECK:STDOUT: %require_complete.67c: = require_complete_type %T.binding.as_type [symbolic] @@ -317,6 +328,7 @@ fn CallSpecific(x: C*) -> C* { // CHECK:STDOUT: %ptr.as.Copy.impl.Op.type.2d4: type = fn_type @ptr.as.Copy.impl.Op, @ptr.as.Copy.impl(%T.67d) [symbolic] // CHECK:STDOUT: %ptr.as.Copy.impl.Op.74e: %ptr.as.Copy.impl.Op.type.2d4 = struct_value () [symbolic] // CHECK:STDOUT: %pattern_type.4f4: type = pattern_type %ptr.e8f [symbolic] +// CHECK:STDOUT: %.ba4: form = init_form %ptr.e8f, call_param1 [symbolic] // CHECK:STDOUT: %Function.specific_fn.a87: = specific_function %Function, @Function(%T.035) [symbolic] // CHECK:STDOUT: %.2f2: require_specific_def_type = require_specific_def @ptr.as.Copy.impl(%T.67d) [symbolic] // CHECK:STDOUT: %Copy.lookup_impl_witness.2e6: = lookup_impl_witness %ptr.e8f, @Copy [symbolic] @@ -325,6 +337,7 @@ fn CallSpecific(x: C*) -> C* { // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %ptr.31e: type = ptr_type %C [concrete] // CHECK:STDOUT: %pattern_type.506: type = pattern_type %ptr.31e [concrete] +// CHECK:STDOUT: %.485: form = init_form %ptr.31e, call_param1 [concrete] // CHECK:STDOUT: %Copy.impl_witness.2c7: = impl_witness imports.%Copy.impl_witness_table.c3a, @ptr.as.Copy.impl(%C) [concrete] // CHECK:STDOUT: %ptr.as.Copy.impl.Op.type.411: type = fn_type @ptr.as.Copy.impl.Op, @ptr.as.Copy.impl(%C) [concrete] // CHECK:STDOUT: %ptr.as.Copy.impl.Op.ed9: %ptr.as.Copy.impl.Op.type.411 = struct_value () [concrete] @@ -359,7 +372,8 @@ fn CallSpecific(x: C*) -> C* { // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc5_37: %Copy.type = name_ref T, %T.loc5_13.2 [symbolic = %T.loc5_13.1 (constants.%T.035)] // CHECK:STDOUT: %T.as_type.loc5_37: type = facet_access_type %T.ref.loc5_37 [symbolic = %T.binding.as_type (constants.%T.binding.as_type)] -// CHECK:STDOUT: %.loc5_37: type = converted %T.ref.loc5_37, %T.as_type.loc5_37 [symbolic = %T.binding.as_type (constants.%T.binding.as_type)] +// CHECK:STDOUT: %.loc5_37.2: type = converted %T.ref.loc5_37, %T.as_type.loc5_37 [symbolic = %T.binding.as_type (constants.%T.binding.as_type)] +// CHECK:STDOUT: %.loc5_37.3: form = init_form %.loc5_37.2, call_param1 [symbolic = %.loc5_37.1 (constants.%.075d25.1)] // CHECK:STDOUT: %.loc5_21: type = splice_block %Copy.ref [concrete = constants.%Copy.type] { // CHECK:STDOUT: // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [concrete = imports.%Core] @@ -382,6 +396,7 @@ fn CallSpecific(x: C*) -> C* { // CHECK:STDOUT: %T.loc5_13.1: %Copy.type = symbolic_binding T, 0 [symbolic = %T.loc5_13.1 (constants.%T.035)] // CHECK:STDOUT: %T.binding.as_type: type = symbolic_binding_type T, 0, %T.loc5_13.1 [symbolic = %T.binding.as_type (constants.%T.binding.as_type)] // CHECK:STDOUT: %pattern_type: type = pattern_type %T.binding.as_type [symbolic = %pattern_type (constants.%pattern_type.9b9f0c.1)] +// CHECK:STDOUT: %.loc5_37.1: form = init_form %T.binding.as_type, call_param1 [symbolic = %.loc5_37.1 (constants.%.075d25.1)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete: = require_complete_type %T.binding.as_type [symbolic = %require_complete (constants.%require_complete.67c)] @@ -464,6 +479,7 @@ fn CallSpecific(x: C*) -> C* { // CHECK:STDOUT: %T.loc5_13.1 => constants.%T.035 // CHECK:STDOUT: %T.binding.as_type => constants.%T.binding.as_type // CHECK:STDOUT: %pattern_type => constants.%pattern_type.9b9f0c.1 +// CHECK:STDOUT: %.loc5_37.1 => constants.%.075d25.1 // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete => constants.%require_complete.67c @@ -477,18 +493,21 @@ fn CallSpecific(x: C*) -> C* { // CHECK:STDOUT: %T.loc10_16.1 => constants.%T.035 // CHECK:STDOUT: %T.binding.as_type => constants.%T.binding.as_type // CHECK:STDOUT: %pattern_type => constants.%pattern_type.9b9f0c.1 +// CHECK:STDOUT: %.loc10_40.1 => constants.%.075d25.1 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @CallGenericPtr(constants.%T.67d) { // CHECK:STDOUT: %T.loc16_19.1 => constants.%T.67d // CHECK:STDOUT: %ptr.loc16_33.1 => constants.%ptr.e8f // CHECK:STDOUT: %pattern_type => constants.%pattern_type.4f4 +// CHECK:STDOUT: %.loc16_40.1 => constants.%.ba4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Function(constants.%Copy.facet.c25) { // CHECK:STDOUT: %T.loc5_13.1 => constants.%Copy.facet.c25 // CHECK:STDOUT: %T.binding.as_type => constants.%ptr.e8f // CHECK:STDOUT: %pattern_type => constants.%pattern_type.4f4 +// CHECK:STDOUT: %.loc5_37.1 => constants.%.ba4 // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete => constants.%require_complete.ef1 @@ -502,6 +521,7 @@ fn CallSpecific(x: C*) -> C* { // CHECK:STDOUT: %T.loc5_13.1 => constants.%Copy.facet.a7f // CHECK:STDOUT: %T.binding.as_type => constants.%ptr.31e // CHECK:STDOUT: %pattern_type => constants.%pattern_type.506 +// CHECK:STDOUT: %.loc5_37.1 => constants.%.485 // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete => constants.%complete_type.17a diff --git a/toolchain/check/testdata/function/generic/deduce.carbon b/toolchain/check/testdata/function/generic/deduce.carbon index 5a5db42e6f6c..661590cb3537 100644 --- a/toolchain/check/testdata/function/generic/deduce.carbon +++ b/toolchain/check/testdata/function/generic/deduce.carbon @@ -221,6 +221,7 @@ fn F() { // CHECK:STDOUT: %T: type = symbolic_binding T, 0 [symbolic] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %ptr.e8f: type = ptr_type %T [symbolic] +// CHECK:STDOUT: %.9e5: form = init_form %ptr.e8f, call_param0 [symbolic] // CHECK:STDOUT: %pattern_type.4f4: type = pattern_type %ptr.e8f [symbolic] // CHECK:STDOUT: %ExplicitGenericParam.type: type = fn_type @ExplicitGenericParam [concrete] // CHECK:STDOUT: %ExplicitGenericParam: %ExplicitGenericParam.type = struct_value () [concrete] @@ -231,12 +232,14 @@ fn F() { // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] // CHECK:STDOUT: %ptr.235: type = ptr_type %i32 [concrete] +// CHECK:STDOUT: %.740: form = init_form %ptr.235, call_param0 [concrete] // CHECK:STDOUT: %pattern_type.fe8: type = pattern_type %ptr.235 [concrete] // CHECK:STDOUT: %CallExplicitGenericParam.type: type = fn_type @CallExplicitGenericParam [concrete] // CHECK:STDOUT: %CallExplicitGenericParam: %CallExplicitGenericParam.type = struct_value () [concrete] // CHECK:STDOUT: %ExplicitGenericParam.specific_fn.3d2: = specific_function %ExplicitGenericParam, @ExplicitGenericParam(%i32) [concrete] // CHECK:STDOUT: %struct_type.a: type = struct_type {.a: %T} [symbolic] // CHECK:STDOUT: %ptr.88d: type = ptr_type %struct_type.a [symbolic] +// CHECK:STDOUT: %.b19: form = init_form %ptr.88d, call_param0 [symbolic] // CHECK:STDOUT: %pattern_type.1cb: type = pattern_type %ptr.88d [symbolic] // CHECK:STDOUT: %CallExplicitGenericParamWithGenericArg.type: type = fn_type @CallExplicitGenericParamWithGenericArg [concrete] // CHECK:STDOUT: %CallExplicitGenericParamWithGenericArg: %CallExplicitGenericParamWithGenericArg.type = struct_value () [concrete] @@ -269,6 +272,7 @@ fn F() { // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc4_38: type = name_ref T, %T.loc4_25.2 [symbolic = %T.loc4_25.1 (constants.%T)] // CHECK:STDOUT: %ptr.loc4_39.2: type = ptr_type %T.ref.loc4_38 [symbolic = %ptr.loc4_39.1 (constants.%ptr.e8f)] +// CHECK:STDOUT: %.loc4_39.2: form = init_form %ptr.loc4_39.2, call_param0 [symbolic = %.loc4_39.1 (constants.%.9e5)] // CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] // CHECK:STDOUT: %T.loc4_25.2: type = symbolic_binding T, 0 [symbolic = %T.loc4_25.1 (constants.%T)] // CHECK:STDOUT: %return.param: ref @ExplicitGenericParam.%ptr.loc4_39.1 (%ptr.e8f) = out_param call_param0 @@ -281,6 +285,7 @@ fn F() { // 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: %ptr: type = ptr_type %i32.loc6 [concrete = constants.%ptr.235] +// CHECK:STDOUT: %.loc6: form = init_form %ptr, call_param0 [concrete = constants.%.740] // CHECK:STDOUT: %return.param: ref %ptr.235 = out_param call_param0 // CHECK:STDOUT: %return: ref %ptr.235 = return_slot %return.param // CHECK:STDOUT: } @@ -292,6 +297,7 @@ fn F() { // CHECK:STDOUT: %T.ref.loc10: type = name_ref T, %T.loc10_43.2 [symbolic = %T.loc10_43.1 (constants.%T)] // CHECK:STDOUT: %struct_type.a.loc10_62.2: type = struct_type {.a: @CallExplicitGenericParamWithGenericArg.%T.loc10_43.1 (%T)} [symbolic = %struct_type.a.loc10_62.1 (constants.%struct_type.a)] // CHECK:STDOUT: %ptr.loc10_63.2: type = ptr_type %struct_type.a.loc10_62.2 [symbolic = %ptr.loc10_63.1 (constants.%ptr.88d)] +// CHECK:STDOUT: %.loc10_63.2: form = init_form %ptr.loc10_63.2, call_param0 [symbolic = %.loc10_63.1 (constants.%.b19)] // CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] // CHECK:STDOUT: %T.loc10_43.2: type = symbolic_binding T, 0 [symbolic = %T.loc10_43.1 (constants.%T)] // CHECK:STDOUT: %return.param: ref @CallExplicitGenericParamWithGenericArg.%ptr.loc10_63.1 (%ptr.88d) = out_param call_param0 @@ -302,6 +308,7 @@ fn F() { // CHECK:STDOUT: generic fn @ExplicitGenericParam(%T.loc4_25.2: type) { // CHECK:STDOUT: %T.loc4_25.1: type = symbolic_binding T, 0 [symbolic = %T.loc4_25.1 (constants.%T)] // CHECK:STDOUT: %ptr.loc4_39.1: type = ptr_type %T.loc4_25.1 [symbolic = %ptr.loc4_39.1 (constants.%ptr.e8f)] +// CHECK:STDOUT: %.loc4_39.1: form = init_form %ptr.loc4_39.1, call_param0 [symbolic = %.loc4_39.1 (constants.%.9e5)] // CHECK:STDOUT: %pattern_type: type = pattern_type %ptr.loc4_39.1 [symbolic = %pattern_type (constants.%pattern_type.4f4)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -332,6 +339,7 @@ fn F() { // CHECK:STDOUT: %T.loc10_43.1: type = symbolic_binding T, 0 [symbolic = %T.loc10_43.1 (constants.%T)] // CHECK:STDOUT: %struct_type.a.loc10_62.1: type = struct_type {.a: @CallExplicitGenericParamWithGenericArg.%T.loc10_43.1 (%T)} [symbolic = %struct_type.a.loc10_62.1 (constants.%struct_type.a)] // CHECK:STDOUT: %ptr.loc10_63.1: type = ptr_type %struct_type.a.loc10_62.1 [symbolic = %ptr.loc10_63.1 (constants.%ptr.88d)] +// CHECK:STDOUT: %.loc10_63.1: form = init_form %ptr.loc10_63.1, call_param0 [symbolic = %.loc10_63.1 (constants.%.b19)] // CHECK:STDOUT: %pattern_type: type = pattern_type %ptr.loc10_63.1 [symbolic = %pattern_type (constants.%pattern_type.1cb)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -352,6 +360,7 @@ fn F() { // CHECK:STDOUT: specific @ExplicitGenericParam(constants.%T) { // CHECK:STDOUT: %T.loc4_25.1 => constants.%T // CHECK:STDOUT: %ptr.loc4_39.1 => constants.%ptr.e8f +// CHECK:STDOUT: %.loc4_39.1 => constants.%.9e5 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.4f4 // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -362,6 +371,7 @@ fn F() { // CHECK:STDOUT: specific @ExplicitGenericParam(constants.%i32) { // CHECK:STDOUT: %T.loc4_25.1 => constants.%i32 // CHECK:STDOUT: %ptr.loc4_39.1 => constants.%ptr.235 +// CHECK:STDOUT: %.loc4_39.1 => constants.%.740 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.fe8 // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -373,12 +383,14 @@ fn F() { // CHECK:STDOUT: %T.loc10_43.1 => constants.%T // CHECK:STDOUT: %struct_type.a.loc10_62.1 => constants.%struct_type.a // CHECK:STDOUT: %ptr.loc10_63.1 => constants.%ptr.88d +// CHECK:STDOUT: %.loc10_63.1 => constants.%.b19 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.1cb // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @ExplicitGenericParam(constants.%struct_type.a) { // CHECK:STDOUT: %T.loc4_25.1 => constants.%struct_type.a // CHECK:STDOUT: %ptr.loc4_39.1 => constants.%ptr.88d +// CHECK:STDOUT: %.loc4_39.1 => constants.%.b19 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.1cb // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -394,6 +406,7 @@ fn F() { // CHECK:STDOUT: %T: type = symbolic_binding T, 0 [symbolic] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %ptr: type = ptr_type %T [symbolic] +// CHECK:STDOUT: %.9e5: form = init_form %ptr, call_param0 [symbolic] // CHECK:STDOUT: %pattern_type.4f4: type = pattern_type %ptr [symbolic] // CHECK:STDOUT: %ExplicitGenericParam.type: type = fn_type @ExplicitGenericParam [concrete] // CHECK:STDOUT: %ExplicitGenericParam: %ExplicitGenericParam.type = struct_value () [concrete] @@ -427,6 +440,7 @@ fn F() { // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc4_38: type = name_ref T, %T.loc4_25.2 [symbolic = %T.loc4_25.1 (constants.%T)] // CHECK:STDOUT: %ptr.loc4_39.2: type = ptr_type %T.ref.loc4_38 [symbolic = %ptr.loc4_39.1 (constants.%ptr)] +// CHECK:STDOUT: %.loc4_39.2: form = init_form %ptr.loc4_39.2, call_param0 [symbolic = %.loc4_39.1 (constants.%.9e5)] // CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] // CHECK:STDOUT: %T.loc4_25.2: type = symbolic_binding T, 0 [symbolic = %T.loc4_25.1 (constants.%T)] // CHECK:STDOUT: %return.param: ref @ExplicitGenericParam.%ptr.loc4_39.1 (%ptr) = out_param call_param0 @@ -450,6 +464,7 @@ fn F() { // CHECK:STDOUT: generic fn @ExplicitGenericParam(%T.loc4_25.2: type) { // CHECK:STDOUT: %T.loc4_25.1: type = symbolic_binding T, 0 [symbolic = %T.loc4_25.1 (constants.%T)] // CHECK:STDOUT: %ptr.loc4_39.1: type = ptr_type %T.loc4_25.1 [symbolic = %ptr.loc4_39.1 (constants.%ptr)] +// CHECK:STDOUT: %.loc4_39.1: form = init_form %ptr.loc4_39.1, call_param0 [symbolic = %.loc4_39.1 (constants.%.9e5)] // CHECK:STDOUT: %pattern_type: type = pattern_type %ptr.loc4_39.1 [symbolic = %pattern_type (constants.%pattern_type.4f4)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -494,6 +509,7 @@ fn F() { // CHECK:STDOUT: specific @ExplicitGenericParam(constants.%T) { // CHECK:STDOUT: %T.loc4_25.1 => constants.%T // CHECK:STDOUT: %ptr.loc4_39.1 => constants.%ptr +// CHECK:STDOUT: %.loc4_39.1 => constants.%.9e5 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.4f4 // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -517,6 +533,7 @@ fn F() { // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %pattern_type.51d: type = pattern_type %T [symbolic] // CHECK:STDOUT: %ptr.e8f: type = ptr_type %T [symbolic] +// CHECK:STDOUT: %.ba4: form = init_form %ptr.e8f, call_param1 [symbolic] // CHECK:STDOUT: %pattern_type.4f4: type = pattern_type %ptr.e8f [symbolic] // CHECK:STDOUT: %ExplicitAndAlsoDeduced.type: type = fn_type @ExplicitAndAlsoDeduced [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] @@ -525,11 +542,13 @@ fn F() { // CHECK:STDOUT: %require_complete.944: = require_complete_type %T [symbolic] // CHECK:STDOUT: %ExplicitAndAlsoDeduced.specific_fn.7e7: = specific_function %ExplicitAndAlsoDeduced, @ExplicitAndAlsoDeduced(%T) [symbolic] // CHECK:STDOUT: %ptr.643: type = ptr_type %A [concrete] +// CHECK:STDOUT: %.a25: form = init_form %ptr.643, call_param0 [concrete] // CHECK:STDOUT: %pattern_type.f29: type = pattern_type %ptr.643 [concrete] // CHECK:STDOUT: %CallExplicitAndAlsoDeduced.type: type = fn_type @CallExplicitAndAlsoDeduced [concrete] // CHECK:STDOUT: %CallExplicitAndAlsoDeduced: %CallExplicitAndAlsoDeduced.type = struct_value () [concrete] // CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %pattern_type.1ab: type = pattern_type %A [concrete] +// CHECK:STDOUT: %.1ec: form = init_form %ptr.643, call_param1 [concrete] // CHECK:STDOUT: %ExplicitAndAlsoDeduced.specific_fn.1f3: = specific_function %ExplicitAndAlsoDeduced, @ExplicitAndAlsoDeduced(%A) [concrete] // CHECK:STDOUT: %A.val: %A = struct_value () [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] @@ -565,6 +584,7 @@ fn F() { // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc6_46: type = name_ref T, %T.loc6_27.2 [symbolic = %T.loc6_27.1 (constants.%T)] // CHECK:STDOUT: %ptr.loc6_47.2: type = ptr_type %T.ref.loc6_46 [symbolic = %ptr.loc6_47.1 (constants.%ptr.e8f)] +// CHECK:STDOUT: %.loc6_47.2: form = init_form %ptr.loc6_47.2, call_param1 [symbolic = %.loc6_47.1 (constants.%.ba4)] // CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] // CHECK:STDOUT: %T.loc6_27.2: type = symbolic_binding T, 0 [symbolic = %T.loc6_27.1 (constants.%T)] // CHECK:STDOUT: %x.param: @ExplicitAndAlsoDeduced.%T.loc6_27.1 (%T) = value_param call_param0 @@ -579,6 +599,7 @@ fn F() { // CHECK:STDOUT: } { // CHECK:STDOUT: %A.ref.loc10: type = name_ref A, file.%A.decl [concrete = constants.%A] // CHECK:STDOUT: %ptr: type = ptr_type %A.ref.loc10 [concrete = constants.%ptr.643] +// CHECK:STDOUT: %.loc10: form = init_form %ptr, call_param0 [concrete = constants.%.a25] // CHECK:STDOUT: %return.param: ref %ptr.643 = out_param call_param0 // CHECK:STDOUT: %return: ref %ptr.643 = return_slot %return.param // CHECK:STDOUT: } @@ -596,6 +617,7 @@ fn F() { // CHECK:STDOUT: %T.loc6_27.1: type = symbolic_binding T, 0 [symbolic = %T.loc6_27.1 (constants.%T)] // CHECK:STDOUT: %pattern_type.loc6_37: type = pattern_type %T.loc6_27.1 [symbolic = %pattern_type.loc6_37 (constants.%pattern_type.51d)] // CHECK:STDOUT: %ptr.loc6_47.1: type = ptr_type %T.loc6_27.1 [symbolic = %ptr.loc6_47.1 (constants.%ptr.e8f)] +// CHECK:STDOUT: %.loc6_47.1: form = init_form %ptr.loc6_47.1, call_param1 [symbolic = %.loc6_47.1 (constants.%.ba4)] // CHECK:STDOUT: %pattern_type.loc6_43: type = pattern_type %ptr.loc6_47.1 [symbolic = %pattern_type.loc6_43 (constants.%pattern_type.4f4)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -637,6 +659,7 @@ fn F() { // CHECK:STDOUT: %T.loc6_27.1 => constants.%T // CHECK:STDOUT: %pattern_type.loc6_37 => constants.%pattern_type.51d // CHECK:STDOUT: %ptr.loc6_47.1 => constants.%ptr.e8f +// CHECK:STDOUT: %.loc6_47.1 => constants.%.ba4 // CHECK:STDOUT: %pattern_type.loc6_43 => constants.%pattern_type.4f4 // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -649,6 +672,7 @@ fn F() { // CHECK:STDOUT: %T.loc6_27.1 => constants.%A // CHECK:STDOUT: %pattern_type.loc6_37 => constants.%pattern_type.1ab // CHECK:STDOUT: %ptr.loc6_47.1 => constants.%ptr.643 +// CHECK:STDOUT: %.loc6_47.1 => constants.%.1ec // CHECK:STDOUT: %pattern_type.loc6_43 => constants.%pattern_type.f29 // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -666,6 +690,7 @@ fn F() { // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %pattern_type.51d: type = pattern_type %T [symbolic] // CHECK:STDOUT: %ptr.e8f: type = ptr_type %T [symbolic] +// CHECK:STDOUT: %.ba4: form = init_form %ptr.e8f, call_param1 [symbolic] // CHECK:STDOUT: %pattern_type.4f4: type = pattern_type %ptr.e8f [symbolic] // CHECK:STDOUT: %ImplicitGenericParam.type: type = fn_type @ImplicitGenericParam [concrete] // CHECK:STDOUT: %ImplicitGenericParam: %ImplicitGenericParam.type = struct_value () [concrete] @@ -678,6 +703,7 @@ fn F() { // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %ptr.235: type = ptr_type %i32 [concrete] +// CHECK:STDOUT: %.4f9: form = init_form %ptr.235, call_param1 [concrete] // CHECK:STDOUT: %pattern_type.fe8: type = pattern_type %ptr.235 [concrete] // CHECK:STDOUT: %CallImplicitGenericParam.type: type = fn_type @CallImplicitGenericParam [concrete] // CHECK:STDOUT: %CallImplicitGenericParam: %CallImplicitGenericParam.type = struct_value () [concrete] @@ -712,6 +738,7 @@ fn F() { // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc4_44: type = name_ref T, %T.loc4_25.2 [symbolic = %T.loc4_25.1 (constants.%T)] // CHECK:STDOUT: %ptr.loc4_45.2: type = ptr_type %T.ref.loc4_44 [symbolic = %ptr.loc4_45.1 (constants.%ptr.e8f)] +// CHECK:STDOUT: %.loc4_45.2: form = init_form %ptr.loc4_45.2, call_param1 [symbolic = %.loc4_45.1 (constants.%.ba4)] // CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] // CHECK:STDOUT: %T.loc4_25.2: type = symbolic_binding T, 0 [symbolic = %T.loc4_25.1 (constants.%T)] // CHECK:STDOUT: %x.param: @ImplicitGenericParam.%T.loc4_25.1 (%T) = value_param call_param0 @@ -729,8 +756,9 @@ fn F() { // CHECK:STDOUT: %int_32.loc6_40: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc6_40: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %ptr: type = ptr_type %i32.loc6_40 [concrete = constants.%ptr.235] +// CHECK:STDOUT: %.loc6_43: form = init_form %ptr, call_param1 [concrete = constants.%.4f9] // CHECK:STDOUT: %n.param: %i32 = value_param call_param0 -// CHECK:STDOUT: %.loc6: type = splice_block %i32.loc6_32 [concrete = constants.%i32] { +// CHECK:STDOUT: %.loc6_32: type = splice_block %i32.loc6_32 [concrete = constants.%i32] { // CHECK:STDOUT: %int_32.loc6_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc6_32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } @@ -744,6 +772,7 @@ fn F() { // CHECK:STDOUT: %T.loc4_25.1: type = symbolic_binding T, 0 [symbolic = %T.loc4_25.1 (constants.%T)] // CHECK:STDOUT: %pattern_type.loc4_35: type = pattern_type %T.loc4_25.1 [symbolic = %pattern_type.loc4_35 (constants.%pattern_type.51d)] // CHECK:STDOUT: %ptr.loc4_45.1: type = ptr_type %T.loc4_25.1 [symbolic = %ptr.loc4_45.1 (constants.%ptr.e8f)] +// CHECK:STDOUT: %.loc4_45.1: form = init_form %ptr.loc4_45.1, call_param1 [symbolic = %.loc4_45.1 (constants.%.ba4)] // CHECK:STDOUT: %pattern_type.loc4_41: type = pattern_type %ptr.loc4_45.1 [symbolic = %pattern_type.loc4_41 (constants.%pattern_type.4f4)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -774,6 +803,7 @@ fn F() { // CHECK:STDOUT: %T.loc4_25.1 => constants.%T // CHECK:STDOUT: %pattern_type.loc4_35 => constants.%pattern_type.51d // CHECK:STDOUT: %ptr.loc4_45.1 => constants.%ptr.e8f +// CHECK:STDOUT: %.loc4_45.1 => constants.%.ba4 // CHECK:STDOUT: %pattern_type.loc4_41 => constants.%pattern_type.4f4 // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -786,6 +816,7 @@ fn F() { // CHECK:STDOUT: %T.loc4_25.1 => constants.%i32 // CHECK:STDOUT: %pattern_type.loc4_35 => constants.%pattern_type.7ce // CHECK:STDOUT: %ptr.loc4_45.1 => constants.%ptr.235 +// CHECK:STDOUT: %.loc4_45.1 => constants.%.4f9 // CHECK:STDOUT: %pattern_type.loc4_41 => constants.%pattern_type.fe8 // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -1434,6 +1465,7 @@ fn F() { // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %U: type = symbolic_binding U, 1 [symbolic] // CHECK:STDOUT: %pattern_type.51d: type = pattern_type %T [symbolic] +// CHECK:STDOUT: %.ead: form = init_form %U, call_param1 [symbolic] // CHECK:STDOUT: %pattern_type.946: type = pattern_type %U [symbolic] // CHECK:STDOUT: %ImplicitNotDeducible.type: type = fn_type @ImplicitNotDeducible [concrete] // CHECK:STDOUT: %ImplicitNotDeducible: %ImplicitNotDeducible.type = struct_value () [concrete] @@ -1465,6 +1497,7 @@ fn F() { // CHECK:STDOUT: %return.param_patt: @ImplicitNotDeducible.%pattern_type.loc6_51 (%pattern_type.946) = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %U.ref: type = name_ref U, %U.loc6_35.2 [symbolic = %U.loc6_35.1 (constants.%U)] +// CHECK:STDOUT: %.loc6_54.2: form = init_form %U.ref, call_param1 [symbolic = %.loc6_54.1 (constants.%.ead)] // CHECK:STDOUT: %.Self.1: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] // CHECK:STDOUT: %T.loc6_25.2: type = symbolic_binding T, 0 [symbolic = %T.loc6_25.1 (constants.%T)] // CHECK:STDOUT: %.Self.2: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] @@ -1482,6 +1515,7 @@ fn F() { // CHECK:STDOUT: %T.loc6_25.1: type = symbolic_binding T, 0 [symbolic = %T.loc6_25.1 (constants.%T)] // CHECK:STDOUT: %U.loc6_35.1: type = symbolic_binding U, 1 [symbolic = %U.loc6_35.1 (constants.%U)] // CHECK:STDOUT: %pattern_type.loc6_45: type = pattern_type %T.loc6_25.1 [symbolic = %pattern_type.loc6_45 (constants.%pattern_type.51d)] +// CHECK:STDOUT: %.loc6_54.1: form = init_form %U.loc6_35.1, call_param1 [symbolic = %.loc6_54.1 (constants.%.ead)] // CHECK:STDOUT: %pattern_type.loc6_51: type = pattern_type %U.loc6_35.1 [symbolic = %pattern_type.loc6_51 (constants.%pattern_type.946)] // CHECK:STDOUT: // CHECK:STDOUT: fn(%x.param: @ImplicitNotDeducible.%T.loc6_25.1 (%T)) -> @ImplicitNotDeducible.%U.loc6_35.1 (%U); @@ -1498,6 +1532,7 @@ fn F() { // CHECK:STDOUT: %T.loc6_25.1 => constants.%T // CHECK:STDOUT: %U.loc6_35.1 => constants.%U // CHECK:STDOUT: %pattern_type.loc6_45 => constants.%pattern_type.51d +// CHECK:STDOUT: %.loc6_54.1 => constants.%.ead // CHECK:STDOUT: %pattern_type.loc6_51 => constants.%pattern_type.946 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1509,6 +1544,7 @@ fn F() { // CHECK:STDOUT: %T: type = symbolic_binding T, 0 [symbolic] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %pattern_type.51d: type = pattern_type %T [symbolic] +// CHECK:STDOUT: %.6d4: form = init_form %T, call_param2 [symbolic] // CHECK:STDOUT: %ImplicitNotDeducible.type: type = fn_type @ImplicitNotDeducible [concrete] // CHECK:STDOUT: %ImplicitNotDeducible: %ImplicitNotDeducible.type = struct_value () [concrete] // CHECK:STDOUT: %CallImplicitNotDeducible.type: type = fn_type @CallImplicitNotDeducible [concrete] @@ -1543,6 +1579,7 @@ fn F() { // CHECK:STDOUT: %return.param_patt: @ImplicitNotDeducible.%pattern_type (%pattern_type.51d) = out_param_pattern %return.patt, call_param2 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc4_50: type = name_ref T, %T.loc4_25.2 [symbolic = %T.loc4_25.1 (constants.%T)] +// CHECK:STDOUT: %.loc4_50.2: form = init_form %T.ref.loc4_50, call_param2 [symbolic = %.loc4_50.1 (constants.%.6d4)] // CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] // CHECK:STDOUT: %T.loc4_25.2: type = symbolic_binding T, 0 [symbolic = %T.loc4_25.1 (constants.%T)] // CHECK:STDOUT: %x.param: @ImplicitNotDeducible.%T.loc4_25.1 (%T) = value_param call_param0 @@ -1560,6 +1597,7 @@ fn F() { // CHECK:STDOUT: generic fn @ImplicitNotDeducible(%T.loc4_25.2: type) { // CHECK:STDOUT: %T.loc4_25.1: type = symbolic_binding T, 0 [symbolic = %T.loc4_25.1 (constants.%T)] // CHECK:STDOUT: %pattern_type: type = pattern_type %T.loc4_25.1 [symbolic = %pattern_type (constants.%pattern_type.51d)] +// CHECK:STDOUT: %.loc4_50.1: form = init_form %T.loc4_25.1, call_param2 [symbolic = %.loc4_50.1 (constants.%.6d4)] // CHECK:STDOUT: // CHECK:STDOUT: fn(%x.param: @ImplicitNotDeducible.%T.loc4_25.1 (%T), %y.param: @ImplicitNotDeducible.%T.loc4_25.1 (%T)) -> @ImplicitNotDeducible.%T.loc4_25.1 (%T); // CHECK:STDOUT: } @@ -1576,6 +1614,7 @@ fn F() { // CHECK:STDOUT: specific @ImplicitNotDeducible(constants.%T) { // CHECK:STDOUT: %T.loc4_25.1 => constants.%T // CHECK:STDOUT: %pattern_type => constants.%pattern_type.51d +// CHECK:STDOUT: %.loc4_50.1 => constants.%.6d4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- deduce_nested_generic_class.carbon diff --git a/toolchain/check/testdata/function/generic/indirect_generic_type.carbon b/toolchain/check/testdata/function/generic/indirect_generic_type.carbon index 71ef1c8b1d26..22443b5005a4 100644 --- a/toolchain/check/testdata/function/generic/indirect_generic_type.carbon +++ b/toolchain/check/testdata/function/generic/indirect_generic_type.carbon @@ -27,6 +27,7 @@ fn F(T:! type, p: T**) -> T* { // CHECK:STDOUT: %ptr.e8f: type = ptr_type %T.67d [symbolic] // CHECK:STDOUT: %ptr.125: type = ptr_type %ptr.e8f [symbolic] // CHECK:STDOUT: %pattern_type.8bb: type = pattern_type %ptr.125 [symbolic] +// CHECK:STDOUT: %.ba4: form = init_form %ptr.e8f, call_param1 [symbolic] // CHECK:STDOUT: %pattern_type.4f4: type = pattern_type %ptr.e8f [symbolic] // CHECK:STDOUT: %Copy.type: type = facet_type <@Copy> [concrete] // CHECK:STDOUT: %Copy.Op.type: type = fn_type @Copy.Op [concrete] @@ -72,6 +73,7 @@ fn F(T:! type, p: T**) -> T* { // CHECK:STDOUT: %ptr.loc4_20.1 => constants.%ptr.e8f // CHECK:STDOUT: %ptr.loc4_21.1 => constants.%ptr.125 // CHECK:STDOUT: %pattern_type.loc4_16 => constants.%pattern_type.8bb +// CHECK:STDOUT: %.loc4_28.1 => constants.%.ba4 // CHECK:STDOUT: %pattern_type.loc4_24 => constants.%pattern_type.4f4 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/function/generic/redeclare.carbon b/toolchain/check/testdata/function/generic/redeclare.carbon index 649a6a6cd879..a5703fd37abb 100644 --- a/toolchain/check/testdata/function/generic/redeclare.carbon +++ b/toolchain/check/testdata/function/generic/redeclare.carbon @@ -102,6 +102,7 @@ fn F(U:! type, T:! type) -> U* { // CHECK:STDOUT: %T: type = symbolic_binding T, 0 [symbolic] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %ptr: type = ptr_type %T [symbolic] +// CHECK:STDOUT: %.9e5: form = init_form %ptr, call_param0 [symbolic] // CHECK:STDOUT: %pattern_type.4f4: type = pattern_type %ptr [symbolic] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] @@ -129,6 +130,7 @@ fn F(U:! type, T:! type) -> U* { // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc4: type = name_ref T, %T.loc4_6.2 [symbolic = %T.loc4_6.1 (constants.%T)] // CHECK:STDOUT: %ptr.loc4_20.2: type = ptr_type %T.ref.loc4 [symbolic = %ptr.loc4_20.1 (constants.%ptr)] +// CHECK:STDOUT: %.loc4_20.2: form = init_form %ptr.loc4_20.2, call_param0 [symbolic = %.loc4_20.1 (constants.%.9e5)] // CHECK:STDOUT: %.Self.2: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] // CHECK:STDOUT: %T.loc4_6.2: type = symbolic_binding T, 0 [symbolic = %T.loc4_6.1 (constants.%T)] // CHECK:STDOUT: %return.param.loc4: ref @F.%ptr.loc4_20.1 (%ptr) = out_param call_param0 @@ -141,6 +143,7 @@ fn F(U:! type, T:! type) -> U* { // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc6: type = name_ref T, %T.loc6 [symbolic = %T.loc4_6.1 (constants.%T)] // CHECK:STDOUT: %ptr.loc6: type = ptr_type %T.ref.loc6 [symbolic = %ptr.loc4_20.1 (constants.%ptr)] +// CHECK:STDOUT: %.loc6: form = init_form %ptr.loc6, call_param0 [symbolic = %.loc4_20.1 (constants.%.9e5)] // CHECK:STDOUT: %.Self.1: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] // CHECK:STDOUT: %T.loc6: type = symbolic_binding T, 0 [symbolic = %T.loc4_6.1 (constants.%T)] // CHECK:STDOUT: %return.param.loc6: ref @F.%ptr.loc4_20.1 (%ptr) = out_param call_param0 @@ -151,6 +154,7 @@ fn F(U:! type, T:! type) -> U* { // CHECK:STDOUT: generic fn @F(%T.loc4_6.2: type) { // CHECK:STDOUT: %T.loc4_6.1: type = symbolic_binding T, 0 [symbolic = %T.loc4_6.1 (constants.%T)] // CHECK:STDOUT: %ptr.loc4_20.1: type = ptr_type %T.loc4_6.1 [symbolic = %ptr.loc4_20.1 (constants.%ptr)] +// CHECK:STDOUT: %.loc4_20.1: form = init_form %ptr.loc4_20.1, call_param0 [symbolic = %.loc4_20.1 (constants.%.9e5)] // CHECK:STDOUT: %pattern_type: type = pattern_type %ptr.loc4_20.1 [symbolic = %pattern_type (constants.%pattern_type.4f4)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -170,6 +174,7 @@ fn F(U:! type, T:! type) -> U* { // CHECK:STDOUT: specific @F(constants.%T) { // CHECK:STDOUT: %T.loc4_6.1 => constants.%T // CHECK:STDOUT: %ptr.loc4_20.1 => constants.%ptr +// CHECK:STDOUT: %.loc4_20.1 => constants.%.9e5 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.4f4 // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -186,10 +191,12 @@ fn F(U:! type, T:! type) -> U* { // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %U: type = symbolic_binding U, 1 [symbolic] // CHECK:STDOUT: %ptr.e8f: type = ptr_type %T [symbolic] +// CHECK:STDOUT: %.9e5: form = init_form %ptr.e8f, call_param0 [symbolic] // CHECK:STDOUT: %pattern_type.4f4: type = pattern_type %ptr.e8f [symbolic] // CHECK:STDOUT: %F.type.117dbc.1: type = fn_type @F.loc4 [concrete] // CHECK:STDOUT: %F.d98bd5.1: %F.type.117dbc.1 = struct_value () [concrete] // CHECK:STDOUT: %ptr.18e: type = ptr_type %U [symbolic] +// CHECK:STDOUT: %.e30: form = init_form %ptr.18e, call_param0 [symbolic] // CHECK:STDOUT: %pattern_type.423: type = pattern_type %ptr.18e [symbolic] // CHECK:STDOUT: %F.type.117dbc.2: type = fn_type @F.loc13 [concrete] // CHECK:STDOUT: %F.d98bd5.2: %F.type.117dbc.2 = struct_value () [concrete] @@ -217,6 +224,7 @@ fn F(U:! type, T:! type) -> U* { // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc4_6.2 [symbolic = %T.loc4_6.1 (constants.%T)] // CHECK:STDOUT: %ptr.loc4_30.2: type = ptr_type %T.ref [symbolic = %ptr.loc4_30.1 (constants.%ptr.e8f)] +// CHECK:STDOUT: %.loc4_30.2: form = init_form %ptr.loc4_30.2, call_param0 [symbolic = %.loc4_30.1 (constants.%.9e5)] // CHECK:STDOUT: %.Self.1: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] // CHECK:STDOUT: %T.loc4_6.2: type = symbolic_binding T, 0 [symbolic = %T.loc4_6.1 (constants.%T)] // CHECK:STDOUT: %.Self.2: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] @@ -232,6 +240,7 @@ fn F(U:! type, T:! type) -> U* { // CHECK:STDOUT: } { // CHECK:STDOUT: %U.ref: type = name_ref U, %U.loc13_16.2 [symbolic = %U.loc13_16.1 (constants.%U)] // CHECK:STDOUT: %ptr.loc13_30.2: type = ptr_type %U.ref [symbolic = %ptr.loc13_30.1 (constants.%ptr.18e)] +// CHECK:STDOUT: %.loc13_30.2: form = init_form %ptr.loc13_30.2, call_param0 [symbolic = %.loc13_30.1 (constants.%.e30)] // CHECK:STDOUT: %.Self.1: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] // CHECK:STDOUT: %T.loc13_6.2: type = symbolic_binding T, 0 [symbolic = %T.loc13_6.1 (constants.%T)] // CHECK:STDOUT: %.Self.2: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] @@ -245,6 +254,7 @@ fn F(U:! type, T:! type) -> U* { // CHECK:STDOUT: %T.loc4_6.1: type = symbolic_binding T, 0 [symbolic = %T.loc4_6.1 (constants.%T)] // CHECK:STDOUT: %U.loc4_16.1: type = symbolic_binding U, 1 [symbolic = %U.loc4_16.1 (constants.%U)] // CHECK:STDOUT: %ptr.loc4_30.1: type = ptr_type %T.loc4_6.1 [symbolic = %ptr.loc4_30.1 (constants.%ptr.e8f)] +// CHECK:STDOUT: %.loc4_30.1: form = init_form %ptr.loc4_30.1, call_param0 [symbolic = %.loc4_30.1 (constants.%.9e5)] // CHECK:STDOUT: %pattern_type: type = pattern_type %ptr.loc4_30.1 [symbolic = %pattern_type (constants.%pattern_type.4f4)] // CHECK:STDOUT: // CHECK:STDOUT: fn() -> @F.loc4.%ptr.loc4_30.1 (%ptr.e8f); @@ -254,6 +264,7 @@ fn F(U:! type, T:! type) -> U* { // CHECK:STDOUT: %T.loc13_6.1: type = symbolic_binding T, 0 [symbolic = %T.loc13_6.1 (constants.%T)] // CHECK:STDOUT: %U.loc13_16.1: type = symbolic_binding U, 1 [symbolic = %U.loc13_16.1 (constants.%U)] // CHECK:STDOUT: %ptr.loc13_30.1: type = ptr_type %U.loc13_16.1 [symbolic = %ptr.loc13_30.1 (constants.%ptr.18e)] +// CHECK:STDOUT: %.loc13_30.1: form = init_form %ptr.loc13_30.1, call_param0 [symbolic = %.loc13_30.1 (constants.%.e30)] // CHECK:STDOUT: %pattern_type: type = pattern_type %ptr.loc13_30.1 [symbolic = %pattern_type (constants.%pattern_type.423)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -271,6 +282,7 @@ fn F(U:! type, T:! type) -> U* { // CHECK:STDOUT: %T.loc4_6.1 => constants.%T // CHECK:STDOUT: %U.loc4_16.1 => constants.%U // CHECK:STDOUT: %ptr.loc4_30.1 => constants.%ptr.e8f +// CHECK:STDOUT: %.loc4_30.1 => constants.%.9e5 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.4f4 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -278,6 +290,7 @@ fn F(U:! type, T:! type) -> U* { // CHECK:STDOUT: %T.loc13_6.1 => constants.%T // CHECK:STDOUT: %U.loc13_16.1 => constants.%U // CHECK:STDOUT: %ptr.loc13_30.1 => constants.%ptr.18e +// CHECK:STDOUT: %.loc13_30.1 => constants.%.e30 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.423 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -290,12 +303,14 @@ fn F(U:! type, T:! type) -> U* { // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %U.091: type = symbolic_binding U, 1 [symbolic] // CHECK:STDOUT: %ptr.e8f: type = ptr_type %T.67d [symbolic] +// CHECK:STDOUT: %.9e5: form = init_form %ptr.e8f, call_param0 [symbolic] // CHECK:STDOUT: %pattern_type.4f4: type = pattern_type %ptr.e8f [symbolic] // CHECK:STDOUT: %F.type.117dbc.1: type = fn_type @F.loc4 [concrete] // CHECK:STDOUT: %F.d98bd5.1: %F.type.117dbc.1 = struct_value () [concrete] // CHECK:STDOUT: %U.67d: type = symbolic_binding U, 0 [symbolic] // CHECK:STDOUT: %T.091: type = symbolic_binding T, 1 [symbolic] // CHECK:STDOUT: %ptr.18e: type = ptr_type %T.091 [symbolic] +// CHECK:STDOUT: %.e30: form = init_form %ptr.18e, call_param0 [symbolic] // CHECK:STDOUT: %pattern_type.423: type = pattern_type %ptr.18e [symbolic] // CHECK:STDOUT: %F.type.117dbc.2: type = fn_type @F.loc13 [concrete] // CHECK:STDOUT: %F.d98bd5.2: %F.type.117dbc.2 = struct_value () [concrete] @@ -323,6 +338,7 @@ fn F(U:! type, T:! type) -> U* { // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc4_6.2 [symbolic = %T.loc4_6.1 (constants.%T.67d)] // CHECK:STDOUT: %ptr.loc4_30.2: type = ptr_type %T.ref [symbolic = %ptr.loc4_30.1 (constants.%ptr.e8f)] +// CHECK:STDOUT: %.loc4_30.2: form = init_form %ptr.loc4_30.2, call_param0 [symbolic = %.loc4_30.1 (constants.%.9e5)] // CHECK:STDOUT: %.Self.1: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] // CHECK:STDOUT: %T.loc4_6.2: type = symbolic_binding T, 0 [symbolic = %T.loc4_6.1 (constants.%T.67d)] // CHECK:STDOUT: %.Self.2: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] @@ -338,6 +354,7 @@ fn F(U:! type, T:! type) -> U* { // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc13: type = name_ref T, %T.loc13_16.2 [symbolic = %T.loc13_16.1 (constants.%T.091)] // CHECK:STDOUT: %ptr.loc13_30.2: type = ptr_type %T.ref.loc13 [symbolic = %ptr.loc13_30.1 (constants.%ptr.18e)] +// CHECK:STDOUT: %.loc13_30.2: form = init_form %ptr.loc13_30.2, call_param0 [symbolic = %.loc13_30.1 (constants.%.e30)] // CHECK:STDOUT: %.Self.1: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] // CHECK:STDOUT: %U.loc13_6.2: type = symbolic_binding U, 0 [symbolic = %U.loc13_6.1 (constants.%U.67d)] // CHECK:STDOUT: %.Self.2: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] @@ -351,6 +368,7 @@ fn F(U:! type, T:! type) -> U* { // CHECK:STDOUT: %T.loc4_6.1: type = symbolic_binding T, 0 [symbolic = %T.loc4_6.1 (constants.%T.67d)] // CHECK:STDOUT: %U.loc4_16.1: type = symbolic_binding U, 1 [symbolic = %U.loc4_16.1 (constants.%U.091)] // CHECK:STDOUT: %ptr.loc4_30.1: type = ptr_type %T.loc4_6.1 [symbolic = %ptr.loc4_30.1 (constants.%ptr.e8f)] +// CHECK:STDOUT: %.loc4_30.1: form = init_form %ptr.loc4_30.1, call_param0 [symbolic = %.loc4_30.1 (constants.%.9e5)] // CHECK:STDOUT: %pattern_type: type = pattern_type %ptr.loc4_30.1 [symbolic = %pattern_type (constants.%pattern_type.4f4)] // CHECK:STDOUT: // CHECK:STDOUT: fn() -> @F.loc4.%ptr.loc4_30.1 (%ptr.e8f); @@ -360,6 +378,7 @@ fn F(U:! type, T:! type) -> U* { // CHECK:STDOUT: %U.loc13_6.1: type = symbolic_binding U, 0 [symbolic = %U.loc13_6.1 (constants.%U.67d)] // CHECK:STDOUT: %T.loc13_16.1: type = symbolic_binding T, 1 [symbolic = %T.loc13_16.1 (constants.%T.091)] // CHECK:STDOUT: %ptr.loc13_30.1: type = ptr_type %T.loc13_16.1 [symbolic = %ptr.loc13_30.1 (constants.%ptr.18e)] +// CHECK:STDOUT: %.loc13_30.1: form = init_form %ptr.loc13_30.1, call_param0 [symbolic = %.loc13_30.1 (constants.%.e30)] // CHECK:STDOUT: %pattern_type: type = pattern_type %ptr.loc13_30.1 [symbolic = %pattern_type (constants.%pattern_type.423)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -377,6 +396,7 @@ fn F(U:! type, T:! type) -> U* { // CHECK:STDOUT: %T.loc4_6.1 => constants.%T.67d // CHECK:STDOUT: %U.loc4_16.1 => constants.%U.091 // CHECK:STDOUT: %ptr.loc4_30.1 => constants.%ptr.e8f +// CHECK:STDOUT: %.loc4_30.1 => constants.%.9e5 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.4f4 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -384,6 +404,7 @@ fn F(U:! type, T:! type) -> U* { // CHECK:STDOUT: %U.loc13_6.1 => constants.%U.67d // CHECK:STDOUT: %T.loc13_16.1 => constants.%T.091 // CHECK:STDOUT: %ptr.loc13_30.1 => constants.%ptr.18e +// CHECK:STDOUT: %.loc13_30.1 => constants.%.e30 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.423 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -396,12 +417,14 @@ fn F(U:! type, T:! type) -> U* { // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %U.091: type = symbolic_binding U, 1 [symbolic] // CHECK:STDOUT: %ptr.e8f8f9.1: type = ptr_type %T.67d [symbolic] +// CHECK:STDOUT: %.9e525d.1: form = init_form %ptr.e8f8f9.1, call_param0 [symbolic] // CHECK:STDOUT: %pattern_type.4f4b84.1: type = pattern_type %ptr.e8f8f9.1 [symbolic] // CHECK:STDOUT: %F.type.117dbc.1: type = fn_type @F.loc4 [concrete] // CHECK:STDOUT: %F.d98bd5.1: %F.type.117dbc.1 = struct_value () [concrete] // CHECK:STDOUT: %U.67d: type = symbolic_binding U, 0 [symbolic] // CHECK:STDOUT: %T.091: type = symbolic_binding T, 1 [symbolic] // CHECK:STDOUT: %ptr.e8f8f9.2: type = ptr_type %U.67d [symbolic] +// CHECK:STDOUT: %.9e525d.2: form = init_form %ptr.e8f8f9.2, call_param0 [symbolic] // CHECK:STDOUT: %pattern_type.4f4b84.2: type = pattern_type %ptr.e8f8f9.2 [symbolic] // CHECK:STDOUT: %F.type.117dbc.2: type = fn_type @F.loc13 [concrete] // CHECK:STDOUT: %F.d98bd5.2: %F.type.117dbc.2 = struct_value () [concrete] @@ -429,6 +452,7 @@ fn F(U:! type, T:! type) -> U* { // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc4_6.2 [symbolic = %T.loc4_6.1 (constants.%T.67d)] // CHECK:STDOUT: %ptr.loc4_30.2: type = ptr_type %T.ref [symbolic = %ptr.loc4_30.1 (constants.%ptr.e8f8f9.1)] +// CHECK:STDOUT: %.loc4_30.2: form = init_form %ptr.loc4_30.2, call_param0 [symbolic = %.loc4_30.1 (constants.%.9e525d.1)] // CHECK:STDOUT: %.Self.1: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] // CHECK:STDOUT: %T.loc4_6.2: type = symbolic_binding T, 0 [symbolic = %T.loc4_6.1 (constants.%T.67d)] // CHECK:STDOUT: %.Self.2: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] @@ -444,6 +468,7 @@ fn F(U:! type, T:! type) -> U* { // CHECK:STDOUT: } { // CHECK:STDOUT: %U.ref: type = name_ref U, %U.loc13_6.2 [symbolic = %U.loc13_6.1 (constants.%U.67d)] // CHECK:STDOUT: %ptr.loc13_30.2: type = ptr_type %U.ref [symbolic = %ptr.loc13_30.1 (constants.%ptr.e8f8f9.2)] +// CHECK:STDOUT: %.loc13_30.2: form = init_form %ptr.loc13_30.2, call_param0 [symbolic = %.loc13_30.1 (constants.%.9e525d.2)] // CHECK:STDOUT: %.Self.1: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] // CHECK:STDOUT: %U.loc13_6.2: type = symbolic_binding U, 0 [symbolic = %U.loc13_6.1 (constants.%U.67d)] // CHECK:STDOUT: %.Self.2: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] @@ -457,6 +482,7 @@ fn F(U:! type, T:! type) -> U* { // CHECK:STDOUT: %T.loc4_6.1: type = symbolic_binding T, 0 [symbolic = %T.loc4_6.1 (constants.%T.67d)] // CHECK:STDOUT: %U.loc4_16.1: type = symbolic_binding U, 1 [symbolic = %U.loc4_16.1 (constants.%U.091)] // CHECK:STDOUT: %ptr.loc4_30.1: type = ptr_type %T.loc4_6.1 [symbolic = %ptr.loc4_30.1 (constants.%ptr.e8f8f9.1)] +// CHECK:STDOUT: %.loc4_30.1: form = init_form %ptr.loc4_30.1, call_param0 [symbolic = %.loc4_30.1 (constants.%.9e525d.1)] // CHECK:STDOUT: %pattern_type: type = pattern_type %ptr.loc4_30.1 [symbolic = %pattern_type (constants.%pattern_type.4f4b84.1)] // CHECK:STDOUT: // CHECK:STDOUT: fn() -> @F.loc4.%ptr.loc4_30.1 (%ptr.e8f8f9.1); @@ -466,6 +492,7 @@ fn F(U:! type, T:! type) -> U* { // CHECK:STDOUT: %U.loc13_6.1: type = symbolic_binding U, 0 [symbolic = %U.loc13_6.1 (constants.%U.67d)] // CHECK:STDOUT: %T.loc13_16.1: type = symbolic_binding T, 1 [symbolic = %T.loc13_16.1 (constants.%T.091)] // CHECK:STDOUT: %ptr.loc13_30.1: type = ptr_type %U.loc13_6.1 [symbolic = %ptr.loc13_30.1 (constants.%ptr.e8f8f9.2)] +// CHECK:STDOUT: %.loc13_30.1: form = init_form %ptr.loc13_30.1, call_param0 [symbolic = %.loc13_30.1 (constants.%.9e525d.2)] // CHECK:STDOUT: %pattern_type: type = pattern_type %ptr.loc13_30.1 [symbolic = %pattern_type (constants.%pattern_type.4f4b84.2)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -483,6 +510,7 @@ fn F(U:! type, T:! type) -> U* { // CHECK:STDOUT: %T.loc4_6.1 => constants.%T.67d // CHECK:STDOUT: %U.loc4_16.1 => constants.%U.091 // CHECK:STDOUT: %ptr.loc4_30.1 => constants.%ptr.e8f8f9.1 +// CHECK:STDOUT: %.loc4_30.1 => constants.%.9e525d.1 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.4f4b84.1 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -490,6 +518,7 @@ fn F(U:! type, T:! type) -> U* { // CHECK:STDOUT: %U.loc13_6.1 => constants.%U.67d // CHECK:STDOUT: %T.loc13_16.1 => constants.%T.091 // CHECK:STDOUT: %ptr.loc13_30.1 => constants.%ptr.e8f8f9.2 +// CHECK:STDOUT: %.loc13_30.1 => constants.%.9e525d.2 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.4f4b84.2 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/function/generic/return_slot.carbon b/toolchain/check/testdata/function/generic/return_slot.carbon index 49f00fe4cf2d..d9ce36315990 100644 --- a/toolchain/check/testdata/function/generic/return_slot.carbon +++ b/toolchain/check/testdata/function/generic/return_slot.carbon @@ -35,6 +35,7 @@ fn G() { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %Wrap.generic: %Wrap.type = struct_value () [concrete] // CHECK:STDOUT: %Wrap.063: type = class_type @Wrap, @Wrap(%T) [symbolic] +// CHECK:STDOUT: %.c6c: form = init_form %T, call_param0 [symbolic] // CHECK:STDOUT: %pattern_type.51d: type = pattern_type %T [symbolic] // CHECK:STDOUT: %Wrap.Make.type.6e9: type = fn_type @Wrap.Make, @Wrap(%T) [symbolic] // CHECK:STDOUT: %Wrap.Make.e25: %Wrap.Make.type.6e9 = struct_value () [symbolic] @@ -60,17 +61,20 @@ fn G() { // CHECK:STDOUT: %Wrap.e80: type = class_type @Wrap, @Wrap(%i32) [concrete] // CHECK:STDOUT: %Wrap.Make.type.939: type = fn_type @Wrap.Make, @Wrap(%i32) [concrete] // CHECK:STDOUT: %Wrap.Make.6cb: %Wrap.Make.type.939 = struct_value () [concrete] +// CHECK:STDOUT: %.941: form = init_form %i32, call_param0 [concrete] // CHECK:STDOUT: %Wrap.Make.specific_fn.35c: = specific_function %Wrap.Make.6cb, @Wrap.Make(%i32) [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %Wrap.0f1: type = class_type @Wrap, @Wrap(%empty_tuple.type) [concrete] // CHECK:STDOUT: %Wrap.Make.type.fb0: type = fn_type @Wrap.Make, @Wrap(%empty_tuple.type) [concrete] // CHECK:STDOUT: %Wrap.Make.b5c: %Wrap.Make.type.fb0 = struct_value () [concrete] +// CHECK:STDOUT: %.62c: form = init_form %empty_tuple.type, call_param0 [concrete] // CHECK:STDOUT: %Wrap.Make.specific_fn.c03: = specific_function %Wrap.Make.b5c, @Wrap.Make(%empty_tuple.type) [concrete] // CHECK:STDOUT: %pattern_type.7c7: type = pattern_type %C [concrete] // CHECK:STDOUT: %Wrap.3b1: type = class_type @Wrap, @Wrap(%C) [concrete] // CHECK:STDOUT: %Wrap.Make.type.a8f: type = fn_type @Wrap.Make, @Wrap(%C) [concrete] // CHECK:STDOUT: %Wrap.Make.62a: %Wrap.Make.type.a8f = struct_value () [concrete] +// CHECK:STDOUT: %.64f: form = init_form %C, call_param0 [concrete] // CHECK:STDOUT: %Wrap.Make.specific_fn.cb9: = specific_function %Wrap.Make.62a, @Wrap.Make(%C) [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] // CHECK:STDOUT: %DestroyOp.type.3e79c2.1: type = fn_type @DestroyOp.loc24 [concrete] @@ -124,6 +128,7 @@ fn G() { // CHECK:STDOUT: %return.param_patt: @Wrap.Make.%pattern_type (%pattern_type.51d) = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref: type = name_ref T, @Wrap.%T.loc15_12.2 [symbolic = %T (constants.%T)] +// CHECK:STDOUT: %.loc16_16.2: form = init_form %T.ref, call_param0 [symbolic = %.loc16_16.1 (constants.%.c6c)] // CHECK:STDOUT: %return.param: ref @Wrap.Make.%T (%T) = out_param call_param0 // CHECK:STDOUT: %return: ref @Wrap.Make.%T (%T) = return_slot %return.param // CHECK:STDOUT: } @@ -153,6 +158,7 @@ fn G() { // CHECK:STDOUT: // CHECK:STDOUT: generic fn @Wrap.Make(@Wrap.%T.loc15_12.2: type) { // CHECK:STDOUT: %T: type = symbolic_binding T, 0 [symbolic = %T (constants.%T)] +// CHECK:STDOUT: %.loc16_16.1: form = init_form %T, call_param0 [symbolic = %.loc16_16.1 (constants.%.c6c)] // CHECK:STDOUT: %pattern_type: type = pattern_type %T [symbolic = %pattern_type (constants.%pattern_type.51d)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -253,6 +259,7 @@ fn G() { // CHECK:STDOUT: // CHECK:STDOUT: specific @Wrap.Make(constants.%T) { // CHECK:STDOUT: %T => constants.%T +// CHECK:STDOUT: %.loc16_16.1 => constants.%.c6c // CHECK:STDOUT: %pattern_type => constants.%pattern_type.51d // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -272,6 +279,7 @@ fn G() { // CHECK:STDOUT: // CHECK:STDOUT: specific @Wrap.Make(constants.%i32) { // CHECK:STDOUT: %T => constants.%i32 +// CHECK:STDOUT: %.loc16_16.1 => constants.%.941 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.7ce // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -291,6 +299,7 @@ fn G() { // CHECK:STDOUT: // CHECK:STDOUT: specific @Wrap.Make(constants.%empty_tuple.type) { // CHECK:STDOUT: %T => constants.%empty_tuple.type +// CHECK:STDOUT: %.loc16_16.1 => constants.%.62c // CHECK:STDOUT: %pattern_type => constants.%pattern_type.cb1 // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -310,6 +319,7 @@ fn G() { // CHECK:STDOUT: // CHECK:STDOUT: specific @Wrap.Make(constants.%C) { // CHECK:STDOUT: %T => constants.%C +// CHECK:STDOUT: %.loc16_16.1 => constants.%.64f // CHECK:STDOUT: %pattern_type => constants.%pattern_type.7c7 // CHECK:STDOUT: // CHECK:STDOUT: !definition: diff --git a/toolchain/check/testdata/function/generic/type_param_scope.carbon b/toolchain/check/testdata/function/generic/type_param_scope.carbon index fca4274109f6..66c911278cb8 100644 --- a/toolchain/check/testdata/function/generic/type_param_scope.carbon +++ b/toolchain/check/testdata/function/generic/type_param_scope.carbon @@ -27,6 +27,7 @@ fn F(T:! type, n: T*) -> T* { // CHECK:STDOUT: %T.67d: type = symbolic_binding T, 0 [symbolic] // CHECK:STDOUT: %ptr: type = ptr_type %T.67d [symbolic] // CHECK:STDOUT: %pattern_type.4f4: type = pattern_type %ptr [symbolic] +// CHECK:STDOUT: %.ba4: form = init_form %ptr, call_param1 [symbolic] // CHECK:STDOUT: %Copy.type: type = facet_type <@Copy> [concrete] // CHECK:STDOUT: %Copy.Op.type: type = fn_type @Copy.Op [concrete] // CHECK:STDOUT: %.2f2: require_specific_def_type = require_specific_def @ptr.as.Copy.impl(%T.67d) [symbolic] @@ -77,5 +78,6 @@ fn F(T:! type, n: T*) -> T* { // CHECK:STDOUT: %T.loc4_6.1 => constants.%T.67d // CHECK:STDOUT: %ptr.loc4_20.1 => constants.%ptr // CHECK:STDOUT: %pattern_type => constants.%pattern_type.4f4 +// CHECK:STDOUT: %.loc4_27.1 => constants.%.ba4 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/generic/dependent_param.carbon b/toolchain/check/testdata/generic/dependent_param.carbon index cc8bb736587a..dc35e8067a87 100644 --- a/toolchain/check/testdata/generic/dependent_param.carbon +++ b/toolchain/check/testdata/generic/dependent_param.carbon @@ -40,6 +40,7 @@ var n: i32 = Outer(i32).Inner(42).Get(); // CHECK:STDOUT: %Inner.type.af4: type = generic_class_type @Inner, @Outer(%T.035) [symbolic] // CHECK:STDOUT: %Inner.generic.994: %Inner.type.af4 = struct_value () [symbolic] // CHECK:STDOUT: %Inner.c23: type = class_type @Inner, @Inner(%T.035, %U.959) [symbolic] +// CHECK:STDOUT: %.504: form = init_form %T.binding.as_type, call_param0 [symbolic] // CHECK:STDOUT: %Inner.Get.type.6ef: type = fn_type @Inner.Get, @Inner(%T.035, %U.959) [symbolic] // CHECK:STDOUT: %Inner.Get.ba5: %Inner.Get.type.6ef = struct_value () [symbolic] // CHECK:STDOUT: %require_complete.67c: = require_complete_type %T.binding.as_type [symbolic] @@ -85,6 +86,7 @@ var n: i32 = Outer(i32).Inner(42).Get(); // CHECK:STDOUT: %Inner.e4a: type = class_type @Inner, @Inner(%Copy.facet.de4, %int_42.c68) [concrete] // CHECK:STDOUT: %Inner.Get.type.20d: type = fn_type @Inner.Get, @Inner(%Copy.facet.de4, %int_42.c68) [concrete] // CHECK:STDOUT: %Inner.Get.f96: %Inner.Get.type.20d = struct_value () [concrete] +// CHECK:STDOUT: %.941: form = init_form %i32, call_param0 [concrete] // CHECK:STDOUT: %Inner.Get.specific_fn: = specific_function %Inner.Get.f96, @Inner.Get(%Copy.facet.de4, %int_42.c68) [concrete] // CHECK:STDOUT: %.f79: type = fn_type_with_self_type %Copy.Op.type, %Copy.facet.de4 [concrete] // CHECK:STDOUT: %Int.as.Copy.impl.Op.bound: = bound_method %int_42.c68, %Int.as.Copy.impl.Op.664 [concrete] @@ -145,7 +147,8 @@ var n: i32 = Outer(i32).Inner(42).Get(); // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref: %Copy.type = name_ref T, @Outer.%T.loc4_13.2 [symbolic = %T (constants.%T.035)] // CHECK:STDOUT: %T.as_type: type = facet_access_type %T.ref [symbolic = %T.binding.as_type (constants.%T.binding.as_type)] -// CHECK:STDOUT: %.loc7_17: type = converted %T.ref, %T.as_type [symbolic = %T.binding.as_type (constants.%T.binding.as_type)] +// CHECK:STDOUT: %.loc7_17.2: type = converted %T.ref, %T.as_type [symbolic = %T.binding.as_type (constants.%T.binding.as_type)] +// CHECK:STDOUT: %.loc7_17.3: form = init_form %.loc7_17.2, call_param0 [symbolic = %.loc7_17.1 (constants.%.504)] // CHECK:STDOUT: %return.param: ref @Inner.Get.%T.binding.as_type (%T.binding.as_type) = out_param call_param0 // CHECK:STDOUT: %return: ref @Inner.Get.%T.binding.as_type (%T.binding.as_type) = return_slot %return.param // CHECK:STDOUT: } @@ -163,6 +166,7 @@ var n: i32 = Outer(i32).Inner(42).Get(); // CHECK:STDOUT: generic fn @Inner.Get(@Outer.%T.loc4_13.2: %Copy.type, @Inner.%U.loc5_15.2: @Inner.%T.binding.as_type (%T.binding.as_type)) { // CHECK:STDOUT: %T: %Copy.type = symbolic_binding T, 0 [symbolic = %T (constants.%T.035)] // CHECK:STDOUT: %T.binding.as_type: type = symbolic_binding_type T, 0, %T [symbolic = %T.binding.as_type (constants.%T.binding.as_type)] +// CHECK:STDOUT: %.loc7_17.1: form = init_form %T.binding.as_type, call_param0 [symbolic = %.loc7_17.1 (constants.%.504)] // CHECK:STDOUT: %pattern_type: type = pattern_type %T.binding.as_type [symbolic = %pattern_type (constants.%pattern_type.9b9f0c.1)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -239,6 +243,7 @@ var n: i32 = Outer(i32).Inner(42).Get(); // CHECK:STDOUT: specific @Inner.Get(constants.%T.035, constants.%U.959) { // CHECK:STDOUT: %T => constants.%T.035 // CHECK:STDOUT: %T.binding.as_type => constants.%T.binding.as_type +// CHECK:STDOUT: %.loc7_17.1 => constants.%.504 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.9b9f0c.1 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -264,6 +269,7 @@ var n: i32 = Outer(i32).Inner(42).Get(); // CHECK:STDOUT: specific @Inner.Get(constants.%Copy.facet.de4, constants.%int_42.c68) { // CHECK:STDOUT: %T => constants.%Copy.facet.de4 // CHECK:STDOUT: %T.binding.as_type => constants.%i32 +// CHECK:STDOUT: %.loc7_17.1 => constants.%.941 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.7ce // CHECK:STDOUT: // CHECK:STDOUT: !definition: diff --git a/toolchain/check/testdata/generic/template/convert.carbon b/toolchain/check/testdata/generic/template/convert.carbon index fed167b9784a..557fc39ddd1b 100644 --- a/toolchain/check/testdata/generic/template/convert.carbon +++ b/toolchain/check/testdata/generic/template/convert.carbon @@ -74,6 +74,7 @@ fn Test(d: D) -> i32 { // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %N: Core.IntLiteral = symbolic_binding N, 0 [symbolic] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] +// CHECK:STDOUT: %.4d5: form = init_form %i32, call_param1 [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] @@ -163,6 +164,7 @@ fn Test(d: D) -> i32 { // CHECK:STDOUT: } { // 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: %.loc4: form = init_form %i32.loc4, call_param1 [concrete = constants.%.4d5] // CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] // CHECK:STDOUT: %T.loc4_15.2: type = symbolic_binding T, 0, template [template = %T.loc4_15.1 (constants.%T.67db0b.1)] // CHECK:STDOUT: %x.param: @F.%T.loc4_15.1 (%T.67db0b.1) = value_param call_param0 @@ -179,8 +181,9 @@ fn Test(d: D) -> i32 { // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32.loc9_21: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc9_21: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] +// CHECK:STDOUT: %.loc9_21: form = init_form %i32.loc9_21, call_param1 [concrete = constants.%.4d5] // CHECK:STDOUT: %n.param: %i32 = value_param call_param0 -// CHECK:STDOUT: %.loc9: type = splice_block %i32.loc9_13 [concrete = constants.%i32] { +// CHECK:STDOUT: %.loc9_13: type = splice_block %i32.loc9_13 [concrete = constants.%i32] { // CHECK:STDOUT: %int_32.loc9_13: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc9_13: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } @@ -197,6 +200,7 @@ fn Test(d: D) -> i32 { // CHECK:STDOUT: } { // 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: %.loc20: form = init_form %i32, call_param1 [concrete = constants.%.4d5] // CHECK:STDOUT: %c.param: %C = value_param call_param0 // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %c: %C = value_binding c, %c.param @@ -214,6 +218,7 @@ fn Test(d: D) -> i32 { // CHECK:STDOUT: } { // 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: %.loc16_33: form = init_form %i32, call_param1 [concrete = constants.%.4d5] // CHECK:STDOUT: %self.param: %C = value_param call_param0 // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C [concrete = constants.%C] // CHECK:STDOUT: %self: %C = value_binding self, %self.param @@ -350,6 +355,7 @@ fn Test(d: D) -> i32 { // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %N: Core.IntLiteral = symbolic_binding N, 0 [symbolic] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] +// CHECK:STDOUT: %.4d5: form = init_form %i32, call_param1 [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] @@ -415,6 +421,7 @@ fn Test(d: D) -> i32 { // CHECK:STDOUT: } { // 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: %.loc4: form = init_form %i32.loc4, call_param1 [concrete = constants.%.4d5] // CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] // CHECK:STDOUT: %T.loc4_15.2: type = symbolic_binding T, 0, template [template = %T.loc4_15.1 (constants.%T.67db0b.1)] // CHECK:STDOUT: %x.param: @F.%T.loc4_15.1 (%T.67db0b.1) = value_param call_param0 @@ -432,6 +439,7 @@ fn Test(d: D) -> i32 { // CHECK:STDOUT: } { // 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: %.loc17: form = init_form %i32, call_param1 [concrete = constants.%.4d5] // CHECK:STDOUT: %d.param: %D = value_param call_param0 // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [concrete = constants.%D] // CHECK:STDOUT: %d: %D = value_binding d, %d.param diff --git a/toolchain/check/testdata/generic/template/member_access.carbon b/toolchain/check/testdata/generic/template/member_access.carbon index 94cca00225ef..84831a7a59f2 100644 --- a/toolchain/check/testdata/generic/template/member_access.carbon +++ b/toolchain/check/testdata/generic/template/member_access.carbon @@ -98,6 +98,7 @@ fn Test(e: E) { // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %N: Core.IntLiteral = symbolic_binding N, 0 [symbolic] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] +// CHECK:STDOUT: %.4d5: form = init_form %i32, call_param1 [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] @@ -181,6 +182,7 @@ fn Test(e: E) { // CHECK:STDOUT: } { // 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: %.loc4: form = init_form %i32.loc4, call_param1 [concrete = constants.%.4d5] // CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] // CHECK:STDOUT: %T.loc4_15.2: type = symbolic_binding T, 0, template [template = %T.loc4_15.1 (constants.%T.67db0b.1)] // CHECK:STDOUT: %x.param: @F.%T.loc4_15.1 (%T.67db0b.1) = value_param call_param0 @@ -321,6 +323,7 @@ fn Test(e: E) { // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %N: Core.IntLiteral = symbolic_binding N, 0 [symbolic] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] +// CHECK:STDOUT: %.4d5: form = init_form %i32, call_param1 [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] @@ -384,6 +387,7 @@ fn Test(e: E) { // CHECK:STDOUT: } { // 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: %.loc4: form = init_form %i32.loc4, call_param1 [concrete = constants.%.4d5] // CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] // CHECK:STDOUT: %T.loc4_15.2: type = symbolic_binding T, 0, template [template = %T.loc4_15.1 (constants.%T.67db0b.1)] // CHECK:STDOUT: %x.param: @F.%T.loc4_15.1 (%T.67db0b.1) = value_param call_param0 @@ -490,6 +494,7 @@ fn Test(e: E) { // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %N: Core.IntLiteral = symbolic_binding N, 0 [symbolic] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] +// CHECK:STDOUT: %.4d5: form = init_form %i32, call_param1 [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F.loc4 [concrete] // CHECK:STDOUT: %F.d98: %F.type = struct_value () [concrete] @@ -566,6 +571,7 @@ fn Test(e: E) { // CHECK:STDOUT: } { // 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: %.loc4: form = init_form %i32.loc4, call_param1 [concrete = constants.%.4d5] // CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] // CHECK:STDOUT: %T.loc4_15.2: type = symbolic_binding T, 0, template [template = %T.loc4_15.1 (constants.%T.67db0b.1)] // CHECK:STDOUT: %x.param: @F.loc4.%T.loc4_15.1 (%T.67db0b.1) = value_param call_param0 diff --git a/toolchain/check/testdata/generic/template/unimplemented.carbon b/toolchain/check/testdata/generic/template/unimplemented.carbon index 09709bf70741..d6d35ab41aee 100644 --- a/toolchain/check/testdata/generic/template/unimplemented.carbon +++ b/toolchain/check/testdata/generic/template/unimplemented.carbon @@ -82,6 +82,7 @@ fn F[template T:! Core.Destroy](x: T) { // CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] +// CHECK:STDOUT: %.4d5: form = init_form %i32, call_param1 [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] @@ -117,6 +118,7 @@ fn F[template T:! Core.Destroy](x: T) { // CHECK:STDOUT: } { // 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: %.loc6: form = init_form %i32, call_param1 [concrete = constants.%.4d5] // CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.c39] // CHECK:STDOUT: %T.loc6_15.2: type = symbolic_binding T, 0, template [template = %T.loc6_15.1 (constants.%T)] // CHECK:STDOUT: %x.param: @F.%T.loc6_15.1 (%T) = value_param call_param0 @@ -167,6 +169,7 @@ fn F[template T:! Core.Destroy](x: T) { // CHECK:STDOUT: %.Self.c39: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %c: %C = symbolic_binding c, 0, template [template] // CHECK:STDOUT: %pattern_type.7c7: type = pattern_type %C [concrete] +// CHECK:STDOUT: %.941: form = init_form %i32, call_param0 [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] @@ -201,7 +204,8 @@ fn F[template T:! Core.Destroy](x: T) { // CHECK:STDOUT: } { // 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: %.loc11: type = splice_block %C.ref [concrete = constants.%C] { +// CHECK:STDOUT: %.loc11_25: form = init_form %i32, call_param0 [concrete = constants.%.941] +// CHECK:STDOUT: %.loc11_19: type = splice_block %C.ref [concrete = constants.%C] { // CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.c39] // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/generic/template_dependence.carbon b/toolchain/check/testdata/generic/template_dependence.carbon index 9ecc393ea7ae..9817df827355 100644 --- a/toolchain/check/testdata/generic/template_dependence.carbon +++ b/toolchain/check/testdata/generic/template_dependence.carbon @@ -38,6 +38,7 @@ fn F(template T:! type, U:! type) -> (T, U) { // CHECK:STDOUT: %ptr.e8f8f9.1: type = ptr_type %T.67db0b.1 [template] // CHECK:STDOUT: %ptr.125: type = ptr_type %ptr.e8f8f9.1 [template] // CHECK:STDOUT: %pattern_type.8bb: type = pattern_type %ptr.125 [template] +// CHECK:STDOUT: %.ba4d87.1: form = init_form %ptr.e8f8f9.1, call_param1 [template] // CHECK:STDOUT: %pattern_type.4f4b84.1: type = pattern_type %ptr.e8f8f9.1 [template] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] @@ -66,10 +67,11 @@ fn F(template T:! type, U:! type) -> (T, U) { // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc5_36: type = name_ref T, %T.loc5_15.2 [template = %T.loc5_15.1 (constants.%T.67db0b.1)] // CHECK:STDOUT: %ptr.loc5_37: type = ptr_type %T.ref.loc5_36 [template = %ptr.loc5_29.1 (constants.%ptr.e8f8f9.1)] +// CHECK:STDOUT: %.loc5_37.2: form = init_form %ptr.loc5_37, call_param1 [template = %.loc5_37.1 (constants.%.ba4d87.1)] // CHECK:STDOUT: // CHECK:STDOUT: %T.loc5_15.2: type = symbolic_binding T, 0, template [template = %T.loc5_15.1 (constants.%T.67db0b.1)] // CHECK:STDOUT: %x.param: @F.%ptr.loc5_30.1 (%ptr.125) = value_param call_param0 -// CHECK:STDOUT: %.loc5: type = splice_block %ptr.loc5_30.2 [template = %ptr.loc5_30.1 (constants.%ptr.125)] { +// CHECK:STDOUT: %.loc5_30: type = splice_block %ptr.loc5_30.2 [template = %ptr.loc5_30.1 (constants.%ptr.125)] { // CHECK:STDOUT: %T.ref.loc5_28: type = name_ref T, %T.loc5_15.2 [template = %T.loc5_15.1 (constants.%T.67db0b.1)] // CHECK:STDOUT: %ptr.loc5_29.2: type = ptr_type %T.ref.loc5_28 [template = %ptr.loc5_29.1 (constants.%ptr.e8f8f9.1)] // CHECK:STDOUT: %ptr.loc5_30.2: type = ptr_type %ptr.loc5_29.2 [template = %ptr.loc5_30.1 (constants.%ptr.125)] @@ -85,6 +87,7 @@ fn F(template T:! type, U:! type) -> (T, U) { // CHECK:STDOUT: %ptr.loc5_29.1: type = ptr_type %T.loc5_15.1 [template = %ptr.loc5_29.1 (constants.%ptr.e8f8f9.1)] // CHECK:STDOUT: %ptr.loc5_30.1: type = ptr_type %ptr.loc5_29.1 [template = %ptr.loc5_30.1 (constants.%ptr.125)] // CHECK:STDOUT: %pattern_type.loc5_25: type = pattern_type %ptr.loc5_30.1 [template = %pattern_type.loc5_25 (constants.%pattern_type.8bb)] +// CHECK:STDOUT: %.loc5_37.1: form = init_form %ptr.loc5_29.1, call_param1 [template = %.loc5_37.1 (constants.%.ba4d87.1)] // CHECK:STDOUT: %pattern_type.loc5_33: type = pattern_type %ptr.loc5_29.1 [template = %pattern_type.loc5_33 (constants.%pattern_type.4f4b84.1)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -116,6 +119,7 @@ fn F(template T:! type, U:! type) -> (T, U) { // CHECK:STDOUT: %ptr.loc5_29.1 => constants.%ptr.e8f8f9.1 // CHECK:STDOUT: %ptr.loc5_30.1 => constants.%ptr.125 // CHECK:STDOUT: %pattern_type.loc5_25 => constants.%pattern_type.8bb +// CHECK:STDOUT: %.loc5_37.1 => constants.%.ba4d87.1 // CHECK:STDOUT: %pattern_type.loc5_33 => constants.%pattern_type.4f4b84.1 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -128,6 +132,7 @@ fn F(template T:! type, U:! type) -> (T, U) { // CHECK:STDOUT: %tuple.type.24b: type = tuple_type (type, type) [concrete] // CHECK:STDOUT: %tuple: %tuple.type.24b = tuple_value (%T, %U) [template] // CHECK:STDOUT: %tuple.type.a5e: type = tuple_type (%T, %U) [template] +// CHECK:STDOUT: %.5b7: form = init_form %tuple.type.a5e, call_param0 [template] // CHECK:STDOUT: %pattern_type.eee: type = pattern_type %tuple.type.a5e [template] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] @@ -147,8 +152,9 @@ fn F(template T:! type, U:! type) -> (T, U) { // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc5: type = name_ref T, %T.loc5_15.2 [template = %T.loc5_15.1 (constants.%T)] // CHECK:STDOUT: %U.ref.loc5: type = name_ref U, %U.loc5_25.2 [symbolic = %U.loc5_25.1 (constants.%U)] -// CHECK:STDOUT: %.loc5_43.1: %tuple.type.24b = tuple_literal (%T.ref.loc5, %U.ref.loc5) [template = %tuple (constants.%tuple)] -// CHECK:STDOUT: %.loc5_43.2: type = converted %.loc5_43.1, constants.%tuple.type.a5e [template = %tuple.type (constants.%tuple.type.a5e)] +// CHECK:STDOUT: %.loc5_43.2: %tuple.type.24b = tuple_literal (%T.ref.loc5, %U.ref.loc5) [template = %tuple (constants.%tuple)] +// CHECK:STDOUT: %.loc5_43.3: type = converted %.loc5_43.2, constants.%tuple.type.a5e [template = %tuple.type (constants.%tuple.type.a5e)] +// CHECK:STDOUT: %.loc5_43.4: form = init_form %.loc5_43.3, call_param0 [template = %.loc5_43.1 (constants.%.5b7)] // CHECK:STDOUT: // CHECK:STDOUT: %T.loc5_15.2: type = symbolic_binding T, 0, template [template = %T.loc5_15.1 (constants.%T)] // CHECK:STDOUT: @@ -163,6 +169,7 @@ fn F(template T:! type, U:! type) -> (T, U) { // CHECK:STDOUT: %U.loc5_25.1: type = symbolic_binding U, 1 [symbolic = %U.loc5_25.1 (constants.%U)] // CHECK:STDOUT: %tuple: %tuple.type.24b = tuple_value (%T.loc5_15.1, %U.loc5_25.1) [template = %tuple (constants.%tuple)] // CHECK:STDOUT: %tuple.type: type = tuple_type (%T.loc5_15.1, %U.loc5_25.1) [template = %tuple.type (constants.%tuple.type.a5e)] +// CHECK:STDOUT: %.loc5_43.1: form = init_form %tuple.type, call_param0 [template = %.loc5_43.1 (constants.%.5b7)] // CHECK:STDOUT: %pattern_type: type = pattern_type %tuple.type [template = %pattern_type (constants.%pattern_type.eee)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -186,6 +193,7 @@ fn F(template T:! type, U:! type) -> (T, U) { // CHECK:STDOUT: %U.loc5_25.1 => constants.%U // CHECK:STDOUT: %tuple => constants.%tuple // CHECK:STDOUT: %tuple.type => constants.%tuple.type.a5e +// CHECK:STDOUT: %.loc5_43.1 => constants.%.5b7 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.eee // CHECK:STDOUT: // CHECK:STDOUT: !definition: diff --git a/toolchain/check/testdata/if/basics.carbon b/toolchain/check/testdata/if/basics.carbon index 627134af70e2..f6fe0e3e3151 100644 --- a/toolchain/check/testdata/if/basics.carbon +++ b/toolchain/check/testdata/if/basics.carbon @@ -218,6 +218,7 @@ fn VarScope(b: bool) -> bool { // CHECK:STDOUT: %Bool.type: type = fn_type @Bool [concrete] // CHECK:STDOUT: %Bool: %Bool.type = struct_value () [concrete] // CHECK:STDOUT: %pattern_type.831: type = pattern_type bool [concrete] +// CHECK:STDOUT: %.df2: form = init_form bool, call_param1 [concrete] // CHECK:STDOUT: %If.type: type = fn_type @If [concrete] // CHECK:STDOUT: %If: %If.type = struct_value () [concrete] // CHECK:STDOUT: %false: bool = bool_literal false [concrete] @@ -248,6 +249,7 @@ fn VarScope(b: bool) -> bool { // CHECK:STDOUT: %Bool.call.loc4_19: init type = call constants.%Bool() [concrete = bool] // CHECK:STDOUT: %.loc4_19.1: type = value_of_initializer %Bool.call.loc4_19 [concrete = bool] // CHECK:STDOUT: %.loc4_19.2: type = converted %Bool.call.loc4_19, %.loc4_19.1 [concrete = bool] +// CHECK:STDOUT: %.loc4_19.3: form = init_form %.loc4_19.2, call_param1 [concrete = constants.%.df2] // CHECK:STDOUT: %b.param: bool = value_param call_param0 // CHECK:STDOUT: %.loc4_10.1: type = splice_block %.loc4_10.3 [concrete = bool] { // CHECK:STDOUT: %Bool.call.loc4_10: init type = call constants.%Bool() [concrete = bool] diff --git a/toolchain/check/testdata/if_expr/basic.carbon b/toolchain/check/testdata/if_expr/basic.carbon index 47b8cf9e6979..0092ca118e44 100644 --- a/toolchain/check/testdata/if_expr/basic.carbon +++ b/toolchain/check/testdata/if_expr/basic.carbon @@ -30,6 +30,7 @@ fn F(b: bool, n: i32, m: i32) -> i32 { // CHECK:STDOUT: %N: Core.IntLiteral = symbolic_binding N, 0 [symbolic] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] +// CHECK:STDOUT: %.e68: form = init_form %i32, call_param3 [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete] @@ -109,6 +110,7 @@ fn F(b: bool, n: i32, m: i32) -> i32 { // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32.loc15_34: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc15_34: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] +// CHECK:STDOUT: %.loc15_34: form = init_form %i32.loc15_34, call_param3 [concrete = constants.%.e68] // CHECK:STDOUT: %b.param: bool = value_param call_param0 // CHECK:STDOUT: %.loc15_9.1: type = splice_block %.loc15_9.3 [concrete = bool] { // CHECK:STDOUT: %Bool.call: init type = call constants.%Bool() [concrete = bool] diff --git a/toolchain/check/testdata/if_expr/constant_condition.carbon b/toolchain/check/testdata/if_expr/constant_condition.carbon index 445aa820170a..e1f2dff8da8f 100644 --- a/toolchain/check/testdata/if_expr/constant_condition.carbon +++ b/toolchain/check/testdata/if_expr/constant_condition.carbon @@ -44,6 +44,7 @@ fn PartiallyConstant(t: type) -> i32 { // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %N: Core.IntLiteral = symbolic_binding N, 0 [symbolic] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] +// CHECK:STDOUT: %.941: form = init_form %i32, call_param0 [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %A.type: type = fn_type @A [concrete] // CHECK:STDOUT: %A: %A.type = struct_value () [concrete] @@ -62,6 +63,7 @@ fn PartiallyConstant(t: type) -> i32 { // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.e8c = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.6bc) [concrete] // CHECK:STDOUT: %.863: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.215: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.0b5 [concrete] +// CHECK:STDOUT: %.4d5: form = init_form %i32, call_param1 [concrete] // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.0b5, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] // CHECK:STDOUT: %bound_method.38b: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] @@ -147,6 +149,7 @@ fn PartiallyConstant(t: type) -> i32 { // CHECK:STDOUT: } { // 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: %.loc15_11: form = init_form %i32, call_param0 [concrete = constants.%.941] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } @@ -156,6 +159,7 @@ fn PartiallyConstant(t: type) -> i32 { // CHECK:STDOUT: } { // 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: %.loc16_11: form = init_form %i32, call_param0 [concrete = constants.%.941] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } @@ -165,6 +169,7 @@ fn PartiallyConstant(t: type) -> i32 { // CHECK:STDOUT: } { // 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: %.loc18: form = init_form %i32, call_param0 [concrete = constants.%.941] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } @@ -174,6 +179,7 @@ fn PartiallyConstant(t: type) -> i32 { // CHECK:STDOUT: } { // 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: %.loc22: form = init_form %i32, call_param0 [concrete = constants.%.941] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } @@ -183,6 +189,7 @@ fn PartiallyConstant(t: type) -> i32 { // CHECK:STDOUT: } { // 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: %.loc26: form = init_form %i32.loc26, call_param0 [concrete = constants.%.941] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } @@ -194,6 +201,7 @@ fn PartiallyConstant(t: type) -> i32 { // CHECK:STDOUT: } { // 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: %.loc32: form = init_form %i32.loc32, call_param1 [concrete = constants.%.4d5] // CHECK:STDOUT: %t.param: type = value_param call_param0 // CHECK:STDOUT: %t: type = value_binding t, %t.param // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param1 @@ -209,8 +217,8 @@ fn PartiallyConstant(t: type) -> i32 { // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc15_25.2: = bound_method %int_1, %specific_fn [concrete = constants.%bound_method.38b] // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc15_25.2(%int_1) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc15: init %i32 = converted %int_1, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: return %.loc15 to %return +// CHECK:STDOUT: %.loc15_25: init %i32 = converted %int_1, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: return %.loc15_25 to %return // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @B() -> %i32 { @@ -221,8 +229,8 @@ fn PartiallyConstant(t: type) -> i32 { // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc16_25.2: = bound_method %int_2, %specific_fn [concrete = constants.%bound_method.646] // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc16_25.2(%int_2) [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: %.loc16: init %i32 = converted %int_2, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: return %.loc16 to %return +// CHECK:STDOUT: %.loc16_25: init %i32 = converted %int_2, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: return %.loc16_25 to %return // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F() -> %i32 { diff --git a/toolchain/check/testdata/if_expr/control_flow.carbon b/toolchain/check/testdata/if_expr/control_flow.carbon index 69ef5be633fb..7953038bef48 100644 --- a/toolchain/check/testdata/if_expr/control_flow.carbon +++ b/toolchain/check/testdata/if_expr/control_flow.carbon @@ -27,6 +27,7 @@ fn F(b: bool) -> i32 { // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %N: Core.IntLiteral = symbolic_binding N, 0 [symbolic] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] +// CHECK:STDOUT: %.941: form = init_form %i32, call_param0 [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %A.type: type = fn_type @A [concrete] // CHECK:STDOUT: %A: %A.type = struct_value () [concrete] @@ -44,6 +45,7 @@ fn F(b: bool) -> i32 { // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.e8c = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.6bc) [concrete] // CHECK:STDOUT: %.863: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.215: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.0b5 [concrete] +// CHECK:STDOUT: %.4d5: form = init_form %i32, call_param1 [concrete] // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.0b5, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] // CHECK:STDOUT: %bound_method.38b: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] @@ -103,6 +105,7 @@ fn F(b: bool) -> i32 { // CHECK:STDOUT: } { // 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: %.loc15_11: form = init_form %i32, call_param0 [concrete = constants.%.941] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } @@ -112,6 +115,7 @@ fn F(b: bool) -> i32 { // CHECK:STDOUT: } { // 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: %.loc16_11: form = init_form %i32, call_param0 [concrete = constants.%.941] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } @@ -123,6 +127,7 @@ fn F(b: bool) -> i32 { // CHECK:STDOUT: } { // 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: %.loc18_18: form = init_form %i32, call_param1 [concrete = constants.%.4d5] // CHECK:STDOUT: %b.param: bool = value_param call_param0 // CHECK:STDOUT: %.loc18_9.1: type = splice_block %.loc18_9.3 [concrete = bool] { // CHECK:STDOUT: %Bool.call: init type = call constants.%Bool() [concrete = bool] @@ -143,8 +148,8 @@ fn F(b: bool) -> i32 { // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc15_25.2: = bound_method %int_1, %specific_fn [concrete = constants.%bound_method.38b] // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc15_25.2(%int_1) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc15: init %i32 = converted %int_1, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: return %.loc15 to %return +// CHECK:STDOUT: %.loc15_25: init %i32 = converted %int_1, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: return %.loc15_25 to %return // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @B() -> %i32 { @@ -155,8 +160,8 @@ fn F(b: bool) -> i32 { // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc16_25.2: = bound_method %int_2, %specific_fn [concrete = constants.%bound_method.646] // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc16_25.2(%int_2) [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: %.loc16: init %i32 = converted %int_2, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: return %.loc16 to %return +// CHECK:STDOUT: %.loc16_25: init %i32 = converted %int_2, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: return %.loc16_25 to %return // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F(%b.param: bool) -> %i32 { diff --git a/toolchain/check/testdata/if_expr/nested.carbon b/toolchain/check/testdata/if_expr/nested.carbon index 0fbc382e0d0b..d3e391043db9 100644 --- a/toolchain/check/testdata/if_expr/nested.carbon +++ b/toolchain/check/testdata/if_expr/nested.carbon @@ -27,6 +27,7 @@ fn F(a: bool, b: bool, c: bool) -> i32 { // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %N: Core.IntLiteral = symbolic_binding N, 0 [symbolic] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] +// CHECK:STDOUT: %.e68: form = init_form %i32, call_param3 [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] @@ -108,6 +109,7 @@ fn F(a: bool, b: bool, c: bool) -> i32 { // CHECK:STDOUT: } { // 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: %.loc15_36: form = init_form %i32.loc15, call_param3 [concrete = constants.%.e68] // CHECK:STDOUT: %a.param: bool = value_param call_param0 // CHECK:STDOUT: %.loc15_9.1: type = splice_block %.loc15_9.3 [concrete = bool] { // CHECK:STDOUT: %Bool.call.loc15_9: init type = call constants.%Bool() [concrete = bool] diff --git a/toolchain/check/testdata/impl/assoc_const_self.carbon b/toolchain/check/testdata/impl/assoc_const_self.carbon index c0535a277952..ad3cb095e73b 100644 --- a/toolchain/check/testdata/impl/assoc_const_self.carbon +++ b/toolchain/check/testdata/impl/assoc_const_self.carbon @@ -404,6 +404,7 @@ fn CallF() { // CHECK:STDOUT: %ImplicitAs.impl_witness: = impl_witness @empty_tuple.type.as.ImplicitAs.impl.%ImplicitAs.impl_witness_table [concrete] // CHECK:STDOUT: %ImplicitAs.Convert.type.f13: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%C) [concrete] // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] +// CHECK:STDOUT: %.887: form = init_form %C, call_param1 [concrete] // CHECK:STDOUT: %pattern_type.7c7: type = pattern_type %C [concrete] // CHECK:STDOUT: %empty_tuple.type.as.ImplicitAs.impl.Convert.type: type = fn_type @empty_tuple.type.as.ImplicitAs.impl.Convert [concrete] // CHECK:STDOUT: %empty_tuple.type.as.ImplicitAs.impl.Convert: %empty_tuple.type.as.ImplicitAs.impl.Convert.type = struct_value () [concrete] @@ -497,6 +498,7 @@ fn CallF() { // CHECK:STDOUT: %return.param_patt: %pattern_type.7c7 = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] +// CHECK:STDOUT: %.loc11_29: form = init_form %C.ref, call_param1 [concrete = constants.%.887] // CHECK:STDOUT: %self.param: %empty_tuple.type = value_param call_param0 // CHECK:STDOUT: %.loc11_21.1: type = splice_block %.loc11_21.3 [concrete = constants.%empty_tuple.type] { // CHECK:STDOUT: %.loc11_21.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] diff --git a/toolchain/check/testdata/impl/compound.carbon b/toolchain/check/testdata/impl/compound.carbon index bd5c6fb48727..b7d372f20718 100644 --- a/toolchain/check/testdata/impl/compound.carbon +++ b/toolchain/check/testdata/impl/compound.carbon @@ -133,6 +133,7 @@ fn InstanceCallFail() { // CHECK:STDOUT: %Self: %ImplicitAs.type.9fe = symbolic_binding Self, 1 [symbolic] // CHECK:STDOUT: %Self.binding.as_type: type = symbolic_binding_type Self, 1, %Self [symbolic] // CHECK:STDOUT: %pattern_type.8de: type = pattern_type %Self.binding.as_type [symbolic] +// CHECK:STDOUT: %.e5f: form = init_form %Dest, call_param1 [symbolic] // CHECK:STDOUT: %pattern_type.51d: type = pattern_type %Dest [symbolic] // CHECK:STDOUT: %ImplicitAs.Convert.type: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%Dest) [symbolic] // CHECK:STDOUT: %ImplicitAs.Convert: %ImplicitAs.Convert.type = struct_value () [symbolic] @@ -172,6 +173,7 @@ fn InstanceCallFail() { // CHECK:STDOUT: %return.param_patt: @ImplicitAs.Convert.%pattern_type.loc4_28 (%pattern_type.51d) = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %Dest.ref: type = name_ref Dest, @ImplicitAs.%Dest.loc3_22.2 [symbolic = %Dest (constants.%Dest)] +// CHECK:STDOUT: %.loc4_31.2: form = init_form %Dest.ref, call_param1 [symbolic = %.loc4_31.1 (constants.%.e5f)] // CHECK:STDOUT: %self.param: @ImplicitAs.Convert.%Self.binding.as_type (%Self.binding.as_type) = value_param call_param0 // CHECK:STDOUT: %.loc4_20.1: type = splice_block %.loc4_20.3 [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type)] { // CHECK:STDOUT: %.loc4_20.2: @ImplicitAs.Convert.%ImplicitAs.type (%ImplicitAs.type.9fe) = specific_constant @ImplicitAs.%Self.loc3_35.1, @ImplicitAs(constants.%Dest) [symbolic = %Self (constants.%Self)] @@ -201,6 +203,7 @@ fn InstanceCallFail() { // CHECK:STDOUT: %Self: @ImplicitAs.Convert.%ImplicitAs.type (%ImplicitAs.type.9fe) = symbolic_binding Self, 1 [symbolic = %Self (constants.%Self)] // CHECK:STDOUT: %Self.binding.as_type: type = symbolic_binding_type Self, 1, %Self [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type)] // CHECK:STDOUT: %pattern_type.loc4_14: type = pattern_type %Self.binding.as_type [symbolic = %pattern_type.loc4_14 (constants.%pattern_type.8de)] +// CHECK:STDOUT: %.loc4_31.1: form = init_form %Dest, call_param1 [symbolic = %.loc4_31.1 (constants.%.e5f)] // CHECK:STDOUT: %pattern_type.loc4_28: type = pattern_type %Dest [symbolic = %pattern_type.loc4_28 (constants.%pattern_type.51d)] // CHECK:STDOUT: // CHECK:STDOUT: fn(%self.param: @ImplicitAs.Convert.%Self.binding.as_type (%Self.binding.as_type)) -> @ImplicitAs.Convert.%Dest (%Dest); @@ -216,6 +219,7 @@ fn InstanceCallFail() { // CHECK:STDOUT: %Self => constants.%Self // CHECK:STDOUT: %Self.binding.as_type => constants.%Self.binding.as_type // CHECK:STDOUT: %pattern_type.loc4_14 => constants.%pattern_type.8de +// CHECK:STDOUT: %.loc4_31.1 => constants.%.e5f // CHECK:STDOUT: %pattern_type.loc4_28 => constants.%pattern_type.51d // CHECK:STDOUT: } // CHECK:STDOUT: @@ -336,6 +340,7 @@ fn InstanceCallFail() { // CHECK:STDOUT: %pattern_type.51d: type = pattern_type %Dest [symbolic] // CHECK:STDOUT: %Self.binding.as_type: type = symbolic_binding_type Self, 1, %Self.738 [symbolic] // CHECK:STDOUT: %pattern_type.e9a: type = pattern_type %Self.binding.as_type [symbolic] +// CHECK:STDOUT: %.e5f: form = init_form %Dest, call_param1 [symbolic] // CHECK:STDOUT: %ImplicitAs.type.282: type = facet_type <@ImplicitAs, @ImplicitAs(%NonInstance2.type)> [concrete] // CHECK:STDOUT: %Self.df1: %ImplicitAs.type.282 = symbolic_binding Self, 1 [symbolic] // CHECK:STDOUT: %ImplicitAs.Convert.type.756: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%NonInstance2.type) [concrete] @@ -457,6 +462,7 @@ fn InstanceCallFail() { // CHECK:STDOUT: %Self: @ImplicitAs.Convert.%ImplicitAs.type (%ImplicitAs.type.031) = symbolic_binding Self, 1 [symbolic = %Self (constants.%Self.738)] // CHECK:STDOUT: %Self.binding.as_type: type = symbolic_binding_type Self, 1, %Self [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type)] // CHECK:STDOUT: %pattern_type.1: type = pattern_type %Self.binding.as_type [symbolic = %pattern_type.1 (constants.%pattern_type.e9a)] +// CHECK:STDOUT: %.1: form = init_form %Dest, call_param1 [symbolic = %.1 (constants.%.e5f)] // CHECK:STDOUT: %pattern_type.2: type = pattern_type %Dest [symbolic = %pattern_type.2 (constants.%pattern_type.51d)] // CHECK:STDOUT: // CHECK:STDOUT: fn; @@ -476,6 +482,7 @@ fn InstanceCallFail() { // CHECK:STDOUT: %Self => constants.%Self.738 // CHECK:STDOUT: %Self.binding.as_type => constants.%Self.binding.as_type // CHECK:STDOUT: %pattern_type.1 => constants.%pattern_type.e9a +// CHECK:STDOUT: %.1 => constants.%.e5f // CHECK:STDOUT: %pattern_type.2 => constants.%pattern_type.51d // CHECK:STDOUT: } // CHECK:STDOUT: @@ -523,6 +530,7 @@ fn InstanceCallFail() { // CHECK:STDOUT: %pattern_type.51d: type = pattern_type %Dest [symbolic] // CHECK:STDOUT: %Self.binding.as_type: type = symbolic_binding_type Self, 1, %Self.738 [symbolic] // CHECK:STDOUT: %pattern_type.e9a: type = pattern_type %Self.binding.as_type [symbolic] +// CHECK:STDOUT: %.e5f: form = init_form %Dest, call_param1 [symbolic] // CHECK:STDOUT: %ImplicitAs.type.deb: type = facet_type <@ImplicitAs, @ImplicitAs(%NonInstance3.type)> [concrete] // CHECK:STDOUT: %Self.9cf: %ImplicitAs.type.deb = symbolic_binding Self, 1 [symbolic] // CHECK:STDOUT: %ImplicitAs.Convert.type.f03: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%NonInstance3.type) [concrete] @@ -646,6 +654,7 @@ fn InstanceCallFail() { // CHECK:STDOUT: %Self: @ImplicitAs.Convert.%ImplicitAs.type (%ImplicitAs.type.031) = symbolic_binding Self, 1 [symbolic = %Self (constants.%Self.738)] // CHECK:STDOUT: %Self.binding.as_type: type = symbolic_binding_type Self, 1, %Self [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type)] // CHECK:STDOUT: %pattern_type.1: type = pattern_type %Self.binding.as_type [symbolic = %pattern_type.1 (constants.%pattern_type.e9a)] +// CHECK:STDOUT: %.1: form = init_form %Dest, call_param1 [symbolic = %.1 (constants.%.e5f)] // CHECK:STDOUT: %pattern_type.2: type = pattern_type %Dest [symbolic = %pattern_type.2 (constants.%pattern_type.51d)] // CHECK:STDOUT: // CHECK:STDOUT: fn; @@ -665,6 +674,7 @@ fn InstanceCallFail() { // CHECK:STDOUT: %Self => constants.%Self.738 // CHECK:STDOUT: %Self.binding.as_type => constants.%Self.binding.as_type // CHECK:STDOUT: %pattern_type.1 => constants.%pattern_type.e9a +// CHECK:STDOUT: %.1 => constants.%.e5f // CHECK:STDOUT: %pattern_type.2 => constants.%pattern_type.51d // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/extend_impl_generic.carbon b/toolchain/check/testdata/impl/extend_impl_generic.carbon index ed599cb92477..8ada338d398a 100644 --- a/toolchain/check/testdata/impl/extend_impl_generic.carbon +++ b/toolchain/check/testdata/impl/extend_impl_generic.carbon @@ -63,6 +63,7 @@ class X(U:! type) { // CHECK:STDOUT: %HasF.generic: %HasF.type.ee1 = struct_value () [concrete] // CHECK:STDOUT: %HasF.type.8a4: type = facet_type <@HasF, @HasF(%T.67d)> [symbolic] // CHECK:STDOUT: %Self.c1f: %HasF.type.8a4 = symbolic_binding Self, 1 [symbolic] +// CHECK:STDOUT: %.c6c: form = init_form %T.67d, call_param0 [symbolic] // CHECK:STDOUT: %pattern_type.51d1c4.1: type = pattern_type %T.67d [symbolic] // CHECK:STDOUT: %HasF.F.type.607: type = fn_type @HasF.F, @HasF(%T.67d) [symbolic] // CHECK:STDOUT: %HasF.F.39f: %HasF.F.type.607 = struct_value () [symbolic] @@ -85,6 +86,7 @@ class X(U:! type) { // CHECK:STDOUT: %HasF.F.85a: %HasF.F.type.f31 = struct_value () [concrete] // CHECK:STDOUT: %HasF.assoc_type.078: type = assoc_entity_type @HasF, @HasF(%Param) [concrete] // CHECK:STDOUT: %assoc0.2b0: %HasF.assoc_type.078 = assoc_entity element0, @HasF.%HasF.F.decl [concrete] +// CHECK:STDOUT: %.a18: form = init_form %Param, call_param0 [concrete] // CHECK:STDOUT: %pattern_type.9ea: type = pattern_type %Param [concrete] // CHECK:STDOUT: %C.as.HasF.impl.F.type: type = fn_type @C.as.HasF.impl.F [concrete] // CHECK:STDOUT: %C.as.HasF.impl.F: %C.as.HasF.impl.F.type = struct_value () [concrete] @@ -197,6 +199,7 @@ class X(U:! type) { // CHECK:STDOUT: %return.param_patt: @HasF.F.%pattern_type (%pattern_type.51d1c4.1) = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref: type = name_ref T, @HasF.%T.loc4_16.2 [symbolic = %T (constants.%T.67d)] +// CHECK:STDOUT: %.loc5_13.2: form = init_form %T.ref, call_param0 [symbolic = %.loc5_13.1 (constants.%.c6c)] // CHECK:STDOUT: %return.param: ref @HasF.F.%T (%T.67d) = out_param call_param0 // CHECK:STDOUT: %return: ref @HasF.F.%T (%T.67d) = return_slot %return.param // CHECK:STDOUT: } @@ -219,6 +222,7 @@ class X(U:! type) { // CHECK:STDOUT: %return.param_patt: %pattern_type.9ea = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %Param.ref: type = name_ref Param, file.%Param.decl [concrete = constants.%Param] +// CHECK:STDOUT: %.loc14: form = init_form %Param.ref, call_param0 [concrete = constants.%.a18] // CHECK:STDOUT: %return.param: ref %Param = out_param call_param0 // CHECK:STDOUT: %return: ref %Param = return_slot %return.param // CHECK:STDOUT: } @@ -263,6 +267,7 @@ class X(U:! type) { // CHECK:STDOUT: // CHECK:STDOUT: generic fn @HasF.F(@HasF.%T.loc4_16.2: type, @HasF.%Self.loc4_26.1: @HasF.%HasF.type (%HasF.type.8a4)) { // CHECK:STDOUT: %T: type = symbolic_binding T, 0 [symbolic = %T (constants.%T.67d)] +// CHECK:STDOUT: %.loc5_13.1: form = init_form %T, call_param0 [symbolic = %.loc5_13.1 (constants.%.c6c)] // CHECK:STDOUT: %pattern_type: type = pattern_type %T [symbolic = %pattern_type (constants.%pattern_type.51d1c4.1)] // CHECK:STDOUT: // CHECK:STDOUT: fn() -> @HasF.F.%T (%T.67d); @@ -350,6 +355,7 @@ class X(U:! type) { // CHECK:STDOUT: // CHECK:STDOUT: specific @HasF.F(constants.%T.67d, constants.%Self.c1f) { // CHECK:STDOUT: %T => constants.%T.67d +// CHECK:STDOUT: %.loc5_13.1 => constants.%.c6c // CHECK:STDOUT: %pattern_type => constants.%pattern_type.51d1c4.1 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -367,6 +373,7 @@ class X(U:! type) { // CHECK:STDOUT: // CHECK:STDOUT: specific @HasF.F(constants.%Param, constants.%HasF.facet) { // CHECK:STDOUT: %T => constants.%Param +// CHECK:STDOUT: %.loc5_13.1 => constants.%.a18 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.9ea // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/fail_impl_bad_assoc_fn.carbon b/toolchain/check/testdata/impl/fail_impl_bad_assoc_fn.carbon index c347a63c3d19..7cfdfb4a617e 100644 --- a/toolchain/check/testdata/impl/fail_impl_bad_assoc_fn.carbon +++ b/toolchain/check/testdata/impl/fail_impl_bad_assoc_fn.carbon @@ -281,17 +281,20 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %FExtraImplicitParam.as.I.impl.F.99eae8.2: %FExtraImplicitParam.as.I.impl.F.type.9dd145.2 = struct_value () [concrete] // CHECK:STDOUT: %FExtraReturnType: type = class_type @FExtraReturnType [concrete] // CHECK:STDOUT: %I.impl_witness.247: = impl_witness @FExtraReturnType.as.I.impl.%I.impl_witness_table [concrete] +// CHECK:STDOUT: %.528: form = init_form bool, call_param0 [concrete] // CHECK:STDOUT: %FExtraReturnType.as.I.impl.F.type: type = fn_type @FExtraReturnType.as.I.impl.F [concrete] // CHECK:STDOUT: %FExtraReturnType.as.I.impl.F: %FExtraReturnType.as.I.impl.F.type = struct_value () [concrete] // CHECK:STDOUT: %I.facet.1ed: %I.type = facet_value %FExtraReturnType, (%I.impl_witness.247) [concrete] // CHECK:STDOUT: %J.type: type = facet_type <@J> [concrete] // CHECK:STDOUT: %Self.8a1: %J.type = symbolic_binding Self, 0 [symbolic] +// CHECK:STDOUT: %.650: form = init_form bool, call_param2 [concrete] // CHECK:STDOUT: %J.F.type: type = fn_type @J.F [concrete] // CHECK:STDOUT: %J.F: %J.F.type = struct_value () [concrete] // CHECK:STDOUT: %J.assoc_type: type = assoc_entity_type @J [concrete] // CHECK:STDOUT: %assoc0.5fd: %J.assoc_type = assoc_entity element0, @J.%J.F.decl [concrete] // CHECK:STDOUT: %FMissingParam: type = class_type @FMissingParam [concrete] // CHECK:STDOUT: %J.impl_witness.5e2: = impl_witness @FMissingParam.as.J.impl.%J.impl_witness_table [concrete] +// CHECK:STDOUT: %.df2: form = init_form bool, call_param1 [concrete] // CHECK:STDOUT: %FMissingParam.as.J.impl.F.type.0f71d8.1: type = fn_type @FMissingParam.as.J.impl.F.loc117_31.1 [concrete] // CHECK:STDOUT: %FMissingParam.as.J.impl.F.7540f6.1: %FMissingParam.as.J.impl.F.type.0f71d8.1 = struct_value () [concrete] // CHECK:STDOUT: %J.facet.567: %J.type = facet_value %FMissingParam, (%J.impl_witness.5e2) [concrete] @@ -331,6 +334,7 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %FDifferentImplicitParamType.as.J.impl.F.a9ece4.2: %FDifferentImplicitParamType.as.J.impl.F.type.955391.2 = struct_value () [concrete] // CHECK:STDOUT: %FDifferentReturnType: type = class_type @FDifferentReturnType [concrete] // CHECK:STDOUT: %J.impl_witness.a49: = impl_witness @FDifferentReturnType.as.J.impl.%J.impl_witness_table [concrete] +// CHECK:STDOUT: %.ed7: form = init_form %FDifferentReturnType, call_param2 [concrete] // CHECK:STDOUT: %pattern_type.5c8: type = pattern_type %FDifferentReturnType [concrete] // CHECK:STDOUT: %FDifferentReturnType.as.J.impl.F.type.7bcb67.1: type = fn_type @FDifferentReturnType.as.J.impl.F.loc200_38.1 [concrete] // CHECK:STDOUT: %FDifferentReturnType.as.J.impl.F.a709b1.1: %FDifferentReturnType.as.J.impl.F.type.7bcb67.1 = struct_value () [concrete] @@ -352,6 +356,7 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %pattern_type.37a: type = pattern_type %tuple.type.9cf [symbolic] // CHECK:STDOUT: %int_4: Core.IntLiteral = int_value 4 [concrete] // CHECK:STDOUT: %array_type.eba: type = array_type %int_4, %Self.binding.as_type.07b [symbolic] +// CHECK:STDOUT: %.b93: form = init_form %array_type.eba, call_param1 [symbolic] // CHECK:STDOUT: %pattern_type.dfe: type = pattern_type %array_type.eba [symbolic] // CHECK:STDOUT: %SelfNested.F.type: type = fn_type @SelfNested.F [concrete] // CHECK:STDOUT: %SelfNested.F: %SelfNested.F.type = struct_value () [concrete] @@ -365,6 +370,7 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %tuple.type.70f: type = tuple_type (%ptr.cf2, %struct_type.x.y.871) [concrete] // CHECK:STDOUT: %pattern_type.395: type = pattern_type %tuple.type.70f [concrete] // CHECK:STDOUT: %array_type.388: type = array_type %int_4, %SelfNestedBadParam [concrete] +// CHECK:STDOUT: %.749: form = init_form %array_type.388, call_param1 [concrete] // CHECK:STDOUT: %pattern_type.ec1: type = pattern_type %array_type.388 [concrete] // CHECK:STDOUT: %SelfNestedBadParam.as.SelfNested.impl.F.type.789632.1: type = fn_type @SelfNestedBadParam.as.SelfNested.impl.F.loc223_87.1 [concrete] // CHECK:STDOUT: %SelfNestedBadParam.as.SelfNested.impl.F.6e1661.1: %SelfNestedBadParam.as.SelfNested.impl.F.type.789632.1 = struct_value () [concrete] @@ -386,6 +392,7 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %SelfNestedBadReturnType.as.SelfNested.impl.F.587f77.1: %SelfNestedBadReturnType.as.SelfNested.impl.F.type.75d128.1 = struct_value () [concrete] // CHECK:STDOUT: %SelfNested.facet.23f: %SelfNested.type = facet_value %SelfNestedBadReturnType, (%SelfNested.impl_witness.d9c) [concrete] // CHECK:STDOUT: %array_type.31b: type = array_type %int_4, %SelfNestedBadReturnType [concrete] +// CHECK:STDOUT: %.c3a: form = init_form %array_type.31b, call_param1 [concrete] // CHECK:STDOUT: %pattern_type.1fd: type = pattern_type %array_type.31b [concrete] // CHECK:STDOUT: %SelfNestedBadReturnType.as.SelfNested.impl.F.type.75d128.2: type = fn_type @SelfNestedBadReturnType.as.SelfNested.impl.F.loc239_112.2 [concrete] // CHECK:STDOUT: %SelfNestedBadReturnType.as.SelfNested.impl.F.587f77.2: %SelfNestedBadReturnType.as.SelfNested.impl.F.type.75d128.2 = struct_value () [concrete] @@ -473,6 +480,7 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %Bool.call.loc103_44: init type = call constants.%Bool() [concrete = bool] // CHECK:STDOUT: %.loc103_44.1: type = value_of_initializer %Bool.call.loc103_44 [concrete = bool] // CHECK:STDOUT: %.loc103_44.2: type = converted %Bool.call.loc103_44, %.loc103_44.1 [concrete = bool] +// CHECK:STDOUT: %.loc103_44.3: form = init_form %.loc103_44.2, call_param2 [concrete = constants.%.650] // CHECK:STDOUT: %self.param: bool = value_param call_param0 // CHECK:STDOUT: %.loc103_26.1: type = splice_block %.loc103_26.3 [concrete = bool] { // CHECK:STDOUT: %Bool.call.loc103_26: init type = call constants.%Bool() [concrete = bool] @@ -513,6 +521,7 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %Self.as_type.loc211_50: type = facet_access_type %Self.ref.loc211_50 [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type.07b)] // CHECK:STDOUT: %.loc211_50: type = converted %Self.ref.loc211_50, %Self.as_type.loc211_50 [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type.07b)] // CHECK:STDOUT: %array_type.loc211_57.2: type = array_type %int_4, %.loc211_50 [symbolic = %array_type.loc211_57.1 (constants.%array_type.eba)] +// CHECK:STDOUT: %.loc211_57.2: form = init_form %array_type.loc211_57.2, call_param1 [symbolic = %.loc211_57.1 (constants.%.b93)] // CHECK:STDOUT: %x.param: @SelfNested.F.%tuple.type (%tuple.type.9cf) = value_param call_param0 // CHECK:STDOUT: %.loc211_38.1: type = splice_block %.loc211_38.3 [symbolic = %tuple.type (constants.%tuple.type.9cf)] { // CHECK:STDOUT: %Self.ref.loc211_12: %SelfNested.type = name_ref Self, @SelfNested.%Self [symbolic = %Self (constants.%Self.aed)] @@ -621,6 +630,7 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %Bool.call: init type = call constants.%Bool() [concrete = bool] // CHECK:STDOUT: %.loc99_15.1: type = value_of_initializer %Bool.call [concrete = bool] // CHECK:STDOUT: %.loc99_15.2: type = converted %Bool.call, %.loc99_15.1 [concrete = bool] +// CHECK:STDOUT: %.loc99_15.3: form = init_form %.loc99_15.2, call_param0 [concrete = constants.%.528] // CHECK:STDOUT: %return.param: ref bool = out_param call_param0 // CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } @@ -642,6 +652,7 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %Bool.call.loc117_27: init type = call constants.%Bool() [concrete = bool] // CHECK:STDOUT: %.loc117_27.1: type = value_of_initializer %Bool.call.loc117_27 [concrete = bool] // CHECK:STDOUT: %.loc117_27.2: type = converted %Bool.call.loc117_27, %.loc117_27.1 [concrete = bool] +// CHECK:STDOUT: %.loc117_27.3: form = init_form %.loc117_27.2, call_param1 [concrete = constants.%.df2] // CHECK:STDOUT: %self.param: bool = value_param call_param0 // CHECK:STDOUT: %.loc117_16.1: type = splice_block %.loc117_16.3 [concrete = bool] { // CHECK:STDOUT: %Bool.call.loc117_16: init type = call constants.%Bool() [concrete = bool] @@ -686,6 +697,7 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %Bool.call.loc130_22: init type = call constants.%Bool() [concrete = bool] // CHECK:STDOUT: %.loc130_22.1: type = value_of_initializer %Bool.call.loc130_22 [concrete = bool] // CHECK:STDOUT: %.loc130_22.2: type = converted %Bool.call.loc130_22, %.loc130_22.1 [concrete = bool] +// CHECK:STDOUT: %.loc130_22.3: form = init_form %.loc130_22.2, call_param1 [concrete = constants.%.df2] // CHECK:STDOUT: %b.param: bool = value_param call_param0 // CHECK:STDOUT: %.loc130_13.1: type = splice_block %.loc130_13.3 [concrete = bool] { // CHECK:STDOUT: %Bool.call.loc130_13: init type = call constants.%Bool() [concrete = bool] @@ -778,6 +790,7 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %Bool.call.loc171_34: init type = call constants.%Bool() [concrete = bool] // CHECK:STDOUT: %.loc171_34.1: type = value_of_initializer %Bool.call.loc171_34 [concrete = bool] // CHECK:STDOUT: %.loc171_34.2: type = converted %Bool.call.loc171_34, %.loc171_34.1 [concrete = bool] +// CHECK:STDOUT: %.loc171_34.3: form = init_form %.loc171_34.2, call_param2 [concrete = constants.%.650] // CHECK:STDOUT: %self.param: bool = value_param call_param0 // CHECK:STDOUT: %.loc171_16.1: type = splice_block %.loc171_16.3 [concrete = bool] { // CHECK:STDOUT: %Bool.call.loc171_16: init type = call constants.%Bool() [concrete = bool] @@ -827,6 +840,7 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %Bool.call.loc184_34: init type = call constants.%Bool() [concrete = bool] // CHECK:STDOUT: %.loc184_34.1: type = value_of_initializer %Bool.call.loc184_34 [concrete = bool] // CHECK:STDOUT: %.loc184_34.2: type = converted %Bool.call.loc184_34, %.loc184_34.1 [concrete = bool] +// CHECK:STDOUT: %.loc184_34.3: form = init_form %.loc184_34.2, call_param2 [concrete = constants.%.650] // CHECK:STDOUT: %self.param: %FDifferentImplicitParamType = value_param call_param0 // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%FDifferentImplicitParamType [concrete = constants.%FDifferentImplicitParamType] // CHECK:STDOUT: %self: %FDifferentImplicitParamType = value_binding self, %self.param @@ -874,6 +888,7 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %return.param_patt: %pattern_type.5c8 = out_param_pattern %return.patt, call_param2 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%FDifferentReturnType [concrete = constants.%FDifferentReturnType] +// CHECK:STDOUT: %.loc200_34: form = init_form %Self.ref, call_param2 [concrete = constants.%.ed7] // CHECK:STDOUT: %self.param: bool = value_param call_param0 // CHECK:STDOUT: %.loc200_16.1: type = splice_block %.loc200_16.3 [concrete = bool] { // CHECK:STDOUT: %Bool.call.loc200_16: init type = call constants.%Bool() [concrete = bool] @@ -925,6 +940,7 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %SelfNestedBadParam.ref.loc223_65: type = name_ref SelfNestedBadParam, file.%SelfNestedBadParam.decl [concrete = constants.%SelfNestedBadParam] // CHECK:STDOUT: %int_4: Core.IntLiteral = int_value 4 [concrete = constants.%int_4] // CHECK:STDOUT: %array_type: type = array_type %int_4, %SelfNestedBadParam.ref.loc223_65 [concrete = constants.%array_type.388] +// CHECK:STDOUT: %.loc223_86: form = init_form %array_type, call_param1 [concrete = constants.%.749] // CHECK:STDOUT: %x.param: %tuple.type.70f = value_param call_param0 // CHECK:STDOUT: %.loc223_53.1: type = splice_block %.loc223_53.3 [concrete = constants.%tuple.type.70f] { // CHECK:STDOUT: %SelfNestedBadParam.ref.loc223_14: type = name_ref SelfNestedBadParam, file.%SelfNestedBadParam.decl [concrete = constants.%SelfNestedBadParam] @@ -972,6 +988,7 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %SelfNestedBadParam.ref: type = name_ref SelfNestedBadParam, file.%SelfNestedBadParam.decl [concrete = constants.%SelfNestedBadParam] // CHECK:STDOUT: %int_4: Core.IntLiteral = int_value 4 [concrete = constants.%int_4] // CHECK:STDOUT: %array_type: type = array_type %int_4, %SelfNestedBadParam.ref [concrete = constants.%array_type.388] +// CHECK:STDOUT: %.loc239_111: form = init_form %array_type, call_param1 [concrete = constants.%.749] // CHECK:STDOUT: %x.param: %tuple.type.064 = value_param call_param0 // CHECK:STDOUT: %.loc239_78.1: type = splice_block %.loc239_78.3 [concrete = constants.%tuple.type.064] { // CHECK:STDOUT: %SelfNestedBadReturnType.ref.loc239_14: type = name_ref SelfNestedBadReturnType, file.%SelfNestedBadReturnType.decl [concrete = constants.%SelfNestedBadReturnType] @@ -1316,6 +1333,7 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %tuple.type: type = tuple_type (%ptr.loc211_16.1, %struct_type.x.y.loc211_37.1) [symbolic = %tuple.type (constants.%tuple.type.9cf)] // CHECK:STDOUT: %pattern_type.loc211_8: type = pattern_type %tuple.type [symbolic = %pattern_type.loc211_8 (constants.%pattern_type.37a)] // CHECK:STDOUT: %array_type.loc211_57.1: type = array_type constants.%int_4, %Self.binding.as_type [symbolic = %array_type.loc211_57.1 (constants.%array_type.eba)] +// CHECK:STDOUT: %.loc211_57.1: form = init_form %array_type.loc211_57.1, call_param1 [symbolic = %.loc211_57.1 (constants.%.b93)] // CHECK:STDOUT: %pattern_type.loc211_41: type = pattern_type %array_type.loc211_57.1 [symbolic = %pattern_type.loc211_41 (constants.%pattern_type.dfe)] // CHECK:STDOUT: // CHECK:STDOUT: fn(%x.param: @SelfNested.F.%tuple.type (%tuple.type.9cf)) -> @SelfNested.F.%array_type.loc211_57.1 (%array_type.eba); @@ -1381,6 +1399,7 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %tuple.type => constants.%tuple.type.9cf // CHECK:STDOUT: %pattern_type.loc211_8 => constants.%pattern_type.37a // CHECK:STDOUT: %array_type.loc211_57.1 => constants.%array_type.eba +// CHECK:STDOUT: %.loc211_57.1 => constants.%.b93 // CHECK:STDOUT: %pattern_type.loc211_41 => constants.%pattern_type.dfe // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1393,6 +1412,7 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %tuple.type => constants.%tuple.type.7ea // CHECK:STDOUT: %pattern_type.loc211_8 => constants.%pattern_type.8d7 // CHECK:STDOUT: %array_type.loc211_57.1 => constants.%array_type.388 +// CHECK:STDOUT: %.loc211_57.1 => constants.%.749 // CHECK:STDOUT: %pattern_type.loc211_41 => constants.%pattern_type.ec1 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1405,6 +1425,7 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %tuple.type => constants.%tuple.type.064 // CHECK:STDOUT: %pattern_type.loc211_8 => constants.%pattern_type.1f1 // CHECK:STDOUT: %array_type.loc211_57.1 => constants.%array_type.31b +// CHECK:STDOUT: %.loc211_57.1 => constants.%.c3a // CHECK:STDOUT: %pattern_type.loc211_41 => constants.%pattern_type.1fd // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/generic_redeclaration.carbon b/toolchain/check/testdata/impl/generic_redeclaration.carbon index 08de92db92e2..90e025328642 100644 --- a/toolchain/check/testdata/impl/generic_redeclaration.carbon +++ b/toolchain/check/testdata/impl/generic_redeclaration.carbon @@ -624,6 +624,7 @@ impl forall [T:! type] T as I { // CHECK:STDOUT: %T.as.I.impl.B.type: type = fn_type @T.as.I.impl.B, @T.as.I.impl.f7b5a3.2(%T) [symbolic] // CHECK:STDOUT: %T.as.I.impl.B: %T.as.I.impl.B.type = struct_value () [symbolic] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %.62c: form = init_form %empty_tuple.type, call_param0 [concrete] // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %T.as.I.impl.C.type: type = fn_type @T.as.I.impl.C, @T.as.I.impl.f7b5a3.2(%T) [symbolic] // CHECK:STDOUT: %T.as.I.impl.C: %T.as.I.impl.C.type = struct_value () [symbolic] @@ -712,6 +713,7 @@ impl forall [T:! type] T as I { // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc19_14.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc19_14.2: type = converted %.loc19_14.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %.loc19_14.3: form = init_form %.loc19_14.2, call_param0 [concrete = constants.%.62c] // CHECK:STDOUT: %return.param: ref %empty_tuple.type = out_param call_param0 // CHECK:STDOUT: %return: ref %empty_tuple.type = return_slot %return.param // CHECK:STDOUT: } @@ -721,6 +723,7 @@ impl forall [T:! type] T as I { // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc20_14.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc20_14.2: type = converted %.loc20_14.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %.loc20_14.3: form = init_form %.loc20_14.2, call_param0 [concrete = constants.%.62c] // CHECK:STDOUT: %return.param: ref %empty_tuple.type = out_param call_param0 // CHECK:STDOUT: %return: ref %empty_tuple.type = return_slot %return.param // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/impl/impl_thunk.carbon b/toolchain/check/testdata/impl/impl_thunk.carbon index 74e5620c1bd0..82eaaea326b6 100644 --- a/toolchain/check/testdata/impl/impl_thunk.carbon +++ b/toolchain/check/testdata/impl/impl_thunk.carbon @@ -335,6 +335,7 @@ impl () as I({}) { // CHECK:STDOUT: %struct_type.b.a.40c: type = struct_type {.b: %empty_struct_type, .a: %empty_tuple.type} [concrete] // CHECK:STDOUT: %pattern_type.231: type = pattern_type %struct_type.b.a.40c [concrete] // CHECK:STDOUT: %struct_type.d.c.b36: type = struct_type {.d: %empty_struct_type, .c: %empty_tuple.type} [concrete] +// CHECK:STDOUT: %.306: form = init_form %struct_type.d.c.b36, call_param1 [concrete] // CHECK:STDOUT: %pattern_type.844: type = pattern_type %struct_type.d.c.b36 [concrete] // CHECK:STDOUT: %empty_tuple.type.as.I.impl.F.type.19e4b8.1: type = fn_type @empty_tuple.type.as.I.impl.F.loc10_48.1 [concrete] // CHECK:STDOUT: %empty_tuple.type.as.I.impl.F.8be29b.1: %empty_tuple.type.as.I.impl.F.type.19e4b8.1 = struct_value () [concrete] @@ -360,6 +361,7 @@ impl () as I({}) { // CHECK:STDOUT: %.loc10_46.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc10_46.2: type = converted %.loc10_46.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %struct_type.d.c: type = struct_type {.d: %empty_struct_type, .c: %empty_tuple.type} [concrete = constants.%struct_type.d.c.b36] +// CHECK:STDOUT: %.loc10_47: form = init_form %struct_type.d.c, call_param1 [concrete = constants.%.306] // CHECK:STDOUT: %y.param: %struct_type.b.a.40c = value_param call_param0 // CHECK:STDOUT: %.loc10_26: type = splice_block %struct_type.b.a [concrete = constants.%struct_type.b.a.40c] { // CHECK:STDOUT: %.loc10_17.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] @@ -422,6 +424,7 @@ impl () as I({}) { // CHECK:STDOUT: %ptr.643: type = ptr_type %A [concrete] // CHECK:STDOUT: %pattern_type.f29: type = pattern_type %ptr.643 [concrete] // CHECK:STDOUT: %ptr.31e: type = ptr_type %C [concrete] +// CHECK:STDOUT: %.90c: form = init_form %ptr.31e, call_param2 [concrete] // CHECK:STDOUT: %pattern_type.506: type = pattern_type %ptr.31e [concrete] // CHECK:STDOUT: %B.as.X.impl.F.type.421a66.1: type = fn_type @B.as.X.impl.F.loc14_37.1 [concrete] // CHECK:STDOUT: %B.as.X.impl.F.8ec460.1: %B.as.X.impl.F.type.421a66.1 = struct_value () [concrete] @@ -457,11 +460,12 @@ impl () as I({}) { // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %ptr.loc14_36: type = ptr_type %C.ref [concrete = constants.%ptr.31e] +// CHECK:STDOUT: %.loc14_36: form = init_form %ptr.loc14_36, call_param2 [concrete = constants.%.90c] // CHECK:STDOUT: %self.param: ref %A = ref_param call_param0 // CHECK:STDOUT: %A.ref.loc14_18: type = name_ref A, file.%A.decl [concrete = constants.%A] // CHECK:STDOUT: %self: ref %A = ref_binding self, %self.param // CHECK:STDOUT: %other.param: %ptr.643 = value_param call_param1 -// CHECK:STDOUT: %.loc14: type = splice_block %ptr.loc14_29 [concrete = constants.%ptr.643] { +// CHECK:STDOUT: %.loc14_29: type = splice_block %ptr.loc14_29 [concrete = constants.%ptr.643] { // CHECK:STDOUT: %A.ref.loc14_28: type = name_ref A, file.%A.decl [concrete = constants.%A] // CHECK:STDOUT: %ptr.loc14_29: type = ptr_type %A.ref.loc14_28 [concrete = constants.%ptr.643] // CHECK:STDOUT: } @@ -572,6 +576,7 @@ impl () as I({}) { // CHECK:STDOUT: %ptr.643: type = ptr_type %A [concrete] // CHECK:STDOUT: %pattern_type.f29: type = pattern_type %ptr.643 [concrete] // CHECK:STDOUT: %ptr.31e: type = ptr_type %C [concrete] +// CHECK:STDOUT: %.90c: form = init_form %ptr.31e, call_param2 [concrete] // CHECK:STDOUT: %pattern_type.506: type = pattern_type %ptr.31e [concrete] // CHECK:STDOUT: %B.as.X.impl.F.type.421a66.1: type = fn_type @B.as.X.impl.F.loc14_37.1 [concrete] // CHECK:STDOUT: %B.as.X.impl.F.8ec460.1: %B.as.X.impl.F.type.421a66.1 = struct_value () [concrete] @@ -607,11 +612,12 @@ impl () as I({}) { // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %ptr.loc14_36: type = ptr_type %C.ref [concrete = constants.%ptr.31e] +// CHECK:STDOUT: %.loc14_36: form = init_form %ptr.loc14_36, call_param2 [concrete = constants.%.90c] // CHECK:STDOUT: %self.param: ref %A = ref_param call_param0 // CHECK:STDOUT: %A.ref.loc14_18: type = name_ref A, file.%A.decl [concrete = constants.%A] // CHECK:STDOUT: %self: ref %A = ref_binding self, %self.param // CHECK:STDOUT: %other.param: %ptr.643 = value_param call_param1 -// CHECK:STDOUT: %.loc14: type = splice_block %ptr.loc14_29 [concrete = constants.%ptr.643] { +// CHECK:STDOUT: %.loc14_29: type = splice_block %ptr.loc14_29 [concrete = constants.%ptr.643] { // CHECK:STDOUT: %A.ref.loc14_28: type = name_ref A, file.%A.decl [concrete = constants.%A] // CHECK:STDOUT: %ptr.loc14_29: type = ptr_type %A.ref.loc14_28 [concrete = constants.%ptr.643] // CHECK:STDOUT: } @@ -667,6 +673,7 @@ impl () as I({}) { // CHECK:STDOUT: %ptr.643: type = ptr_type %A [concrete] // CHECK:STDOUT: %pattern_type.f29: type = pattern_type %ptr.643 [concrete] // CHECK:STDOUT: %ptr.31e: type = ptr_type %C [concrete] +// CHECK:STDOUT: %.90c: form = init_form %ptr.31e, call_param2 [concrete] // CHECK:STDOUT: %pattern_type.506: type = pattern_type %ptr.31e [concrete] // CHECK:STDOUT: %B.as.X.impl.F.type.421a66.1: type = fn_type @B.as.X.impl.F.loc14_37.1 [concrete] // CHECK:STDOUT: %B.as.X.impl.F.8ec460.1: %B.as.X.impl.F.type.421a66.1 = struct_value () [concrete] @@ -702,11 +709,12 @@ impl () as I({}) { // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %ptr.loc14_36: type = ptr_type %C.ref [concrete = constants.%ptr.31e] +// CHECK:STDOUT: %.loc14_36: form = init_form %ptr.loc14_36, call_param2 [concrete = constants.%.90c] // CHECK:STDOUT: %self.param: ref %A = ref_param call_param0 // CHECK:STDOUT: %A.ref.loc14_18: type = name_ref A, file.%A.decl [concrete = constants.%A] // CHECK:STDOUT: %self: ref %A = ref_binding self, %self.param // CHECK:STDOUT: %other.param: %ptr.643 = value_param call_param1 -// CHECK:STDOUT: %.loc14: type = splice_block %ptr.loc14_29 [concrete = constants.%ptr.643] { +// CHECK:STDOUT: %.loc14_29: type = splice_block %ptr.loc14_29 [concrete = constants.%ptr.643] { // CHECK:STDOUT: %A.ref.loc14_28: type = name_ref A, file.%A.decl [concrete = constants.%A] // CHECK:STDOUT: %ptr.loc14_29: type = ptr_type %A.ref.loc14_28 [concrete = constants.%ptr.643] // CHECK:STDOUT: } @@ -758,6 +766,7 @@ impl () as I({}) { // CHECK:STDOUT: %A: type = class_type @A [concrete] // CHECK:STDOUT: %B: type = class_type @B [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %.312: form = init_form %B, call_param0 [concrete] // CHECK:STDOUT: %pattern_type.1f4: type = pattern_type %B [concrete] // CHECK:STDOUT: %A.as.X.impl.F.type.170a02.1: type = fn_type @A.as.X.impl.F.loc23_14.1 [concrete] // CHECK:STDOUT: %A.as.X.impl.F.e6cf46.1: %A.as.X.impl.F.type.170a02.1 = struct_value () [concrete] @@ -776,6 +785,7 @@ impl () as I({}) { // CHECK:STDOUT: %return.param_patt: %pattern_type.1f4 = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %B.ref: type = name_ref B, file.%B.decl [concrete = constants.%B] +// CHECK:STDOUT: %.loc23: form = init_form %B.ref, call_param0 [concrete = constants.%.312] // CHECK:STDOUT: %return.param: ref %B = out_param call_param0 // CHECK:STDOUT: %return: ref %B = return_slot %return.param // CHECK:STDOUT: } @@ -820,11 +830,13 @@ impl () as I({}) { // CHECK:STDOUT: %pattern_type.ce2: type = pattern_type %Copy.type [concrete] // CHECK:STDOUT: %U.binding.as_type.14b: type = symbolic_binding_type U, 0, %U.035 [symbolic] // CHECK:STDOUT: %pattern_type.9b9f0c.1: type = pattern_type %U.binding.as_type.14b [symbolic] +// CHECK:STDOUT: %.075d25.1: form = init_form %U.binding.as_type.14b, call_param1 [symbolic] // CHECK:STDOUT: %empty_tuple.type.as.I.impl.F.type.19e4b8.1: type = fn_type @empty_tuple.type.as.I.impl.F.loc10_34.1 [concrete] // CHECK:STDOUT: %empty_tuple.type.as.I.impl.F.8be29b.1: %empty_tuple.type.as.I.impl.F.type.19e4b8.1 = struct_value () [concrete] // CHECK:STDOUT: %T.67d: type = symbolic_binding T, 0 [symbolic] // CHECK:STDOUT: %ptr.e8f: type = ptr_type %T.67d [symbolic] // CHECK:STDOUT: %pattern_type.4f4: type = pattern_type %ptr.e8f [symbolic] +// CHECK:STDOUT: %.ba4: form = init_form %ptr.e8f, call_param1 [symbolic] // CHECK:STDOUT: %empty_tuple.type.as.I.impl.F.type.19e4b8.2: type = fn_type @empty_tuple.type.as.I.impl.F.loc10_34.2 [concrete] // CHECK:STDOUT: %empty_tuple.type.as.I.impl.F.8be29b.2: %empty_tuple.type.as.I.impl.F.type.19e4b8.2 = struct_value () [concrete] // CHECK:STDOUT: %require_complete.67ca8d.1: = require_complete_type %U.binding.as_type.14b [symbolic] @@ -862,7 +874,8 @@ impl () as I({}) { // CHECK:STDOUT: } { // CHECK:STDOUT: %U.ref.loc10_32: %Copy.type = name_ref U, %U.loc10_8.2 [symbolic = %U.loc10_8.1 (constants.%U.035)] // CHECK:STDOUT: %U.as_type.loc10_32: type = facet_access_type %U.ref.loc10_32 [symbolic = %U.binding.as_type (constants.%U.binding.as_type.14b)] -// CHECK:STDOUT: %.loc10_32: type = converted %U.ref.loc10_32, %U.as_type.loc10_32 [symbolic = %U.binding.as_type (constants.%U.binding.as_type.14b)] +// CHECK:STDOUT: %.loc10_32.2: type = converted %U.ref.loc10_32, %U.as_type.loc10_32 [symbolic = %U.binding.as_type (constants.%U.binding.as_type.14b)] +// CHECK:STDOUT: %.loc10_32.3: form = init_form %.loc10_32.2, call_param1 [symbolic = %.loc10_32.1 (constants.%.075d25.1)] // CHECK:STDOUT: %.loc10_16: type = splice_block %Copy.ref [concrete = constants.%Copy.type] { // CHECK:STDOUT: // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [concrete = imports.%Core] @@ -896,6 +909,7 @@ impl () as I({}) { // CHECK:STDOUT: %U.loc10_8.1: %Copy.type = symbolic_binding U, 0 [symbolic = %U.loc10_8.1 (constants.%U.035)] // CHECK:STDOUT: %U.binding.as_type: type = symbolic_binding_type U, 0, %U.loc10_8.1 [symbolic = %U.binding.as_type (constants.%U.binding.as_type.14b)] // CHECK:STDOUT: %pattern_type: type = pattern_type %U.binding.as_type [symbolic = %pattern_type (constants.%pattern_type.9b9f0c.1)] +// CHECK:STDOUT: %.loc10_32.1: form = init_form %U.binding.as_type, call_param1 [symbolic = %.loc10_32.1 (constants.%.075d25.1)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete: = require_complete_type %U.binding.as_type [symbolic = %require_complete (constants.%require_complete.67ca8d.1)] @@ -945,6 +959,7 @@ impl () as I({}) { // CHECK:STDOUT: %U.loc10_8.1 => constants.%U.035 // CHECK:STDOUT: %U.binding.as_type => constants.%U.binding.as_type.14b // CHECK:STDOUT: %pattern_type => constants.%pattern_type.9b9f0c.1 +// CHECK:STDOUT: %.loc10_32.1 => constants.%.075d25.1 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @empty_tuple.type.as.I.impl.F.loc10_34.2(constants.%T.67d) { @@ -957,6 +972,7 @@ impl () as I({}) { // CHECK:STDOUT: %U.loc10_8.1 => constants.%Copy.facet // CHECK:STDOUT: %U.binding.as_type => constants.%ptr.e8f // CHECK:STDOUT: %pattern_type => constants.%pattern_type.4f4 +// CHECK:STDOUT: %.loc10_32.1 => constants.%.ba4 // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete => constants.%require_complete.ef1 @@ -977,11 +993,13 @@ impl () as I({}) { // CHECK:STDOUT: %pattern_type.ce2: type = pattern_type %Copy.type [concrete] // CHECK:STDOUT: %U.binding.as_type.14b: type = symbolic_binding_type U, 0, %U.035 [symbolic] // CHECK:STDOUT: %pattern_type.9b9f0c.1: type = pattern_type %U.binding.as_type.14b [symbolic] +// CHECK:STDOUT: %.784: form = init_form %U.binding.as_type.14b, call_param2 [symbolic] // CHECK:STDOUT: %empty_tuple.type.as.I.impl.F.type.19e4b8.1: type = fn_type @empty_tuple.type.as.I.impl.F.loc10_44.1 [concrete] // CHECK:STDOUT: %empty_tuple.type.as.I.impl.F.8be29b.1: %empty_tuple.type.as.I.impl.F.type.19e4b8.1 = struct_value () [concrete] // CHECK:STDOUT: %T.67d: type = symbolic_binding T, 0 [symbolic] // CHECK:STDOUT: %ptr.e8f: type = ptr_type %T.67d [symbolic] // CHECK:STDOUT: %pattern_type.4f4: type = pattern_type %ptr.e8f [symbolic] +// CHECK:STDOUT: %.7c9: form = init_form %ptr.e8f, call_param2 [symbolic] // CHECK:STDOUT: %empty_tuple.type.as.I.impl.F.type.19e4b8.2: type = fn_type @empty_tuple.type.as.I.impl.F.loc10_44.2 [concrete] // CHECK:STDOUT: %empty_tuple.type.as.I.impl.F.8be29b.2: %empty_tuple.type.as.I.impl.F.type.19e4b8.2 = struct_value () [concrete] // CHECK:STDOUT: %require_complete.67ca8d.1: = require_complete_type %U.binding.as_type.14b [symbolic] @@ -1021,7 +1039,8 @@ impl () as I({}) { // CHECK:STDOUT: } { // CHECK:STDOUT: %U.ref.loc10_42: %Copy.type = name_ref U, %U.loc10_18.2 [symbolic = %U.loc10_18.1 (constants.%U.035)] // CHECK:STDOUT: %U.as_type.loc10_42: type = facet_access_type %U.ref.loc10_42 [symbolic = %U.binding.as_type (constants.%U.binding.as_type.14b)] -// CHECK:STDOUT: %.loc10_42: type = converted %U.ref.loc10_42, %U.as_type.loc10_42 [symbolic = %U.binding.as_type (constants.%U.binding.as_type.14b)] +// CHECK:STDOUT: %.loc10_42.2: type = converted %U.ref.loc10_42, %U.as_type.loc10_42 [symbolic = %U.binding.as_type (constants.%U.binding.as_type.14b)] +// CHECK:STDOUT: %.loc10_42.3: form = init_form %.loc10_42.2, call_param2 [symbolic = %.loc10_42.1 (constants.%.784)] // CHECK:STDOUT: %self.param: %empty_tuple.type = value_param call_param0 // CHECK:STDOUT: %.loc10_15.1: type = splice_block %.loc10_15.3 [concrete = constants.%empty_tuple.type] { // CHECK:STDOUT: %.loc10_15.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] @@ -1061,6 +1080,7 @@ impl () as I({}) { // CHECK:STDOUT: %U.loc10_18.1: %Copy.type = symbolic_binding U, 0 [symbolic = %U.loc10_18.1 (constants.%U.035)] // CHECK:STDOUT: %U.binding.as_type: type = symbolic_binding_type U, 0, %U.loc10_18.1 [symbolic = %U.binding.as_type (constants.%U.binding.as_type.14b)] // CHECK:STDOUT: %pattern_type: type = pattern_type %U.binding.as_type [symbolic = %pattern_type (constants.%pattern_type.9b9f0c.1)] +// CHECK:STDOUT: %.loc10_42.1: form = init_form %U.binding.as_type, call_param2 [symbolic = %.loc10_42.1 (constants.%.784)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete: = require_complete_type %U.binding.as_type [symbolic = %require_complete (constants.%require_complete.67ca8d.1)] @@ -1112,6 +1132,7 @@ impl () as I({}) { // CHECK:STDOUT: %U.loc10_18.1 => constants.%U.035 // CHECK:STDOUT: %U.binding.as_type => constants.%U.binding.as_type.14b // CHECK:STDOUT: %pattern_type => constants.%pattern_type.9b9f0c.1 +// CHECK:STDOUT: %.loc10_42.1 => constants.%.784 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @empty_tuple.type.as.I.impl.F.loc10_44.2(constants.%T.67d) { @@ -1124,6 +1145,7 @@ impl () as I({}) { // CHECK:STDOUT: %U.loc10_18.1 => constants.%Copy.facet // CHECK:STDOUT: %U.binding.as_type => constants.%ptr.e8f // CHECK:STDOUT: %pattern_type => constants.%pattern_type.4f4 +// CHECK:STDOUT: %.loc10_42.1 => constants.%.7c9 // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete => constants.%require_complete.ef1 @@ -1140,6 +1162,7 @@ impl () as I({}) { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %struct_type.b.a.1b0: type = struct_type {.b: %empty_struct_type, .a: %empty_struct_type} [concrete] +// CHECK:STDOUT: %.894: form = init_form %struct_type.b.a.1b0, call_param0 [concrete] // CHECK:STDOUT: %pattern_type.914: type = pattern_type %struct_type.b.a.1b0 [concrete] // CHECK:STDOUT: %empty_tuple.type.as.I.impl.F.type.e82c13.1: type = fn_type @empty_tuple.type.as.I.impl.F.loc10_29.1 [concrete] // CHECK:STDOUT: %empty_tuple.type.as.I.impl.F.5f0cef.1: %empty_tuple.type.as.I.impl.F.type.e82c13.1 = struct_value () [concrete] @@ -1164,6 +1187,7 @@ impl () as I({}) { // CHECK:STDOUT: %.loc10_27.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc10_27.2: type = converted %.loc10_27.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %struct_type.b.a: type = struct_type {.b: %empty_struct_type, .a: %empty_struct_type} [concrete = constants.%struct_type.b.a.1b0] +// CHECK:STDOUT: %.loc10_28: form = init_form %struct_type.b.a, call_param0 [concrete = constants.%.894] // CHECK:STDOUT: %return.param: ref %struct_type.b.a.1b0 = out_param call_param0 // CHECK:STDOUT: %return: ref %struct_type.b.a.1b0 = return_slot %return.param // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/impl/import_builtin_call.carbon b/toolchain/check/testdata/impl/import_builtin_call.carbon index e2e637289dda..7ed99c3f4122 100644 --- a/toolchain/check/testdata/impl/import_builtin_call.carbon +++ b/toolchain/check/testdata/impl/import_builtin_call.carbon @@ -81,14 +81,17 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: %Self: %Add.type = symbolic_binding Self, 0 [symbolic] // CHECK:STDOUT: %Self.binding.as_type: type = symbolic_binding_type Self, 0, %Self [symbolic] // CHECK:STDOUT: %pattern_type.f75: type = pattern_type %Self.binding.as_type [symbolic] +// CHECK:STDOUT: %.b66: form = init_form %Self.binding.as_type, call_param2 [symbolic] // CHECK:STDOUT: %Add.Op.type: type = fn_type @Add.Op [concrete] // CHECK:STDOUT: %Add.Op: %Add.Op.type = struct_value () [concrete] // CHECK:STDOUT: %Add.assoc_type: type = assoc_entity_type @Add [concrete] // CHECK:STDOUT: %assoc0: %Add.assoc_type = assoc_entity element0, @Add.%Add.Op.decl [concrete] +// CHECK:STDOUT: %.d96: form = init_form type, call_param0 [concrete] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %IntLiteral.type: type = fn_type @IntLiteral [concrete] // CHECK:STDOUT: %IntLiteral: %IntLiteral.type = struct_value () [concrete] // CHECK:STDOUT: %pattern_type.dc0: type = pattern_type Core.IntLiteral [concrete] +// CHECK:STDOUT: %.39d: form = init_form type, call_param1 [concrete] // CHECK:STDOUT: %Int.type: type = fn_type @Int [concrete] // CHECK:STDOUT: %Int: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] @@ -102,10 +105,12 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: %complete_type: = complete_type_witness %iN.builtin [symbolic] // CHECK:STDOUT: %Add.impl_witness: = impl_witness @MyInt.as.Add.impl.%Add.impl_witness_table, @MyInt.as.Add.impl(%N) [symbolic] // CHECK:STDOUT: %pattern_type.1a3: type = pattern_type %MyInt [symbolic] +// CHECK:STDOUT: %.d91: form = init_form %MyInt, call_param2 [symbolic] // CHECK:STDOUT: %MyInt.as.Add.impl.Op.type: type = fn_type @MyInt.as.Add.impl.Op, @MyInt.as.Add.impl(%N) [symbolic] // CHECK:STDOUT: %MyInt.as.Add.impl.Op: %MyInt.as.Add.impl.Op.type = struct_value () [symbolic] // CHECK:STDOUT: %require_complete.9fa: = require_complete_type %MyInt [symbolic] // CHECK:STDOUT: %Add.facet.fbb: %Add.type = facet_value %MyInt, (%Add.impl_witness) [symbolic] +// CHECK:STDOUT: %.b3a: form = init_form %MyInt, call_param1 [symbolic] // CHECK:STDOUT: %Double.type: type = fn_type @Double [concrete] // CHECK:STDOUT: %Double: %Double.type = struct_value () [concrete] // CHECK:STDOUT: %.c60: require_specific_def_type = require_specific_def @MyInt.as.Add.impl(%N) [symbolic] @@ -129,6 +134,7 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: %return.patt: %pattern_type.98f = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.98f = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { +// CHECK:STDOUT: %.loc8: form = init_form type, call_param0 [concrete = constants.%.d96] // CHECK:STDOUT: %return.param: ref type = out_param call_param0 // CHECK:STDOUT: %return: ref type = return_slot %return.param // CHECK:STDOUT: } @@ -138,6 +144,7 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: %return.patt: %pattern_type.98f = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.98f = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { +// CHECK:STDOUT: %.loc9_28: form = init_form type, call_param1 [concrete = constants.%.39d] // CHECK:STDOUT: %n.param: Core.IntLiteral = value_param call_param0 // CHECK:STDOUT: %.loc9_22.1: type = splice_block %.loc9_22.3 [concrete = Core.IntLiteral] { // CHECK:STDOUT: %IntLiteral.ref: %IntLiteral.type = name_ref IntLiteral, file.%IntLiteral.decl [concrete = constants.%IntLiteral] @@ -187,6 +194,7 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: %MyInt.ref.loc19_45: %MyInt.type = name_ref MyInt, file.%MyInt.decl [concrete = constants.%MyInt.generic] // CHECK:STDOUT: %N.ref.loc19_51: Core.IntLiteral = name_ref N, %N.loc19_11.2 [symbolic = %N.loc19_11.1 (constants.%N)] // CHECK:STDOUT: %MyInt.loc19_52: type = class_type @MyInt, @MyInt(constants.%N) [symbolic = %MyInt.loc19_39.1 (constants.%MyInt)] +// CHECK:STDOUT: %.loc19_52.2: form = init_form %MyInt.loc19_52, call_param1 [symbolic = %.loc19_52.1 (constants.%.b3a)] // CHECK:STDOUT: %.loc19_26.1: type = splice_block %.loc19_26.3 [concrete = Core.IntLiteral] { // CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] // CHECK:STDOUT: %IntLiteral.ref: %IntLiteral.type = name_ref IntLiteral, file.%IntLiteral.decl [concrete = constants.%IntLiteral] @@ -219,7 +227,8 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: } { // CHECK:STDOUT: %Self.ref.loc5_37: %Add.type = name_ref Self, @Add.%Self [symbolic = %Self (constants.%Self)] // CHECK:STDOUT: %Self.as_type.loc5_37: type = facet_access_type %Self.ref.loc5_37 [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type)] -// CHECK:STDOUT: %.loc5_37: type = converted %Self.ref.loc5_37, %Self.as_type.loc5_37 [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type)] +// CHECK:STDOUT: %.loc5_37.2: type = converted %Self.ref.loc5_37, %Self.as_type.loc5_37 [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type)] +// CHECK:STDOUT: %.loc5_37.3: form = init_form %.loc5_37.2, call_param2 [symbolic = %.loc5_37.1 (constants.%.b66)] // CHECK:STDOUT: %self.param: @Add.Op.%Self.binding.as_type (%Self.binding.as_type) = value_param call_param0 // CHECK:STDOUT: %.loc5_15.1: type = splice_block %.loc5_15.2 [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type)] { // CHECK:STDOUT: %Self.ref.loc5_15: %Add.type = name_ref Self, @Add.%Self [symbolic = %Self (constants.%Self)] @@ -267,6 +276,7 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: %return.param_patt: @MyInt.as.Add.impl.Op.%pattern_type (%pattern_type.1a3) = out_param_pattern %return.patt, call_param2 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %Self.ref.loc16_37: type = name_ref Self, @MyInt.as.Add.impl.%MyInt.loc15_39.2 [symbolic = %MyInt (constants.%MyInt)] +// CHECK:STDOUT: %.loc16_37.2: form = init_form %Self.ref.loc16_37, call_param2 [symbolic = %.loc16_37.1 (constants.%.d91)] // CHECK:STDOUT: %self.param: @MyInt.as.Add.impl.Op.%MyInt (%MyInt) = value_param call_param0 // CHECK:STDOUT: %Self.ref.loc16_15: type = name_ref Self, @MyInt.as.Add.impl.%MyInt.loc15_39.2 [symbolic = %MyInt (constants.%MyInt)] // CHECK:STDOUT: %self: @MyInt.as.Add.impl.Op.%MyInt (%MyInt) = value_binding self, %self.param @@ -314,6 +324,7 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: %Self: %Add.type = symbolic_binding Self, 0 [symbolic = %Self (constants.%Self)] // CHECK:STDOUT: %Self.binding.as_type: type = symbolic_binding_type Self, 0, %Self [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type)] // CHECK:STDOUT: %pattern_type: type = pattern_type %Self.binding.as_type [symbolic = %pattern_type (constants.%pattern_type.f75)] +// CHECK:STDOUT: %.loc5_37.1: form = init_form %Self.binding.as_type, call_param2 [symbolic = %.loc5_37.1 (constants.%.b66)] // CHECK:STDOUT: // CHECK:STDOUT: fn(%self.param: @Add.Op.%Self.binding.as_type (%Self.binding.as_type), %other.param: @Add.Op.%Self.binding.as_type (%Self.binding.as_type)) -> @Add.Op.%Self.binding.as_type (%Self.binding.as_type); // CHECK:STDOUT: } @@ -326,6 +337,7 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: %N: Core.IntLiteral = symbolic_binding N, 0 [symbolic = %N (constants.%N)] // CHECK:STDOUT: %MyInt: type = class_type @MyInt, @MyInt(%N) [symbolic = %MyInt (constants.%MyInt)] // CHECK:STDOUT: %pattern_type: type = pattern_type %MyInt [symbolic = %pattern_type (constants.%pattern_type.1a3)] +// CHECK:STDOUT: %.loc16_37.1: form = init_form %MyInt, call_param2 [symbolic = %.loc16_37.1 (constants.%.d91)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: @@ -336,6 +348,7 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: %N.loc19_11.1: Core.IntLiteral = symbolic_binding N, 0 [symbolic = %N.loc19_11.1 (constants.%N)] // CHECK:STDOUT: %MyInt.loc19_39.1: type = class_type @MyInt, @MyInt(%N.loc19_11.1) [symbolic = %MyInt.loc19_39.1 (constants.%MyInt)] // CHECK:STDOUT: %pattern_type: type = pattern_type %MyInt.loc19_39.1 [symbolic = %pattern_type (constants.%pattern_type.1a3)] +// CHECK:STDOUT: %.loc19_52.1: form = init_form %MyInt.loc19_39.1, call_param1 [symbolic = %.loc19_52.1 (constants.%.b3a)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete: = require_complete_type %MyInt.loc19_39.1 [symbolic = %require_complete (constants.%require_complete.9fa)] @@ -369,6 +382,7 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: %Self => constants.%Self // CHECK:STDOUT: %Self.binding.as_type => constants.%Self.binding.as_type // CHECK:STDOUT: %pattern_type => constants.%pattern_type.f75 +// CHECK:STDOUT: %.loc5_37.1 => constants.%.b66 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @MyInt(constants.%N) { @@ -395,24 +409,28 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: %N => constants.%N // CHECK:STDOUT: %MyInt => constants.%MyInt // CHECK:STDOUT: %pattern_type => constants.%pattern_type.1a3 +// CHECK:STDOUT: %.loc16_37.1 => constants.%.d91 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Add.Op(constants.%Add.facet.fbb) { // CHECK:STDOUT: %Self => constants.%Add.facet.fbb // CHECK:STDOUT: %Self.binding.as_type => constants.%MyInt // CHECK:STDOUT: %pattern_type => constants.%pattern_type.1a3 +// CHECK:STDOUT: %.loc5_37.1 => constants.%.d91 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Double(constants.%N) { // CHECK:STDOUT: %N.loc19_11.1 => constants.%N // CHECK:STDOUT: %MyInt.loc19_39.1 => constants.%MyInt // CHECK:STDOUT: %pattern_type => constants.%pattern_type.1a3 +// CHECK:STDOUT: %.loc19_52.1 => constants.%.b3a // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Add.Op(constants.%Add.facet.9ab) { // CHECK:STDOUT: %Self => constants.%Add.facet.9ab // CHECK:STDOUT: %Self.binding.as_type => constants.%MyInt // CHECK:STDOUT: %pattern_type => constants.%pattern_type.1a3 +// CHECK:STDOUT: %.loc5_37.1 => constants.%.d91 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- use_generic_impl.carbon @@ -428,6 +446,7 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: %int_64: Core.IntLiteral = int_value 64 [concrete] // CHECK:STDOUT: %MyInt.f9e: type = class_type @MyInt, @MyInt(%int_64) [concrete] // CHECK:STDOUT: %pattern_type.48d: type = pattern_type %MyInt.f9e [concrete] +// CHECK:STDOUT: %.fe8: form = init_form %MyInt.f9e, call_param1 [concrete] // CHECK:STDOUT: %CallImportedDouble.type: type = fn_type @CallImportedDouble [concrete] // CHECK:STDOUT: %CallImportedDouble: %CallImportedDouble.type = struct_value () [concrete] // CHECK:STDOUT: %i64.builtin: type = int_type signed, %int_64 [concrete] @@ -435,6 +454,7 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: %Double.type: type = fn_type @Double [concrete] // CHECK:STDOUT: %Double: %Double.type = struct_value () [concrete] // CHECK:STDOUT: %pattern_type.1a3: type = pattern_type %MyInt.396 [symbolic] +// CHECK:STDOUT: %.b3a: form = init_form %MyInt.396, call_param1 [symbolic] // CHECK:STDOUT: %Add.type: type = facet_type <@Add> [concrete] // CHECK:STDOUT: %Self: %Add.type = symbolic_binding Self, 0 [symbolic] // CHECK:STDOUT: %Add.lookup_impl_witness: = lookup_impl_witness %MyInt.396, @Add [symbolic] @@ -442,9 +462,11 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: %Add.Op.type: type = fn_type @Add.Op [concrete] // CHECK:STDOUT: %Self.binding.as_type: type = symbolic_binding_type Self, 0, %Self [symbolic] // CHECK:STDOUT: %pattern_type.5af: type = pattern_type %Self.binding.as_type [symbolic] +// CHECK:STDOUT: %.789: form = init_form %Self.binding.as_type, call_param2 [symbolic] // CHECK:STDOUT: %.932: type = fn_type_with_self_type %Add.Op.type, %Add.facet.9ab [symbolic] // CHECK:STDOUT: %impl.elem0: %.932 = impl_witness_access %Add.lookup_impl_witness, element0 [symbolic] // CHECK:STDOUT: %specific_impl_fn: = specific_impl_function %impl.elem0, @Add.Op(%Add.facet.9ab) [symbolic] +// CHECK:STDOUT: %.d91: form = init_form %MyInt.396, call_param2 [symbolic] // CHECK:STDOUT: %Add.impl_witness.a35: = impl_witness imports.%Add.impl_witness_table, @MyInt.as.Add.impl(%N) [symbolic] // CHECK:STDOUT: %require_complete.9fa: = require_complete_type %MyInt.396 [symbolic] // CHECK:STDOUT: %MyInt.as.Add.impl.Op.type.ca5: type = fn_type @MyInt.as.Add.impl.Op, @MyInt.as.Add.impl(%N) [symbolic] @@ -457,6 +479,7 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: %.3de: require_specific_def_type = require_specific_def @MyInt.as.Add.impl(%int_64) [concrete] // CHECK:STDOUT: %Add.facet.1f9: %Add.type = facet_value %MyInt.f9e, (%Add.impl_witness.868) [concrete] // CHECK:STDOUT: %.368: type = fn_type_with_self_type %Add.Op.type, %Add.facet.1f9 [concrete] +// CHECK:STDOUT: %.3a0: form = init_form %MyInt.f9e, call_param2 [concrete] // CHECK:STDOUT: %MyInt.as.Add.impl.Op.specific_fn: = specific_function %MyInt.as.Add.impl.Op.ab3, @MyInt.as.Add.impl.Op(%int_64) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -502,8 +525,9 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: %MyInt.ref.loc6_40: %MyInt.type = name_ref MyInt, imports.%Main.MyInt [concrete = constants.%MyInt.generic] // CHECK:STDOUT: %int_64.loc6_46: Core.IntLiteral = int_value 64 [concrete = constants.%int_64] // CHECK:STDOUT: %MyInt.loc6_48: type = class_type @MyInt, @MyInt(constants.%int_64) [concrete = constants.%MyInt.f9e] +// CHECK:STDOUT: %.loc6_48: form = init_form %MyInt.loc6_48, call_param1 [concrete = constants.%.fe8] // CHECK:STDOUT: %n.param: %MyInt.f9e = value_param call_param0 -// CHECK:STDOUT: %.loc6: type = splice_block %MyInt.loc6_34 [concrete = constants.%MyInt.f9e] { +// CHECK:STDOUT: %.loc6_34: type = splice_block %MyInt.loc6_34 [concrete = constants.%MyInt.f9e] { // CHECK:STDOUT: %MyInt.ref.loc6_26: %MyInt.type = name_ref MyInt, imports.%Main.MyInt [concrete = constants.%MyInt.generic] // CHECK:STDOUT: %int_64.loc6_32: Core.IntLiteral = int_value 64 [concrete = constants.%int_64] // CHECK:STDOUT: %MyInt.loc6_34: type = class_type @MyInt, @MyInt(constants.%int_64) [concrete = constants.%MyInt.f9e] @@ -568,14 +592,15 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: %N: Core.IntLiteral = symbolic_binding N, 0 [symbolic = %N (constants.%N)] // CHECK:STDOUT: %MyInt: type = class_type @MyInt, @MyInt(%N) [symbolic = %MyInt (constants.%MyInt.396)] // CHECK:STDOUT: %pattern_type: type = pattern_type %MyInt [symbolic = %pattern_type (constants.%pattern_type.1a3)] +// CHECK:STDOUT: %.1: form = init_form %MyInt, call_param1 [symbolic = %.1 (constants.%.b3a)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete: = require_complete_type %MyInt [symbolic = %require_complete (constants.%require_complete.9fa)] -// CHECK:STDOUT: %.1: require_specific_def_type = require_specific_def @MyInt.as.Add.impl(%N) [symbolic = %.1 (constants.%.c60)] +// CHECK:STDOUT: %.2: require_specific_def_type = require_specific_def @MyInt.as.Add.impl(%N) [symbolic = %.2 (constants.%.c60)] // CHECK:STDOUT: %Add.lookup_impl_witness: = lookup_impl_witness %MyInt, @Add [symbolic = %Add.lookup_impl_witness (constants.%Add.lookup_impl_witness)] // CHECK:STDOUT: %Add.facet: %Add.type = facet_value %MyInt, (%Add.lookup_impl_witness) [symbolic = %Add.facet (constants.%Add.facet.9ab)] -// CHECK:STDOUT: %.2: type = fn_type_with_self_type constants.%Add.Op.type, %Add.facet [symbolic = %.2 (constants.%.932)] -// CHECK:STDOUT: %impl.elem0: @Double.%.2 (%.932) = impl_witness_access %Add.lookup_impl_witness, element0 [symbolic = %impl.elem0 (constants.%impl.elem0)] +// CHECK:STDOUT: %.3: type = fn_type_with_self_type constants.%Add.Op.type, %Add.facet [symbolic = %.3 (constants.%.932)] +// CHECK:STDOUT: %impl.elem0: @Double.%.3 (%.932) = impl_witness_access %Add.lookup_impl_witness, element0 [symbolic = %impl.elem0 (constants.%impl.elem0)] // CHECK:STDOUT: %specific_impl_fn: = specific_impl_function %impl.elem0, @Add.Op(%Add.facet) [symbolic = %specific_impl_fn (constants.%specific_impl_fn)] // CHECK:STDOUT: // CHECK:STDOUT: fn; @@ -585,6 +610,7 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: %Self: %Add.type = symbolic_binding Self, 0 [symbolic = %Self (constants.%Self)] // CHECK:STDOUT: %Self.binding.as_type: type = symbolic_binding_type Self, 0, %Self [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type)] // CHECK:STDOUT: %pattern_type: type = pattern_type %Self.binding.as_type [symbolic = %pattern_type (constants.%pattern_type.5af)] +// CHECK:STDOUT: %.1: form = init_form %Self.binding.as_type, call_param2 [symbolic = %.1 (constants.%.789)] // CHECK:STDOUT: // CHECK:STDOUT: fn; // CHECK:STDOUT: } @@ -593,6 +619,7 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: %N: Core.IntLiteral = symbolic_binding N, 0 [symbolic = %N (constants.%N)] // CHECK:STDOUT: %MyInt: type = class_type @MyInt, @MyInt(%N) [symbolic = %MyInt (constants.%MyInt.396)] // CHECK:STDOUT: %pattern_type: type = pattern_type %MyInt [symbolic = %pattern_type (constants.%pattern_type.1a3)] +// CHECK:STDOUT: %.1: form = init_form %MyInt, call_param2 [symbolic = %.1 (constants.%.d91)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: @@ -621,12 +648,14 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: %Self => constants.%Self // CHECK:STDOUT: %Self.binding.as_type => constants.%Self.binding.as_type // CHECK:STDOUT: %pattern_type => constants.%pattern_type.5af +// CHECK:STDOUT: %.1 => constants.%.789 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Add.Op(constants.%Add.facet.9ab) { // CHECK:STDOUT: %Self => constants.%Add.facet.9ab // CHECK:STDOUT: %Self.binding.as_type => constants.%MyInt.396 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.1a3 +// CHECK:STDOUT: %.1 => constants.%.d91 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @MyInt.as.Add.impl(constants.%N) { @@ -644,25 +673,28 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: %N => constants.%N // CHECK:STDOUT: %MyInt => constants.%MyInt.396 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.1a3 +// CHECK:STDOUT: %.1 => constants.%.d91 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Double(constants.%N) { // CHECK:STDOUT: %N => constants.%N // CHECK:STDOUT: %MyInt => constants.%MyInt.396 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.1a3 +// CHECK:STDOUT: %.1 => constants.%.b3a // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Double(constants.%int_64) { // CHECK:STDOUT: %N => constants.%int_64 // CHECK:STDOUT: %MyInt => constants.%MyInt.f9e // CHECK:STDOUT: %pattern_type => constants.%pattern_type.48d +// CHECK:STDOUT: %.1 => constants.%.fe8 // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete => constants.%complete_type.4a1 -// CHECK:STDOUT: %.1 => constants.%.3de +// CHECK:STDOUT: %.2 => constants.%.3de // CHECK:STDOUT: %Add.lookup_impl_witness => constants.%Add.impl_witness.868 // CHECK:STDOUT: %Add.facet => constants.%Add.facet.1f9 -// CHECK:STDOUT: %.2 => constants.%.368 +// CHECK:STDOUT: %.3 => constants.%.368 // CHECK:STDOUT: %impl.elem0 => constants.%MyInt.as.Add.impl.Op.ab3 // CHECK:STDOUT: %specific_impl_fn => constants.%MyInt.as.Add.impl.Op.specific_fn // CHECK:STDOUT: } @@ -682,12 +714,14 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: %Self => constants.%Add.facet.1f9 // CHECK:STDOUT: %Self.binding.as_type => constants.%MyInt.f9e // CHECK:STDOUT: %pattern_type => constants.%pattern_type.48d +// CHECK:STDOUT: %.1 => constants.%.3a0 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @MyInt.as.Add.impl.Op(constants.%int_64) { // CHECK:STDOUT: %N => constants.%int_64 // CHECK:STDOUT: %MyInt => constants.%MyInt.f9e // CHECK:STDOUT: %pattern_type => constants.%pattern_type.48d +// CHECK:STDOUT: %.1 => constants.%.3a0 // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: } @@ -695,17 +729,21 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: --- convert_symbolic.carbon // CHECK:STDOUT: // CHECK:STDOUT: constants { +// CHECK:STDOUT: %.d96: form = init_form type, call_param0 [concrete] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %IntLiteral.type: type = fn_type @IntLiteral [concrete] // CHECK:STDOUT: %IntLiteral: %IntLiteral.type = struct_value () [concrete] // CHECK:STDOUT: %pattern_type.dc0: type = pattern_type Core.IntLiteral [concrete] +// CHECK:STDOUT: %.39d: form = init_form type, call_param1 [concrete] // CHECK:STDOUT: %Int.type: type = fn_type @Int [concrete] // CHECK:STDOUT: %Int: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] // CHECK:STDOUT: %i32.builtin: type = int_type signed, %int_32 [concrete] // CHECK:STDOUT: %pattern_type.956: type = pattern_type %i32.builtin [concrete] +// CHECK:STDOUT: %.026: form = init_form Core.IntLiteral, call_param1 [concrete] // CHECK:STDOUT: %ToLiteral.type: type = fn_type @ToLiteral [concrete] // CHECK:STDOUT: %ToLiteral: %ToLiteral.type = struct_value () [concrete] +// CHECK:STDOUT: %.8b6: form = init_form %i32.builtin, call_param1 [concrete] // CHECK:STDOUT: %FromLiteral.type: type = fn_type @FromLiteral [concrete] // CHECK:STDOUT: %FromLiteral: %FromLiteral.type = struct_value () [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] @@ -713,6 +751,7 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: %N.7e8: %i32.builtin = symbolic_binding N, 0 [symbolic] // CHECK:STDOUT: %ToLiteral.call: init Core.IntLiteral = call %ToLiteral(%N.7e8) [symbolic] // CHECK:STDOUT: %iN.builtin.b5d: type = int_type signed, %ToLiteral.call [symbolic] +// CHECK:STDOUT: %.684: form = init_form %iN.builtin.b5d, call_param0 [symbolic] // CHECK:STDOUT: %pattern_type.073: type = pattern_type %iN.builtin.b5d [symbolic] // CHECK:STDOUT: %Make.type: type = fn_type @Make [concrete] // CHECK:STDOUT: %Make: %Make.type = struct_value () [concrete] @@ -727,6 +766,7 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: %OtherInt.ToLiteral.bound: = bound_method %N.0f7, %OtherInt.ToLiteral [symbolic] // CHECK:STDOUT: %OtherInt.ToLiteral.call: init Core.IntLiteral = call %OtherInt.ToLiteral.bound(%N.0f7) [symbolic] // CHECK:STDOUT: %iN.builtin.63a: type = int_type signed, %OtherInt.ToLiteral.call [symbolic] +// CHECK:STDOUT: %.ea7: form = init_form %iN.builtin.63a, call_param0 [symbolic] // CHECK:STDOUT: %pattern_type.bd7: type = pattern_type %iN.builtin.63a [symbolic] // CHECK:STDOUT: %MakeFromClass.type: type = fn_type @MakeFromClass [concrete] // CHECK:STDOUT: %MakeFromClass: %MakeFromClass.type = struct_value () [concrete] @@ -748,6 +788,7 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: %return.patt: %pattern_type.98f = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.98f = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { +// CHECK:STDOUT: %.loc4: form = init_form type, call_param0 [concrete = constants.%.d96] // CHECK:STDOUT: %return.param: ref type = out_param call_param0 // CHECK:STDOUT: %return: ref type = return_slot %return.param // CHECK:STDOUT: } @@ -757,6 +798,7 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: %return.patt: %pattern_type.98f = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.98f = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { +// CHECK:STDOUT: %.loc5_28: form = init_form type, call_param1 [concrete = constants.%.39d] // CHECK:STDOUT: %n.param: Core.IntLiteral = value_param call_param0 // CHECK:STDOUT: %.loc5_22.1: type = splice_block %.loc5_22.3 [concrete = Core.IntLiteral] { // CHECK:STDOUT: %IntLiteral.ref: %IntLiteral.type = name_ref IntLiteral, file.%IntLiteral.decl [concrete = constants.%IntLiteral] @@ -778,6 +820,7 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: %IntLiteral.call: init type = call %IntLiteral.ref() [concrete = Core.IntLiteral] // CHECK:STDOUT: %.loc6_40.1: type = value_of_initializer %IntLiteral.call [concrete = Core.IntLiteral] // CHECK:STDOUT: %.loc6_40.2: type = converted %IntLiteral.call, %.loc6_40.1 [concrete = Core.IntLiteral] +// CHECK:STDOUT: %.loc6_40.3: form = init_form %.loc6_40.2, call_param1 [concrete = constants.%.026] // CHECK:STDOUT: %n.param: %i32.builtin = value_param call_param0 // CHECK:STDOUT: %.loc6_23.1: type = splice_block %.loc6_23.3 [concrete = constants.%i32.builtin] { // CHECK:STDOUT: %Int.ref: %Int.type = name_ref Int, file.%Int.decl [concrete = constants.%Int] @@ -801,6 +844,7 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: %Int.call: init type = call %Int.ref(%int_32) [concrete = constants.%i32.builtin] // CHECK:STDOUT: %.loc7_42.1: type = value_of_initializer %Int.call [concrete = constants.%i32.builtin] // CHECK:STDOUT: %.loc7_42.2: type = converted %Int.call, %.loc7_42.1 [concrete = constants.%i32.builtin] +// CHECK:STDOUT: %.loc7_42.3: form = init_form %.loc7_42.2, call_param1 [concrete = constants.%.8b6] // CHECK:STDOUT: %n.param: Core.IntLiteral = value_param call_param0 // CHECK:STDOUT: %.loc7_30.1: type = splice_block %.loc7_30.3 [concrete = Core.IntLiteral] { // CHECK:STDOUT: %IntLiteral.ref: %IntLiteral.type = name_ref IntLiteral, file.%IntLiteral.decl [concrete = constants.%IntLiteral] @@ -824,8 +868,9 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: %.loc9_40.1: Core.IntLiteral = value_of_initializer %ToLiteral.call.loc9_40.2 [symbolic = %ToLiteral.call.loc9_40.1 (constants.%ToLiteral.call)] // CHECK:STDOUT: %.loc9_40.2: Core.IntLiteral = converted %ToLiteral.call.loc9_40.2, %.loc9_40.1 [symbolic = %ToLiteral.call.loc9_40.1 (constants.%ToLiteral.call)] // CHECK:STDOUT: %Int.call.loc9_41: init type = call %Int.ref.loc9_25(%.loc9_40.2) [symbolic = %iN.builtin (constants.%iN.builtin.b5d)] -// CHECK:STDOUT: %.loc9_41.1: type = value_of_initializer %Int.call.loc9_41 [symbolic = %iN.builtin (constants.%iN.builtin.b5d)] -// CHECK:STDOUT: %.loc9_41.2: type = converted %Int.call.loc9_41, %.loc9_41.1 [symbolic = %iN.builtin (constants.%iN.builtin.b5d)] +// CHECK:STDOUT: %.loc9_41.2: type = value_of_initializer %Int.call.loc9_41 [symbolic = %iN.builtin (constants.%iN.builtin.b5d)] +// CHECK:STDOUT: %.loc9_41.3: type = converted %Int.call.loc9_41, %.loc9_41.2 [symbolic = %iN.builtin (constants.%iN.builtin.b5d)] +// CHECK:STDOUT: %.loc9_41.4: form = init_form %.loc9_41.3, call_param0 [symbolic = %.loc9_41.1 (constants.%.684)] // CHECK:STDOUT: %.loc9_19.1: type = splice_block %.loc9_19.3 [concrete = constants.%i32.builtin] { // CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] // CHECK:STDOUT: %Int.ref.loc9_13: %Int.type = name_ref Int, file.%Int.decl [concrete = constants.%Int] @@ -849,6 +894,7 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: %IntLiteral.call.loc16: init type = call %IntLiteral.ref.loc16() [concrete = Core.IntLiteral] // CHECK:STDOUT: %.loc16_51.1: type = value_of_initializer %IntLiteral.call.loc16 [concrete = Core.IntLiteral] // CHECK:STDOUT: %.loc16_51.2: type = converted %IntLiteral.call.loc16, %.loc16_51.1 [concrete = Core.IntLiteral] +// CHECK:STDOUT: %.loc16_51.3: form = init_form %.loc16_51.2, call_param1 [concrete = constants.%.026] // CHECK:STDOUT: %self.param.loc16: %OtherInt = value_param call_param0 // CHECK:STDOUT: %Self.ref.loc16: type = name_ref Self, constants.%OtherInt [concrete = constants.%OtherInt] // CHECK:STDOUT: %self.loc16: %OtherInt = value_binding self, %self.param.loc16 @@ -868,8 +914,9 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: %.loc18_51.1: Core.IntLiteral = value_of_initializer %OtherInt.ToLiteral.call.loc18_51.2 [symbolic = %OtherInt.ToLiteral.call.loc18_51.1 (constants.%OtherInt.ToLiteral.call)] // CHECK:STDOUT: %.loc18_51.2: Core.IntLiteral = converted %OtherInt.ToLiteral.call.loc18_51.2, %.loc18_51.1 [symbolic = %OtherInt.ToLiteral.call.loc18_51.1 (constants.%OtherInt.ToLiteral.call)] // CHECK:STDOUT: %Int.call: init type = call %Int.ref(%.loc18_51.2) [symbolic = %iN.builtin (constants.%iN.builtin.63a)] -// CHECK:STDOUT: %.loc18_52.1: type = value_of_initializer %Int.call [symbolic = %iN.builtin (constants.%iN.builtin.63a)] -// CHECK:STDOUT: %.loc18_52.2: type = converted %Int.call, %.loc18_52.1 [symbolic = %iN.builtin (constants.%iN.builtin.63a)] +// CHECK:STDOUT: %.loc18_52.2: type = value_of_initializer %Int.call [symbolic = %iN.builtin (constants.%iN.builtin.63a)] +// CHECK:STDOUT: %.loc18_52.3: type = converted %Int.call, %.loc18_52.2 [symbolic = %iN.builtin (constants.%iN.builtin.63a)] +// CHECK:STDOUT: %.loc18_52.4: form = init_form %.loc18_52.3, call_param0 [symbolic = %.loc18_52.1 (constants.%.ea7)] // CHECK:STDOUT: %.loc18_22: type = splice_block %OtherInt.ref [concrete = constants.%OtherInt] { // CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] // CHECK:STDOUT: %OtherInt.ref: type = name_ref OtherInt, file.%OtherInt.decl [concrete = constants.%OtherInt] @@ -897,6 +944,7 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: %IntLiteral.call.loc13: init type = call %IntLiteral.ref.loc13() [concrete = Core.IntLiteral] // CHECK:STDOUT: %.loc13_44.1: type = value_of_initializer %IntLiteral.call.loc13 [concrete = Core.IntLiteral] // CHECK:STDOUT: %.loc13_44.2: type = converted %IntLiteral.call.loc13, %.loc13_44.1 [concrete = Core.IntLiteral] +// CHECK:STDOUT: %.loc13_44.3: form = init_form %.loc13_44.2, call_param1 [concrete = constants.%.026] // CHECK:STDOUT: %self.param.loc13: %OtherInt = value_param call_param0 // CHECK:STDOUT: %Self.ref.loc13: type = name_ref Self, constants.%OtherInt [concrete = constants.%OtherInt] // CHECK:STDOUT: %self.loc13: %OtherInt = value_binding self, %self.param.loc13 @@ -925,6 +973,7 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: %N.loc9_9.1: %i32.builtin = symbolic_binding N, 0 [symbolic = %N.loc9_9.1 (constants.%N.7e8)] // CHECK:STDOUT: %ToLiteral.call.loc9_40.1: init Core.IntLiteral = call constants.%ToLiteral(%N.loc9_9.1) [symbolic = %ToLiteral.call.loc9_40.1 (constants.%ToLiteral.call)] // CHECK:STDOUT: %iN.builtin: type = int_type signed, %ToLiteral.call.loc9_40.1 [symbolic = %iN.builtin (constants.%iN.builtin.b5d)] +// CHECK:STDOUT: %.loc9_41.1: form = init_form %iN.builtin, call_param0 [symbolic = %.loc9_41.1 (constants.%.684)] // CHECK:STDOUT: %pattern_type: type = pattern_type %iN.builtin [symbolic = %pattern_type (constants.%pattern_type.073)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -948,6 +997,7 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: %OtherInt.ToLiteral.bound.loc18_40.1: = bound_method %N.loc18_18.1, constants.%OtherInt.ToLiteral [symbolic = %OtherInt.ToLiteral.bound.loc18_40.1 (constants.%OtherInt.ToLiteral.bound)] // CHECK:STDOUT: %OtherInt.ToLiteral.call.loc18_51.1: init Core.IntLiteral = call %OtherInt.ToLiteral.bound.loc18_40.1(%N.loc18_18.1) [symbolic = %OtherInt.ToLiteral.call.loc18_51.1 (constants.%OtherInt.ToLiteral.call)] // CHECK:STDOUT: %iN.builtin: type = int_type signed, %OtherInt.ToLiteral.call.loc18_51.1 [symbolic = %iN.builtin (constants.%iN.builtin.63a)] +// CHECK:STDOUT: %.loc18_52.1: form = init_form %iN.builtin, call_param0 [symbolic = %.loc18_52.1 (constants.%.ea7)] // CHECK:STDOUT: %pattern_type: type = pattern_type %iN.builtin [symbolic = %pattern_type (constants.%pattern_type.bd7)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -968,6 +1018,7 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: %N.loc9_9.1 => constants.%N.7e8 // CHECK:STDOUT: %ToLiteral.call.loc9_40.1 => constants.%ToLiteral.call // CHECK:STDOUT: %iN.builtin => constants.%iN.builtin.b5d +// CHECK:STDOUT: %.loc9_41.1 => constants.%.684 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.073 // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -980,6 +1031,7 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: %OtherInt.ToLiteral.bound.loc18_40.1 => constants.%OtherInt.ToLiteral.bound // CHECK:STDOUT: %OtherInt.ToLiteral.call.loc18_51.1 => constants.%OtherInt.ToLiteral.call // CHECK:STDOUT: %iN.builtin => constants.%iN.builtin.63a +// CHECK:STDOUT: %.loc18_52.1 => constants.%.ea7 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.bd7 // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -1005,11 +1057,13 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: %ToLiteral.call: init Core.IntLiteral = call %ToLiteral(%N.7e8) [symbolic] // CHECK:STDOUT: %iN.builtin.b5d: type = int_type signed, %ToLiteral.call [symbolic] // CHECK:STDOUT: %pattern_type.073: type = pattern_type %iN.builtin.b5d [symbolic] +// CHECK:STDOUT: %.684: form = init_form %iN.builtin.b5d, call_param0 [symbolic] // CHECK:STDOUT: %Make.specific_fn.9b6: = specific_function %Make, @Make(%N.7e8) [symbolic] // CHECK:STDOUT: %require_complete.8ad: = require_complete_type %iN.builtin.b5d [symbolic] // CHECK:STDOUT: %FromLiteral.type: type = fn_type @FromLiteral [concrete] // CHECK:STDOUT: %FromLiteral: %FromLiteral.type = struct_value () [concrete] // CHECK:STDOUT: %int_64.f82: %i32.builtin = int_value 64 [concrete] +// CHECK:STDOUT: %.bf3: form = init_form %i64.builtin, call_param0 [concrete] // CHECK:STDOUT: %Make.specific_fn.ff0: = specific_function %Make, @Make(%int_64.f82) [concrete] // CHECK:STDOUT: %MakeFromClass.type: type = fn_type @MakeFromClass [concrete] // CHECK:STDOUT: %MakeFromClass: %MakeFromClass.type = struct_value () [concrete] @@ -1022,6 +1076,7 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: %OtherInt.ToLiteral.call: init Core.IntLiteral = call %OtherInt.ToLiteral.bound.58f(%N.0f7) [symbolic] // CHECK:STDOUT: %iN.builtin.63a: type = int_type signed, %OtherInt.ToLiteral.call [symbolic] // CHECK:STDOUT: %pattern_type.bd7: type = pattern_type %iN.builtin.63a [symbolic] +// CHECK:STDOUT: %.ea7: form = init_form %iN.builtin.63a, call_param0 [symbolic] // CHECK:STDOUT: %MakeFromClass.specific_fn.ce0: = specific_function %MakeFromClass, @MakeFromClass(%N.0f7) [symbolic] // CHECK:STDOUT: %require_complete.a44: = require_complete_type %iN.builtin.63a [symbolic] // CHECK:STDOUT: %int_64.424: %OtherInt = int_value 64 [concrete] @@ -1100,6 +1155,7 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: %N: %i32.builtin = symbolic_binding N, 0 [symbolic = %N (constants.%N.7e8)] // CHECK:STDOUT: %ToLiteral.call: init Core.IntLiteral = call constants.%ToLiteral(%N) [symbolic = %ToLiteral.call (constants.%ToLiteral.call)] // CHECK:STDOUT: %iN.builtin: type = int_type signed, %ToLiteral.call [symbolic = %iN.builtin (constants.%iN.builtin.b5d)] +// CHECK:STDOUT: %.1: form = init_form %iN.builtin, call_param0 [symbolic = %.1 (constants.%.684)] // CHECK:STDOUT: %pattern_type: type = pattern_type %iN.builtin [symbolic = %pattern_type (constants.%pattern_type.073)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -1118,6 +1174,7 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: %OtherInt.ToLiteral.bound: = bound_method %N, constants.%OtherInt.ToLiteral [symbolic = %OtherInt.ToLiteral.bound (constants.%OtherInt.ToLiteral.bound.58f)] // CHECK:STDOUT: %OtherInt.ToLiteral.call: init Core.IntLiteral = call %OtherInt.ToLiteral.bound(%N) [symbolic = %OtherInt.ToLiteral.call (constants.%OtherInt.ToLiteral.call)] // CHECK:STDOUT: %iN.builtin: type = int_type signed, %OtherInt.ToLiteral.call [symbolic = %iN.builtin (constants.%iN.builtin.63a)] +// CHECK:STDOUT: %.1: form = init_form %iN.builtin, call_param0 [symbolic = %.1 (constants.%.ea7)] // CHECK:STDOUT: %pattern_type: type = pattern_type %iN.builtin [symbolic = %pattern_type (constants.%pattern_type.bd7)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -1159,6 +1216,7 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: %N => constants.%N.7e8 // CHECK:STDOUT: %ToLiteral.call => constants.%ToLiteral.call // CHECK:STDOUT: %iN.builtin => constants.%iN.builtin.b5d +// CHECK:STDOUT: %.1 => constants.%.684 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.073 // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -1170,6 +1228,7 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: %N => constants.%int_64.f82 // CHECK:STDOUT: %ToLiteral.call => constants.%int_64.fab // CHECK:STDOUT: %iN.builtin => constants.%i64.builtin +// CHECK:STDOUT: %.1 => constants.%.bf3 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.e13 // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -1182,6 +1241,7 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: %OtherInt.ToLiteral.bound => constants.%OtherInt.ToLiteral.bound.58f // CHECK:STDOUT: %OtherInt.ToLiteral.call => constants.%OtherInt.ToLiteral.call // CHECK:STDOUT: %iN.builtin => constants.%iN.builtin.63a +// CHECK:STDOUT: %.1 => constants.%.ea7 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.bd7 // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -1194,6 +1254,7 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: %OtherInt.ToLiteral.bound => constants.%OtherInt.ToLiteral.bound.67b // CHECK:STDOUT: %OtherInt.ToLiteral.call => constants.%int_64.fab // CHECK:STDOUT: %iN.builtin => constants.%i64.builtin +// CHECK:STDOUT: %.1 => constants.%.bf3 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.e13 // CHECK:STDOUT: // CHECK:STDOUT: !definition: diff --git a/toolchain/check/testdata/impl/import_self.carbon b/toolchain/check/testdata/impl/import_self.carbon index ecbc0b66e5fa..b0e25481b2cc 100644 --- a/toolchain/check/testdata/impl/import_self.carbon +++ b/toolchain/check/testdata/impl/import_self.carbon @@ -43,6 +43,7 @@ fn F(x: C, y: C) -> C { // CHECK:STDOUT: %Self: %Add.type = symbolic_binding Self, 0 [symbolic] // CHECK:STDOUT: %Self.binding.as_type: type = symbolic_binding_type Self, 0, %Self [symbolic] // CHECK:STDOUT: %pattern_type: type = pattern_type %Self.binding.as_type [symbolic] +// CHECK:STDOUT: %.b66: form = init_form %Self.binding.as_type, call_param2 [symbolic] // CHECK:STDOUT: %Add.Op.type: type = fn_type @Add.Op [concrete] // CHECK:STDOUT: %Add.Op: %Add.Op.type = struct_value () [concrete] // CHECK:STDOUT: %Add.assoc_type: type = assoc_entity_type @Add [concrete] @@ -77,7 +78,8 @@ fn F(x: C, y: C) -> C { // CHECK:STDOUT: } { // CHECK:STDOUT: %Self.ref.loc5_37: %Add.type = name_ref Self, @Add.%Self [symbolic = %Self (constants.%Self)] // CHECK:STDOUT: %Self.as_type.loc5_37: type = facet_access_type %Self.ref.loc5_37 [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type)] -// CHECK:STDOUT: %.loc5_37: type = converted %Self.ref.loc5_37, %Self.as_type.loc5_37 [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type)] +// CHECK:STDOUT: %.loc5_37.2: type = converted %Self.ref.loc5_37, %Self.as_type.loc5_37 [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type)] +// CHECK:STDOUT: %.loc5_37.3: form = init_form %.loc5_37.2, call_param2 [symbolic = %.loc5_37.1 (constants.%.b66)] // CHECK:STDOUT: %self.param: @Add.Op.%Self.binding.as_type (%Self.binding.as_type) = value_param call_param0 // CHECK:STDOUT: %.loc5_15.1: type = splice_block %.loc5_15.2 [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type)] { // CHECK:STDOUT: %Self.ref.loc5_15: %Add.type = name_ref Self, @Add.%Self [symbolic = %Self (constants.%Self)] @@ -109,6 +111,7 @@ fn F(x: C, y: C) -> C { // CHECK:STDOUT: %Self: %Add.type = symbolic_binding Self, 0 [symbolic = %Self (constants.%Self)] // CHECK:STDOUT: %Self.binding.as_type: type = symbolic_binding_type Self, 0, %Self [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type)] // CHECK:STDOUT: %pattern_type: type = pattern_type %Self.binding.as_type [symbolic = %pattern_type (constants.%pattern_type)] +// CHECK:STDOUT: %.loc5_37.1: form = init_form %Self.binding.as_type, call_param2 [symbolic = %.loc5_37.1 (constants.%.b66)] // CHECK:STDOUT: // CHECK:STDOUT: fn(%self.param: @Add.Op.%Self.binding.as_type (%Self.binding.as_type), %other.param: @Add.Op.%Self.binding.as_type (%Self.binding.as_type)) -> @Add.Op.%Self.binding.as_type (%Self.binding.as_type); // CHECK:STDOUT: } @@ -117,6 +120,7 @@ fn F(x: C, y: C) -> C { // CHECK:STDOUT: %Self => constants.%Self // CHECK:STDOUT: %Self.binding.as_type => constants.%Self.binding.as_type // CHECK:STDOUT: %pattern_type => constants.%pattern_type +// CHECK:STDOUT: %.loc5_37.1 => constants.%.b66 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- b.carbon @@ -133,7 +137,9 @@ fn F(x: C, y: C) -> C { // CHECK:STDOUT: %Add.Op: %Add.Op.type = struct_value () [concrete] // CHECK:STDOUT: %Self.binding.as_type: type = symbolic_binding_type Self, 0, %Self [symbolic] // CHECK:STDOUT: %pattern_type.5af: type = pattern_type %Self.binding.as_type [symbolic] +// CHECK:STDOUT: %.789: form = init_form %Self.binding.as_type, call_param2 [symbolic] // CHECK:STDOUT: %pattern_type.7c7: type = pattern_type %C [concrete] +// CHECK:STDOUT: %.355: form = init_form %C, call_param2 [concrete] // CHECK:STDOUT: %C.as.Add.impl.Op.type: type = fn_type @C.as.Add.impl.Op [concrete] // CHECK:STDOUT: %C.as.Add.impl.Op: %C.as.Add.impl.Op.type = struct_value () [concrete] // CHECK:STDOUT: %Add.facet: %Add.type = facet_value %C, (%Add.impl_witness) [concrete] @@ -181,6 +187,7 @@ fn F(x: C, y: C) -> C { // CHECK:STDOUT: %return.param_patt: %pattern_type.7c7 = out_param_pattern %return.patt, call_param2 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc12_21: type = name_ref C, file.%C.decl [concrete = constants.%C] +// CHECK:STDOUT: %.loc12: form = init_form %C.ref.loc12_21, call_param2 [concrete = constants.%.355] // CHECK:STDOUT: %x.param: %C = value_param call_param0 // CHECK:STDOUT: %C.ref.loc12_9: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %x: %C = value_binding x, %x.param @@ -211,6 +218,7 @@ fn F(x: C, y: C) -> C { // CHECK:STDOUT: %return.param_patt: %pattern_type.7c7 = out_param_pattern %return.patt, call_param2 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %Self.ref.loc9_37: type = name_ref Self, @C.as.Add.impl.%C.ref [concrete = constants.%C] +// CHECK:STDOUT: %.loc9_37: form = init_form %Self.ref.loc9_37, call_param2 [concrete = constants.%.355] // CHECK:STDOUT: %self.param: %C = value_param call_param0 // CHECK:STDOUT: %Self.ref.loc9_15: type = name_ref Self, @C.as.Add.impl.%C.ref [concrete = constants.%C] // CHECK:STDOUT: %self: %C = value_binding self, %self.param @@ -244,6 +252,7 @@ fn F(x: C, y: C) -> C { // CHECK:STDOUT: %Self: %Add.type = symbolic_binding Self, 0 [symbolic = %Self (constants.%Self)] // CHECK:STDOUT: %Self.binding.as_type: type = symbolic_binding_type Self, 0, %Self [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type)] // CHECK:STDOUT: %pattern_type: type = pattern_type %Self.binding.as_type [symbolic = %pattern_type (constants.%pattern_type.5af)] +// CHECK:STDOUT: %.1: form = init_form %Self.binding.as_type, call_param2 [symbolic = %.1 (constants.%.789)] // CHECK:STDOUT: // CHECK:STDOUT: fn; // CHECK:STDOUT: } @@ -279,11 +288,13 @@ fn F(x: C, y: C) -> C { // CHECK:STDOUT: %Self => constants.%Self // CHECK:STDOUT: %Self.binding.as_type => constants.%Self.binding.as_type // CHECK:STDOUT: %pattern_type => constants.%pattern_type.5af +// CHECK:STDOUT: %.1 => constants.%.789 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Add.Op(constants.%Add.facet) { // CHECK:STDOUT: %Self => constants.%Add.facet // CHECK:STDOUT: %Self.binding.as_type => constants.%C // CHECK:STDOUT: %pattern_type => constants.%pattern_type.7c7 +// CHECK:STDOUT: %.1 => constants.%.355 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/import_use_generic.carbon b/toolchain/check/testdata/impl/import_use_generic.carbon index 8b453b162646..368734e15248 100644 --- a/toolchain/check/testdata/impl/import_use_generic.carbon +++ b/toolchain/check/testdata/impl/import_use_generic.carbon @@ -257,21 +257,13 @@ fn H() -> C({}).(I.F)() {} // CHECK:STDOUT: %C: type = class_type @C, @C(constants.%empty_struct_type) [concrete = constants.%C.850] // CHECK:STDOUT: } // CHECK:STDOUT: %c: ref %C.850 = ref_binding 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: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] {} { // CHECK:STDOUT: %c.ref: ref %C.850 = 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.ce7 [concrete = constants.%assoc0] // CHECK:STDOUT: %.loc16: %I.type = converted %c.ref, [concrete = ] -// CHECK:STDOUT: %return.param: ref = out_param call_param0 -// CHECK:STDOUT: %return: ref = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %H.decl: %H.type = fn_decl @H [concrete = constants.%H] { -// 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: %H.decl: %H.type = fn_decl @H [concrete = constants.%H] {} { // CHECK:STDOUT: %C.ref: %C.type = name_ref C, imports.%Main.C [concrete = constants.%C.generic] // CHECK:STDOUT: %.loc25_14: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc25_15: type = converted %.loc25_14, constants.%empty_struct_type [concrete = constants.%empty_struct_type] @@ -284,8 +276,6 @@ fn H() -> C({}).(I.F)() {} // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @C.as.I.impl.F(constants.%empty_struct_type) [concrete = constants.%C.as.I.impl.F.specific_fn] // CHECK:STDOUT: %C.as.I.impl.F.call: init %empty_tuple.type = call %specific_fn() // CHECK:STDOUT: %.loc25_23: type = converted %C.as.I.impl.F.call, [concrete = ] -// CHECK:STDOUT: %return.param: ref = out_param call_param0 -// CHECK:STDOUT: %return: ref = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -330,7 +320,7 @@ fn H() -> C({}).(I.F)() {} // CHECK:STDOUT: fn; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @G() -> { +// CHECK:STDOUT: fn @G() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -340,7 +330,7 @@ fn H() -> C({}).(I.F)() {} // CHECK:STDOUT: fn; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @H() -> { +// CHECK:STDOUT: fn @H() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/incomplete.carbon b/toolchain/check/testdata/impl/incomplete.carbon index 9de9b7de6daf..5e357517b12c 100644 --- a/toolchain/check/testdata/impl/incomplete.carbon +++ b/toolchain/check/testdata/impl/incomplete.carbon @@ -669,15 +669,10 @@ interface B { // CHECK:STDOUT: interface @Incomplete; // CHECK:STDOUT: // CHECK:STDOUT: impl @C.as.I.impl: %C.ref as %.loc8_13 { -// CHECK:STDOUT: %C.as.I.impl.F.decl: %C.as.I.impl.F.type = fn_decl @C.as.I.impl.F [concrete = constants.%C.as.I.impl.F] { -// 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.as.I.impl.F.decl: %C.as.I.impl.F.type = fn_decl @C.as.I.impl.F [concrete = constants.%C.as.I.impl.F] {} { // CHECK:STDOUT: %Self.ref: type = name_ref Self, @C.as.I.impl.%C.ref [concrete = constants.%C] // CHECK:STDOUT: %Incomplete.ref: type = name_ref Incomplete, file.%Incomplete.decl [concrete = constants.%Incomplete.type] // CHECK:STDOUT: %T.ref: = name_ref T, [concrete = ] -// CHECK:STDOUT: %return.param: ref = out_param call_param0 -// CHECK:STDOUT: %return: ref = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (), @C.as.I.impl [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness %I.impl_witness_table [concrete = constants.%I.impl_witness] @@ -696,7 +691,7 @@ interface B { // CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @C.as.I.impl.F() -> ; +// CHECK:STDOUT: fn @C.as.I.impl.F(); // CHECK:STDOUT: // CHECK:STDOUT: --- fail_unidentified_constraint.carbon // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/interface_args.carbon b/toolchain/check/testdata/impl/interface_args.carbon index 0a3df9897ac7..e3ead00b316b 100644 --- a/toolchain/check/testdata/impl/interface_args.carbon +++ b/toolchain/check/testdata/impl/interface_args.carbon @@ -120,6 +120,7 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: %Self: %ImplicitAs.type.9fe = symbolic_binding Self, 1 [symbolic] // CHECK:STDOUT: %Self.binding.as_type: type = symbolic_binding_type Self, 1, %Self [symbolic] // CHECK:STDOUT: %pattern_type.8de: type = pattern_type %Self.binding.as_type [symbolic] +// CHECK:STDOUT: %.e5f: form = init_form %Dest, call_param1 [symbolic] // CHECK:STDOUT: %pattern_type.51d: type = pattern_type %Dest [symbolic] // CHECK:STDOUT: %ImplicitAs.Convert.type: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%Dest) [symbolic] // CHECK:STDOUT: %ImplicitAs.Convert: %ImplicitAs.Convert.type = struct_value () [symbolic] @@ -159,6 +160,7 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: %return.param_patt: @ImplicitAs.Convert.%pattern_type.loc4_28 (%pattern_type.51d) = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %Dest.ref: type = name_ref Dest, @ImplicitAs.%Dest.loc3_22.2 [symbolic = %Dest (constants.%Dest)] +// CHECK:STDOUT: %.loc4_31.2: form = init_form %Dest.ref, call_param1 [symbolic = %.loc4_31.1 (constants.%.e5f)] // CHECK:STDOUT: %self.param: @ImplicitAs.Convert.%Self.binding.as_type (%Self.binding.as_type) = value_param call_param0 // CHECK:STDOUT: %.loc4_20.1: type = splice_block %.loc4_20.3 [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type)] { // CHECK:STDOUT: %.loc4_20.2: @ImplicitAs.Convert.%ImplicitAs.type (%ImplicitAs.type.9fe) = specific_constant @ImplicitAs.%Self.loc3_35.1, @ImplicitAs(constants.%Dest) [symbolic = %Self (constants.%Self)] @@ -188,6 +190,7 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: %Self: @ImplicitAs.Convert.%ImplicitAs.type (%ImplicitAs.type.9fe) = symbolic_binding Self, 1 [symbolic = %Self (constants.%Self)] // CHECK:STDOUT: %Self.binding.as_type: type = symbolic_binding_type Self, 1, %Self [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type)] // CHECK:STDOUT: %pattern_type.loc4_14: type = pattern_type %Self.binding.as_type [symbolic = %pattern_type.loc4_14 (constants.%pattern_type.8de)] +// CHECK:STDOUT: %.loc4_31.1: form = init_form %Dest, call_param1 [symbolic = %.loc4_31.1 (constants.%.e5f)] // CHECK:STDOUT: %pattern_type.loc4_28: type = pattern_type %Dest [symbolic = %pattern_type.loc4_28 (constants.%pattern_type.51d)] // CHECK:STDOUT: // CHECK:STDOUT: fn(%self.param: @ImplicitAs.Convert.%Self.binding.as_type (%Self.binding.as_type)) -> @ImplicitAs.Convert.%Dest (%Dest); @@ -203,6 +206,7 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: %Self => constants.%Self // CHECK:STDOUT: %Self.binding.as_type => constants.%Self.binding.as_type // CHECK:STDOUT: %pattern_type.loc4_14 => constants.%pattern_type.8de +// CHECK:STDOUT: %.loc4_31.1 => constants.%.e5f // CHECK:STDOUT: %pattern_type.loc4_28 => constants.%pattern_type.51d // CHECK:STDOUT: } // CHECK:STDOUT: @@ -814,6 +818,7 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: %Factory.generic: %Factory.type.2e5 = struct_value () [concrete] // CHECK:STDOUT: %Factory.type.142: type = facet_type <@Factory, @Factory(%T)> [symbolic] // CHECK:STDOUT: %Self.cc4: %Factory.type.142 = symbolic_binding Self, 1 [symbolic] +// CHECK:STDOUT: %.c6c: form = init_form %T, call_param0 [symbolic] // CHECK:STDOUT: %pattern_type.51d: type = pattern_type %T [symbolic] // CHECK:STDOUT: %Factory.Make.type.9ff: type = fn_type @Factory.Make, @Factory(%T) [symbolic] // CHECK:STDOUT: %Factory.Make.fd5: %Factory.Make.type.9ff = struct_value () [symbolic] @@ -821,6 +826,7 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: %assoc0.677: %Factory.assoc_type.129 = assoc_entity element0, @Factory.%Factory.Make.decl [symbolic] // CHECK:STDOUT: %Self.binding.as_type: type = symbolic_binding_type Self, 1, %Self.cc4 [symbolic] // CHECK:STDOUT: %pattern_type.077: type = pattern_type %Self.binding.as_type [symbolic] +// CHECK:STDOUT: %.e5f: form = init_form %T, call_param1 [symbolic] // CHECK:STDOUT: %Factory.Method.type.6d3: type = fn_type @Factory.Method, @Factory(%T) [symbolic] // CHECK:STDOUT: %Factory.Method.ad5: %Factory.Method.type.6d3 = struct_value () [symbolic] // CHECK:STDOUT: %assoc1.d68: %Factory.assoc_type.129 = assoc_entity element1, @Factory.%Factory.Method.decl [symbolic] @@ -838,10 +844,12 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: %Factory.Method.type.ae6: type = fn_type @Factory.Method, @Factory(%B) [concrete] // CHECK:STDOUT: %Factory.Method.49b: %Factory.Method.type.ae6 = struct_value () [concrete] // CHECK:STDOUT: %assoc1.d3a: %Factory.assoc_type.3bd = assoc_entity element1, @Factory.%Factory.Method.decl [concrete] +// CHECK:STDOUT: %.312: form = init_form %B, call_param0 [concrete] // CHECK:STDOUT: %pattern_type.1f4: type = pattern_type %B [concrete] // CHECK:STDOUT: %A.as.Factory.impl.Make.type: type = fn_type @A.as.Factory.impl.Make [concrete] // CHECK:STDOUT: %A.as.Factory.impl.Make: %A.as.Factory.impl.Make.type = struct_value () [concrete] // CHECK:STDOUT: %pattern_type.1ab: type = pattern_type %A [concrete] +// CHECK:STDOUT: %.521: form = init_form %B, call_param1 [concrete] // CHECK:STDOUT: %A.as.Factory.impl.Method.type: type = fn_type @A.as.Factory.impl.Method [concrete] // CHECK:STDOUT: %A.as.Factory.impl.Method: %A.as.Factory.impl.Method.type = struct_value () [concrete] // CHECK:STDOUT: %Factory.facet: %Factory.type.5dd = facet_value %A, (%Factory.impl_witness) [concrete] @@ -899,6 +907,7 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: %return.param_patt: @Factory.Make.%pattern_type (%pattern_type.51d) = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref: type = name_ref T, @Factory.%T.loc4_19.2 [symbolic = %T (constants.%T)] +// CHECK:STDOUT: %.loc6_16.2: form = init_form %T.ref, call_param0 [symbolic = %.loc6_16.1 (constants.%.c6c)] // CHECK:STDOUT: %return.param: ref @Factory.Make.%T (%T) = out_param call_param0 // CHECK:STDOUT: %return: ref @Factory.Make.%T (%T) = return_slot %return.param // CHECK:STDOUT: } @@ -910,6 +919,7 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: %return.param_patt: @Factory.Method.%pattern_type.loc8_27 (%pattern_type.51d) = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref: type = name_ref T, @Factory.%T.loc4_19.2 [symbolic = %T (constants.%T)] +// CHECK:STDOUT: %.loc8_30.2: form = init_form %T.ref, call_param1 [symbolic = %.loc8_30.1 (constants.%.e5f)] // CHECK:STDOUT: %self.param: @Factory.Method.%Self.binding.as_type (%Self.binding.as_type) = value_param call_param0 // CHECK:STDOUT: %.loc8_19.1: type = splice_block %.loc8_19.3 [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type)] { // CHECK:STDOUT: %.loc8_19.2: @Factory.Method.%Factory.type (%Factory.type.142) = specific_constant @Factory.%Self.loc4_29.1, @Factory(constants.%T) [symbolic = %Self (constants.%Self.cc4)] @@ -940,6 +950,7 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: %return.param_patt: %pattern_type.1f4 = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %B.ref: type = name_ref B, file.%B.decl [concrete = constants.%B] +// CHECK:STDOUT: %.loc15: form = init_form %B.ref, call_param0 [concrete = constants.%.312] // CHECK:STDOUT: %return.param: ref %B = out_param call_param0 // CHECK:STDOUT: %return: ref %B = return_slot %return.param // CHECK:STDOUT: } @@ -950,6 +961,7 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: %return.param_patt: %pattern_type.1f4 = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %B.ref: type = name_ref B, file.%B.decl [concrete = constants.%B] +// CHECK:STDOUT: %.loc16: form = init_form %B.ref, call_param1 [concrete = constants.%.521] // CHECK:STDOUT: %self.param: %A = value_param call_param0 // CHECK:STDOUT: %Self.ref: type = name_ref Self, @A.as.Factory.impl.%A.ref [concrete = constants.%A] // CHECK:STDOUT: %self: %A = value_binding self, %self.param @@ -984,6 +996,7 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: // CHECK:STDOUT: generic fn @Factory.Make(@Factory.%T.loc4_19.2: type, @Factory.%Self.loc4_29.1: @Factory.%Factory.type (%Factory.type.142)) { // CHECK:STDOUT: %T: type = symbolic_binding T, 0 [symbolic = %T (constants.%T)] +// CHECK:STDOUT: %.loc6_16.1: form = init_form %T, call_param0 [symbolic = %.loc6_16.1 (constants.%.c6c)] // CHECK:STDOUT: %pattern_type: type = pattern_type %T [symbolic = %pattern_type (constants.%pattern_type.51d)] // CHECK:STDOUT: // CHECK:STDOUT: fn() -> @Factory.Make.%T (%T); @@ -995,6 +1008,7 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: %Self: @Factory.Method.%Factory.type (%Factory.type.142) = symbolic_binding Self, 1 [symbolic = %Self (constants.%Self.cc4)] // CHECK:STDOUT: %Self.binding.as_type: type = symbolic_binding_type Self, 1, %Self [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type)] // CHECK:STDOUT: %pattern_type.loc8_13: type = pattern_type %Self.binding.as_type [symbolic = %pattern_type.loc8_13 (constants.%pattern_type.077)] +// CHECK:STDOUT: %.loc8_30.1: form = init_form %T, call_param1 [symbolic = %.loc8_30.1 (constants.%.e5f)] // CHECK:STDOUT: %pattern_type.loc8_27: type = pattern_type %T [symbolic = %pattern_type.loc8_27 (constants.%pattern_type.51d)] // CHECK:STDOUT: // CHECK:STDOUT: fn(%self.param: @Factory.Method.%Self.binding.as_type (%Self.binding.as_type)) -> @Factory.Method.%T (%T); @@ -1010,6 +1024,7 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: // CHECK:STDOUT: specific @Factory.Make(constants.%T, constants.%Self.cc4) { // CHECK:STDOUT: %T => constants.%T +// CHECK:STDOUT: %.loc6_16.1 => constants.%.c6c // CHECK:STDOUT: %pattern_type => constants.%pattern_type.51d // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1019,6 +1034,7 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: %Self => constants.%Self.cc4 // CHECK:STDOUT: %Self.binding.as_type => constants.%Self.binding.as_type // CHECK:STDOUT: %pattern_type.loc8_13 => constants.%pattern_type.077 +// CHECK:STDOUT: %.loc8_30.1 => constants.%.e5f // CHECK:STDOUT: %pattern_type.loc8_27 => constants.%pattern_type.51d // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1039,6 +1055,7 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: // CHECK:STDOUT: specific @Factory.Make(constants.%B, constants.%Factory.facet) { // CHECK:STDOUT: %T => constants.%B +// CHECK:STDOUT: %.loc6_16.1 => constants.%.312 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.1f4 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1048,6 +1065,7 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: %Self => constants.%Factory.facet // CHECK:STDOUT: %Self.binding.as_type => constants.%A // CHECK:STDOUT: %pattern_type.loc8_13 => constants.%pattern_type.1ab +// CHECK:STDOUT: %.loc8_30.1 => constants.%.521 // CHECK:STDOUT: %pattern_type.loc8_27 => constants.%pattern_type.1f4 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1069,9 +1087,11 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: %pattern_type.51d: type = pattern_type %T [symbolic] // CHECK:STDOUT: %Self.binding.as_type: type = symbolic_binding_type Self, 1, %Self.197 [symbolic] // CHECK:STDOUT: %pattern_type.12d: type = pattern_type %Self.binding.as_type [symbolic] +// CHECK:STDOUT: %.e5f: form = init_form %T, call_param1 [symbolic] // CHECK:STDOUT: %assoc0.f7d053.1: %Factory.assoc_type.129 = assoc_entity element0, imports.%Main.import_ref.2d54f7.1 [symbolic] // CHECK:STDOUT: %Factory.Make.type.9ff: type = fn_type @Factory.Make, @Factory(%T) [symbolic] // CHECK:STDOUT: %Factory.Make.fd5: %Factory.Make.type.9ff = struct_value () [symbolic] +// CHECK:STDOUT: %.c6c: form = init_form %T, call_param0 [symbolic] // CHECK:STDOUT: %Factory.type.5dd: type = facet_type <@Factory, @Factory(%B)> [concrete] // CHECK:STDOUT: %Factory.assoc_type.3bd: type = assoc_entity_type @Factory, @Factory(%B) [concrete] // CHECK:STDOUT: %assoc1.be2: %Factory.assoc_type.3bd = assoc_entity element1, imports.%Main.import_ref.3cb [concrete] @@ -1082,6 +1102,7 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: %Factory.Make.e72: %Factory.Make.type.662 = struct_value () [concrete] // CHECK:STDOUT: %Self.843: %Factory.type.5dd = symbolic_binding Self, 1 [symbolic] // CHECK:STDOUT: %A: type = class_type @A [concrete] +// CHECK:STDOUT: %.312: form = init_form %B, call_param0 [concrete] // CHECK:STDOUT: %pattern_type.1f4: type = pattern_type %B [concrete] // CHECK:STDOUT: %MakeB.type: type = fn_type @MakeB [concrete] // CHECK:STDOUT: %MakeB: %MakeB.type = struct_value () [concrete] @@ -1092,6 +1113,7 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: %A.as.Factory.impl.Make.type: type = fn_type @A.as.Factory.impl.Make [concrete] // CHECK:STDOUT: %A.as.Factory.impl.Make: %A.as.Factory.impl.Make.type = struct_value () [concrete] // CHECK:STDOUT: %pattern_type.1ab: type = pattern_type %A [concrete] +// CHECK:STDOUT: %.521: form = init_form %B, call_param1 [concrete] // CHECK:STDOUT: %InstanceB.type: type = fn_type @InstanceB [concrete] // CHECK:STDOUT: %InstanceB: %InstanceB.type = struct_value () [concrete] // CHECK:STDOUT: %assoc1.df9706.2: %Factory.assoc_type.129 = assoc_entity element1, imports.%Main.import_ref.c649d0.2 [symbolic] @@ -1155,6 +1177,7 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: %return.param_patt: %pattern_type.1f4 = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %B.ref.loc4: type = name_ref B, imports.%Main.B [concrete = constants.%B] +// CHECK:STDOUT: %.loc4_15: form = init_form %B.ref.loc4, call_param0 [concrete = constants.%.312] // CHECK:STDOUT: %return.param: ref %B = out_param call_param0 // CHECK:STDOUT: %return: ref %B = return_slot %return.param // CHECK:STDOUT: } @@ -1165,6 +1188,7 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: %return.param_patt: %pattern_type.1f4 = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %B.ref.loc7: type = name_ref B, imports.%Main.B [concrete = constants.%B] +// CHECK:STDOUT: %.loc7_23: form = init_form %B.ref.loc7, call_param1 [concrete = constants.%.521] // CHECK:STDOUT: %a.param: %A = value_param call_param0 // CHECK:STDOUT: %A.ref: type = name_ref A, imports.%Main.A [concrete = constants.%A] // CHECK:STDOUT: %a: %A = value_binding a, %a.param @@ -1225,6 +1249,7 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: %Self: @Factory.Method.%Factory.type (%Factory.type.142) = symbolic_binding Self, 1 [symbolic = %Self (constants.%Self.197)] // CHECK:STDOUT: %Self.binding.as_type: type = symbolic_binding_type Self, 1, %Self [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type)] // CHECK:STDOUT: %pattern_type.1: type = pattern_type %Self.binding.as_type [symbolic = %pattern_type.1 (constants.%pattern_type.12d)] +// CHECK:STDOUT: %.1: form = init_form %T, call_param1 [symbolic = %.1 (constants.%.e5f)] // CHECK:STDOUT: %pattern_type.2: type = pattern_type %T [symbolic = %pattern_type.2 (constants.%pattern_type.51d)] // CHECK:STDOUT: // CHECK:STDOUT: fn; @@ -1232,6 +1257,7 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: // CHECK:STDOUT: generic fn @Factory.Make(imports.%Main.import_ref.b3bc94.3: type, imports.%Main.import_ref.a2eb4c.2: @Factory.%Factory.type (%Factory.type.142)) [from "factory.carbon"] { // CHECK:STDOUT: %T: type = symbolic_binding T, 0 [symbolic = %T (constants.%T)] +// CHECK:STDOUT: %.1: form = init_form %T, call_param0 [symbolic = %.1 (constants.%.c6c)] // CHECK:STDOUT: %pattern_type: type = pattern_type %T [symbolic = %pattern_type (constants.%pattern_type.51d)] // CHECK:STDOUT: // CHECK:STDOUT: fn; @@ -1248,8 +1274,8 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: %Factory.facet: %Factory.type.5dd = facet_value %A.ref, (constants.%Factory.impl_witness) [concrete = constants.%Factory.facet] // CHECK:STDOUT: %.loc5_11: %Factory.type.5dd = converted %A.ref, %Factory.facet [concrete = constants.%Factory.facet] // CHECK:STDOUT: %impl.elem0: %.d31 = impl_witness_access constants.%Factory.impl_witness, element0 [concrete = constants.%A.as.Factory.impl.Make] -// CHECK:STDOUT: %.loc4: ref %B = splice_block %return {} -// CHECK:STDOUT: %A.as.Factory.impl.Make.call: init %B = call %impl.elem0() to %.loc4 +// CHECK:STDOUT: %.loc4_12: ref %B = splice_block %return {} +// CHECK:STDOUT: %A.as.Factory.impl.Make.call: init %B = call %impl.elem0() to %.loc4_12 // CHECK:STDOUT: return %A.as.Factory.impl.Make.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1265,8 +1291,8 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: %Method.ref: %Factory.assoc_type.3bd = name_ref Method, %.loc8 [concrete = constants.%assoc1.be2] // CHECK:STDOUT: %impl.elem1: %.b77 = impl_witness_access constants.%Factory.impl_witness, element1 [concrete = constants.%A.as.Factory.impl.Method] // CHECK:STDOUT: %bound_method: = bound_method %a.ref, %impl.elem1 -// CHECK:STDOUT: %.loc7: ref %B = splice_block %return {} -// CHECK:STDOUT: %A.as.Factory.impl.Method.call: init %B = call %bound_method(%a.ref) to %.loc7 +// CHECK:STDOUT: %.loc7_20: ref %B = splice_block %return {} +// CHECK:STDOUT: %A.as.Factory.impl.Method.call: init %B = call %bound_method(%a.ref) to %.loc7_20 // CHECK:STDOUT: return %A.as.Factory.impl.Method.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1282,11 +1308,13 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: %Self => constants.%Self.197 // CHECK:STDOUT: %Self.binding.as_type => constants.%Self.binding.as_type // CHECK:STDOUT: %pattern_type.1 => constants.%pattern_type.12d +// CHECK:STDOUT: %.1 => constants.%.e5f // CHECK:STDOUT: %pattern_type.2 => constants.%pattern_type.51d // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Factory.Make(constants.%T, constants.%Self.197) { // CHECK:STDOUT: %T => constants.%T +// CHECK:STDOUT: %.1 => constants.%.c6c // CHECK:STDOUT: %pattern_type => constants.%pattern_type.51d // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1323,9 +1351,11 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: %pattern_type.51d: type = pattern_type %T [symbolic] // CHECK:STDOUT: %Self.binding.as_type: type = symbolic_binding_type Self, 1, %Self.197 [symbolic] // CHECK:STDOUT: %pattern_type.12d: type = pattern_type %Self.binding.as_type [symbolic] +// CHECK:STDOUT: %.e5f: form = init_form %T, call_param1 [symbolic] // CHECK:STDOUT: %assoc0.8a8: %Factory.assoc_type.129 = assoc_entity element0, imports.%Main.import_ref.1fc [symbolic] // CHECK:STDOUT: %Factory.Make.type.9ff: type = fn_type @Factory.Make, @Factory(%T) [symbolic] // CHECK:STDOUT: %Factory.Make.fd5: %Factory.Make.type.9ff = struct_value () [symbolic] +// CHECK:STDOUT: %.c6c: form = init_form %T, call_param0 [symbolic] // CHECK:STDOUT: %Factory.type.5dd: type = facet_type <@Factory, @Factory(%B)> [concrete] // CHECK:STDOUT: %Factory.assoc_type.3bd: type = assoc_entity_type @Factory, @Factory(%B) [concrete] // CHECK:STDOUT: %assoc1.e9c: %Factory.assoc_type.3bd = assoc_entity element1, imports.%Main.import_ref.c649d0.1 [concrete] @@ -1337,6 +1367,7 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: %Self.843: %Factory.type.5dd = symbolic_binding Self, 1 [symbolic] // CHECK:STDOUT: %A: type = class_type @A [concrete] // CHECK:STDOUT: %C: type = class_type @C [concrete] +// CHECK:STDOUT: %.64f: form = init_form %C, call_param0 [concrete] // CHECK:STDOUT: %pattern_type.7c7: type = pattern_type %C [concrete] // CHECK:STDOUT: %MakeC.type: type = fn_type @MakeC [concrete] // CHECK:STDOUT: %MakeC: %MakeC.type = struct_value () [concrete] @@ -1351,6 +1382,7 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: %assoc1.09b: %Factory.assoc_type.930 = assoc_entity element1, imports.%Main.import_ref.3cb [concrete] // CHECK:STDOUT: %assoc0.f7d: %Factory.assoc_type.129 = assoc_entity element0, imports.%Main.import_ref.2d54f7.2 [symbolic] // CHECK:STDOUT: %pattern_type.1ab: type = pattern_type %A [concrete] +// CHECK:STDOUT: %.887: form = init_form %C, call_param1 [concrete] // CHECK:STDOUT: %InstanceC.type: type = fn_type @InstanceC [concrete] // CHECK:STDOUT: %InstanceC: %InstanceC.type = struct_value () [concrete] // CHECK:STDOUT: %assoc1.df9: %Factory.assoc_type.129 = assoc_entity element1, imports.%Main.import_ref.c649d0.2 [symbolic] @@ -1411,6 +1443,7 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: %return.param_patt: %pattern_type.7c7 = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc8: type = name_ref C, file.%C.decl [concrete = constants.%C] +// CHECK:STDOUT: %.loc8: form = init_form %C.ref.loc8, call_param0 [concrete = constants.%.64f] // CHECK:STDOUT: %return.param: ref %C = out_param call_param0 // CHECK:STDOUT: %return: ref %C = return_slot %return.param // CHECK:STDOUT: } @@ -1421,6 +1454,7 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: %return.param_patt: %pattern_type.7c7 = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc16: type = name_ref C, file.%C.decl [concrete = constants.%C] +// CHECK:STDOUT: %.loc16: form = init_form %C.ref.loc16, call_param1 [concrete = constants.%.887] // CHECK:STDOUT: %a.param: %A = value_param call_param0 // CHECK:STDOUT: %A.ref: type = name_ref A, imports.%Main.A [concrete = constants.%A] // CHECK:STDOUT: %a: %A = value_binding a, %a.param @@ -1489,6 +1523,7 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: %Self: @Factory.Method.%Factory.type (%Factory.type.142) = symbolic_binding Self, 1 [symbolic = %Self (constants.%Self.197)] // CHECK:STDOUT: %Self.binding.as_type: type = symbolic_binding_type Self, 1, %Self [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type)] // CHECK:STDOUT: %pattern_type.1: type = pattern_type %Self.binding.as_type [symbolic = %pattern_type.1 (constants.%pattern_type.12d)] +// CHECK:STDOUT: %.1: form = init_form %T, call_param1 [symbolic = %.1 (constants.%.e5f)] // CHECK:STDOUT: %pattern_type.2: type = pattern_type %T [symbolic = %pattern_type.2 (constants.%pattern_type.51d)] // CHECK:STDOUT: // CHECK:STDOUT: fn; @@ -1496,6 +1531,7 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: // CHECK:STDOUT: generic fn @Factory.Make(imports.%Main.import_ref.b3bc94.3: type, imports.%Main.import_ref.a2eb4c.2: @Factory.%Factory.type (%Factory.type.142)) [from "factory.carbon"] { // CHECK:STDOUT: %T: type = symbolic_binding T, 0 [symbolic = %T (constants.%T)] +// CHECK:STDOUT: %.1: form = init_form %T, call_param0 [symbolic = %.1 (constants.%.c6c)] // CHECK:STDOUT: %pattern_type: type = pattern_type %T [symbolic = %pattern_type (constants.%pattern_type.51d)] // CHECK:STDOUT: // CHECK:STDOUT: fn; @@ -1533,11 +1569,13 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: %Self => constants.%Self.197 // CHECK:STDOUT: %Self.binding.as_type => constants.%Self.binding.as_type // CHECK:STDOUT: %pattern_type.1 => constants.%pattern_type.12d +// CHECK:STDOUT: %.1 => constants.%.e5f // CHECK:STDOUT: %pattern_type.2 => constants.%pattern_type.51d // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Factory.Make(constants.%T, constants.%Self.197) { // CHECK:STDOUT: %T => constants.%T +// CHECK:STDOUT: %.1 => constants.%.c6c // CHECK:STDOUT: %pattern_type => constants.%pattern_type.51d // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/lookup/generic.carbon b/toolchain/check/testdata/impl/lookup/generic.carbon index 29dc5b6b8fd4..773257c45adc 100644 --- a/toolchain/check/testdata/impl/lookup/generic.carbon +++ b/toolchain/check/testdata/impl/lookup/generic.carbon @@ -333,6 +333,7 @@ fn G(x: A) { // CHECK:STDOUT: %Self.f09: %HasF.type = symbolic_binding Self, 0 [symbolic] // CHECK:STDOUT: %Self.binding.as_type.87c: type = symbolic_binding_type Self, 0, %Self.f09 [symbolic] // CHECK:STDOUT: %pattern_type.d0b: type = pattern_type %Self.binding.as_type.87c [symbolic] +// CHECK:STDOUT: %.880: form = init_form %Self.binding.as_type.87c, call_param1 [symbolic] // CHECK:STDOUT: %HasF.F.type: type = fn_type @HasF.F [concrete] // CHECK:STDOUT: %HasF.F: %HasF.F.type = struct_value () [concrete] // CHECK:STDOUT: %HasF.assoc_type: type = assoc_entity_type @HasF [concrete] @@ -344,6 +345,7 @@ fn G(x: A) { // CHECK:STDOUT: %ptr.e8f: type = ptr_type %T.67d [symbolic] // CHECK:STDOUT: %HasF.impl_witness.e63: = impl_witness @ptr.as.HasF.impl.%HasF.impl_witness_table, @ptr.as.HasF.impl(%T.67d) [symbolic] // CHECK:STDOUT: %pattern_type.4f4: type = pattern_type %ptr.e8f [symbolic] +// CHECK:STDOUT: %.ba4: form = init_form %ptr.e8f, call_param1 [symbolic] // CHECK:STDOUT: %ptr.as.HasF.impl.F.type.672: type = fn_type @ptr.as.HasF.impl.F, @ptr.as.HasF.impl(%T.67d) [symbolic] // CHECK:STDOUT: %ptr.as.HasF.impl.F.dbd: %ptr.as.HasF.impl.F.type.672 = struct_value () [symbolic] // CHECK:STDOUT: %HasF.facet.506: %HasF.type = facet_value %ptr.e8f, (%HasF.impl_witness.e63) [symbolic] @@ -362,6 +364,7 @@ fn G(x: A) { // CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %ptr.c28: type = ptr_type %empty_struct_type [concrete] // CHECK:STDOUT: %pattern_type.1cc: type = pattern_type %ptr.c28 [concrete] +// CHECK:STDOUT: %.f0e: form = init_form %ptr.c28, call_param1 [concrete] // CHECK:STDOUT: %G.type: type = fn_type @G [concrete] // CHECK:STDOUT: %G: %G.type = struct_value () [concrete] // CHECK:STDOUT: %HasF.impl_witness.e25: = impl_witness @ptr.as.HasF.impl.%HasF.impl_witness_table, @ptr.as.HasF.impl(%empty_struct_type) [concrete] @@ -415,8 +418,9 @@ fn G(x: A) { // CHECK:STDOUT: %return.param_patt: %pattern_type.1cc = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc12_18: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] -// CHECK:STDOUT: %.loc12_19: type = converted %.loc12_18, constants.%empty_struct_type [concrete = constants.%empty_struct_type] -// CHECK:STDOUT: %ptr.loc12_19: type = ptr_type %.loc12_19 [concrete = constants.%ptr.c28] +// CHECK:STDOUT: %.loc12_19.1: type = converted %.loc12_18, constants.%empty_struct_type [concrete = constants.%empty_struct_type] +// CHECK:STDOUT: %ptr.loc12_19: type = ptr_type %.loc12_19.1 [concrete = constants.%ptr.c28] +// CHECK:STDOUT: %.loc12_19.2: form = init_form %ptr.loc12_19, call_param1 [concrete = constants.%.f0e] // CHECK:STDOUT: %x.param: %ptr.c28 = value_param call_param0 // CHECK:STDOUT: %.loc12_11.1: type = splice_block %ptr.loc12_11 [concrete = constants.%ptr.c28] { // CHECK:STDOUT: %.loc12_10: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] @@ -439,7 +443,8 @@ fn G(x: A) { // CHECK:STDOUT: } { // CHECK:STDOUT: %Self.ref.loc5_25: %HasF.type = name_ref Self, @HasF.%Self [symbolic = %Self (constants.%Self.f09)] // CHECK:STDOUT: %Self.as_type.loc5_25: type = facet_access_type %Self.ref.loc5_25 [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type.87c)] -// CHECK:STDOUT: %.loc5_25: type = converted %Self.ref.loc5_25, %Self.as_type.loc5_25 [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type.87c)] +// CHECK:STDOUT: %.loc5_25.2: type = converted %Self.ref.loc5_25, %Self.as_type.loc5_25 [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type.87c)] +// CHECK:STDOUT: %.loc5_25.3: form = init_form %.loc5_25.2, call_param1 [symbolic = %.loc5_25.1 (constants.%.880)] // CHECK:STDOUT: %self.param: @HasF.F.%Self.binding.as_type (%Self.binding.as_type.87c) = value_param call_param0 // CHECK:STDOUT: %.loc5_14.1: type = splice_block %.loc5_14.2 [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type.87c)] { // CHECK:STDOUT: %Self.ref.loc5_14: %HasF.type = name_ref Self, @HasF.%Self [symbolic = %Self (constants.%Self.f09)] @@ -478,6 +483,7 @@ fn G(x: A) { // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref: type = name_ref T, @ptr.as.HasF.impl.%T.loc8_14.2 [symbolic = %T (constants.%T.67d)] // CHECK:STDOUT: %ptr.loc9_26: type = ptr_type %T.ref [symbolic = %ptr.loc9_14 (constants.%ptr.e8f)] +// CHECK:STDOUT: %.loc9_26.2: form = init_form %ptr.loc9_26, call_param1 [symbolic = %.loc9_26.1 (constants.%.ba4)] // CHECK:STDOUT: %self.param: @ptr.as.HasF.impl.F.%ptr.loc9_14 (%ptr.e8f) = value_param call_param0 // CHECK:STDOUT: %Self.ref: type = name_ref Self, @ptr.as.HasF.impl.%ptr.loc8_25.2 [symbolic = %ptr.loc9_14 (constants.%ptr.e8f)] // CHECK:STDOUT: %self: @ptr.as.HasF.impl.F.%ptr.loc9_14 (%ptr.e8f) = value_binding self, %self.param @@ -498,6 +504,7 @@ fn G(x: A) { // CHECK:STDOUT: %Self: %HasF.type = symbolic_binding Self, 0 [symbolic = %Self (constants.%Self.f09)] // CHECK:STDOUT: %Self.binding.as_type: type = symbolic_binding_type Self, 0, %Self [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type.87c)] // CHECK:STDOUT: %pattern_type: type = pattern_type %Self.binding.as_type [symbolic = %pattern_type (constants.%pattern_type.d0b)] +// CHECK:STDOUT: %.loc5_25.1: form = init_form %Self.binding.as_type, call_param1 [symbolic = %.loc5_25.1 (constants.%.880)] // CHECK:STDOUT: // CHECK:STDOUT: fn(%self.param: @HasF.F.%Self.binding.as_type (%Self.binding.as_type.87c)) -> @HasF.F.%Self.binding.as_type (%Self.binding.as_type.87c); // CHECK:STDOUT: } @@ -506,6 +513,7 @@ fn G(x: A) { // CHECK:STDOUT: %T: type = symbolic_binding T, 0 [symbolic = %T (constants.%T.67d)] // CHECK:STDOUT: %ptr.loc9_14: type = ptr_type %T [symbolic = %ptr.loc9_14 (constants.%ptr.e8f)] // CHECK:STDOUT: %pattern_type: type = pattern_type %ptr.loc9_14 [symbolic = %pattern_type (constants.%pattern_type.4f4)] +// CHECK:STDOUT: %.loc9_26.1: form = init_form %ptr.loc9_14, call_param1 [symbolic = %.loc9_26.1 (constants.%.ba4)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete: = require_complete_type %ptr.loc9_14 [symbolic = %require_complete (constants.%require_complete.ef1)] @@ -545,6 +553,7 @@ fn G(x: A) { // CHECK:STDOUT: %Self => constants.%Self.f09 // CHECK:STDOUT: %Self.binding.as_type => constants.%Self.binding.as_type.87c // CHECK:STDOUT: %pattern_type => constants.%pattern_type.d0b +// CHECK:STDOUT: %.loc5_25.1 => constants.%.880 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @ptr.as.HasF.impl(constants.%T.67d) { @@ -561,12 +570,14 @@ fn G(x: A) { // CHECK:STDOUT: %T => constants.%T.67d // CHECK:STDOUT: %ptr.loc9_14 => constants.%ptr.e8f // CHECK:STDOUT: %pattern_type => constants.%pattern_type.4f4 +// CHECK:STDOUT: %.loc9_26.1 => constants.%.ba4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @HasF.F(constants.%HasF.facet.506) { // CHECK:STDOUT: %Self => constants.%HasF.facet.506 // CHECK:STDOUT: %Self.binding.as_type => constants.%ptr.e8f // CHECK:STDOUT: %pattern_type => constants.%pattern_type.4f4 +// CHECK:STDOUT: %.loc5_25.1 => constants.%.ba4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @ptr.as.HasF.impl(constants.%empty_struct_type) { @@ -583,6 +594,7 @@ fn G(x: A) { // CHECK:STDOUT: %T => constants.%empty_struct_type // CHECK:STDOUT: %ptr.loc9_14 => constants.%ptr.c28 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.1cc +// CHECK:STDOUT: %.loc9_26.1 => constants.%.f0e // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete => constants.%complete_type diff --git a/toolchain/check/testdata/impl/lookup/impl_forall.carbon b/toolchain/check/testdata/impl/lookup/impl_forall.carbon index 79e936dfa99d..945759809c5b 100644 --- a/toolchain/check/testdata/impl/lookup/impl_forall.carbon +++ b/toolchain/check/testdata/impl/lookup/impl_forall.carbon @@ -57,6 +57,7 @@ fn TestSpecific(a: A({})*) -> {}* { // CHECK:STDOUT: %require_complete.e360af.1: = require_complete_type %I.type.1ab3e4.2 [symbolic] // CHECK:STDOUT: %pattern_type.2c404c.1: type = pattern_type %A.95c0c7.2 [symbolic] // CHECK:STDOUT: %ptr.e8f8f9.2: type = ptr_type %V.67d [symbolic] +// CHECK:STDOUT: %.ba4d87.2: form = init_form %ptr.e8f8f9.2, call_param1 [symbolic] // CHECK:STDOUT: %pattern_type.4f4b84.2: type = pattern_type %ptr.e8f8f9.2 [symbolic] // CHECK:STDOUT: %A.as.I.impl.F.type.58747b.1: type = fn_type @A.as.I.impl.F, @A.as.I.impl(%V.67d) [symbolic] // CHECK:STDOUT: %A.as.I.impl.F.afeb91.1: %A.as.I.impl.F.type.58747b.1 = struct_value () [symbolic] @@ -78,6 +79,7 @@ fn TestSpecific(a: A({})*) -> {}* { // CHECK:STDOUT: %ptr.5da: type = ptr_type %A.95c0c7.3 [symbolic] // CHECK:STDOUT: %pattern_type.605: type = pattern_type %ptr.5da [symbolic] // CHECK:STDOUT: %ptr.e8f8f9.4: type = ptr_type %W [symbolic] +// CHECK:STDOUT: %.ba4d87.4: form = init_form %ptr.e8f8f9.4, call_param1 [symbolic] // CHECK:STDOUT: %pattern_type.4f4b84.4: type = pattern_type %ptr.e8f8f9.4 [symbolic] // CHECK:STDOUT: %I.type.1ab3e4.3: type = facet_type <@I, @I(%W)> [symbolic] // CHECK:STDOUT: %I.F.type.93703d.3: type = fn_type @I.F, @I(%W) [symbolic] @@ -99,6 +101,7 @@ fn TestSpecific(a: A({})*) -> {}* { // CHECK:STDOUT: %A.ed7: type = class_type @A, @A(%empty_struct_type) [concrete] // CHECK:STDOUT: %ptr.ed2: type = ptr_type %A.ed7 [concrete] // CHECK:STDOUT: %ptr.c28: type = ptr_type %empty_struct_type [concrete] +// CHECK:STDOUT: %.f0e: form = init_form %ptr.c28, call_param1 [concrete] // CHECK:STDOUT: %pattern_type.1cc: type = pattern_type %ptr.c28 [concrete] // CHECK:STDOUT: %I.type.ab5: type = facet_type <@I, @I(%empty_struct_type)> [concrete] // CHECK:STDOUT: %I.F.type.550: type = fn_type @I.F, @I(%empty_struct_type) [concrete] @@ -165,6 +168,7 @@ fn TestSpecific(a: A({})*) -> {}* { // CHECK:STDOUT: } { // CHECK:STDOUT: %V.ref: type = name_ref V, @A.as.I.impl.%V.loc12_14.2 [symbolic = %V (constants.%V.67d)] // CHECK:STDOUT: %ptr.loc13_30.2: type = ptr_type %V.ref [symbolic = %ptr.loc13_30.1 (constants.%ptr.e8f8f9.2)] +// CHECK:STDOUT: %.loc13_30.2: form = init_form %ptr.loc13_30.2, call_param1 [symbolic = %.loc13_30.1 (constants.%.ba4d87.2)] // CHECK:STDOUT: %self.param: ref @A.as.I.impl.F.%A (%A.95c0c7.2) = ref_param call_param0 // CHECK:STDOUT: %Self.ref: type = name_ref Self, @A.as.I.impl.%A.loc12_27.2 [symbolic = %A (constants.%A.95c0c7.2)] // CHECK:STDOUT: %self: ref @A.as.I.impl.F.%A (%A.95c0c7.2) = ref_binding self, %self.param @@ -186,6 +190,7 @@ fn TestSpecific(a: A({})*) -> {}* { // CHECK:STDOUT: %A: type = class_type @A, @A(%V) [symbolic = %A (constants.%A.95c0c7.2)] // CHECK:STDOUT: %pattern_type.loc13_12: type = pattern_type %A [symbolic = %pattern_type.loc13_12 (constants.%pattern_type.2c404c.1)] // CHECK:STDOUT: %ptr.loc13_30.1: type = ptr_type %V [symbolic = %ptr.loc13_30.1 (constants.%ptr.e8f8f9.2)] +// CHECK:STDOUT: %.loc13_30.1: form = init_form %ptr.loc13_30.1, call_param1 [symbolic = %.loc13_30.1 (constants.%.ba4d87.2)] // CHECK:STDOUT: %pattern_type.loc13_26: type = pattern_type %ptr.loc13_30.1 [symbolic = %pattern_type.loc13_26 (constants.%pattern_type.4f4b84.2)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -285,6 +290,7 @@ fn TestSpecific(a: A({})*) -> {}* { // CHECK:STDOUT: %A => constants.%A.95c0c7.2 // CHECK:STDOUT: %pattern_type.loc13_12 => constants.%pattern_type.2c404c.1 // CHECK:STDOUT: %ptr.loc13_30.1 => constants.%ptr.e8f8f9.2 +// CHECK:STDOUT: %.loc13_30.1 => constants.%.ba4d87.2 // CHECK:STDOUT: %pattern_type.loc13_26 => constants.%pattern_type.4f4b84.2 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -294,6 +300,7 @@ fn TestSpecific(a: A({})*) -> {}* { // CHECK:STDOUT: %ptr.loc19_33.1 => constants.%ptr.5da // CHECK:STDOUT: %pattern_type.loc19_26 => constants.%pattern_type.605 // CHECK:STDOUT: %ptr.loc19_40.1 => constants.%ptr.e8f8f9.4 +// CHECK:STDOUT: %.loc19_40.1 => constants.%.ba4d87.4 // CHECK:STDOUT: %pattern_type.loc19_36 => constants.%pattern_type.4f4b84.4 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -326,6 +333,7 @@ fn TestSpecific(a: A({})*) -> {}* { // CHECK:STDOUT: %A => constants.%A.ed7 // CHECK:STDOUT: %pattern_type.loc13_12 => constants.%pattern_type.853 // CHECK:STDOUT: %ptr.loc13_30.1 => constants.%ptr.c28 +// CHECK:STDOUT: %.loc13_30.1 => constants.%.f0e // CHECK:STDOUT: %pattern_type.loc13_26 => constants.%pattern_type.1cc // CHECK:STDOUT: // CHECK:STDOUT: !definition: diff --git a/toolchain/check/testdata/impl/lookup/instance_method.carbon b/toolchain/check/testdata/impl/lookup/instance_method.carbon index 29ae947974ee..0d8ca6913e5a 100644 --- a/toolchain/check/testdata/impl/lookup/instance_method.carbon +++ b/toolchain/check/testdata/impl/lookup/instance_method.carbon @@ -40,6 +40,7 @@ fn F(c: C) -> i32 { // CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] +// CHECK:STDOUT: %.4d5: form = init_form %i32, call_param1 [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %I.F.type: type = fn_type @I.F [concrete] // CHECK:STDOUT: %I.F: %I.F.type = struct_value () [concrete] @@ -85,6 +86,7 @@ fn F(c: C) -> i32 { // CHECK:STDOUT: } { // 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: %.loc27: form = init_form %i32, call_param1 [concrete = constants.%.4d5] // CHECK:STDOUT: %c.param: %C = value_param call_param0 // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl.loc15 [concrete = constants.%C] // CHECK:STDOUT: %c: %C = value_binding c, %c.param @@ -103,6 +105,7 @@ fn F(c: C) -> i32 { // CHECK:STDOUT: } { // 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: %.loc18_25: form = init_form %i32, call_param1 [concrete = constants.%.4d5] // CHECK:STDOUT: %self.param: @I.F.%Self.binding.as_type (%Self.binding.as_type) = value_param call_param0 // CHECK:STDOUT: %.loc18_14.1: type = splice_block %.loc18_14.2 [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type)] { // CHECK:STDOUT: %Self.ref: %I.type = name_ref Self, @I.%Self [symbolic = %Self (constants.%Self)] @@ -132,6 +135,7 @@ fn F(c: C) -> i32 { // CHECK:STDOUT: } { // 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: %.loc23: form = init_form %i32, call_param1 [concrete = constants.%.4d5] // CHECK:STDOUT: %self.param: %C = value_param call_param0 // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C [concrete = constants.%C] // CHECK:STDOUT: %self: %C = value_binding self, %self.param diff --git a/toolchain/check/testdata/impl/lookup/specialization_with_symbolic_rewrite.carbon b/toolchain/check/testdata/impl/lookup/specialization_with_symbolic_rewrite.carbon index b8498e4d51f3..3e7266b539ce 100644 --- a/toolchain/check/testdata/impl/lookup/specialization_with_symbolic_rewrite.carbon +++ b/toolchain/check/testdata/impl/lookup/specialization_with_symbolic_rewrite.carbon @@ -802,6 +802,7 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %require_complete.73ad1d.2: = require_complete_type %Ptr_where.type.3963c5.2 [symbolic] // CHECK:STDOUT: %.656: require_specific_def_type = require_specific_def @U.as.Ptr.impl(%T.67d) [symbolic] // CHECK:STDOUT: %Ptr.facet: %Ptr.type = facet_value %T.67d, (%Ptr.impl_witness.117547.2) [symbolic] +// CHECK:STDOUT: %.ba4: form = init_form %ptr.e8f8f9.2, call_param1 [symbolic] // CHECK:STDOUT: %pattern_type.4f4: type = pattern_type %ptr.e8f8f9.2 [symbolic] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] @@ -866,8 +867,9 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %Ptr.ref: type = name_ref Ptr, file.%Ptr.decl [concrete = constants.%Ptr.type] // CHECK:STDOUT: %Type.ref: %Ptr.assoc_type = name_ref Type, @Type.%assoc0 [concrete = constants.%assoc0.516] // CHECK:STDOUT: %Ptr.facet.loc9_30.2: %Ptr.type = facet_value %T.ref.loc9_29, (constants.%Ptr.impl_witness.117547.2) [symbolic = %Ptr.facet.loc9_30.1 (constants.%Ptr.facet)] -// CHECK:STDOUT: %.loc9_30.2: %Ptr.type = converted %T.ref.loc9_29, %Ptr.facet.loc9_30.2 [symbolic = %Ptr.facet.loc9_30.1 (constants.%Ptr.facet)] +// CHECK:STDOUT: %.loc9_30.3: %Ptr.type = converted %T.ref.loc9_29, %Ptr.facet.loc9_30.2 [symbolic = %Ptr.facet.loc9_30.1 (constants.%Ptr.facet)] // CHECK:STDOUT: %impl.elem0.loc9: type = impl_witness_access constants.%Ptr.impl_witness.117547.2, element0 [symbolic = %ptr (constants.%ptr.e8f8f9.2)] +// CHECK:STDOUT: %.loc9_30.4: form = init_form %impl.elem0.loc9, call_param1 [symbolic = %.loc9_30.2 (constants.%.ba4)] // CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.c39] // CHECK:STDOUT: %T.loc9_6.2: type = symbolic_binding T, 0 [symbolic = %T.loc9_6.1 (constants.%T.67d)] // CHECK:STDOUT: %t.param: ref @F.%T.loc9_6.1 (%T.67d) = ref_param call_param0 @@ -922,6 +924,7 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %Ptr.impl_witness: = impl_witness @U.as.Ptr.impl.%Ptr.impl_witness_table, @U.as.Ptr.impl(%T.loc9_6.1) [symbolic = %Ptr.impl_witness (constants.%Ptr.impl_witness.117547.2)] // CHECK:STDOUT: %Ptr.facet.loc9_30.1: %Ptr.type = facet_value %T.loc9_6.1, (%Ptr.impl_witness) [symbolic = %Ptr.facet.loc9_30.1 (constants.%Ptr.facet)] // CHECK:STDOUT: %ptr: type = ptr_type %T.loc9_6.1 [symbolic = %ptr (constants.%ptr.e8f8f9.2)] +// CHECK:STDOUT: %.loc9_30.2: form = init_form %ptr, call_param1 [symbolic = %.loc9_30.2 (constants.%.ba4)] // CHECK:STDOUT: %pattern_type.loc9_26: type = pattern_type %ptr [symbolic = %pattern_type.loc9_26 (constants.%pattern_type.4f4)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -977,6 +980,7 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %Ptr.impl_witness => constants.%Ptr.impl_witness.117547.2 // CHECK:STDOUT: %Ptr.facet.loc9_30.1 => constants.%Ptr.facet // CHECK:STDOUT: %ptr => constants.%ptr.e8f8f9.2 +// CHECK:STDOUT: %.loc9_30.2 => constants.%.ba4 // CHECK:STDOUT: %pattern_type.loc9_26 => constants.%pattern_type.4f4 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1008,6 +1012,7 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %Ptr.impl_witness.373: = impl_witness @U.as.Ptr.impl.%Ptr.impl_witness_table, @U.as.Ptr.impl(%T.binding.as_type.3dc) [symbolic] // CHECK:STDOUT: %require_complete.2f9: = require_complete_type %Ptr_where.type.540 [symbolic] // CHECK:STDOUT: %.0a6: require_specific_def_type = require_specific_def @U.as.Ptr.impl(%T.binding.as_type.3dc) [symbolic] +// CHECK:STDOUT: %.5ca: form = init_form %ptr.a86, call_param1 [symbolic] // CHECK:STDOUT: %pattern_type.804: type = pattern_type %ptr.a86 [symbolic] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] @@ -1071,8 +1076,9 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %T.ref.loc9_28: %Ptr.type = name_ref T, %T.loc9_6.2 [symbolic = %T.loc9_6.1 (constants.%T.ffa)] // CHECK:STDOUT: %Type.ref: %Ptr.assoc_type = name_ref Type, @Type.%assoc0 [concrete = constants.%assoc0.516] // CHECK:STDOUT: %T.as_type.loc9_29: type = facet_access_type %T.ref.loc9_28 [symbolic = %T.binding.as_type (constants.%T.binding.as_type.3dc)] -// CHECK:STDOUT: %.loc9_29.2: type = converted %T.ref.loc9_28, %T.as_type.loc9_29 [symbolic = %T.binding.as_type (constants.%T.binding.as_type.3dc)] +// CHECK:STDOUT: %.loc9_29.3: type = converted %T.ref.loc9_28, %T.as_type.loc9_29 [symbolic = %T.binding.as_type (constants.%T.binding.as_type.3dc)] // CHECK:STDOUT: %impl.elem0.loc9: type = impl_witness_access constants.%Ptr.impl_witness.373, element0 [symbolic = %ptr (constants.%ptr.a86)] +// CHECK:STDOUT: %.loc9_29.4: form = init_form %impl.elem0.loc9, call_param1 [symbolic = %.loc9_29.2 (constants.%.5ca)] // CHECK:STDOUT: %.loc9_10: type = splice_block %Ptr.ref [concrete = constants.%Ptr.type] { // CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.c39] // CHECK:STDOUT: %Ptr.ref: type = name_ref Ptr, file.%Ptr.decl [concrete = constants.%Ptr.type] @@ -1134,6 +1140,7 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %.loc9_29.1: require_specific_def_type = require_specific_def @U.as.Ptr.impl(%T.binding.as_type) [symbolic = %.loc9_29.1 (constants.%.0a6)] // CHECK:STDOUT: %Ptr.impl_witness: = impl_witness @U.as.Ptr.impl.%Ptr.impl_witness_table, @U.as.Ptr.impl(%T.binding.as_type) [symbolic = %Ptr.impl_witness (constants.%Ptr.impl_witness.373)] // CHECK:STDOUT: %ptr: type = ptr_type %T.binding.as_type [symbolic = %ptr (constants.%ptr.a86)] +// CHECK:STDOUT: %.loc9_29.2: form = init_form %ptr, call_param1 [symbolic = %.loc9_29.2 (constants.%.5ca)] // CHECK:STDOUT: %pattern_type.loc9_25: type = pattern_type %ptr [symbolic = %pattern_type.loc9_25 (constants.%pattern_type.804)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -1189,6 +1196,7 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %.loc9_29.1 => constants.%.0a6 // CHECK:STDOUT: %Ptr.impl_witness => constants.%Ptr.impl_witness.373 // CHECK:STDOUT: %ptr => constants.%ptr.a86 +// CHECK:STDOUT: %.loc9_29.2 => constants.%.5ca // CHECK:STDOUT: %pattern_type.loc9_25 => constants.%pattern_type.804 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1220,6 +1228,7 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %Ptr.impl_witness.373: = impl_witness @U.as.Ptr.impl.%Ptr.impl_witness_table, @U.as.Ptr.impl(%T.binding.as_type.3dc) [symbolic] // CHECK:STDOUT: %require_complete.2f9: = require_complete_type %Ptr_where.type.540 [symbolic] // CHECK:STDOUT: %.0a6: require_specific_def_type = require_specific_def @U.as.Ptr.impl(%T.binding.as_type.3dc) [symbolic] +// CHECK:STDOUT: %.5ca: form = init_form %ptr.a86, call_param1 [symbolic] // CHECK:STDOUT: %pattern_type.804: type = pattern_type %ptr.a86 [symbolic] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] @@ -1284,6 +1293,7 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %Ptr.ref.loc9_31: type = name_ref Ptr, file.%Ptr.decl [concrete = constants.%Ptr.type] // CHECK:STDOUT: %Type.ref: %Ptr.assoc_type = name_ref Type, @Type.%assoc0 [concrete = constants.%assoc0.516] // CHECK:STDOUT: %impl.elem0.loc9: type = impl_witness_access constants.%Ptr.impl_witness.373, element0 [symbolic = %ptr (constants.%ptr.a86)] +// CHECK:STDOUT: %.loc9_29.3: form = init_form %impl.elem0.loc9, call_param1 [symbolic = %.loc9_29.2 (constants.%.5ca)] // CHECK:STDOUT: %.loc9_10: type = splice_block %Ptr.ref.loc9_10 [concrete = constants.%Ptr.type] { // CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.c39] // CHECK:STDOUT: %Ptr.ref.loc9_10: type = name_ref Ptr, file.%Ptr.decl [concrete = constants.%Ptr.type] @@ -1342,9 +1352,10 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %T.loc9_6.1: %Ptr.type = symbolic_binding T, 0 [symbolic = %T.loc9_6.1 (constants.%T.ffa)] // CHECK:STDOUT: %T.binding.as_type: type = symbolic_binding_type T, 0, %T.loc9_6.1 [symbolic = %T.binding.as_type (constants.%T.binding.as_type.3dc)] // CHECK:STDOUT: %pattern_type.loc9_19: type = pattern_type %T.binding.as_type [symbolic = %pattern_type.loc9_19 (constants.%pattern_type.82a)] -// CHECK:STDOUT: %.loc9_29: require_specific_def_type = require_specific_def @U.as.Ptr.impl(%T.binding.as_type) [symbolic = %.loc9_29 (constants.%.0a6)] +// CHECK:STDOUT: %.loc9_29.1: require_specific_def_type = require_specific_def @U.as.Ptr.impl(%T.binding.as_type) [symbolic = %.loc9_29.1 (constants.%.0a6)] // CHECK:STDOUT: %Ptr.impl_witness: = impl_witness @U.as.Ptr.impl.%Ptr.impl_witness_table, @U.as.Ptr.impl(%T.binding.as_type) [symbolic = %Ptr.impl_witness (constants.%Ptr.impl_witness.373)] // CHECK:STDOUT: %ptr: type = ptr_type %T.binding.as_type [symbolic = %ptr (constants.%ptr.a86)] +// CHECK:STDOUT: %.loc9_29.2: form = init_form %ptr, call_param1 [symbolic = %.loc9_29.2 (constants.%.5ca)] // CHECK:STDOUT: %pattern_type.loc9_25: type = pattern_type %ptr [symbolic = %pattern_type.loc9_25 (constants.%pattern_type.804)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -1397,9 +1408,10 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %T.loc9_6.1 => constants.%T.ffa // CHECK:STDOUT: %T.binding.as_type => constants.%T.binding.as_type.3dc // CHECK:STDOUT: %pattern_type.loc9_19 => constants.%pattern_type.82a -// CHECK:STDOUT: %.loc9_29 => constants.%.0a6 +// CHECK:STDOUT: %.loc9_29.1 => constants.%.0a6 // CHECK:STDOUT: %Ptr.impl_witness => constants.%Ptr.impl_witness.373 // CHECK:STDOUT: %ptr => constants.%ptr.a86 +// CHECK:STDOUT: %.loc9_29.2 => constants.%.5ca // CHECK:STDOUT: %pattern_type.loc9_25 => constants.%pattern_type.804 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/lookup/transitive.carbon b/toolchain/check/testdata/impl/lookup/transitive.carbon index e82163ccfae9..d60701194706 100644 --- a/toolchain/check/testdata/impl/lookup/transitive.carbon +++ b/toolchain/check/testdata/impl/lookup/transitive.carbon @@ -225,6 +225,7 @@ fn Call() { // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] +// CHECK:STDOUT: %.64f: form = init_form %C, call_param0 [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %C [concrete] // CHECK:STDOUT: %Get.type: type = fn_type @Get [concrete] // CHECK:STDOUT: %Get: %Get.type = struct_value () [concrete] @@ -253,6 +254,7 @@ fn Call() { // CHECK:STDOUT: %return.param_patt: %pattern_type = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref: type = name_ref C, imports.%Main.C [concrete = constants.%C] +// CHECK:STDOUT: %.loc6: form = init_form %C.ref, call_param0 [concrete = constants.%.64f] // CHECK:STDOUT: %return.param: ref %C = out_param call_param0 // CHECK:STDOUT: %return: ref %C = return_slot %return.param // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/impl/self_in_class.carbon b/toolchain/check/testdata/impl/self_in_class.carbon index 99b9310e9957..4ca735f68d14 100644 --- a/toolchain/check/testdata/impl/self_in_class.carbon +++ b/toolchain/check/testdata/impl/self_in_class.carbon @@ -32,6 +32,7 @@ class A { // CHECK:STDOUT: %DefaultConstructible.type: type = facet_type <@DefaultConstructible> [concrete] // CHECK:STDOUT: %Self: %DefaultConstructible.type = symbolic_binding Self, 0 [symbolic] // CHECK:STDOUT: %Self.binding.as_type: type = symbolic_binding_type Self, 0, %Self [symbolic] +// CHECK:STDOUT: %.bfa: form = init_form %Self.binding.as_type, call_param0 [symbolic] // CHECK:STDOUT: %pattern_type.b09: type = pattern_type %Self.binding.as_type [symbolic] // CHECK:STDOUT: %DefaultConstructible.Make.type: type = fn_type @DefaultConstructible.Make [concrete] // CHECK:STDOUT: %DefaultConstructible.Make: %DefaultConstructible.Make.type = struct_value () [concrete] @@ -42,6 +43,7 @@ class A { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %A: type = class_type @A [concrete] // CHECK:STDOUT: %DefaultConstructible.impl_witness: = impl_witness @C.as.DefaultConstructible.impl.%DefaultConstructible.impl_witness_table [concrete] +// CHECK:STDOUT: %.64f: form = init_form %C, call_param0 [concrete] // CHECK:STDOUT: %pattern_type.7c7: type = pattern_type %C [concrete] // CHECK:STDOUT: %C.as.DefaultConstructible.impl.Make.type: type = fn_type @C.as.DefaultConstructible.impl.Make [concrete] // CHECK:STDOUT: %C.as.DefaultConstructible.impl.Make: %C.as.DefaultConstructible.impl.Make.type = struct_value () [concrete] @@ -69,7 +71,8 @@ class A { // CHECK:STDOUT: } { // CHECK:STDOUT: %Self.ref: %DefaultConstructible.type = name_ref Self, @DefaultConstructible.%Self [symbolic = %Self (constants.%Self)] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self.ref [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type)] -// CHECK:STDOUT: %.loc16: type = converted %Self.ref, %Self.as_type [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type)] +// CHECK:STDOUT: %.loc16_16.2: type = converted %Self.ref, %Self.as_type [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type)] +// CHECK:STDOUT: %.loc16_16.3: form = init_form %.loc16_16.2, call_param0 [symbolic = %.loc16_16.1 (constants.%.bfa)] // CHECK:STDOUT: %return.param: ref @DefaultConstructible.Make.%Self.binding.as_type (%Self.binding.as_type) = out_param call_param0 // CHECK:STDOUT: %return: ref @DefaultConstructible.Make.%Self.binding.as_type (%Self.binding.as_type) = return_slot %return.param // CHECK:STDOUT: } @@ -89,6 +92,7 @@ class A { // CHECK:STDOUT: %return.param_patt: %pattern_type.7c7 = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %Self.ref: type = name_ref Self, @C.as.DefaultConstructible.impl.%C.ref [concrete = constants.%C] +// CHECK:STDOUT: %.loc25_18: form = init_form %Self.ref, call_param0 [concrete = constants.%.64f] // CHECK:STDOUT: %return.param: ref %C = out_param call_param0 // CHECK:STDOUT: %return: ref %C = return_slot %return.param // CHECK:STDOUT: } @@ -125,6 +129,7 @@ class A { // CHECK:STDOUT: generic fn @DefaultConstructible.Make(@DefaultConstructible.%Self: %DefaultConstructible.type) { // CHECK:STDOUT: %Self: %DefaultConstructible.type = symbolic_binding Self, 0 [symbolic = %Self (constants.%Self)] // CHECK:STDOUT: %Self.binding.as_type: type = symbolic_binding_type Self, 0, %Self [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type)] +// CHECK:STDOUT: %.loc16_16.1: form = init_form %Self.binding.as_type, call_param0 [symbolic = %.loc16_16.1 (constants.%.bfa)] // CHECK:STDOUT: %pattern_type: type = pattern_type %Self.binding.as_type [symbolic = %pattern_type (constants.%pattern_type.b09)] // CHECK:STDOUT: // CHECK:STDOUT: fn() -> @DefaultConstructible.Make.%Self.binding.as_type (%Self.binding.as_type); @@ -141,12 +146,14 @@ class A { // CHECK:STDOUT: specific @DefaultConstructible.Make(constants.%Self) { // CHECK:STDOUT: %Self => constants.%Self // CHECK:STDOUT: %Self.binding.as_type => constants.%Self.binding.as_type +// CHECK:STDOUT: %.loc16_16.1 => constants.%.bfa // CHECK:STDOUT: %pattern_type => constants.%pattern_type.b09 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @DefaultConstructible.Make(constants.%DefaultConstructible.facet) { // CHECK:STDOUT: %Self => constants.%DefaultConstructible.facet // CHECK:STDOUT: %Self.binding.as_type => constants.%C +// CHECK:STDOUT: %.loc16_16.1 => constants.%.64f // CHECK:STDOUT: %pattern_type => constants.%pattern_type.7c7 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/self_in_signature.carbon b/toolchain/check/testdata/impl/self_in_signature.carbon index 7a84339e9a83..221e56e6c11a 100644 --- a/toolchain/check/testdata/impl/self_in_signature.carbon +++ b/toolchain/check/testdata/impl/self_in_signature.carbon @@ -47,6 +47,7 @@ impl D as SelfNested { // CHECK:STDOUT: %Self.f7b: %UseSelf.type = symbolic_binding Self, 0 [symbolic] // CHECK:STDOUT: %Self.binding.as_type.e3d: type = symbolic_binding_type Self, 0, %Self.f7b [symbolic] // CHECK:STDOUT: %pattern_type.431: type = pattern_type %Self.binding.as_type.e3d [symbolic] +// CHECK:STDOUT: %.712: form = init_form %Self.binding.as_type.e3d, call_param2 [symbolic] // CHECK:STDOUT: %UseSelf.F.type: type = fn_type @UseSelf.F [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %UseSelf.F: %UseSelf.F.type = struct_value () [concrete] @@ -58,6 +59,7 @@ impl D as SelfNested { // CHECK:STDOUT: %D: type = class_type @D [concrete] // CHECK:STDOUT: %UseSelf.impl_witness.3c4: = impl_witness @C.as.UseSelf.impl.%UseSelf.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.7c7: type = pattern_type %C [concrete] +// CHECK:STDOUT: %.355: form = init_form %C, call_param2 [concrete] // CHECK:STDOUT: %C.as.UseSelf.impl.F.type: type = fn_type @C.as.UseSelf.impl.F [concrete] // CHECK:STDOUT: %C.as.UseSelf.impl.F: %C.as.UseSelf.impl.F.type = struct_value () [concrete] // CHECK:STDOUT: %UseSelf.facet.d4d: %UseSelf.type = facet_value %C, (%UseSelf.impl_witness.3c4) [concrete] @@ -65,6 +67,7 @@ impl D as SelfNested { // CHECK:STDOUT: %C.val: %C = struct_value () [concrete] // CHECK:STDOUT: %UseSelf.impl_witness.22d: = impl_witness @D.as.UseSelf.impl.%UseSelf.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.9c8: type = pattern_type %D [concrete] +// CHECK:STDOUT: %.802: form = init_form %D, call_param2 [concrete] // CHECK:STDOUT: %D.as.UseSelf.impl.F.type: type = fn_type @D.as.UseSelf.impl.F [concrete] // CHECK:STDOUT: %D.as.UseSelf.impl.F: %D.as.UseSelf.impl.F.type = struct_value () [concrete] // CHECK:STDOUT: %UseSelf.facet.6f8: %UseSelf.type = facet_value %D, (%UseSelf.impl_witness.22d) [concrete] @@ -144,7 +147,8 @@ impl D as SelfNested { // CHECK:STDOUT: } { // CHECK:STDOUT: %Self.ref.loc16_32: %UseSelf.type = name_ref Self, @UseSelf.%Self [symbolic = %Self (constants.%Self.f7b)] // CHECK:STDOUT: %Self.as_type.loc16_32: type = facet_access_type %Self.ref.loc16_32 [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type.e3d)] -// CHECK:STDOUT: %.loc16_32: type = converted %Self.ref.loc16_32, %Self.as_type.loc16_32 [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type.e3d)] +// CHECK:STDOUT: %.loc16_32.2: type = converted %Self.ref.loc16_32, %Self.as_type.loc16_32 [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type.e3d)] +// CHECK:STDOUT: %.loc16_32.3: form = init_form %.loc16_32.2, call_param2 [symbolic = %.loc16_32.1 (constants.%.712)] // CHECK:STDOUT: %self.param: @UseSelf.F.%Self.binding.as_type (%Self.binding.as_type.e3d) = value_param call_param0 // CHECK:STDOUT: %.loc16_14.1: type = splice_block %.loc16_14.2 [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type.e3d)] { // CHECK:STDOUT: %Self.ref.loc16_14: %UseSelf.type = name_ref Self, @UseSelf.%Self [symbolic = %Self (constants.%Self.f7b)] @@ -215,6 +219,7 @@ impl D as SelfNested { // CHECK:STDOUT: %return.param_patt: %pattern_type.7c7 = out_param_pattern %return.patt, call_param2 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc24_26: type = name_ref C, file.%C.decl [concrete = constants.%C] +// CHECK:STDOUT: %.loc24_26: form = init_form %C.ref.loc24_26, call_param2 [concrete = constants.%.355] // CHECK:STDOUT: %self.param: %C = value_param call_param0 // CHECK:STDOUT: %C.ref.loc24_14: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %self: %C = value_binding self, %self.param @@ -243,6 +248,7 @@ impl D as SelfNested { // CHECK:STDOUT: %return.param_patt: %pattern_type.9c8 = out_param_pattern %return.patt, call_param2 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %Self.ref.loc28_32: type = name_ref Self, @D.as.UseSelf.impl.%D.ref [concrete = constants.%D] +// CHECK:STDOUT: %.loc28_32: form = init_form %Self.ref.loc28_32, call_param2 [concrete = constants.%.802] // CHECK:STDOUT: %self.param: %D = value_param call_param0 // CHECK:STDOUT: %Self.ref.loc28_14: type = name_ref Self, @D.as.UseSelf.impl.%D.ref [concrete = constants.%D] // CHECK:STDOUT: %self: %D = value_binding self, %self.param @@ -333,6 +339,7 @@ impl D as SelfNested { // CHECK:STDOUT: %Self: %UseSelf.type = symbolic_binding Self, 0 [symbolic = %Self (constants.%Self.f7b)] // CHECK:STDOUT: %Self.binding.as_type: type = symbolic_binding_type Self, 0, %Self [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type.e3d)] // CHECK:STDOUT: %pattern_type: type = pattern_type %Self.binding.as_type [symbolic = %pattern_type (constants.%pattern_type.431)] +// CHECK:STDOUT: %.loc16_32.1: form = init_form %Self.binding.as_type, call_param2 [symbolic = %.loc16_32.1 (constants.%.712)] // CHECK:STDOUT: // CHECK:STDOUT: fn(%self.param: @UseSelf.F.%Self.binding.as_type (%Self.binding.as_type.e3d), %x.param: @UseSelf.F.%Self.binding.as_type (%Self.binding.as_type.e3d)) -> @UseSelf.F.%Self.binding.as_type (%Self.binding.as_type.e3d); // CHECK:STDOUT: } @@ -373,18 +380,21 @@ impl D as SelfNested { // CHECK:STDOUT: %Self => constants.%Self.f7b // CHECK:STDOUT: %Self.binding.as_type => constants.%Self.binding.as_type.e3d // CHECK:STDOUT: %pattern_type => constants.%pattern_type.431 +// CHECK:STDOUT: %.loc16_32.1 => constants.%.712 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @UseSelf.F(constants.%UseSelf.facet.d4d) { // CHECK:STDOUT: %Self => constants.%UseSelf.facet.d4d // CHECK:STDOUT: %Self.binding.as_type => constants.%C // CHECK:STDOUT: %pattern_type => constants.%pattern_type.7c7 +// CHECK:STDOUT: %.loc16_32.1 => constants.%.355 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @UseSelf.F(constants.%UseSelf.facet.6f8) { // CHECK:STDOUT: %Self => constants.%UseSelf.facet.6f8 // CHECK:STDOUT: %Self.binding.as_type => constants.%D // CHECK:STDOUT: %pattern_type => constants.%pattern_type.9c8 +// CHECK:STDOUT: %.loc16_32.1 => constants.%.802 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @SelfNested.F(constants.%Self.aed) { diff --git a/toolchain/check/testdata/impl/use_assoc_entity.carbon b/toolchain/check/testdata/impl/use_assoc_entity.carbon index 35a6e6b5078d..732658edd0fd 100644 --- a/toolchain/check/testdata/impl/use_assoc_entity.carbon +++ b/toolchain/check/testdata/impl/use_assoc_entity.carbon @@ -358,6 +358,7 @@ fn F() { // CHECK:STDOUT: %J.lookup_impl_witness.89e: = lookup_impl_witness %Self.8a1, @J [symbolic] // CHECK:STDOUT: %impl.elem0.335: type = impl_witness_access %J.lookup_impl_witness.89e, element0 [symbolic] // CHECK:STDOUT: %pattern_type.c1a: type = pattern_type %impl.elem0.335 [symbolic] +// CHECK:STDOUT: %.f80: form = init_form %impl.elem0.335, call_param2 [symbolic] // CHECK:STDOUT: %J.F.type: type = fn_type @J.F [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %J.F: %J.F.type = struct_value () [concrete] @@ -376,6 +377,7 @@ fn F() { // CHECK:STDOUT: %J.impl_witness.5bf: = impl_witness @empty_tuple.type.as.J.impl.%J.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] +// CHECK:STDOUT: %.88a: form = init_form %i32, call_param2 [concrete] // CHECK:STDOUT: %empty_tuple.type.as.J.impl.F.type: type = fn_type @empty_tuple.type.as.J.impl.F [concrete] // CHECK:STDOUT: %empty_tuple.type.as.J.impl.F: %empty_tuple.type.as.J.impl.F.type = struct_value () [concrete] // CHECK:STDOUT: %J.facet.a51: %J.type = facet_value %empty_tuple.type, (%J.impl_witness.5bf) [concrete] @@ -388,6 +390,7 @@ fn F() { // CHECK:STDOUT: %Int.as.Negate.impl.Op.e7f: %Int.as.Negate.impl.Op.type.e60 = struct_value () [concrete] // CHECK:STDOUT: %Negate.facet: %Negate.type = facet_value %i32, (%Negate.impl_witness.11c) [concrete] // CHECK:STDOUT: %.dd4: type = fn_type_with_self_type %Negate.Op.type, %Negate.facet [concrete] +// CHECK:STDOUT: %.4d5: form = init_form %i32, call_param1 [concrete] // CHECK:STDOUT: %Int.as.Negate.impl.Op.specific_fn: = specific_function %Int.as.Negate.impl.Op.e7f, @Int.as.Negate.impl.Op(%int_32) [concrete] // CHECK:STDOUT: %CallMethod.type: type = fn_type @CallMethod [concrete] // CHECK:STDOUT: %CallMethod: %CallMethod.type = struct_value () [concrete] @@ -416,6 +419,7 @@ fn F() { // CHECK:STDOUT: %J_where.type.d0e: type = facet_type <@J where %impl.elem0.a58 = %C> [concrete] // CHECK:STDOUT: %J.impl_witness.00b: = impl_witness @C.as.J.impl.%J.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.7c7: type = pattern_type %C [concrete] +// CHECK:STDOUT: %.355: form = init_form %C, call_param2 [concrete] // CHECK:STDOUT: %C.as.J.impl.F.type: type = fn_type @C.as.J.impl.F [concrete] // CHECK:STDOUT: %C.as.J.impl.F: %C.as.J.impl.F.type = struct_value () [concrete] // CHECK:STDOUT: %J.facet.05d: %J.type = facet_value %C, (%J.impl_witness.00b) [concrete] @@ -474,6 +478,7 @@ fn F() { // CHECK:STDOUT: } { // 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: %.loc12_25: form = init_form %i32, call_param1 [concrete = constants.%.4d5] // CHECK:STDOUT: %x.param: %empty_tuple.type = value_param call_param0 // CHECK:STDOUT: %.loc12_19.1: type = splice_block %.loc12_19.3 [concrete = constants.%empty_tuple.type] { // CHECK:STDOUT: %.loc12_19.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] @@ -516,6 +521,7 @@ fn F() { // CHECK:STDOUT: } { // CHECK:STDOUT: %impl.elem0.loc5_29: type = impl_witness_access constants.%J.lookup_impl_witness.89e, element0 [symbolic = %impl.elem0.loc5_23.1 (constants.%impl.elem0.335)] // CHECK:STDOUT: %U.ref.loc5_29: type = name_ref U, %impl.elem0.loc5_29 [symbolic = %impl.elem0.loc5_23.1 (constants.%impl.elem0.335)] +// CHECK:STDOUT: %.loc5_29.2: form = init_form %U.ref.loc5_29, call_param2 [symbolic = %.loc5_29.1 (constants.%.f80)] // CHECK:STDOUT: %self.param: @J.F.%Self.binding.as_type (%Self.binding.as_type.ed8) = value_param call_param0 // CHECK:STDOUT: %.loc5_14.1: type = splice_block %.loc5_14.2 [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type.ed8)] { // CHECK:STDOUT: %Self.ref: %J.type = name_ref Self, @J.%Self [symbolic = %Self (constants.%Self.8a1)] @@ -558,11 +564,12 @@ fn F() { // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32.loc9_31: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc9_31: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] +// CHECK:STDOUT: %.loc9_31: form = init_form %i32.loc9_31, call_param2 [concrete = constants.%.88a] // CHECK:STDOUT: %self.param: %empty_tuple.type = value_param call_param0 // CHECK:STDOUT: %Self.ref: type = name_ref Self, @empty_tuple.type.as.J.impl.%.loc8_7.2 [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %self: %empty_tuple.type = value_binding self, %self.param // CHECK:STDOUT: %u.param: %i32 = value_param call_param1 -// CHECK:STDOUT: %.loc9: type = splice_block %i32.loc9_23 [concrete = constants.%i32] { +// CHECK:STDOUT: %.loc9_23: type = splice_block %i32.loc9_23 [concrete = constants.%i32] { // CHECK:STDOUT: %int_32.loc9_23: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc9_23: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } @@ -589,6 +596,7 @@ fn F() { // CHECK:STDOUT: %return.param_patt: %pattern_type.7c7 = out_param_pattern %return.patt, call_param2 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc22_29: type = name_ref C, file.%C.decl [concrete = constants.%C] +// CHECK:STDOUT: %.loc22_29: form = init_form %C.ref.loc22_29, call_param2 [concrete = constants.%.355] // CHECK:STDOUT: %self.param: %C = value_param call_param0 // CHECK:STDOUT: %Self.ref: type = name_ref Self, @C.as.J.impl.%C.ref.loc21_6 [concrete = constants.%C] // CHECK:STDOUT: %self: %C = value_binding self, %self.param @@ -626,6 +634,7 @@ fn F() { // CHECK:STDOUT: %J.lookup_impl_witness: = lookup_impl_witness %Self, @J [symbolic = %J.lookup_impl_witness (constants.%J.lookup_impl_witness.89e)] // CHECK:STDOUT: %impl.elem0.loc5_23.1: type = impl_witness_access %J.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc5_23.1 (constants.%impl.elem0.335)] // CHECK:STDOUT: %pattern_type.loc5_20: type = pattern_type %impl.elem0.loc5_23.1 [symbolic = %pattern_type.loc5_20 (constants.%pattern_type.c1a)] +// CHECK:STDOUT: %.loc5_29.1: form = init_form %impl.elem0.loc5_23.1, call_param2 [symbolic = %.loc5_29.1 (constants.%.f80)] // CHECK:STDOUT: // CHECK:STDOUT: fn(%self.param: @J.F.%Self.binding.as_type (%Self.binding.as_type.ed8), %u.param: @J.F.%impl.elem0.loc5_23.1 (%impl.elem0.335)) -> @J.F.%impl.elem0.loc5_23.1 (%impl.elem0.335); // CHECK:STDOUT: } @@ -680,6 +689,7 @@ fn F() { // CHECK:STDOUT: %J.lookup_impl_witness => constants.%J.lookup_impl_witness.89e // CHECK:STDOUT: %impl.elem0.loc5_23.1 => constants.%impl.elem0.335 // CHECK:STDOUT: %pattern_type.loc5_20 => constants.%pattern_type.c1a +// CHECK:STDOUT: %.loc5_29.1 => constants.%.f80 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @U(constants.%.Self.2fa) {} @@ -691,6 +701,7 @@ fn F() { // CHECK:STDOUT: %J.lookup_impl_witness => constants.%J.impl_witness.5bf // CHECK:STDOUT: %impl.elem0.loc5_23.1 => constants.%i32 // CHECK:STDOUT: %pattern_type.loc5_20 => constants.%pattern_type.7ce +// CHECK:STDOUT: %.loc5_29.1 => constants.%.88a // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @J.F(constants.%J.facet.05d) { @@ -700,6 +711,7 @@ fn F() { // CHECK:STDOUT: %J.lookup_impl_witness => constants.%J.impl_witness.00b // CHECK:STDOUT: %impl.elem0.loc5_23.1 => constants.%C // CHECK:STDOUT: %pattern_type.loc5_20 => constants.%pattern_type.7c7 +// CHECK:STDOUT: %.loc5_29.1 => constants.%.355 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- associated_type_in_function_signature.carbon @@ -712,6 +724,7 @@ fn F() { // CHECK:STDOUT: %J.lookup_impl_witness.89e: = lookup_impl_witness %Self.8a1, @J [symbolic] // CHECK:STDOUT: %impl.elem0.335: type = impl_witness_access %J.lookup_impl_witness.89e, element0 [symbolic] // CHECK:STDOUT: %pattern_type.c1a: type = pattern_type %impl.elem0.335 [symbolic] +// CHECK:STDOUT: %.eaf: form = init_form %impl.elem0.335, call_param1 [symbolic] // CHECK:STDOUT: %J.F.type: type = fn_type @J.F [concrete] // CHECK:STDOUT: %J.F: %J.F.type = struct_value () [concrete] // CHECK:STDOUT: %assoc1.a57: %J.assoc_type = assoc_entity element1, @J.%J.F.decl [concrete] @@ -730,6 +743,7 @@ fn F() { // CHECK:STDOUT: %J_where.type: type = facet_type <@J where %impl.elem0.a58 = %i32> [concrete] // CHECK:STDOUT: %J.impl_witness: = impl_witness @D.as.J.impl.%J.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] +// CHECK:STDOUT: %.4d5: form = init_form %i32, call_param1 [concrete] // CHECK:STDOUT: %D.as.J.impl.F.type: type = fn_type @D.as.J.impl.F [concrete] // CHECK:STDOUT: %D.as.J.impl.F: %D.as.J.impl.F.type = struct_value () [concrete] // CHECK:STDOUT: %J.facet: %J.type = facet_value %D, (%J.impl_witness) [concrete] @@ -743,6 +757,7 @@ fn F() { // CHECK:STDOUT: %Negate.facet: %Negate.type = facet_value %i32, (%Negate.impl_witness.11c) [concrete] // CHECK:STDOUT: %.dd4: type = fn_type_with_self_type %Negate.Op.type, %Negate.facet [concrete] // CHECK:STDOUT: %Int.as.Negate.impl.Op.specific_fn: = specific_function %Int.as.Negate.impl.Op.e7f, @Int.as.Negate.impl.Op(%int_32) [concrete] +// CHECK:STDOUT: %.941: form = init_form %i32, call_param0 [concrete] // CHECK:STDOUT: %CallFunction.type: type = fn_type @CallFunction [concrete] // CHECK:STDOUT: %CallFunction: %CallFunction.type = struct_value () [concrete] // CHECK:STDOUT: %.0e5: type = fn_type_with_self_type %J.F.type, %J.facet [concrete] @@ -815,6 +830,7 @@ fn F() { // CHECK:STDOUT: } { // 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: %.loc14: form = init_form %i32, call_param0 [concrete = constants.%.941] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } @@ -833,8 +849,9 @@ fn F() { // CHECK:STDOUT: } { // CHECK:STDOUT: %impl.elem0.loc5_17: type = impl_witness_access constants.%J.lookup_impl_witness.89e, element0 [symbolic = %impl.elem0.loc5_11.1 (constants.%impl.elem0.335)] // CHECK:STDOUT: %U.ref.loc5_17: type = name_ref U, %impl.elem0.loc5_17 [symbolic = %impl.elem0.loc5_11.1 (constants.%impl.elem0.335)] +// CHECK:STDOUT: %.loc5_17.2: form = init_form %U.ref.loc5_17, call_param1 [symbolic = %.loc5_17.1 (constants.%.eaf)] // CHECK:STDOUT: %u.param: @J.F.%impl.elem0.loc5_11.1 (%impl.elem0.335) = value_param call_param0 -// CHECK:STDOUT: %.loc5: type = splice_block %U.ref.loc5_11 [symbolic = %impl.elem0.loc5_11.1 (constants.%impl.elem0.335)] { +// CHECK:STDOUT: %.loc5_11: type = splice_block %U.ref.loc5_11 [symbolic = %impl.elem0.loc5_11.1 (constants.%impl.elem0.335)] { // CHECK:STDOUT: %impl.elem0.loc5_11.2: type = impl_witness_access constants.%J.lookup_impl_witness.89e, element0 [symbolic = %impl.elem0.loc5_11.1 (constants.%impl.elem0.335)] // CHECK:STDOUT: %U.ref.loc5_11: type = name_ref U, %impl.elem0.loc5_11.2 [symbolic = %impl.elem0.loc5_11.1 (constants.%impl.elem0.335)] // CHECK:STDOUT: } @@ -866,8 +883,9 @@ fn F() { // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32.loc11_19: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc11_19: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] +// CHECK:STDOUT: %.loc11_19: form = init_form %i32.loc11_19, call_param1 [concrete = constants.%.4d5] // CHECK:STDOUT: %u.param: %i32 = value_param call_param0 -// CHECK:STDOUT: %.loc11: type = splice_block %i32.loc11_11 [concrete = constants.%i32] { +// CHECK:STDOUT: %.loc11_11: type = splice_block %i32.loc11_11 [concrete = constants.%i32] { // CHECK:STDOUT: %int_32.loc11_11: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc11_11: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } @@ -897,6 +915,7 @@ fn F() { // CHECK:STDOUT: %J.lookup_impl_witness: = lookup_impl_witness %Self, @J [symbolic = %J.lookup_impl_witness (constants.%J.lookup_impl_witness.89e)] // CHECK:STDOUT: %impl.elem0.loc5_11.1: type = impl_witness_access %J.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc5_11.1 (constants.%impl.elem0.335)] // CHECK:STDOUT: %pattern_type: type = pattern_type %impl.elem0.loc5_11.1 [symbolic = %pattern_type (constants.%pattern_type.c1a)] +// CHECK:STDOUT: %.loc5_17.1: form = init_form %impl.elem0.loc5_11.1, call_param1 [symbolic = %.loc5_17.1 (constants.%.eaf)] // CHECK:STDOUT: // CHECK:STDOUT: fn(%u.param: @J.F.%impl.elem0.loc5_11.1 (%impl.elem0.335)) -> @J.F.%impl.elem0.loc5_11.1 (%impl.elem0.335); // CHECK:STDOUT: } @@ -939,6 +958,7 @@ fn F() { // CHECK:STDOUT: %J.lookup_impl_witness => constants.%J.lookup_impl_witness.89e // CHECK:STDOUT: %impl.elem0.loc5_11.1 => constants.%impl.elem0.335 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.c1a +// CHECK:STDOUT: %.loc5_17.1 => constants.%.eaf // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @U(constants.%.Self.2fa) {} @@ -948,6 +968,7 @@ fn F() { // CHECK:STDOUT: %J.lookup_impl_witness => constants.%J.impl_witness // CHECK:STDOUT: %impl.elem0.loc5_11.1 => constants.%i32 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.7ce +// CHECK:STDOUT: %.loc5_17.1 => constants.%.4d5 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- extend_impl_with_associated_type_in_signature.carbon @@ -961,10 +982,12 @@ fn F() { // CHECK:STDOUT: %J.lookup_impl_witness.89e: = lookup_impl_witness %Self.8a1, @J [symbolic] // CHECK:STDOUT: %impl.elem0.335: type = impl_witness_access %J.lookup_impl_witness.89e, element0 [symbolic] // CHECK:STDOUT: %pattern_type.c1a: type = pattern_type %impl.elem0.335 [symbolic] +// CHECK:STDOUT: %.eaf: form = init_form %impl.elem0.335, call_param1 [symbolic] // CHECK:STDOUT: %J.F.type: type = fn_type @J.F [concrete] // CHECK:STDOUT: %J.F: %J.F.type = struct_value () [concrete] // CHECK:STDOUT: %assoc1.a57: %J.assoc_type = assoc_entity element1, @J.%J.F.decl [concrete] // CHECK:STDOUT: %pattern_type.832: type = pattern_type %Self.binding.as_type.ed8 [symbolic] +// CHECK:STDOUT: %.f80: form = init_form %impl.elem0.335, call_param2 [symbolic] // CHECK:STDOUT: %J.G.type: type = fn_type @J.G [concrete] // CHECK:STDOUT: %J.G: %J.G.type = struct_value () [concrete] // CHECK:STDOUT: %assoc2: %J.assoc_type = assoc_entity element2, @J.%J.G.decl [concrete] @@ -981,9 +1004,11 @@ fn F() { // CHECK:STDOUT: %J_where.type: type = facet_type <@J where %impl.elem0.a58 = %i32> [concrete] // CHECK:STDOUT: %J.impl_witness: = impl_witness @E.as.J.impl.%J.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] +// CHECK:STDOUT: %.4d5: form = init_form %i32, call_param1 [concrete] // CHECK:STDOUT: %E.as.J.impl.F.type: type = fn_type @E.as.J.impl.F [concrete] // CHECK:STDOUT: %E.as.J.impl.F: %E.as.J.impl.F.type = struct_value () [concrete] // CHECK:STDOUT: %pattern_type.99f: type = pattern_type %E [concrete] +// CHECK:STDOUT: %.88a: form = init_form %i32, call_param2 [concrete] // CHECK:STDOUT: %E.as.J.impl.G.type: type = fn_type @E.as.J.impl.G [concrete] // CHECK:STDOUT: %E.as.J.impl.G: %E.as.J.impl.G.type = struct_value () [concrete] // CHECK:STDOUT: %J.facet: %J.type = facet_value %E, (%J.impl_witness) [concrete] @@ -1047,12 +1072,14 @@ fn F() { // CHECK:STDOUT: %J.lookup_impl_witness.264: = lookup_impl_witness %T, @J [symbolic] // CHECK:STDOUT: %impl.elem0.560: type = impl_witness_access %J.lookup_impl_witness.264, element0 [symbolic] // CHECK:STDOUT: %pattern_type.ad6: type = pattern_type %impl.elem0.560 [symbolic] +// CHECK:STDOUT: %.722: form = init_form %impl.elem0.560, call_param2 [symbolic] // CHECK:STDOUT: %GenericCallF.type: type = fn_type @GenericCallF [concrete] // CHECK:STDOUT: %GenericCallF: %GenericCallF.type = struct_value () [concrete] // CHECK:STDOUT: %require_complete.06a: = require_complete_type %impl.elem0.560 [symbolic] // CHECK:STDOUT: %require_complete.19a: = require_complete_type %T.binding.as_type [symbolic] // CHECK:STDOUT: %.322: type = fn_type_with_self_type %J.F.type, %T [symbolic] // CHECK:STDOUT: %impl.elem1: %.322 = impl_witness_access %J.lookup_impl_witness.264, element1 [symbolic] +// CHECK:STDOUT: %.873: form = init_form %impl.elem0.560, call_param1 [symbolic] // CHECK:STDOUT: %specific_impl_fn: = specific_impl_function %impl.elem1, @J.F(%T) [symbolic] // CHECK:STDOUT: %CallGeneric.type: type = fn_type @CallGeneric [concrete] // CHECK:STDOUT: %CallGeneric: %CallGeneric.type = struct_value () [concrete] @@ -1109,8 +1136,9 @@ fn F() { // CHECK:STDOUT: %T.ref.loc28_41: %J.type = name_ref T, %T.loc28_17.2 [symbolic = %T.loc28_17.1 (constants.%T)] // CHECK:STDOUT: %U.ref.loc28_42: %J.assoc_type = name_ref U, @U.%assoc0 [concrete = constants.%assoc0.d5c] // CHECK:STDOUT: %T.as_type.loc28_42: type = facet_access_type %T.ref.loc28_41 [symbolic = %T.binding.as_type (constants.%T.binding.as_type)] -// CHECK:STDOUT: %.loc28_42: type = converted %T.ref.loc28_41, %T.as_type.loc28_42 [symbolic = %T.binding.as_type (constants.%T.binding.as_type)] +// CHECK:STDOUT: %.loc28_42.2: type = converted %T.ref.loc28_41, %T.as_type.loc28_42 [symbolic = %T.binding.as_type (constants.%T.binding.as_type)] // CHECK:STDOUT: %impl.elem0.loc28_42: type = impl_witness_access constants.%J.lookup_impl_witness.264, element0 [symbolic = %impl.elem0.loc28_34.1 (constants.%impl.elem0.560)] +// CHECK:STDOUT: %.loc28_42.3: form = init_form %impl.elem0.loc28_42, call_param2 [symbolic = %.loc28_42.1 (constants.%.722)] // CHECK:STDOUT: %.loc28_21: type = splice_block %J.ref [concrete = constants.%J.type] { // CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.c39] // CHECK:STDOUT: %J.ref: type = name_ref J, file.%J.decl [concrete = constants.%J.type] @@ -1143,6 +1171,7 @@ fn F() { // CHECK:STDOUT: } { // 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: %.loc32: form = init_form %i32, call_param1 [concrete = constants.%.4d5] // CHECK:STDOUT: %e.param: %E = value_param call_param0 // CHECK:STDOUT: %E.ref: type = name_ref E, file.%E.decl [concrete = constants.%E] // CHECK:STDOUT: %e: %E = value_binding e, %e.param @@ -1164,8 +1193,9 @@ fn F() { // CHECK:STDOUT: } { // CHECK:STDOUT: %impl.elem0.loc5_17: type = impl_witness_access constants.%J.lookup_impl_witness.89e, element0 [symbolic = %impl.elem0.loc5_11.1 (constants.%impl.elem0.335)] // CHECK:STDOUT: %U.ref.loc5_17: type = name_ref U, %impl.elem0.loc5_17 [symbolic = %impl.elem0.loc5_11.1 (constants.%impl.elem0.335)] +// CHECK:STDOUT: %.loc5_17.2: form = init_form %U.ref.loc5_17, call_param1 [symbolic = %.loc5_17.1 (constants.%.eaf)] // CHECK:STDOUT: %u.param: @J.F.%impl.elem0.loc5_11.1 (%impl.elem0.335) = value_param call_param0 -// CHECK:STDOUT: %.loc5: type = splice_block %U.ref.loc5_11 [symbolic = %impl.elem0.loc5_11.1 (constants.%impl.elem0.335)] { +// CHECK:STDOUT: %.loc5_11: type = splice_block %U.ref.loc5_11 [symbolic = %impl.elem0.loc5_11.1 (constants.%impl.elem0.335)] { // CHECK:STDOUT: %impl.elem0.loc5_11.2: type = impl_witness_access constants.%J.lookup_impl_witness.89e, element0 [symbolic = %impl.elem0.loc5_11.1 (constants.%impl.elem0.335)] // CHECK:STDOUT: %U.ref.loc5_11: type = name_ref U, %impl.elem0.loc5_11.2 [symbolic = %impl.elem0.loc5_11.1 (constants.%impl.elem0.335)] // CHECK:STDOUT: } @@ -1184,6 +1214,7 @@ fn F() { // CHECK:STDOUT: } { // CHECK:STDOUT: %impl.elem0.loc6_29: type = impl_witness_access constants.%J.lookup_impl_witness.89e, element0 [symbolic = %impl.elem0.loc6_23.1 (constants.%impl.elem0.335)] // CHECK:STDOUT: %U.ref.loc6_29: type = name_ref U, %impl.elem0.loc6_29 [symbolic = %impl.elem0.loc6_23.1 (constants.%impl.elem0.335)] +// CHECK:STDOUT: %.loc6_29.2: form = init_form %U.ref.loc6_29, call_param2 [symbolic = %.loc6_29.1 (constants.%.f80)] // CHECK:STDOUT: %self.param: @J.G.%Self.binding.as_type (%Self.binding.as_type.ed8) = value_param call_param0 // CHECK:STDOUT: %.loc6_14.1: type = splice_block %.loc6_14.2 [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type.ed8)] { // CHECK:STDOUT: %Self.ref: %J.type = name_ref Self, @J.%Self [symbolic = %Self (constants.%Self.8a1)] @@ -1225,8 +1256,9 @@ fn F() { // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32.loc11_21: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc11_21: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] +// CHECK:STDOUT: %.loc11_21: form = init_form %i32.loc11_21, call_param1 [concrete = constants.%.4d5] // CHECK:STDOUT: %u.param: %i32 = value_param call_param0 -// CHECK:STDOUT: %.loc11: type = splice_block %i32.loc11_13 [concrete = constants.%i32] { +// CHECK:STDOUT: %.loc11_13: type = splice_block %i32.loc11_13 [concrete = constants.%i32] { // CHECK:STDOUT: %int_32.loc11_13: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc11_13: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } @@ -1244,11 +1276,12 @@ fn F() { // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32.loc14_33: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc14_33: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] +// CHECK:STDOUT: %.loc14_33: form = init_form %i32.loc14_33, call_param2 [concrete = constants.%.88a] // CHECK:STDOUT: %self.param: %E = value_param call_param0 // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%E [concrete = constants.%E] // CHECK:STDOUT: %self: %E = value_binding self, %self.param // CHECK:STDOUT: %v.param: %i32 = value_param call_param1 -// CHECK:STDOUT: %.loc14: type = splice_block %i32.loc14_25 [concrete = constants.%i32] { +// CHECK:STDOUT: %.loc14_25: type = splice_block %i32.loc14_25 [concrete = constants.%i32] { // CHECK:STDOUT: %int_32.loc14_25: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc14_25: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } @@ -1299,6 +1332,7 @@ fn F() { // CHECK:STDOUT: %J.lookup_impl_witness: = lookup_impl_witness %Self, @J [symbolic = %J.lookup_impl_witness (constants.%J.lookup_impl_witness.89e)] // CHECK:STDOUT: %impl.elem0.loc5_11.1: type = impl_witness_access %J.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc5_11.1 (constants.%impl.elem0.335)] // CHECK:STDOUT: %pattern_type: type = pattern_type %impl.elem0.loc5_11.1 [symbolic = %pattern_type (constants.%pattern_type.c1a)] +// CHECK:STDOUT: %.loc5_17.1: form = init_form %impl.elem0.loc5_11.1, call_param1 [symbolic = %.loc5_17.1 (constants.%.eaf)] // CHECK:STDOUT: // CHECK:STDOUT: fn(%u.param: @J.F.%impl.elem0.loc5_11.1 (%impl.elem0.335)) -> @J.F.%impl.elem0.loc5_11.1 (%impl.elem0.335); // CHECK:STDOUT: } @@ -1310,6 +1344,7 @@ fn F() { // CHECK:STDOUT: %J.lookup_impl_witness: = lookup_impl_witness %Self, @J [symbolic = %J.lookup_impl_witness (constants.%J.lookup_impl_witness.89e)] // CHECK:STDOUT: %impl.elem0.loc6_23.1: type = impl_witness_access %J.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc6_23.1 (constants.%impl.elem0.335)] // CHECK:STDOUT: %pattern_type.loc6_20: type = pattern_type %impl.elem0.loc6_23.1 [symbolic = %pattern_type.loc6_20 (constants.%pattern_type.c1a)] +// CHECK:STDOUT: %.loc6_29.1: form = init_form %impl.elem0.loc6_23.1, call_param2 [symbolic = %.loc6_29.1 (constants.%.f80)] // CHECK:STDOUT: // CHECK:STDOUT: fn(%self.param: @J.G.%Self.binding.as_type (%Self.binding.as_type.ed8), %v.param: @J.G.%impl.elem0.loc6_23.1 (%impl.elem0.335)) -> @J.G.%impl.elem0.loc6_23.1 (%impl.elem0.335); // CHECK:STDOUT: } @@ -1463,6 +1498,7 @@ fn F() { // CHECK:STDOUT: %J.lookup_impl_witness: = lookup_impl_witness %T.loc28_17.1, @J [symbolic = %J.lookup_impl_witness (constants.%J.lookup_impl_witness.264)] // CHECK:STDOUT: %impl.elem0.loc28_34.1: type = impl_witness_access %J.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc28_34.1 (constants.%impl.elem0.560)] // CHECK:STDOUT: %pattern_type.loc28_30: type = pattern_type %impl.elem0.loc28_34.1 [symbolic = %pattern_type.loc28_30 (constants.%pattern_type.ad6)] +// CHECK:STDOUT: %.loc28_42.1: form = init_form %impl.elem0.loc28_34.1, call_param2 [symbolic = %.loc28_42.1 (constants.%.722)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete.loc28_42: = require_complete_type %impl.elem0.loc28_34.1 [symbolic = %require_complete.loc28_42 (constants.%require_complete.06a)] @@ -1512,6 +1548,7 @@ fn F() { // CHECK:STDOUT: %J.lookup_impl_witness => constants.%J.lookup_impl_witness.89e // CHECK:STDOUT: %impl.elem0.loc5_11.1 => constants.%impl.elem0.335 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.c1a +// CHECK:STDOUT: %.loc5_17.1 => constants.%.eaf // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @J.G(constants.%Self.8a1) { @@ -1521,6 +1558,7 @@ fn F() { // CHECK:STDOUT: %J.lookup_impl_witness => constants.%J.lookup_impl_witness.89e // CHECK:STDOUT: %impl.elem0.loc6_23.1 => constants.%impl.elem0.335 // CHECK:STDOUT: %pattern_type.loc6_20 => constants.%pattern_type.c1a +// CHECK:STDOUT: %.loc6_29.1 => constants.%.f80 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @U(constants.%.Self.2fa) {} @@ -1530,6 +1568,7 @@ fn F() { // CHECK:STDOUT: %J.lookup_impl_witness => constants.%J.impl_witness // CHECK:STDOUT: %impl.elem0.loc5_11.1 => constants.%i32 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.7ce +// CHECK:STDOUT: %.loc5_17.1 => constants.%.4d5 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @J.G(constants.%J.facet) { @@ -1539,6 +1578,7 @@ fn F() { // CHECK:STDOUT: %J.lookup_impl_witness => constants.%J.impl_witness // CHECK:STDOUT: %impl.elem0.loc6_23.1 => constants.%i32 // CHECK:STDOUT: %pattern_type.loc6_20 => constants.%pattern_type.7ce +// CHECK:STDOUT: %.loc6_29.1 => constants.%.88a // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @U(constants.%T) {} @@ -1550,6 +1590,7 @@ fn F() { // CHECK:STDOUT: %J.lookup_impl_witness => constants.%J.lookup_impl_witness.264 // CHECK:STDOUT: %impl.elem0.loc28_34.1 => constants.%impl.elem0.560 // CHECK:STDOUT: %pattern_type.loc28_30 => constants.%pattern_type.ad6 +// CHECK:STDOUT: %.loc28_42.1 => constants.%.722 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @J.F(constants.%T) { @@ -1557,6 +1598,7 @@ fn F() { // CHECK:STDOUT: %J.lookup_impl_witness => constants.%J.lookup_impl_witness.264 // CHECK:STDOUT: %impl.elem0.loc5_11.1 => constants.%impl.elem0.560 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.ad6 +// CHECK:STDOUT: %.loc5_17.1 => constants.%.873 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @GenericCallF(constants.%J.facet) { @@ -1566,6 +1608,7 @@ fn F() { // CHECK:STDOUT: %J.lookup_impl_witness => constants.%J.impl_witness // CHECK:STDOUT: %impl.elem0.loc28_34.1 => constants.%i32 // CHECK:STDOUT: %pattern_type.loc28_30 => constants.%pattern_type.7ce +// CHECK:STDOUT: %.loc28_42.1 => constants.%.88a // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete.loc28_42 => constants.%complete_type.f8a @@ -1582,6 +1625,7 @@ fn F() { // CHECK:STDOUT: %Self.ab9: %I.type = symbolic_binding Self, 0 [symbolic] // CHECK:STDOUT: %Self.binding.as_type.d31: type = symbolic_binding_type Self, 0, %Self.ab9 [symbolic] // CHECK:STDOUT: %pattern_type.fa0: type = pattern_type %Self.binding.as_type.d31 [symbolic] +// CHECK:STDOUT: %.1fc: form = init_form %Self.binding.as_type.d31, call_param2 [symbolic] // CHECK:STDOUT: %I.Op.type: type = fn_type @I.Op [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %I.Op: %I.Op.type = struct_value () [concrete] @@ -1599,6 +1643,7 @@ fn F() { // CHECK:STDOUT: %impl.elem0.193: %facet_type = impl_witness_access %J.lookup_impl_witness.89e, element0 [symbolic] // CHECK:STDOUT: %as_type.d83: type = facet_access_type %impl.elem0.193 [symbolic] // CHECK:STDOUT: %pattern_type.d76: type = pattern_type %as_type.d83 [symbolic] +// CHECK:STDOUT: %.8da: form = init_form %as_type.d83, call_param1 [symbolic] // CHECK:STDOUT: %J.F.type: type = fn_type @J.F [concrete] // CHECK:STDOUT: %J.F: %J.F.type = struct_value () [concrete] // CHECK:STDOUT: %assoc1: %J.assoc_type = assoc_entity element1, @J.%J.F.decl [concrete] @@ -1612,12 +1657,14 @@ fn F() { // CHECK:STDOUT: %impl.elem0.397: %facet_type = impl_witness_access %J.lookup_impl_witness.264, element0 [symbolic] // CHECK:STDOUT: %as_type.baf: type = facet_access_type %impl.elem0.397 [symbolic] // CHECK:STDOUT: %pattern_type.bba: type = pattern_type %as_type.baf [symbolic] +// CHECK:STDOUT: %.997: form = init_form %as_type.baf, call_param2 [symbolic] // CHECK:STDOUT: %GenericResult.type: type = fn_type @GenericResult [concrete] // CHECK:STDOUT: %GenericResult: %GenericResult.type = struct_value () [concrete] // CHECK:STDOUT: %require_complete.9b3: = require_complete_type %as_type.baf [symbolic] // CHECK:STDOUT: %require_complete.19a: = require_complete_type %T.binding.as_type [symbolic] // CHECK:STDOUT: %.322: type = fn_type_with_self_type %J.F.type, %T [symbolic] // CHECK:STDOUT: %impl.elem1: %.322 = impl_witness_access %J.lookup_impl_witness.264, element1 [symbolic] +// CHECK:STDOUT: %.d40: form = init_form %as_type.baf, call_param1 [symbolic] // CHECK:STDOUT: %specific_impl_fn.c25: = specific_impl_function %impl.elem1, @J.F(%T) [symbolic] // CHECK:STDOUT: %I.lookup_impl_witness: = lookup_impl_witness %impl.elem0.397, @I [symbolic] // CHECK:STDOUT: %I.facet: %I.type = facet_value %as_type.baf, (%I.lookup_impl_witness) [symbolic] @@ -1665,10 +1712,11 @@ fn F() { // CHECK:STDOUT: %T.ref.loc12_42: %J.type = name_ref T, %T.loc12_18.2 [symbolic = %T.loc12_18.1 (constants.%T)] // CHECK:STDOUT: %U.ref.loc12_43: %J.assoc_type = name_ref U, @U.%assoc0 [concrete = constants.%assoc0.918] // CHECK:STDOUT: %T.as_type.loc12_43: type = facet_access_type %T.ref.loc12_42 [symbolic = %T.binding.as_type (constants.%T.binding.as_type)] -// CHECK:STDOUT: %.loc12_43.1: type = converted %T.ref.loc12_42, %T.as_type.loc12_43 [symbolic = %T.binding.as_type (constants.%T.binding.as_type)] +// CHECK:STDOUT: %.loc12_43.2: type = converted %T.ref.loc12_42, %T.as_type.loc12_43 [symbolic = %T.binding.as_type (constants.%T.binding.as_type)] // CHECK:STDOUT: %impl.elem0.loc12_43: %facet_type = impl_witness_access constants.%J.lookup_impl_witness.264, element0 [symbolic = %impl.elem0.loc12_35.1 (constants.%impl.elem0.397)] // CHECK:STDOUT: %as_type.loc12_43: type = facet_access_type %impl.elem0.loc12_43 [symbolic = %as_type.loc12_35.1 (constants.%as_type.baf)] -// CHECK:STDOUT: %.loc12_43.2: type = converted %impl.elem0.loc12_43, %as_type.loc12_43 [symbolic = %as_type.loc12_35.1 (constants.%as_type.baf)] +// CHECK:STDOUT: %.loc12_43.3: type = converted %impl.elem0.loc12_43, %as_type.loc12_43 [symbolic = %as_type.loc12_35.1 (constants.%as_type.baf)] +// CHECK:STDOUT: %.loc12_43.4: form = init_form %.loc12_43.3, call_param2 [symbolic = %.loc12_43.1 (constants.%.997)] // CHECK:STDOUT: %.loc12_22: type = splice_block %J.ref [concrete = constants.%J.type] { // CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] // CHECK:STDOUT: %J.ref: type = name_ref J, file.%J.decl [concrete = constants.%J.type] @@ -1709,7 +1757,8 @@ fn F() { // CHECK:STDOUT: } { // CHECK:STDOUT: %Self.ref.loc4_33: %I.type = name_ref Self, @I.%Self [symbolic = %Self (constants.%Self.ab9)] // CHECK:STDOUT: %Self.as_type.loc4_33: type = facet_access_type %Self.ref.loc4_33 [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type.d31)] -// CHECK:STDOUT: %.loc4_33: type = converted %Self.ref.loc4_33, %Self.as_type.loc4_33 [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type.d31)] +// CHECK:STDOUT: %.loc4_33.2: type = converted %Self.ref.loc4_33, %Self.as_type.loc4_33 [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type.d31)] +// CHECK:STDOUT: %.loc4_33.3: form = init_form %.loc4_33.2, call_param2 [symbolic = %.loc4_33.1 (constants.%.1fc)] // CHECK:STDOUT: %self.param: @I.Op.%Self.binding.as_type (%Self.binding.as_type.d31) = value_param call_param0 // CHECK:STDOUT: %.loc4_15.1: type = splice_block %.loc4_15.2 [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type.d31)] { // CHECK:STDOUT: %Self.ref.loc4_15: %I.type = name_ref Self, @I.%Self [symbolic = %Self (constants.%Self.ab9)] @@ -1751,7 +1800,8 @@ fn F() { // CHECK:STDOUT: %impl.elem0.loc9_17: %facet_type = impl_witness_access constants.%J.lookup_impl_witness.89e, element0 [symbolic = %impl.elem0.loc9_11.1 (constants.%impl.elem0.193)] // CHECK:STDOUT: %U.ref.loc9_17: %facet_type = name_ref U, %impl.elem0.loc9_17 [symbolic = %impl.elem0.loc9_11.1 (constants.%impl.elem0.193)] // CHECK:STDOUT: %U.as_type.loc9_17: type = facet_access_type %U.ref.loc9_17 [symbolic = %as_type (constants.%as_type.d83)] -// CHECK:STDOUT: %.loc9_17: type = converted %U.ref.loc9_17, %U.as_type.loc9_17 [symbolic = %as_type (constants.%as_type.d83)] +// CHECK:STDOUT: %.loc9_17.2: type = converted %U.ref.loc9_17, %U.as_type.loc9_17 [symbolic = %as_type (constants.%as_type.d83)] +// CHECK:STDOUT: %.loc9_17.3: form = init_form %.loc9_17.2, call_param1 [symbolic = %.loc9_17.1 (constants.%.8da)] // CHECK:STDOUT: %u.param: @J.F.%as_type (%as_type.d83) = value_param call_param0 // CHECK:STDOUT: %.loc9_11.1: type = splice_block %.loc9_11.2 [symbolic = %as_type (constants.%as_type.d83)] { // CHECK:STDOUT: %impl.elem0.loc9_11.2: %facet_type = impl_witness_access constants.%J.lookup_impl_witness.89e, element0 [symbolic = %impl.elem0.loc9_11.1 (constants.%impl.elem0.193)] @@ -1783,6 +1833,7 @@ fn F() { // CHECK:STDOUT: %Self: %I.type = symbolic_binding Self, 0 [symbolic = %Self (constants.%Self.ab9)] // CHECK:STDOUT: %Self.binding.as_type: type = symbolic_binding_type Self, 0, %Self [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type.d31)] // CHECK:STDOUT: %pattern_type: type = pattern_type %Self.binding.as_type [symbolic = %pattern_type (constants.%pattern_type.fa0)] +// CHECK:STDOUT: %.loc4_33.1: form = init_form %Self.binding.as_type, call_param2 [symbolic = %.loc4_33.1 (constants.%.1fc)] // CHECK:STDOUT: // CHECK:STDOUT: fn(%self.param: @I.Op.%Self.binding.as_type (%Self.binding.as_type.d31), %b.param: @I.Op.%Self.binding.as_type (%Self.binding.as_type.d31)) -> @I.Op.%Self.binding.as_type (%Self.binding.as_type.d31); // CHECK:STDOUT: } @@ -1793,6 +1844,7 @@ fn F() { // CHECK:STDOUT: %impl.elem0.loc9_11.1: %facet_type = impl_witness_access %J.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc9_11.1 (constants.%impl.elem0.193)] // CHECK:STDOUT: %as_type: type = facet_access_type %impl.elem0.loc9_11.1 [symbolic = %as_type (constants.%as_type.d83)] // CHECK:STDOUT: %pattern_type: type = pattern_type %as_type [symbolic = %pattern_type (constants.%pattern_type.d76)] +// CHECK:STDOUT: %.loc9_17.1: form = init_form %as_type, call_param1 [symbolic = %.loc9_17.1 (constants.%.8da)] // CHECK:STDOUT: // CHECK:STDOUT: fn(%u.param: @J.F.%as_type (%as_type.d83)) -> @J.F.%as_type (%as_type.d83); // CHECK:STDOUT: } @@ -1805,6 +1857,7 @@ fn F() { // CHECK:STDOUT: %impl.elem0.loc12_35.1: %facet_type = impl_witness_access %J.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc12_35.1 (constants.%impl.elem0.397)] // CHECK:STDOUT: %as_type.loc12_35.1: type = facet_access_type %impl.elem0.loc12_35.1 [symbolic = %as_type.loc12_35.1 (constants.%as_type.baf)] // CHECK:STDOUT: %pattern_type.loc12_31: type = pattern_type %as_type.loc12_35.1 [symbolic = %pattern_type.loc12_31 (constants.%pattern_type.bba)] +// CHECK:STDOUT: %.loc12_43.1: form = init_form %as_type.loc12_35.1, call_param2 [symbolic = %.loc12_43.1 (constants.%.997)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete.loc12_43: = require_complete_type %as_type.loc12_35.1 [symbolic = %require_complete.loc12_43 (constants.%require_complete.9b3)] @@ -1873,6 +1926,7 @@ fn F() { // CHECK:STDOUT: %Self => constants.%Self.ab9 // CHECK:STDOUT: %Self.binding.as_type => constants.%Self.binding.as_type.d31 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.fa0 +// CHECK:STDOUT: %.loc4_33.1 => constants.%.1fc // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @U(constants.%Self.8a1) {} @@ -1883,6 +1937,7 @@ fn F() { // CHECK:STDOUT: %impl.elem0.loc9_11.1 => constants.%impl.elem0.193 // CHECK:STDOUT: %as_type => constants.%as_type.d83 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.d76 +// CHECK:STDOUT: %.loc9_17.1 => constants.%.8da // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @U(constants.%T) {} @@ -1895,6 +1950,7 @@ fn F() { // CHECK:STDOUT: %impl.elem0.loc12_35.1 => constants.%impl.elem0.397 // CHECK:STDOUT: %as_type.loc12_35.1 => constants.%as_type.baf // CHECK:STDOUT: %pattern_type.loc12_31 => constants.%pattern_type.bba +// CHECK:STDOUT: %.loc12_43.1 => constants.%.997 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @J.F(constants.%T) { @@ -1903,12 +1959,14 @@ fn F() { // CHECK:STDOUT: %impl.elem0.loc9_11.1 => constants.%impl.elem0.397 // CHECK:STDOUT: %as_type => constants.%as_type.baf // CHECK:STDOUT: %pattern_type => constants.%pattern_type.bba +// CHECK:STDOUT: %.loc9_17.1 => constants.%.d40 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @I.Op(constants.%I.facet) { // CHECK:STDOUT: %Self => constants.%I.facet // CHECK:STDOUT: %Self.binding.as_type => constants.%as_type.baf // CHECK:STDOUT: %pattern_type => constants.%pattern_type.bba +// CHECK:STDOUT: %.loc4_33.1 => constants.%.997 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- interface_qualified.carbon @@ -1923,6 +1981,7 @@ fn F() { // CHECK:STDOUT: %J.lookup_impl_witness.89e: = lookup_impl_witness %Self, @J [symbolic] // CHECK:STDOUT: %impl.elem0.335: type = impl_witness_access %J.lookup_impl_witness.89e, element0 [symbolic] // CHECK:STDOUT: %pattern_type.c1a: type = pattern_type %impl.elem0.335 [symbolic] +// CHECK:STDOUT: %.f80: form = init_form %impl.elem0.335, call_param2 [symbolic] // CHECK:STDOUT: %J.G.type: type = fn_type @J.G [concrete] // CHECK:STDOUT: %J.G: %J.G.type = struct_value () [concrete] // CHECK:STDOUT: %assoc1: %J.assoc_type = assoc_entity element1, @J.%J.G.decl [concrete] @@ -1935,6 +1994,7 @@ fn F() { // CHECK:STDOUT: %J.lookup_impl_witness.264: = lookup_impl_witness %T, @J [symbolic] // CHECK:STDOUT: %impl.elem0.560: type = impl_witness_access %J.lookup_impl_witness.264, element0 [symbolic] // CHECK:STDOUT: %pattern_type.ad6: type = pattern_type %impl.elem0.560 [symbolic] +// CHECK:STDOUT: %.722: form = init_form %impl.elem0.560, call_param2 [symbolic] // CHECK:STDOUT: %GenericCallInterfaceQualified.type: type = fn_type @GenericCallInterfaceQualified [concrete] // CHECK:STDOUT: %GenericCallInterfaceQualified: %GenericCallInterfaceQualified.type = struct_value () [concrete] // CHECK:STDOUT: %require_complete.06a: = require_complete_type %impl.elem0.560 [symbolic] @@ -1971,8 +2031,9 @@ fn F() { // CHECK:STDOUT: %T.ref.loc8_58: %J.type = name_ref T, %T.loc8_34.2 [symbolic = %T.loc8_34.1 (constants.%T)] // CHECK:STDOUT: %U.ref.loc8_59: %J.assoc_type = name_ref U, @U.%assoc0 [concrete = constants.%assoc0] // CHECK:STDOUT: %T.as_type.loc8_59: type = facet_access_type %T.ref.loc8_58 [symbolic = %T.binding.as_type (constants.%T.binding.as_type)] -// CHECK:STDOUT: %.loc8_59: type = converted %T.ref.loc8_58, %T.as_type.loc8_59 [symbolic = %T.binding.as_type (constants.%T.binding.as_type)] +// CHECK:STDOUT: %.loc8_59.2: type = converted %T.ref.loc8_58, %T.as_type.loc8_59 [symbolic = %T.binding.as_type (constants.%T.binding.as_type)] // CHECK:STDOUT: %impl.elem0.loc8_59: type = impl_witness_access constants.%J.lookup_impl_witness.264, element0 [symbolic = %impl.elem0.loc8_51.1 (constants.%impl.elem0.560)] +// CHECK:STDOUT: %.loc8_59.3: form = init_form %impl.elem0.loc8_59, call_param2 [symbolic = %.loc8_59.1 (constants.%.722)] // CHECK:STDOUT: %.loc8_38: type = splice_block %J.ref.loc8 [concrete = constants.%J.type] { // CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] // CHECK:STDOUT: %J.ref.loc8: type = name_ref J, file.%J.decl [concrete = constants.%J.type] @@ -2014,6 +2075,7 @@ fn F() { // CHECK:STDOUT: } { // CHECK:STDOUT: %impl.elem0.loc5_29: type = impl_witness_access constants.%J.lookup_impl_witness.89e, element0 [symbolic = %impl.elem0.loc5_23.1 (constants.%impl.elem0.335)] // CHECK:STDOUT: %U.ref.loc5_29: type = name_ref U, %impl.elem0.loc5_29 [symbolic = %impl.elem0.loc5_23.1 (constants.%impl.elem0.335)] +// CHECK:STDOUT: %.loc5_29.2: form = init_form %U.ref.loc5_29, call_param2 [symbolic = %.loc5_29.1 (constants.%.f80)] // CHECK:STDOUT: %self.param: @J.G.%Self.binding.as_type (%Self.binding.as_type) = value_param call_param0 // CHECK:STDOUT: %.loc5_14.1: type = splice_block %.loc5_14.2 [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type)] { // CHECK:STDOUT: %Self.ref: %J.type = name_ref Self, @J.%Self [symbolic = %Self (constants.%Self)] @@ -2052,6 +2114,7 @@ fn F() { // CHECK:STDOUT: %J.lookup_impl_witness: = lookup_impl_witness %Self, @J [symbolic = %J.lookup_impl_witness (constants.%J.lookup_impl_witness.89e)] // CHECK:STDOUT: %impl.elem0.loc5_23.1: type = impl_witness_access %J.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc5_23.1 (constants.%impl.elem0.335)] // CHECK:STDOUT: %pattern_type.loc5_20: type = pattern_type %impl.elem0.loc5_23.1 [symbolic = %pattern_type.loc5_20 (constants.%pattern_type.c1a)] +// CHECK:STDOUT: %.loc5_29.1: form = init_form %impl.elem0.loc5_23.1, call_param2 [symbolic = %.loc5_29.1 (constants.%.f80)] // CHECK:STDOUT: // CHECK:STDOUT: fn(%self.param: @J.G.%Self.binding.as_type (%Self.binding.as_type), %v.param: @J.G.%impl.elem0.loc5_23.1 (%impl.elem0.335)) -> @J.G.%impl.elem0.loc5_23.1 (%impl.elem0.335); // CHECK:STDOUT: } @@ -2063,6 +2126,7 @@ fn F() { // CHECK:STDOUT: %J.lookup_impl_witness: = lookup_impl_witness %T.loc8_34.1, @J [symbolic = %J.lookup_impl_witness (constants.%J.lookup_impl_witness.264)] // CHECK:STDOUT: %impl.elem0.loc8_51.1: type = impl_witness_access %J.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc8_51.1 (constants.%impl.elem0.560)] // CHECK:STDOUT: %pattern_type.loc8_47: type = pattern_type %impl.elem0.loc8_51.1 [symbolic = %pattern_type.loc8_47 (constants.%pattern_type.ad6)] +// CHECK:STDOUT: %.loc8_59.1: form = init_form %impl.elem0.loc8_51.1, call_param2 [symbolic = %.loc8_59.1 (constants.%.722)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete.loc8_59: = require_complete_type %impl.elem0.loc8_51.1 [symbolic = %require_complete.loc8_59 (constants.%require_complete.06a)] @@ -2096,6 +2160,7 @@ fn F() { // CHECK:STDOUT: %J.lookup_impl_witness => constants.%J.lookup_impl_witness.89e // CHECK:STDOUT: %impl.elem0.loc5_23.1 => constants.%impl.elem0.335 // CHECK:STDOUT: %pattern_type.loc5_20 => constants.%pattern_type.c1a +// CHECK:STDOUT: %.loc5_29.1 => constants.%.f80 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @U(constants.%T) {} @@ -2107,6 +2172,7 @@ fn F() { // CHECK:STDOUT: %J.lookup_impl_witness => constants.%J.lookup_impl_witness.264 // CHECK:STDOUT: %impl.elem0.loc8_51.1 => constants.%impl.elem0.560 // CHECK:STDOUT: %pattern_type.loc8_47 => constants.%pattern_type.ad6 +// CHECK:STDOUT: %.loc8_59.1 => constants.%.722 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @J.G(constants.%T) { @@ -2116,6 +2182,7 @@ fn F() { // CHECK:STDOUT: %J.lookup_impl_witness => constants.%J.lookup_impl_witness.264 // CHECK:STDOUT: %impl.elem0.loc5_23.1 => constants.%impl.elem0.560 // CHECK:STDOUT: %pattern_type.loc5_20 => constants.%pattern_type.ad6 +// CHECK:STDOUT: %.loc5_29.1 => constants.%.722 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- use_where.carbon @@ -2128,6 +2195,7 @@ fn F() { // CHECK:STDOUT: %J.lookup_impl_witness.89e: = lookup_impl_witness %Self.8a1, @J [symbolic] // CHECK:STDOUT: %impl.elem0.335: type = impl_witness_access %J.lookup_impl_witness.89e, element0 [symbolic] // CHECK:STDOUT: %pattern_type.c1a: type = pattern_type %impl.elem0.335 [symbolic] +// CHECK:STDOUT: %.eaf: form = init_form %impl.elem0.335, call_param1 [symbolic] // CHECK:STDOUT: %J.F.type: type = fn_type @J.F [concrete] // CHECK:STDOUT: %J.F: %J.F.type = struct_value () [concrete] // CHECK:STDOUT: %assoc1: %J.assoc_type = assoc_entity element1, @J.%J.F.decl [concrete] @@ -2146,6 +2214,7 @@ fn F() { // CHECK:STDOUT: %pattern_type.6f0: type = pattern_type %J_where.type [concrete] // CHECK:STDOUT: %T.binding.as_type: type = symbolic_binding_type T, 0, %T [symbolic] // CHECK:STDOUT: %pattern_type.12a: type = pattern_type %T.binding.as_type [symbolic] +// CHECK:STDOUT: %.4d5: form = init_form %i32, call_param1 [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %GenericCallFI32.type: type = fn_type @GenericCallFI32 [concrete] // CHECK:STDOUT: %GenericCallFI32: %GenericCallFI32.type = struct_value () [concrete] @@ -2204,6 +2273,7 @@ fn F() { // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32.loc8_51: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc8_51: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] +// CHECK:STDOUT: %.loc8_51: form = init_form %i32.loc8_51, call_param1 [concrete = constants.%.4d5] // CHECK:STDOUT: %.loc8_26.1: type = splice_block %.loc8_26.2 [concrete = constants.%J_where.type] { // CHECK:STDOUT: %.Self.1: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.c39] // CHECK:STDOUT: %J.ref: type = name_ref J, file.%J.decl [concrete = constants.%J.type] @@ -2246,8 +2316,9 @@ fn F() { // CHECK:STDOUT: } { // CHECK:STDOUT: %impl.elem0.loc5_17: type = impl_witness_access constants.%J.lookup_impl_witness.89e, element0 [symbolic = %impl.elem0.loc5_11.1 (constants.%impl.elem0.335)] // CHECK:STDOUT: %U.ref.loc5_17: type = name_ref U, %impl.elem0.loc5_17 [symbolic = %impl.elem0.loc5_11.1 (constants.%impl.elem0.335)] +// CHECK:STDOUT: %.loc5_17.2: form = init_form %U.ref.loc5_17, call_param1 [symbolic = %.loc5_17.1 (constants.%.eaf)] // CHECK:STDOUT: %u.param: @J.F.%impl.elem0.loc5_11.1 (%impl.elem0.335) = value_param call_param0 -// CHECK:STDOUT: %.loc5: type = splice_block %U.ref.loc5_11 [symbolic = %impl.elem0.loc5_11.1 (constants.%impl.elem0.335)] { +// CHECK:STDOUT: %.loc5_11: type = splice_block %U.ref.loc5_11 [symbolic = %impl.elem0.loc5_11.1 (constants.%impl.elem0.335)] { // CHECK:STDOUT: %impl.elem0.loc5_11.2: type = impl_witness_access constants.%J.lookup_impl_witness.89e, element0 [symbolic = %impl.elem0.loc5_11.1 (constants.%impl.elem0.335)] // CHECK:STDOUT: %U.ref.loc5_11: type = name_ref U, %impl.elem0.loc5_11.2 [symbolic = %impl.elem0.loc5_11.1 (constants.%impl.elem0.335)] // CHECK:STDOUT: } @@ -2275,6 +2346,7 @@ fn F() { // CHECK:STDOUT: %J.lookup_impl_witness: = lookup_impl_witness %Self, @J [symbolic = %J.lookup_impl_witness (constants.%J.lookup_impl_witness.89e)] // CHECK:STDOUT: %impl.elem0.loc5_11.1: type = impl_witness_access %J.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc5_11.1 (constants.%impl.elem0.335)] // CHECK:STDOUT: %pattern_type: type = pattern_type %impl.elem0.loc5_11.1 [symbolic = %pattern_type (constants.%pattern_type.c1a)] +// CHECK:STDOUT: %.loc5_17.1: form = init_form %impl.elem0.loc5_11.1, call_param1 [symbolic = %.loc5_17.1 (constants.%.eaf)] // CHECK:STDOUT: // CHECK:STDOUT: fn(%u.param: @J.F.%impl.elem0.loc5_11.1 (%impl.elem0.335)) -> @J.F.%impl.elem0.loc5_11.1 (%impl.elem0.335); // CHECK:STDOUT: } @@ -2318,6 +2390,7 @@ fn F() { // CHECK:STDOUT: %J.lookup_impl_witness => constants.%J.lookup_impl_witness.89e // CHECK:STDOUT: %impl.elem0.loc5_11.1 => constants.%impl.elem0.335 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.c1a +// CHECK:STDOUT: %.loc5_17.1 => constants.%.eaf // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @U(constants.%.Self.2fa) {} @@ -2333,6 +2406,7 @@ fn F() { // CHECK:STDOUT: %J.lookup_impl_witness => constants.%J.lookup_impl_witness.74d // CHECK:STDOUT: %impl.elem0.loc5_11.1 => constants.%i32 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.7ce +// CHECK:STDOUT: %.loc5_17.1 => constants.%.4d5 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- fail_todo_use_associated_constant_in_impl.carbon @@ -2345,6 +2419,7 @@ fn F() { // CHECK:STDOUT: %J.lookup_impl_witness.89e: = lookup_impl_witness %Self.8a1, @J [symbolic] // CHECK:STDOUT: %impl.elem0.335: type = impl_witness_access %J.lookup_impl_witness.89e, element0 [symbolic] // CHECK:STDOUT: %pattern_type.c1a: type = pattern_type %impl.elem0.335 [symbolic] +// CHECK:STDOUT: %.eaf: form = init_form %impl.elem0.335, call_param1 [symbolic] // CHECK:STDOUT: %J.F.type: type = fn_type @J.F [concrete] // CHECK:STDOUT: %J.F: %J.F.type = struct_value () [concrete] // CHECK:STDOUT: %assoc1: %J.assoc_type = assoc_entity element1, @J.%J.F.decl [concrete] @@ -2365,6 +2440,7 @@ fn F() { // CHECK:STDOUT: %E.as.J.impl.F.b4e6ab.1: %E.as.J.impl.F.type.4b5c2a.1 = struct_value () [concrete] // CHECK:STDOUT: %J.facet: %J.type = facet_value %E, (%J.impl_witness) [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] +// CHECK:STDOUT: %.4d5: form = init_form %i32, call_param1 [concrete] // CHECK:STDOUT: %E.as.J.impl.F.type.4b5c2a.2: type = fn_type @E.as.J.impl.F.loc27_21.2 [concrete] // CHECK:STDOUT: %E.as.J.impl.F.b4e6ab.2: %E.as.J.impl.F.type.4b5c2a.2 = struct_value () [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] @@ -2406,8 +2482,9 @@ fn F() { // CHECK:STDOUT: } { // CHECK:STDOUT: %impl.elem0.loc5_17: type = impl_witness_access constants.%J.lookup_impl_witness.89e, element0 [symbolic = %impl.elem0.loc5_11.1 (constants.%impl.elem0.335)] // CHECK:STDOUT: %U.ref.loc5_17: type = name_ref U, %impl.elem0.loc5_17 [symbolic = %impl.elem0.loc5_11.1 (constants.%impl.elem0.335)] +// CHECK:STDOUT: %.loc5_17.2: form = init_form %U.ref.loc5_17, call_param1 [symbolic = %.loc5_17.1 (constants.%.eaf)] // CHECK:STDOUT: %u.param: @J.F.%impl.elem0.loc5_11.1 (%impl.elem0.335) = value_param call_param0 -// CHECK:STDOUT: %.loc5: type = splice_block %U.ref.loc5_11 [symbolic = %impl.elem0.loc5_11.1 (constants.%impl.elem0.335)] { +// CHECK:STDOUT: %.loc5_11: type = splice_block %U.ref.loc5_11 [symbolic = %impl.elem0.loc5_11.1 (constants.%impl.elem0.335)] { // CHECK:STDOUT: %impl.elem0.loc5_11.2: type = impl_witness_access constants.%J.lookup_impl_witness.89e, element0 [symbolic = %impl.elem0.loc5_11.1 (constants.%impl.elem0.335)] // CHECK:STDOUT: %U.ref.loc5_11: type = name_ref U, %impl.elem0.loc5_11.2 [symbolic = %impl.elem0.loc5_11.1 (constants.%impl.elem0.335)] // CHECK:STDOUT: } @@ -2434,8 +2511,6 @@ fn F() { // CHECK:STDOUT: %E.as.J.impl.F.decl.loc27_21.1: %E.as.J.impl.F.type.4b5c2a.1 = fn_decl @E.as.J.impl.F.loc27_21.1 [concrete = constants.%E.as.J.impl.F.b4e6ab.1] { // CHECK:STDOUT: %u.patt: = value_binding_pattern u [concrete] // CHECK:STDOUT: %u.param_patt: = value_param_pattern %u.patt, call_param0 [concrete] -// CHECK:STDOUT: %return.patt: = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %U.ref.loc27_19: %J.assoc_type = name_ref U, @U.%assoc0 [concrete = constants.%assoc0.d5c] // CHECK:STDOUT: %.loc27_19: type = converted %U.ref.loc27_19, [concrete = ] @@ -2445,8 +2520,6 @@ fn F() { // CHECK:STDOUT: %.loc27_13: type = converted %U.ref.loc27_13, [concrete = ] // CHECK:STDOUT: } // CHECK:STDOUT: %u: = value_binding u, %u.param -// CHECK:STDOUT: %return.param: ref = out_param call_param1 -// CHECK:STDOUT: %return: ref = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc5: type = specific_constant @J.F.%U.ref.loc5_17, @J.F(constants.%J.facet) [concrete = constants.%i32] // CHECK:STDOUT: %E.as.J.impl.F.decl.loc27_21.2: %E.as.J.impl.F.type.4b5c2a.2 = fn_decl @E.as.J.impl.F.loc27_21.2 [concrete = constants.%E.as.J.impl.F.b4e6ab.2] { @@ -2502,14 +2575,15 @@ fn F() { // CHECK:STDOUT: %J.lookup_impl_witness: = lookup_impl_witness %Self, @J [symbolic = %J.lookup_impl_witness (constants.%J.lookup_impl_witness.89e)] // CHECK:STDOUT: %impl.elem0.loc5_11.1: type = impl_witness_access %J.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc5_11.1 (constants.%impl.elem0.335)] // CHECK:STDOUT: %pattern_type: type = pattern_type %impl.elem0.loc5_11.1 [symbolic = %pattern_type (constants.%pattern_type.c1a)] +// CHECK:STDOUT: %.loc5_17.1: form = init_form %impl.elem0.loc5_11.1, call_param1 [symbolic = %.loc5_17.1 (constants.%.eaf)] // CHECK:STDOUT: // CHECK:STDOUT: fn(%u.param: @J.F.%impl.elem0.loc5_11.1 (%impl.elem0.335)) -> @J.F.%impl.elem0.loc5_11.1 (%impl.elem0.335); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @E.as.J.impl.F.loc27_21.1(%u.param: ) -> { +// CHECK:STDOUT: fn @E.as.J.impl.F.loc27_21.1(%u.param: ) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %u.ref: = name_ref u, %u -// CHECK:STDOUT: return to %return +// CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @E.as.J.impl.F.loc27_21.2(%u.param: %i32) -> %i32 [thunk @E.as.J.impl.%E.as.J.impl.F.decl.loc27_21.1] { @@ -2528,6 +2602,7 @@ fn F() { // CHECK:STDOUT: %J.lookup_impl_witness => constants.%J.lookup_impl_witness.89e // CHECK:STDOUT: %impl.elem0.loc5_11.1 => constants.%impl.elem0.335 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.c1a +// CHECK:STDOUT: %.loc5_17.1 => constants.%.eaf // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @U(constants.%.Self) {} @@ -2537,6 +2612,7 @@ fn F() { // CHECK:STDOUT: %J.lookup_impl_witness => constants.%J.impl_witness // CHECK:STDOUT: %impl.elem0.loc5_11.1 => constants.%i32 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.7ce +// CHECK:STDOUT: %.loc5_17.1 => constants.%.4d5 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- fail_todo_call_extend_fn.carbon @@ -2879,14 +2955,9 @@ fn F() { // CHECK:STDOUT: requirement_rewrite %impl.elem0, %.loc8_32.2 // CHECK:STDOUT: } // CHECK:STDOUT: } -// CHECK:STDOUT: %E.G.decl: %E.G.type = fn_decl @E.G [concrete = constants.%E.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: %E.G.decl: %E.G.type = fn_decl @E.G [concrete = constants.%E.G] {} { // CHECK:STDOUT: %X.ref: %J.assoc_type = name_ref X, @X.%assoc0 [concrete = constants.%assoc0.cab] // CHECK:STDOUT: %.loc18_13: type = converted %X.ref, [concrete = ] -// CHECK:STDOUT: %return.param: ref = out_param call_param0 -// CHECK:STDOUT: %return: ref = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%empty_struct_type [concrete = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type @@ -2899,10 +2970,10 @@ fn F() { // CHECK:STDOUT: extend @E.as.J.impl.%.loc8_20 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @E.G() -> { +// CHECK:STDOUT: fn @E.G() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %.loc18_25: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] -// CHECK:STDOUT: return to %return +// CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @X(constants.%Self.8a1) {} @@ -2933,6 +3004,7 @@ fn F() { // CHECK:STDOUT: %J2.impl_witness.941: = impl_witness @empty_tuple.type.as.J2.impl.%J2.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %pattern_type.a96: type = pattern_type %empty_struct_type [concrete] +// CHECK:STDOUT: %.d7d: form = init_form %empty_struct_type, call_param2 [concrete] // CHECK:STDOUT: %empty_tuple.type.as.J2.impl.F.type.56bdaf.1: type = fn_type @empty_tuple.type.as.J2.impl.F.loc23_33.1 [concrete] // CHECK:STDOUT: %empty_tuple.type.as.J2.impl.F.7b8679.1: %empty_tuple.type.as.J2.impl.F.type.56bdaf.1 = struct_value () [concrete] // CHECK:STDOUT: %J2.facet.6c9: %J2.type = facet_value %empty_tuple.type, (%J2.impl_witness.941) [concrete] @@ -2943,6 +3015,7 @@ fn F() { // CHECK:STDOUT: %J2_where.type.de0: type = facet_type <@J2 where %impl.elem0 = %C2> [concrete] // CHECK:STDOUT: %J2.impl_witness.30f: = impl_witness @C2.as.J2.impl.%J2.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.8df: type = pattern_type %C2 [concrete] +// CHECK:STDOUT: %.da5: form = init_form %C2, call_param2 [concrete] // CHECK:STDOUT: %C2.as.J2.impl.F.type.d2a210.1: type = fn_type @C2.as.J2.impl.F.loc32_33.1 [concrete] // CHECK:STDOUT: %C2.as.J2.impl.F.720bb2.1: %C2.as.J2.impl.F.type.d2a210.1 = struct_value () [concrete] // CHECK:STDOUT: %J2.facet.f19: %J2.type = facet_value %C2, (%J2.impl_witness.30f) [concrete] @@ -3011,8 +3084,6 @@ fn F() { // CHECK:STDOUT: %self.param_patt: @J2.F.%pattern_type (%pattern_type.21d) = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %z.patt: = value_binding_pattern z [concrete] // CHECK:STDOUT: %z.param_patt: = value_param_pattern %z.patt, call_param1 [concrete] -// CHECK:STDOUT: %return.patt: = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: = out_param_pattern %return.patt, call_param2 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %Self.ref.loc19_35: %J2.type = name_ref Self, @J2.%Self [symbolic = %Self (constants.%Self)] // CHECK:STDOUT: %self.param: @J2.F.%Self.binding.as_type (%Self.binding.as_type) = value_param call_param0 @@ -3025,8 +3096,6 @@ fn F() { // 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: = value_binding z, %z.param -// CHECK:STDOUT: %return.param: ref = out_param call_param2 -// CHECK:STDOUT: %return: ref = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %assoc1: %J2.assoc_type = assoc_entity element1, %J2.F.decl [concrete = constants.%assoc1] // CHECK:STDOUT: @@ -3054,6 +3123,7 @@ fn F() { // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc23_31.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc23_31.2: type = converted %.loc23_31.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] +// CHECK:STDOUT: %.loc23_31.3: form = init_form %.loc23_31.2, call_param2 [concrete = constants.%.d7d] // CHECK:STDOUT: %self.param: %empty_tuple.type = value_param call_param0 // CHECK:STDOUT: %Self.ref: type = name_ref Self, @empty_tuple.type.as.J2.impl.%.loc22_7.2 [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %self: %empty_tuple.type = value_binding self, %self.param @@ -3071,14 +3141,10 @@ fn F() { // CHECK:STDOUT: %self.patt: %pattern_type.cb1 = value_binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.cb1 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %.param_patt: = value_param_pattern , call_param1 [concrete] -// CHECK:STDOUT: %return.patt: = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: = out_param_pattern %return.patt, call_param2 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %self.param: %empty_tuple.type = value_param call_param0 // CHECK:STDOUT: %self: %empty_tuple.type = value_binding self, %self.param // CHECK:STDOUT: %.param: = value_param call_param1 -// CHECK:STDOUT: %return.param: ref = out_param call_param2 -// CHECK:STDOUT: %return: ref = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %J2.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant, %empty_tuple.type.as.J2.impl.F.decl.loc23_33.2), @empty_tuple.type.as.J2.impl [concrete] // CHECK:STDOUT: %J2.impl_witness: = impl_witness %J2.impl_witness_table [concrete = constants.%J2.impl_witness.941] @@ -3099,6 +3165,7 @@ fn F() { // CHECK:STDOUT: %return.param_patt: %pattern_type.8df = out_param_pattern %return.patt, call_param2 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %C2.ref.loc32_30: type = name_ref C2, file.%C2.decl [concrete = constants.%C2] +// CHECK:STDOUT: %.loc32_30: form = init_form %C2.ref.loc32_30, call_param2 [concrete = constants.%.da5] // CHECK:STDOUT: %self.param: %C2 = value_param call_param0 // CHECK:STDOUT: %Self.ref: type = name_ref Self, @C2.as.J2.impl.%C2.ref.loc31_6 [concrete = constants.%C2] // CHECK:STDOUT: %self: %C2 = value_binding self, %self.param @@ -3113,14 +3180,10 @@ fn F() { // CHECK:STDOUT: %self.patt: %pattern_type.8df = value_binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.8df = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %.param_patt: = value_param_pattern , call_param1 [concrete] -// CHECK:STDOUT: %return.patt: = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: = out_param_pattern %return.patt, call_param2 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %self.param: %C2 = value_param call_param0 // CHECK:STDOUT: %self: %C2 = value_binding self, %self.param // CHECK:STDOUT: %.param: = value_param call_param1 -// CHECK:STDOUT: %return.param: ref = out_param call_param2 -// CHECK:STDOUT: %return: ref = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %J2.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant, %C2.as.J2.impl.F.decl.loc32_33.2), @C2.as.J2.impl [concrete] // CHECK:STDOUT: %J2.impl_witness: = impl_witness %J2.impl_witness_table [concrete = constants.%J2.impl_witness.30f] @@ -3148,7 +3211,7 @@ fn F() { // CHECK:STDOUT: %Self.binding.as_type: type = symbolic_binding_type Self, 0, %Self [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type)] // CHECK:STDOUT: %pattern_type: type = pattern_type %Self.binding.as_type [symbolic = %pattern_type (constants.%pattern_type.21d)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%self.param: @J2.F.%Self.binding.as_type (%Self.binding.as_type), %z.param: ) -> ; +// CHECK:STDOUT: fn(%self.param: @J2.F.%Self.binding.as_type (%Self.binding.as_type), %z.param: ); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @empty_tuple.type.as.J2.impl.F.loc23_33.1(%self.param: %empty_tuple.type, %z.param: %empty_struct_type) -> %empty_struct_type { @@ -3159,15 +3222,14 @@ fn F() { // CHECK:STDOUT: return %.loc23_43 to %return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @empty_tuple.type.as.J2.impl.F.loc23_33.2(%self.param: %empty_tuple.type, %.param: ) -> [thunk @empty_tuple.type.as.J2.impl.%empty_tuple.type.as.J2.impl.F.decl.loc23_33.1] { +// CHECK:STDOUT: fn @empty_tuple.type.as.J2.impl.F.loc23_33.2(%self.param: %empty_tuple.type, %.param: ) [thunk @empty_tuple.type.as.J2.impl.%empty_tuple.type.as.J2.impl.F.decl.loc23_33.1] { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %F.ref: %empty_tuple.type.as.J2.impl.F.type.56bdaf.1 = name_ref F, @empty_tuple.type.as.J2.impl.%empty_tuple.type.as.J2.impl.F.decl.loc23_33.1 [concrete = constants.%empty_tuple.type.as.J2.impl.F.7b8679.1] // CHECK:STDOUT: %self.ref: %empty_tuple.type = name_ref self, %self.param // CHECK:STDOUT: %.ref: = name_ref , %.param -// CHECK:STDOUT: %return.ref: ref = name_ref , %return.param // CHECK:STDOUT: %empty_tuple.type.as.J2.impl.F.bound: = bound_method %self.ref, %F.ref // CHECK:STDOUT: %empty_tuple.type.as.J2.impl.F.call: init %empty_struct_type = call %empty_tuple.type.as.J2.impl.F.bound(%self.ref, ) -// CHECK:STDOUT: return to %return +// CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @C2.as.J2.impl.F.loc32_33.1(%self.param: %C2, %z.param: %C2) -> %C2 { @@ -3181,15 +3243,14 @@ fn F() { // CHECK:STDOUT: return %.loc32_46.5 to %return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @C2.as.J2.impl.F.loc32_33.2(%self.param: %C2, %.param: ) -> [thunk @C2.as.J2.impl.%C2.as.J2.impl.F.decl.loc32_33.1] { +// CHECK:STDOUT: fn @C2.as.J2.impl.F.loc32_33.2(%self.param: %C2, %.param: ) [thunk @C2.as.J2.impl.%C2.as.J2.impl.F.decl.loc32_33.1] { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %F.ref: %C2.as.J2.impl.F.type.d2a210.1 = name_ref F, @C2.as.J2.impl.%C2.as.J2.impl.F.decl.loc32_33.1 [concrete = constants.%C2.as.J2.impl.F.720bb2.1] // CHECK:STDOUT: %self.ref: %C2 = name_ref self, %self.param // CHECK:STDOUT: %.ref: = name_ref , %.param -// CHECK:STDOUT: %return.ref: ref = name_ref , %return.param // CHECK:STDOUT: %C2.as.J2.impl.F.bound: = bound_method %self.ref, %F.ref // CHECK:STDOUT: %C2.as.J2.impl.F.call: init %C2 = call %C2.as.J2.impl.F.bound(%self.ref, ) -// CHECK:STDOUT: return to %return +// CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @U2(constants.%Self) {} @@ -3226,6 +3287,7 @@ fn F() { // CHECK:STDOUT: %K.lookup_impl_witness.a24: = lookup_impl_witness %Self.44d, @K [symbolic] // CHECK:STDOUT: %impl.elem0.c23: type = impl_witness_access %K.lookup_impl_witness.a24, element0 [symbolic] // CHECK:STDOUT: %pattern_type.9fa: type = pattern_type %impl.elem0.c23 [symbolic] +// CHECK:STDOUT: %.6f2: form = init_form %impl.elem0.c23, call_param2 [symbolic] // CHECK:STDOUT: %K.F.type: type = fn_type @K.F [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %K.F: %K.F.type = struct_value () [concrete] @@ -3241,10 +3303,12 @@ fn F() { // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %struct_type.x: type = struct_type {.x: %empty_tuple.type} [concrete] // CHECK:STDOUT: %pattern_type.414: type = pattern_type %struct_type.x [concrete] +// CHECK:STDOUT: %.f87: form = init_form %struct_type.x, call_param2 [concrete] // CHECK:STDOUT: %empty_tuple.type.as.K.impl.F.type.1710d5.1: type = fn_type @empty_tuple.type.as.K.impl.F.loc26_45.1 [concrete] // CHECK:STDOUT: %empty_tuple.type.as.K.impl.F.907e52.1: %empty_tuple.type.as.K.impl.F.type.1710d5.1 = struct_value () [concrete] // CHECK:STDOUT: %K.facet: %K.type = facet_value %empty_tuple.type, (%K.impl_witness) [concrete] // CHECK:STDOUT: %pattern_type.e85: type = pattern_type %struct_type.a [concrete] +// CHECK:STDOUT: %.c81: form = init_form %struct_type.a, call_param2 [concrete] // CHECK:STDOUT: %empty_tuple.type.as.K.impl.F.type.1710d5.2: type = fn_type @empty_tuple.type.as.K.impl.F.loc26_45.2 [concrete] // CHECK:STDOUT: %empty_tuple.type.as.K.impl.F.907e52.2: %empty_tuple.type.as.K.impl.F.type.1710d5.2 = struct_value () [concrete] // CHECK:STDOUT: %struct: %struct_type.x = struct_value (%empty_tuple) [concrete] @@ -3304,6 +3368,7 @@ fn F() { // CHECK:STDOUT: } { // CHECK:STDOUT: %impl.elem0.loc8_29: type = impl_witness_access constants.%K.lookup_impl_witness.a24, element0 [symbolic = %impl.elem0.loc8_23.1 (constants.%impl.elem0.c23)] // CHECK:STDOUT: %V.ref.loc8_29: type = name_ref V, %impl.elem0.loc8_29 [symbolic = %impl.elem0.loc8_23.1 (constants.%impl.elem0.c23)] +// CHECK:STDOUT: %.loc8_29.2: form = init_form %V.ref.loc8_29, call_param2 [symbolic = %.loc8_29.1 (constants.%.6f2)] // CHECK:STDOUT: %self.param: @K.F.%Self.binding.as_type (%Self.binding.as_type.87a) = value_param call_param0 // CHECK:STDOUT: %.loc8_14.1: type = splice_block %.loc8_14.2 [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type.87a)] { // CHECK:STDOUT: %Self.ref: %K.type = name_ref Self, @K.%Self [symbolic = %Self (constants.%Self.44d)] @@ -3347,6 +3412,7 @@ fn F() { // CHECK:STDOUT: %.loc26_42.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc26_42.2: type = converted %.loc26_42.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %struct_type.x.loc26_43: type = struct_type {.x: %empty_tuple.type} [concrete = constants.%struct_type.x] +// CHECK:STDOUT: %.loc26_43: form = init_form %struct_type.x.loc26_43, call_param2 [concrete = constants.%.f87] // CHECK:STDOUT: %self.param: %empty_tuple.type = value_param call_param0 // CHECK:STDOUT: %Self.ref: type = name_ref Self, @empty_tuple.type.as.K.impl.%.loc11_7.2 [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %self: %empty_tuple.type = value_binding self, %self.param @@ -3392,6 +3458,7 @@ fn F() { // CHECK:STDOUT: %K.lookup_impl_witness: = lookup_impl_witness %Self, @K [symbolic = %K.lookup_impl_witness (constants.%K.lookup_impl_witness.a24)] // CHECK:STDOUT: %impl.elem0.loc8_23.1: type = impl_witness_access %K.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc8_23.1 (constants.%impl.elem0.c23)] // CHECK:STDOUT: %pattern_type.loc8_20: type = pattern_type %impl.elem0.loc8_23.1 [symbolic = %pattern_type.loc8_20 (constants.%pattern_type.9fa)] +// CHECK:STDOUT: %.loc8_29.1: form = init_form %impl.elem0.loc8_23.1, call_param2 [symbolic = %.loc8_29.1 (constants.%.6f2)] // CHECK:STDOUT: // CHECK:STDOUT: fn(%self.param: @K.F.%Self.binding.as_type (%Self.binding.as_type.87a), %v.param: @K.F.%impl.elem0.loc8_23.1 (%impl.elem0.c23)) -> @K.F.%impl.elem0.loc8_23.1 (%impl.elem0.c23); // CHECK:STDOUT: } @@ -3434,6 +3501,7 @@ fn F() { // CHECK:STDOUT: %K.lookup_impl_witness => constants.%K.lookup_impl_witness.a24 // CHECK:STDOUT: %impl.elem0.loc8_23.1 => constants.%impl.elem0.c23 // CHECK:STDOUT: %pattern_type.loc8_20 => constants.%pattern_type.9fa +// CHECK:STDOUT: %.loc8_29.1 => constants.%.6f2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @V(constants.%.Self) {} @@ -3445,6 +3513,7 @@ fn F() { // CHECK:STDOUT: %K.lookup_impl_witness => constants.%K.impl_witness // CHECK:STDOUT: %impl.elem0.loc8_23.1 => constants.%struct_type.a // CHECK:STDOUT: %pattern_type.loc8_20 => constants.%pattern_type.e85 +// CHECK:STDOUT: %.loc8_29.1 => constants.%.c81 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- use_non-type_in_function.carbon @@ -3458,6 +3527,7 @@ fn F() { // CHECK:STDOUT: %struct_type.b.347: type = struct_type {.b: %empty_struct_type} [concrete] // CHECK:STDOUT: %M.assoc_type: type = assoc_entity_type @M [concrete] // CHECK:STDOUT: %assoc0: %M.assoc_type = assoc_entity element0, @M.%Z [concrete] +// CHECK:STDOUT: %.e6e: form = init_form %empty_struct_type, call_param0 [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %empty_struct_type [concrete] // CHECK:STDOUT: %M.G.type: type = fn_type @M.G [concrete] // CHECK:STDOUT: %M.G: %M.G.type = struct_value () [concrete] @@ -3523,6 +3593,7 @@ fn F() { // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc5_14.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc5_14.2: type = converted %.loc5_14.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] +// CHECK:STDOUT: %.loc5_14.3: form = init_form %.loc5_14.2, call_param0 [concrete = constants.%.e6e] // CHECK:STDOUT: %return.param: ref %empty_struct_type = out_param call_param0 // CHECK:STDOUT: %return: ref %empty_struct_type = return_slot %return.param // CHECK:STDOUT: } @@ -3548,6 +3619,7 @@ fn F() { // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc9_14.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc9_14.2: type = converted %.loc9_14.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] +// CHECK:STDOUT: %.loc9_14.3: form = init_form %.loc9_14.2, call_param0 [concrete = constants.%.e6e] // CHECK:STDOUT: %return.param: ref %empty_struct_type = out_param call_param0 // CHECK:STDOUT: %return: ref %empty_struct_type = return_slot %return.param // CHECK:STDOUT: } @@ -3609,6 +3681,7 @@ fn F() { // CHECK:STDOUT: %struct_type.b.86f: type = struct_type {.b: type} [concrete] // CHECK:STDOUT: %M.assoc_type: type = assoc_entity_type @M [concrete] // CHECK:STDOUT: %assoc0.5f4: %M.assoc_type = assoc_entity element0, @M.%Z [concrete] +// CHECK:STDOUT: %.d96: form = init_form type, call_param0 [concrete] // CHECK:STDOUT: %M.G.type: type = fn_type @M.G [concrete] // CHECK:STDOUT: %M.G: %M.G.type = struct_value () [concrete] // CHECK:STDOUT: %assoc1: %M.assoc_type = assoc_entity element1, @M.%M.G.decl [concrete] @@ -3727,6 +3800,7 @@ fn F() { // CHECK:STDOUT: %return.patt: %pattern_type.98f = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.98f = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { +// CHECK:STDOUT: %.loc7: form = init_form type, call_param0 [concrete = constants.%.d96] // CHECK:STDOUT: %return.param: ref type = out_param call_param0 // CHECK:STDOUT: %return: ref type = return_slot %return.param // CHECK:STDOUT: } @@ -3750,6 +3824,7 @@ fn F() { // CHECK:STDOUT: %return.patt: %pattern_type.98f = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.98f = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { +// CHECK:STDOUT: %.loc11: form = init_form type, call_param0 [concrete = constants.%.d96] // CHECK:STDOUT: %return.param: ref type = out_param call_param0 // CHECK:STDOUT: %return: ref type = return_slot %return.param // CHECK:STDOUT: } @@ -3768,6 +3843,7 @@ fn F() { // CHECK:STDOUT: %return.patt: %pattern_type.98f = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.98f = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { +// CHECK:STDOUT: %.loc17: form = init_form type, call_param0 [concrete = constants.%.d96] // CHECK:STDOUT: %return.param: ref type = out_param call_param0 // CHECK:STDOUT: %return: ref type = return_slot %return.param // CHECK:STDOUT: } @@ -3897,6 +3973,7 @@ fn F() { // CHECK:STDOUT: %bound_method.2a2: = bound_method %impl.elem0.f83, %Int.as.ImplicitAs.impl.Convert.specific_fn [symbolic] // CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.call: init Core.IntLiteral = call %bound_method.2a2(%impl.elem0.f83) [symbolic] // CHECK:STDOUT: %array_type.d35: type = array_type %Int.as.ImplicitAs.impl.Convert.call, bool [symbolic] +// CHECK:STDOUT: %.939: form = init_form %array_type.d35, call_param1 [symbolic] // CHECK:STDOUT: %pattern_type.3e2: type = pattern_type %array_type.d35 [symbolic] // CHECK:STDOUT: %I.F.type: type = fn_type @I.F [concrete] // CHECK:STDOUT: %I.F: %I.F.type = struct_value () [concrete] @@ -3922,6 +3999,7 @@ fn F() { // CHECK:STDOUT: %I.impl_witness: = impl_witness @empty_tuple.type.as.I.impl.%I.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %array_type.c9b: type = array_type %int_2.ecc, bool [concrete] +// CHECK:STDOUT: %.366: form = init_form %array_type.c9b, call_param1 [concrete] // CHECK:STDOUT: %pattern_type.5d5: type = pattern_type %array_type.c9b [concrete] // CHECK:STDOUT: %empty_tuple.type.as.I.impl.F.type: type = fn_type @empty_tuple.type.as.I.impl.F [concrete] // CHECK:STDOUT: %empty_tuple.type.as.I.impl.F: %empty_tuple.type.as.I.impl.F.type = struct_value () [concrete] @@ -4023,6 +4101,7 @@ fn F() { // CHECK:STDOUT: %.loc5_37.1: Core.IntLiteral = value_of_initializer %Int.as.ImplicitAs.impl.Convert.call.loc5_37.2 [symbolic = %Int.as.ImplicitAs.impl.Convert.call.loc5_37.1 (constants.%Int.as.ImplicitAs.impl.Convert.call)] // CHECK:STDOUT: %.loc5_37.2: Core.IntLiteral = converted %N.ref, %.loc5_37.1 [symbolic = %Int.as.ImplicitAs.impl.Convert.call.loc5_37.1 (constants.%Int.as.ImplicitAs.impl.Convert.call)] // CHECK:STDOUT: %array_type.loc5_38.2: type = array_type %.loc5_37.2, %.loc5_31.2 [symbolic = %array_type.loc5_38.1 (constants.%array_type.d35)] +// CHECK:STDOUT: %.loc5_38.2: form = init_form %array_type.loc5_38.2, call_param1 [symbolic = %.loc5_38.1 (constants.%.939)] // CHECK:STDOUT: %self.param: @I.F.%Self.binding.as_type (%Self.binding.as_type.d31) = value_param call_param0 // CHECK:STDOUT: %.loc5_14.1: type = splice_block %.loc5_14.2 [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type.d31)] { // CHECK:STDOUT: %Self.ref: %I.type = name_ref Self, @I.%Self [symbolic = %Self (constants.%Self.ab9)] @@ -4060,6 +4139,7 @@ fn F() { // CHECK:STDOUT: %.loc9_31.1: type = value_of_initializer %Bool.call [concrete = bool] // CHECK:STDOUT: %.loc9_31.2: type = converted %Bool.call, %.loc9_31.1 [concrete = bool] // CHECK:STDOUT: %array_type: type = array_type %int_2, %.loc9_31.2 [concrete = constants.%array_type.c9b] +// CHECK:STDOUT: %.loc9_38: form = init_form %array_type, call_param1 [concrete = constants.%.366] // CHECK:STDOUT: %self.param: %empty_tuple.type = value_param call_param0 // CHECK:STDOUT: %Self.ref: type = name_ref Self, @empty_tuple.type.as.I.impl.%.loc8_7.2 [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %self: %empty_tuple.type = value_binding self, %self.param @@ -4085,6 +4165,7 @@ fn F() { // CHECK:STDOUT: %bound_method.loc5_37.1: = bound_method %impl.elem0.loc5_37.1, constants.%Int.as.ImplicitAs.impl.Convert.specific_fn [symbolic = %bound_method.loc5_37.1 (constants.%bound_method.2a2)] // CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.call.loc5_37.1: init Core.IntLiteral = call %bound_method.loc5_37.1(%impl.elem0.loc5_37.1) [symbolic = %Int.as.ImplicitAs.impl.Convert.call.loc5_37.1 (constants.%Int.as.ImplicitAs.impl.Convert.call)] // CHECK:STDOUT: %array_type.loc5_38.1: type = array_type %Int.as.ImplicitAs.impl.Convert.call.loc5_37.1, bool [symbolic = %array_type.loc5_38.1 (constants.%array_type.d35)] +// CHECK:STDOUT: %.loc5_38.1: form = init_form %array_type.loc5_38.1, call_param1 [symbolic = %.loc5_38.1 (constants.%.939)] // CHECK:STDOUT: %pattern_type.loc5_22: type = pattern_type %array_type.loc5_38.1 [symbolic = %pattern_type.loc5_22 (constants.%pattern_type.3e2)] // CHECK:STDOUT: // CHECK:STDOUT: fn(%self.param: @I.F.%Self.binding.as_type (%Self.binding.as_type.d31)) -> @I.F.%array_type.loc5_38.1 (%array_type.d35); @@ -4124,6 +4205,7 @@ fn F() { // CHECK:STDOUT: %bound_method.loc5_37.1 => constants.%bound_method.2a2 // CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.call.loc5_37.1 => constants.%Int.as.ImplicitAs.impl.Convert.call // CHECK:STDOUT: %array_type.loc5_38.1 => constants.%array_type.d35 +// CHECK:STDOUT: %.loc5_38.1 => constants.%.939 // CHECK:STDOUT: %pattern_type.loc5_22 => constants.%pattern_type.3e2 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -4139,6 +4221,7 @@ fn F() { // CHECK:STDOUT: %bound_method.loc5_37.1 => constants.%bound_method.bea // CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.call.loc5_37.1 => constants.%int_2.ecc // CHECK:STDOUT: %array_type.loc5_38.1 => constants.%array_type.c9b +// CHECK:STDOUT: %.loc5_38.1 => constants.%.366 // CHECK:STDOUT: %pattern_type.loc5_22 => constants.%pattern_type.5d5 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/index/expr_category.carbon b/toolchain/check/testdata/index/expr_category.carbon index b0b892185e65..661ffe90cd88 100644 --- a/toolchain/check/testdata/index/expr_category.carbon +++ b/toolchain/check/testdata/index/expr_category.carbon @@ -42,6 +42,7 @@ fn ValueBinding(b: array(i32, 3)) { // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] // CHECK:STDOUT: %int_3.1ba: Core.IntLiteral = int_value 3 [concrete] // CHECK:STDOUT: %array_type: type = array_type %int_3.1ba, %i32 [concrete] +// CHECK:STDOUT: %.24c: form = init_form %array_type, call_param0 [concrete] // CHECK:STDOUT: %pattern_type.5d8: type = pattern_type %array_type [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] @@ -139,6 +140,7 @@ fn ValueBinding(b: array(i32, 3)) { // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [concrete = constants.%int_3.1ba] // CHECK:STDOUT: %array_type: type = array_type %int_3, %i32 [concrete = constants.%array_type] +// CHECK:STDOUT: %.loc15: form = init_form %array_type, call_param0 [concrete = constants.%.24c] // CHECK:STDOUT: %return.param: ref %array_type = out_param call_param0 // CHECK:STDOUT: %return: ref %array_type = return_slot %return.param // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/index/fail_expr_category.carbon b/toolchain/check/testdata/index/fail_expr_category.carbon index 5d3d63d11543..36bac9673901 100644 --- a/toolchain/check/testdata/index/fail_expr_category.carbon +++ b/toolchain/check/testdata/index/fail_expr_category.carbon @@ -51,6 +51,7 @@ fn G(b: array(i32, 3)) { // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] // CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [concrete] // CHECK:STDOUT: %array_type: type = array_type %int_3, %i32 [concrete] +// CHECK:STDOUT: %.24c: form = init_form %array_type, call_param0 [concrete] // CHECK:STDOUT: %pattern_type.5d8: type = pattern_type %array_type [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] @@ -131,6 +132,7 @@ fn G(b: array(i32, 3)) { // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [concrete = constants.%int_3] // CHECK:STDOUT: %array_type: type = array_type %int_3, %i32 [concrete = constants.%array_type] +// CHECK:STDOUT: %.loc15: form = init_form %array_type, call_param0 [concrete = constants.%.24c] // CHECK:STDOUT: %return.param: ref %array_type = out_param call_param0 // CHECK:STDOUT: %return: ref %array_type = return_slot %return.param // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/interface/assoc_const_in_generic.carbon b/toolchain/check/testdata/interface/assoc_const_in_generic.carbon index 7394665b32e2..a7603cc41a12 100644 --- a/toolchain/check/testdata/interface/assoc_const_in_generic.carbon +++ b/toolchain/check/testdata/interface/assoc_const_in_generic.carbon @@ -40,6 +40,7 @@ fn H() { // CHECK:STDOUT: %I.type.1ab: type = facet_type <@I, @I(%T)> [symbolic] // CHECK:STDOUT: %Self.fdb: %I.type.1ab = symbolic_binding Self, 1 [symbolic] // CHECK:STDOUT: %U: type = symbolic_binding U, 2 [symbolic] +// CHECK:STDOUT: %.6e5: form = init_form %U, call_param0 [symbolic] // CHECK:STDOUT: %pattern_type.62e: type = pattern_type %U [symbolic] // CHECK:STDOUT: %I.F.type.937: type = fn_type @I.F, @I(%T) [symbolic] // CHECK:STDOUT: %I.F.a37: %I.F.type.937 = struct_value () [symbolic] @@ -104,6 +105,7 @@ fn H() { // CHECK:STDOUT: %return.param_patt: @I.F.%pattern_type (%pattern_type.62e) = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %U.ref: type = name_ref U, %U.loc16_8.2 [symbolic = %U.loc16_8.1 (constants.%U)] +// CHECK:STDOUT: %.loc16_21.2: form = init_form %U.ref, call_param0 [symbolic = %.loc16_21.1 (constants.%.6e5)] // CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] // CHECK:STDOUT: %U.loc16_8.2: type = symbolic_binding U, 2 [symbolic = %U.loc16_8.1 (constants.%U)] // CHECK:STDOUT: %return.param: ref @I.F.%U.loc16_8.1 (%U) = out_param call_param0 @@ -122,6 +124,7 @@ fn H() { // CHECK:STDOUT: // CHECK:STDOUT: generic fn @I.F(@I.%T.loc15_13.2: type, @I.%Self.loc15_23.1: @I.%I.type (%I.type.1ab), %U.loc16_8.2: type) { // CHECK:STDOUT: %U.loc16_8.1: type = symbolic_binding U, 2 [symbolic = %U.loc16_8.1 (constants.%U)] +// CHECK:STDOUT: %.loc16_21.1: form = init_form %U.loc16_8.1, call_param0 [symbolic = %.loc16_21.1 (constants.%.6e5)] // CHECK:STDOUT: %pattern_type: type = pattern_type %U.loc16_8.1 [symbolic = %pattern_type (constants.%pattern_type.62e)] // CHECK:STDOUT: // CHECK:STDOUT: fn() -> @I.F.%U.loc16_8.1 (%U); @@ -172,6 +175,7 @@ fn H() { // CHECK:STDOUT: // CHECK:STDOUT: specific @I.F(constants.%T, constants.%Self.fdb, constants.%U) { // CHECK:STDOUT: %U.loc16_8.1 => constants.%U +// CHECK:STDOUT: %.loc16_21.1 => constants.%.6e5 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.62e // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/interface/fail_assoc_const_alias.carbon b/toolchain/check/testdata/interface/fail_assoc_const_alias.carbon index 6e08faa27bbb..63b0cd4dade8 100644 --- a/toolchain/check/testdata/interface/fail_assoc_const_alias.carbon +++ b/toolchain/check/testdata/interface/fail_assoc_const_alias.carbon @@ -99,6 +99,7 @@ interface C { // CHECK:STDOUT: %Self: %ImplicitAs.type.9fe = symbolic_binding Self, 1 [symbolic] // CHECK:STDOUT: %Self.binding.as_type: type = symbolic_binding_type Self, 1, %Self [symbolic] // CHECK:STDOUT: %pattern_type.8de: type = pattern_type %Self.binding.as_type [symbolic] +// CHECK:STDOUT: %.e5f: form = init_form %Dest, call_param1 [symbolic] // CHECK:STDOUT: %pattern_type.51d: type = pattern_type %Dest [symbolic] // CHECK:STDOUT: %ImplicitAs.Convert.type: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%Dest) [symbolic] // CHECK:STDOUT: %ImplicitAs.Convert: %ImplicitAs.Convert.type = struct_value () [symbolic] @@ -138,6 +139,7 @@ interface C { // CHECK:STDOUT: %return.param_patt: @ImplicitAs.Convert.%pattern_type.loc4_28 (%pattern_type.51d) = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %Dest.ref: type = name_ref Dest, @ImplicitAs.%Dest.loc3_22.2 [symbolic = %Dest (constants.%Dest)] +// CHECK:STDOUT: %.loc4_31.2: form = init_form %Dest.ref, call_param1 [symbolic = %.loc4_31.1 (constants.%.e5f)] // CHECK:STDOUT: %self.param: @ImplicitAs.Convert.%Self.binding.as_type (%Self.binding.as_type) = value_param call_param0 // CHECK:STDOUT: %.loc4_20.1: type = splice_block %.loc4_20.3 [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type)] { // CHECK:STDOUT: %.loc4_20.2: @ImplicitAs.Convert.%ImplicitAs.type (%ImplicitAs.type.9fe) = specific_constant @ImplicitAs.%Self.loc3_35.1, @ImplicitAs(constants.%Dest) [symbolic = %Self (constants.%Self)] @@ -167,6 +169,7 @@ interface C { // CHECK:STDOUT: %Self: @ImplicitAs.Convert.%ImplicitAs.type (%ImplicitAs.type.9fe) = symbolic_binding Self, 1 [symbolic = %Self (constants.%Self)] // CHECK:STDOUT: %Self.binding.as_type: type = symbolic_binding_type Self, 1, %Self [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type)] // CHECK:STDOUT: %pattern_type.loc4_14: type = pattern_type %Self.binding.as_type [symbolic = %pattern_type.loc4_14 (constants.%pattern_type.8de)] +// CHECK:STDOUT: %.loc4_31.1: form = init_form %Dest, call_param1 [symbolic = %.loc4_31.1 (constants.%.e5f)] // CHECK:STDOUT: %pattern_type.loc4_28: type = pattern_type %Dest [symbolic = %pattern_type.loc4_28 (constants.%pattern_type.51d)] // CHECK:STDOUT: // CHECK:STDOUT: fn(%self.param: @ImplicitAs.Convert.%Self.binding.as_type (%Self.binding.as_type)) -> @ImplicitAs.Convert.%Dest (%Dest); @@ -182,6 +185,7 @@ interface C { // CHECK:STDOUT: %Self => constants.%Self // CHECK:STDOUT: %Self.binding.as_type => constants.%Self.binding.as_type // CHECK:STDOUT: %pattern_type.loc4_14 => constants.%pattern_type.8de +// CHECK:STDOUT: %.loc4_31.1 => constants.%.e5f // CHECK:STDOUT: %pattern_type.loc4_28 => constants.%pattern_type.51d // CHECK:STDOUT: } // CHECK:STDOUT: @@ -237,14 +241,9 @@ interface C { // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: %T.ref: %I.assoc_type = name_ref T, @T.%assoc0 [concrete = constants.%assoc0.e06] // CHECK:STDOUT: %U: %I.assoc_type = alias_binding U, @T.%assoc0 [concrete = constants.%assoc0.e06] -// CHECK:STDOUT: %J.F.decl: %J.F.type = fn_decl @J.F [concrete = constants.%J.F] { -// 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: %J.F.decl: %J.F.type = fn_decl @J.F [concrete = constants.%J.F] {} { // CHECK:STDOUT: %Self.as_type: type = facet_access_type @J.%Self [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type)] // CHECK:STDOUT: %U.ref: = name_ref U, [concrete = ] -// CHECK:STDOUT: %return.param: ref = out_param call_param0 -// CHECK:STDOUT: %return: ref = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %assoc0: %J.assoc_type = assoc_entity element0, %J.F.decl [concrete = constants.%assoc0.5fd] // CHECK:STDOUT: @@ -266,7 +265,7 @@ interface C { // CHECK:STDOUT: %Self: %J.type = symbolic_binding Self, 0 [symbolic = %Self (constants.%Self.8a1)] // CHECK:STDOUT: %Self.binding.as_type: type = symbolic_binding_type Self, 0, %Self [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type)] // CHECK:STDOUT: -// CHECK:STDOUT: fn() -> ; +// CHECK:STDOUT: fn(); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @T(constants.%Self.ab9) {} @@ -304,6 +303,7 @@ interface C { // CHECK:STDOUT: %I2.lookup_impl_witness.d97: = lookup_impl_witness %Self.4a7, @I2 [symbolic] // CHECK:STDOUT: %I2.facet: %I2.type = facet_value %Self.binding.as_type, (%I2.lookup_impl_witness.d97) [symbolic] // CHECK:STDOUT: %impl.elem0.006: type = impl_witness_access %I2.lookup_impl_witness.d97, element0 [symbolic] +// CHECK:STDOUT: %.813: form = init_form %impl.elem0.006, call_param0 [symbolic] // CHECK:STDOUT: %pattern_type.a14: type = pattern_type %impl.elem0.006 [symbolic] // CHECK:STDOUT: %J2.F2.type: type = fn_type @J2.F2 [concrete] // CHECK:STDOUT: %J2.F2: %J2.F2.type = struct_value () [concrete] @@ -379,9 +379,10 @@ interface C { // CHECK:STDOUT: } { // CHECK:STDOUT: %Self.as_type: type = facet_access_type @J2.%Self [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type)] // CHECK:STDOUT: %I2.facet.loc15_14.2: %I2.type = facet_value %Self.as_type, (constants.%I2.lookup_impl_witness.d97) [symbolic = %I2.facet.loc15_14.1 (constants.%I2.facet)] -// CHECK:STDOUT: %.loc15_14.2: %I2.type = converted @J2.%Self, %I2.facet.loc15_14.2 [symbolic = %I2.facet.loc15_14.1 (constants.%I2.facet)] +// CHECK:STDOUT: %.loc15_14.3: %I2.type = converted @J2.%Self, %I2.facet.loc15_14.2 [symbolic = %I2.facet.loc15_14.1 (constants.%I2.facet)] // CHECK:STDOUT: %impl.elem0.loc15_14.2: type = impl_witness_access constants.%I2.lookup_impl_witness.d97, element0 [symbolic = %impl.elem0.loc15_14.1 (constants.%impl.elem0.006)] // CHECK:STDOUT: %U2.ref: type = name_ref U2, %impl.elem0.loc15_14.2 [symbolic = %impl.elem0.loc15_14.1 (constants.%impl.elem0.006)] +// CHECK:STDOUT: %.loc15_14.4: form = init_form %U2.ref, call_param0 [symbolic = %.loc15_14.2 (constants.%.813)] // CHECK:STDOUT: %return.param: ref @J2.F2.%impl.elem0.loc15_14.1 (%impl.elem0.006) = out_param call_param0 // CHECK:STDOUT: %return: ref @J2.F2.%impl.elem0.loc15_14.1 (%impl.elem0.006) = return_slot %return.param // CHECK:STDOUT: } @@ -425,6 +426,7 @@ interface C { // CHECK:STDOUT: %I2.lookup_impl_witness: = lookup_impl_witness %Self, @I2 [symbolic = %I2.lookup_impl_witness (constants.%I2.lookup_impl_witness.d97)] // CHECK:STDOUT: %I2.facet.loc15_14.1: %I2.type = facet_value %Self.binding.as_type, (%I2.lookup_impl_witness) [symbolic = %I2.facet.loc15_14.1 (constants.%I2.facet)] // CHECK:STDOUT: %impl.elem0.loc15_14.1: type = impl_witness_access %I2.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc15_14.1 (constants.%impl.elem0.006)] +// CHECK:STDOUT: %.loc15_14.2: form = init_form %impl.elem0.loc15_14.1, call_param0 [symbolic = %.loc15_14.2 (constants.%.813)] // CHECK:STDOUT: %pattern_type: type = pattern_type %impl.elem0.loc15_14.1 [symbolic = %pattern_type (constants.%pattern_type.a14)] // CHECK:STDOUT: // CHECK:STDOUT: fn() -> @J2.F2.%impl.elem0.loc15_14.1 (%impl.elem0.006); @@ -457,6 +459,7 @@ interface C { // CHECK:STDOUT: %I2.lookup_impl_witness => constants.%I2.lookup_impl_witness.d97 // CHECK:STDOUT: %I2.facet.loc15_14.1 => constants.%I2.facet // CHECK:STDOUT: %impl.elem0.loc15_14.1 => constants.%impl.elem0.006 +// CHECK:STDOUT: %.loc15_14.2 => constants.%.813 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.a14 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -467,6 +470,7 @@ interface C { // CHECK:STDOUT: %Self.c51: %A.type = symbolic_binding Self, 0 [symbolic] // CHECK:STDOUT: %Self.binding.as_type.55a: type = symbolic_binding_type Self, 0, %Self.c51 [symbolic] // CHECK:STDOUT: %pattern_type.df1: type = pattern_type %Self.binding.as_type.55a [symbolic] +// CHECK:STDOUT: %.39d: form = init_form type, call_param1 [concrete] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %A.F.type: type = fn_type @A.F [concrete] // CHECK:STDOUT: %A.F: %A.F.type = struct_value () [concrete] @@ -506,6 +510,7 @@ interface C { // CHECK:STDOUT: %return.patt: %pattern_type.98f = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.98f = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { +// CHECK:STDOUT: %.loc6_25: form = init_form type, call_param1 [concrete = constants.%.39d] // CHECK:STDOUT: %self.param: @A.F.%Self.binding.as_type (%Self.binding.as_type.55a) = value_param call_param0 // CHECK:STDOUT: %.loc6_14.1: type = splice_block %.loc6_14.2 [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type.55a)] { // CHECK:STDOUT: %Self.ref: %A.type = name_ref Self, @A.%Self [symbolic = %Self (constants.%Self.c51)] @@ -531,14 +536,9 @@ interface C { // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [concrete = constants.%A.type] // CHECK:STDOUT: %F.ref: %A.assoc_type = name_ref F, @A.%assoc0 [concrete = constants.%assoc0.e44] // CHECK:STDOUT: %F: %A.assoc_type = alias_binding F, @A.%assoc0 [concrete = constants.%assoc0.e44] -// CHECK:STDOUT: %B.G.decl: %B.G.type = fn_decl @B.G [concrete = constants.%B.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: %B.G.decl: %B.G.type = fn_decl @B.G [concrete = constants.%B.G] {} { // CHECK:STDOUT: %Self.as_type: type = facet_access_type @B.%Self [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type.8ee)] // CHECK:STDOUT: %F.ref: = name_ref F, [concrete = ] -// CHECK:STDOUT: %return.param: ref = out_param call_param0 -// CHECK:STDOUT: %return: ref = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %assoc0: %B.assoc_type = assoc_entity element0, %B.G.decl [concrete = constants.%assoc0.606] // CHECK:STDOUT: @@ -564,7 +564,7 @@ interface C { // CHECK:STDOUT: %Self: %B.type = symbolic_binding Self, 0 [symbolic = %Self (constants.%Self.d0b)] // CHECK:STDOUT: %Self.binding.as_type: type = symbolic_binding_type Self, 0, %Self [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type.8ee)] // CHECK:STDOUT: -// CHECK:STDOUT: fn() -> ; +// CHECK:STDOUT: fn(); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @A.F(constants.%Self.c51) { diff --git a/toolchain/check/testdata/interface/fail_lookup_undefined.carbon b/toolchain/check/testdata/interface/fail_lookup_undefined.carbon index 9d500ad55b18..2cccc853dec4 100644 --- a/toolchain/check/testdata/interface/fail_lookup_undefined.carbon +++ b/toolchain/check/testdata/interface/fail_lookup_undefined.carbon @@ -84,14 +84,9 @@ interface BeingDefined { // CHECK:STDOUT: // CHECK:STDOUT: interface @BeingDefined { // CHECK:STDOUT: %Self: %BeingDefined.type = symbolic_binding Self, 0 [symbolic = constants.%Self] -// CHECK:STDOUT: %BeingDefined.H.decl: %BeingDefined.H.type = fn_decl @BeingDefined.H [concrete = constants.%BeingDefined.H] { -// 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: %BeingDefined.H.decl: %BeingDefined.H.type = fn_decl @BeingDefined.H [concrete = constants.%BeingDefined.H] {} { // CHECK:STDOUT: %BeingDefined.ref: type = name_ref BeingDefined, file.%BeingDefined.decl [concrete = constants.%BeingDefined.type] // CHECK:STDOUT: %T.ref: = name_ref T, [concrete = ] -// CHECK:STDOUT: %return.param: ref = out_param call_param0 -// CHECK:STDOUT: %return: ref = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %assoc0: %BeingDefined.assoc_type = assoc_entity element0, %BeingDefined.H.decl [concrete = constants.%assoc0] // CHECK:STDOUT: %BeingDefined.I.decl: %BeingDefined.I.type = fn_decl @BeingDefined.I [concrete = constants.%BeingDefined.I] {} {} @@ -115,7 +110,7 @@ interface BeingDefined { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @BeingDefined.H(@BeingDefined.%Self: %BeingDefined.type) { -// CHECK:STDOUT: fn() -> ; +// CHECK:STDOUT: fn(); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @BeingDefined.I(@BeingDefined.%Self: %BeingDefined.type) { diff --git a/toolchain/check/testdata/interface/fail_member_lookup.carbon b/toolchain/check/testdata/interface/fail_member_lookup.carbon index aab3d5c440f2..7b0eeb60631f 100644 --- a/toolchain/check/testdata/interface/fail_member_lookup.carbon +++ b/toolchain/check/testdata/interface/fail_member_lookup.carbon @@ -97,8 +97,6 @@ fn G(U:! Different) -> U.(Interface.T); // CHECK:STDOUT: %Different.decl: type = interface_decl @Different [concrete = constants.%Different.type] {} {} // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] { // CHECK:STDOUT: %U.patt: %pattern_type.cb4 = symbolic_binding_pattern U, 0 [concrete] -// 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: %U.ref: %Different.type = name_ref U, %U.loc32_6.2 [symbolic = %U.loc32_6.1 (constants.%U)] // CHECK:STDOUT: %Interface.ref: type = name_ref Interface, file.%Interface.decl [concrete = constants.%Interface.type] @@ -109,8 +107,6 @@ fn G(U:! Different) -> U.(Interface.T); // CHECK:STDOUT: %Different.ref: type = name_ref Different, file.%Different.decl [concrete = constants.%Different.type] // CHECK:STDOUT: } // CHECK:STDOUT: %U.loc32_6.2: %Different.type = symbolic_binding U, 0 [symbolic = %U.loc32_6.1 (constants.%U)] -// CHECK:STDOUT: %return.param: ref = out_param call_param0 -// CHECK:STDOUT: %return: ref = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -171,7 +167,7 @@ fn G(U:! Different) -> U.(Interface.T); // CHECK:STDOUT: %U.loc32_6.1: %Different.type = symbolic_binding U, 0 [symbolic = %U.loc32_6.1 (constants.%U)] // CHECK:STDOUT: %U.binding.as_type: type = symbolic_binding_type U, 0, %U.loc32_6.1 [symbolic = %U.binding.as_type (constants.%U.binding.as_type)] // CHECK:STDOUT: -// CHECK:STDOUT: fn() -> ; +// CHECK:STDOUT: fn(); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Interface.F(constants.%Self.887) {} diff --git a/toolchain/check/testdata/interface/fail_todo_define_default_fn_inline.carbon b/toolchain/check/testdata/interface/fail_todo_define_default_fn_inline.carbon index 210acf0cd7c4..06bcfd462367 100644 --- a/toolchain/check/testdata/interface/fail_todo_define_default_fn_inline.carbon +++ b/toolchain/check/testdata/interface/fail_todo_define_default_fn_inline.carbon @@ -40,6 +40,7 @@ interface Interface { // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] +// CHECK:STDOUT: %.88a: form = init_form %i32, call_param2 [concrete] // CHECK:STDOUT: %Interface.G.type: type = fn_type @Interface.G [concrete] // CHECK:STDOUT: %Interface.G: %Interface.G.type = struct_value () [concrete] // CHECK:STDOUT: %assoc1: %Interface.assoc_type = assoc_entity element1, @Interface.%Interface.G.decl [concrete] @@ -77,6 +78,7 @@ interface Interface { // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32.loc26_35: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc26_35: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] +// CHECK:STDOUT: %.loc26_35: form = init_form %i32.loc26_35, call_param2 [concrete = constants.%.88a] // CHECK:STDOUT: %a.param: %i32 = value_param call_param0 // CHECK:STDOUT: %.loc26_19: type = splice_block %i32.loc26_19 [concrete = constants.%i32] { // CHECK:STDOUT: %int_32.loc26_19: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] diff --git a/toolchain/check/testdata/interface/fail_todo_define_default_fn_out_of_line.carbon b/toolchain/check/testdata/interface/fail_todo_define_default_fn_out_of_line.carbon index 1d8fb81e774f..be341c84957c 100644 --- a/toolchain/check/testdata/interface/fail_todo_define_default_fn_out_of_line.carbon +++ b/toolchain/check/testdata/interface/fail_todo_define_default_fn_out_of_line.carbon @@ -82,6 +82,7 @@ fn Interface.C.F[self: Self](U:! type, u: U*) -> U* { return u; } // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] +// CHECK:STDOUT: %.88a: form = init_form %i32, call_param2 [concrete] // CHECK:STDOUT: %Interface.G.type.cde93b.1: type = fn_type @Interface.G.loc13 [concrete] // CHECK:STDOUT: %Interface.G.433e0c.1: %Interface.G.type.cde93b.1 = struct_value () [concrete] // CHECK:STDOUT: %assoc1: %Interface.assoc_type = assoc_entity element1, @Interface.%Interface.G.decl [concrete] @@ -118,6 +119,7 @@ fn Interface.C.F[self: Self](U:! type, u: U*) -> U* { return u; } // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32.loc32_35: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc32_35: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] +// CHECK:STDOUT: %.loc32_35: form = init_form %i32.loc32_35, call_param2 [concrete = constants.%.88a] // CHECK:STDOUT: %a.param: %i32 = value_param call_param0 // CHECK:STDOUT: %.loc32_19: type = splice_block %i32.loc32_19 [concrete = constants.%i32] { // CHECK:STDOUT: %int_32.loc32_19: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] @@ -149,6 +151,7 @@ fn Interface.C.F[self: Self](U:! type, u: U*) -> U* { return u; } // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32.loc13_35: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc13_35: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] +// CHECK:STDOUT: %.loc13_35: form = init_form %i32.loc13_35, call_param2 [concrete = constants.%.88a] // CHECK:STDOUT: %a.param: %i32 = value_param call_param0 // CHECK:STDOUT: %.loc13_19: type = splice_block %i32.loc13_19 [concrete = constants.%i32] { // CHECK:STDOUT: %int_32.loc13_19: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] @@ -219,6 +222,7 @@ fn Interface.C.F[self: Self](U:! type, u: U*) -> U* { return u; } // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %ptr.18e: type = ptr_type %U.091 [symbolic] // CHECK:STDOUT: %pattern_type.423: type = pattern_type %ptr.18e [symbolic] +// CHECK:STDOUT: %.2cd: form = init_form %ptr.18e, call_param2 [symbolic] // CHECK:STDOUT: %C.F.type: type = fn_type @C.F, @C(%Self.887) [symbolic] // CHECK:STDOUT: %C.F: %C.F.type = struct_value () [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] @@ -262,6 +266,7 @@ fn Interface.C.F[self: Self](U:! type, u: U*) -> U* { return u; } // CHECK:STDOUT: } { // CHECK:STDOUT: %U.ref.loc20_50: type = name_ref U, %U.loc20 [symbolic = %U.loc14_22.1 (constants.%U.091)] // CHECK:STDOUT: %ptr.loc20_51: type = ptr_type %U.ref.loc20_50 [symbolic = %ptr.loc14_36.1 (constants.%ptr.18e)] +// CHECK:STDOUT: %.loc20_51: form = init_form %ptr.loc20_51, call_param2 [symbolic = %.loc14_43.1 (constants.%.2cd)] // CHECK:STDOUT: %self.param.loc20: @C.F.%C (%C) = value_param call_param0 // CHECK:STDOUT: %.loc20_24.1: type = splice_block %Self.ref.loc20 [symbolic = %C (constants.%C)] { // CHECK:STDOUT: %.loc20_24.2: type = specific_constant constants.%C, @C(constants.%Self.887) [symbolic = %C (constants.%C)] @@ -311,6 +316,7 @@ fn Interface.C.F[self: Self](U:! type, u: U*) -> U* { return u; } // CHECK:STDOUT: } { // CHECK:STDOUT: %U.ref.loc14_42: type = name_ref U, %U.loc14_22.2 [symbolic = %U.loc14_22.1 (constants.%U.091)] // CHECK:STDOUT: %ptr.loc14_43: type = ptr_type %U.ref.loc14_42 [symbolic = %ptr.loc14_36.1 (constants.%ptr.18e)] +// CHECK:STDOUT: %.loc14_43.2: form = init_form %ptr.loc14_43, call_param2 [symbolic = %.loc14_43.1 (constants.%.2cd)] // CHECK:STDOUT: %self.param.loc14: @C.F.%C (%C) = value_param call_param0 // CHECK:STDOUT: %.loc14_16.1: type = splice_block %Self.ref.loc14 [symbolic = %C (constants.%C)] { // CHECK:STDOUT: %.loc14_16.2: type = specific_constant constants.%C, @C(constants.%Self.887) [symbolic = %C (constants.%C)] @@ -344,6 +350,7 @@ fn Interface.C.F[self: Self](U:! type, u: U*) -> U* { return u; } // CHECK:STDOUT: %U.loc14_22.1: type = symbolic_binding U, 1 [symbolic = %U.loc14_22.1 (constants.%U.091)] // CHECK:STDOUT: %ptr.loc14_36.1: type = ptr_type %U.loc14_22.1 [symbolic = %ptr.loc14_36.1 (constants.%ptr.18e)] // CHECK:STDOUT: %pattern_type.loc14_32: type = pattern_type %ptr.loc14_36.1 [symbolic = %pattern_type.loc14_32 (constants.%pattern_type.423)] +// CHECK:STDOUT: %.loc14_43.1: form = init_form %ptr.loc14_36.1, call_param2 [symbolic = %.loc14_43.1 (constants.%.2cd)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete.loc20_51: = require_complete_type %ptr.loc14_36.1 [symbolic = %require_complete.loc20_51 (constants.%require_complete.56d)] @@ -381,5 +388,6 @@ fn Interface.C.F[self: Self](U:! type, u: U*) -> U* { return u; } // CHECK:STDOUT: %U.loc14_22.1 => constants.%U.091 // CHECK:STDOUT: %ptr.loc14_36.1 => constants.%ptr.18e // CHECK:STDOUT: %pattern_type.loc14_32 => constants.%pattern_type.423 +// CHECK:STDOUT: %.loc14_43.1 => constants.%.2cd // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/interface/generic.carbon b/toolchain/check/testdata/interface/generic.carbon index 53ebe7c1be2e..e7291c2031a5 100644 --- a/toolchain/check/testdata/interface/generic.carbon +++ b/toolchain/check/testdata/interface/generic.carbon @@ -95,6 +95,7 @@ fn F(T:! Generic((), ())) {} // CHECK:STDOUT: %WithAssocFn.generic: %WithAssocFn.type.daa = struct_value () [concrete] // CHECK:STDOUT: %WithAssocFn.type.d36: type = facet_type <@WithAssocFn, @WithAssocFn(%T.67d)> [symbolic] // CHECK:STDOUT: %Self.629: %WithAssocFn.type.d36 = symbolic_binding Self, 1 [symbolic] +// CHECK:STDOUT: %.599: form = init_form %X, call_param0 [concrete] // CHECK:STDOUT: %pattern_type.05f: type = pattern_type %X [concrete] // CHECK:STDOUT: %WithAssocFn.F.type.b86: type = fn_type @WithAssocFn.F, @WithAssocFn(%T.67d) [symbolic] // CHECK:STDOUT: %WithAssocFn.F.c8d: %WithAssocFn.F.type.b86 = struct_value () [symbolic] @@ -225,6 +226,7 @@ fn F(T:! Generic((), ())) {} // CHECK:STDOUT: %return.param_patt: %pattern_type.05f = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %X.ref: type = name_ref X, file.%X.decl [concrete = constants.%X] +// CHECK:STDOUT: %.loc10: form = init_form %X.ref, call_param0 [concrete = constants.%.599] // CHECK:STDOUT: %return.param: ref %X = out_param call_param0 // CHECK:STDOUT: %return: ref %X = return_slot %return.param // CHECK:STDOUT: } @@ -262,6 +264,7 @@ fn F(T:! Generic((), ())) {} // CHECK:STDOUT: %return.param_patt: %pattern_type.05f = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %X.ref: type = name_ref X, file.%X.decl [concrete = constants.%X] +// CHECK:STDOUT: %.loc16: form = init_form %X.ref, call_param0 [concrete = constants.%.599] // CHECK:STDOUT: %return.param: ref %X = out_param call_param0 // CHECK:STDOUT: %return: ref %X = return_slot %return.param // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/interface/generic_method.carbon b/toolchain/check/testdata/interface/generic_method.carbon index 4fb5b50e67ff..d3f9a09f945c 100644 --- a/toolchain/check/testdata/interface/generic_method.carbon +++ b/toolchain/check/testdata/interface/generic_method.carbon @@ -102,6 +102,7 @@ fn CallIndirect() { // CHECK:STDOUT: %tuple.2c7: %tuple.type.f2d = tuple_value (%T.67d, %Self.362, %ptr.8f6) [symbolic] // CHECK:STDOUT: %Self.binding.as_type.7ec: type = symbolic_binding_type Self, 1, %Self.362 [symbolic] // CHECK:STDOUT: %tuple.type.762: type = tuple_type (%T.67d, %Self.binding.as_type.7ec, %ptr.8f6) [symbolic] +// CHECK:STDOUT: %.de9: form = init_form %tuple.type.762, call_param1 [symbolic] // CHECK:STDOUT: %pattern_type.f66: type = pattern_type %tuple.type.762 [symbolic] // CHECK:STDOUT: %A.F.type.71b: type = fn_type @A.F, @A(%T.67d) [symbolic] // CHECK:STDOUT: %A.F.155: %A.F.type.71b = struct_value () [symbolic] @@ -125,6 +126,7 @@ fn CallIndirect() { // CHECK:STDOUT: %tuple.type.ff9: type = tuple_type (type, type, type) [concrete] // CHECK:STDOUT: %tuple.7ab: %tuple.type.ff9 = tuple_value (%X, %Y, %ptr.e8f8f9.1) [symbolic] // CHECK:STDOUT: %tuple.type.244: type = tuple_type (%X, %Y, %ptr.e8f8f9.1) [symbolic] +// CHECK:STDOUT: %.c5f: form = init_form %tuple.type.244, call_param1 [symbolic] // CHECK:STDOUT: %pattern_type.06d: type = pattern_type %tuple.type.244 [symbolic] // CHECK:STDOUT: %Y.as.A.impl.F.type: type = fn_type @Y.as.A.impl.F [concrete] // CHECK:STDOUT: %Y.as.A.impl.F: %Y.as.A.impl.F.type = struct_value () [concrete] @@ -155,6 +157,7 @@ fn CallIndirect() { // CHECK:STDOUT: %pattern_type.771: type = pattern_type %ptr.2a0 [concrete] // CHECK:STDOUT: %tuple.84f: %tuple.type.ff9 = tuple_value (%X, %Y, %ptr.2a0) [concrete] // CHECK:STDOUT: %tuple.type.847: type = tuple_type (%X, %Y, %ptr.2a0) [concrete] +// CHECK:STDOUT: %.f46: form = init_form %tuple.type.847, call_param1 [concrete] // CHECK:STDOUT: %pattern_type.79c: type = pattern_type %tuple.type.847 [concrete] // CHECK:STDOUT: %Y.as.A.impl.F.specific_fn: = specific_function %Y.as.A.impl.F, @Y.as.A.impl.F(%Z) [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] @@ -173,6 +176,7 @@ fn CallIndirect() { // CHECK:STDOUT: %impl.elem0.f12: %.ede = impl_witness_access %A.lookup_impl_witness, element0 [symbolic] // CHECK:STDOUT: %tuple.d24: %tuple.type.f96 = tuple_value (%X, %T.2bc, %ptr.2a0) [symbolic] // CHECK:STDOUT: %tuple.type.a50: type = tuple_type (%X, %T.binding.as_type.3d0, %ptr.2a0) [symbolic] +// CHECK:STDOUT: %.2e0: form = init_form %tuple.type.a50, call_param1 [symbolic] // CHECK:STDOUT: %pattern_type.160: type = pattern_type %tuple.type.a50 [symbolic] // CHECK:STDOUT: %specific_impl_fn.f8c: = specific_impl_function %impl.elem0.f12, @A.F(%X, %T.2bc, %Z) [symbolic] // CHECK:STDOUT: %require_complete.8fa: = require_complete_type %tuple.type.a50 [symbolic] @@ -279,10 +283,11 @@ fn CallIndirect() { // CHECK:STDOUT: %Self.ref: @A.F.%A.type (%A.type.ade) = name_ref Self, %.loc6_32 [symbolic = %Self (constants.%Self.362)] // CHECK:STDOUT: %U.ref.loc6_38: type = name_ref U, %U.loc6_8.2 [symbolic = %U.loc6_8.1 (constants.%U.4e7)] // CHECK:STDOUT: %ptr.loc6_39: type = ptr_type %U.ref.loc6_38 [symbolic = %ptr.loc6_22.1 (constants.%ptr.8f6)] -// CHECK:STDOUT: %.loc6_40.1: @A.F.%tuple.type.loc6_40.1 (%tuple.type.f2d) = tuple_literal (%T.ref, %Self.ref, %ptr.loc6_39) [symbolic = %tuple (constants.%tuple.2c7)] +// CHECK:STDOUT: %.loc6_40.2: @A.F.%tuple.type.loc6_40.1 (%tuple.type.f2d) = tuple_literal (%T.ref, %Self.ref, %ptr.loc6_39) [symbolic = %tuple (constants.%tuple.2c7)] // CHECK:STDOUT: %Self.as_type: type = facet_access_type constants.%Self.362 [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type.7ec)] -// CHECK:STDOUT: %.loc6_40.2: type = converted constants.%Self.362, %Self.as_type [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type.7ec)] -// CHECK:STDOUT: %.loc6_40.3: type = converted %.loc6_40.1, constants.%tuple.type.762 [symbolic = %tuple.type.loc6_40.2 (constants.%tuple.type.762)] +// CHECK:STDOUT: %.loc6_40.3: type = converted constants.%Self.362, %Self.as_type [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type.7ec)] +// CHECK:STDOUT: %.loc6_40.4: type = converted %.loc6_40.2, constants.%tuple.type.762 [symbolic = %tuple.type.loc6_40.2 (constants.%tuple.type.762)] +// CHECK:STDOUT: %.loc6_40.5: form = init_form %.loc6_40.4, call_param1 [symbolic = %.loc6_40.1 (constants.%.de9)] // CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] // CHECK:STDOUT: %U.loc6_8.2: type = symbolic_binding U, 2 [symbolic = %U.loc6_8.1 (constants.%U.4e7)] // CHECK:STDOUT: %u.param: @A.F.%ptr.loc6_22.1 (%ptr.8f6) = value_param call_param0 @@ -318,8 +323,9 @@ fn CallIndirect() { // CHECK:STDOUT: %Y.ref: type = name_ref Y, file.%Y.decl [concrete = constants.%Y] // CHECK:STDOUT: %U.ref.loc16_35: type = name_ref U, %U.loc16_8.2 [symbolic = %U.loc16_8.1 (constants.%U.67d)] // CHECK:STDOUT: %ptr.loc16_36: type = ptr_type %U.ref.loc16_35 [symbolic = %ptr.loc16_22.1 (constants.%ptr.e8f8f9.1)] -// CHECK:STDOUT: %.loc16_37.1: %tuple.type.ff9 = tuple_literal (%X.ref, %Y.ref, %ptr.loc16_36) [symbolic = %tuple (constants.%tuple.7ab)] -// CHECK:STDOUT: %.loc16_37.2: type = converted %.loc16_37.1, constants.%tuple.type.244 [symbolic = %tuple.type.loc16 (constants.%tuple.type.244)] +// CHECK:STDOUT: %.loc16_37.2: %tuple.type.ff9 = tuple_literal (%X.ref, %Y.ref, %ptr.loc16_36) [symbolic = %tuple (constants.%tuple.7ab)] +// CHECK:STDOUT: %.loc16_37.3: type = converted %.loc16_37.2, constants.%tuple.type.244 [symbolic = %tuple.type.loc16 (constants.%tuple.type.244)] +// CHECK:STDOUT: %.loc16_37.4: form = init_form %.loc16_37.3, call_param1 [symbolic = %.loc16_37.1 (constants.%.c5f)] // CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] // CHECK:STDOUT: %U.loc16_8.2: type = symbolic_binding U, 0 [symbolic = %U.loc16_8.1 (constants.%U.67d)] // CHECK:STDOUT: %u.param: @Y.as.A.impl.F.%ptr.loc16_22.1 (%ptr.e8f8f9.1) = value_param call_param0 @@ -376,6 +382,7 @@ fn CallIndirect() { // CHECK:STDOUT: %tuple: @A.F.%tuple.type.loc6_40.1 (%tuple.type.f2d) = tuple_value (%T, %Self, %ptr.loc6_22.1) [symbolic = %tuple (constants.%tuple.2c7)] // CHECK:STDOUT: %Self.binding.as_type: type = symbolic_binding_type Self, 1, %Self [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type.7ec)] // CHECK:STDOUT: %tuple.type.loc6_40.2: type = tuple_type (%T, %Self.binding.as_type, %ptr.loc6_22.1) [symbolic = %tuple.type.loc6_40.2 (constants.%tuple.type.762)] +// CHECK:STDOUT: %.loc6_40.1: form = init_form %tuple.type.loc6_40.2, call_param1 [symbolic = %.loc6_40.1 (constants.%.de9)] // CHECK:STDOUT: %pattern_type.loc6_25: type = pattern_type %tuple.type.loc6_40.2 [symbolic = %pattern_type.loc6_25 (constants.%pattern_type.f66)] // CHECK:STDOUT: // CHECK:STDOUT: fn(%u.param: @A.F.%ptr.loc6_22.1 (%ptr.8f6)) -> @A.F.%tuple.type.loc6_40.2 (%tuple.type.762); @@ -387,6 +394,7 @@ fn CallIndirect() { // CHECK:STDOUT: %pattern_type.loc16_18: type = pattern_type %ptr.loc16_22.1 [symbolic = %pattern_type.loc16_18 (constants.%pattern_type.4f4b84.1)] // CHECK:STDOUT: %tuple: %tuple.type.ff9 = tuple_value (constants.%X, constants.%Y, %ptr.loc16_22.1) [symbolic = %tuple (constants.%tuple.7ab)] // CHECK:STDOUT: %tuple.type.loc16: type = tuple_type (constants.%X, constants.%Y, %ptr.loc16_22.1) [symbolic = %tuple.type.loc16 (constants.%tuple.type.244)] +// CHECK:STDOUT: %.loc16_37.1: form = init_form %tuple.type.loc16, call_param1 [symbolic = %.loc16_37.1 (constants.%.c5f)] // CHECK:STDOUT: %pattern_type.loc16_25: type = pattern_type %tuple.type.loc16 [symbolic = %pattern_type.loc16_25 (constants.%pattern_type.06d)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -536,6 +544,7 @@ fn CallIndirect() { // CHECK:STDOUT: %tuple => constants.%tuple.2c7 // CHECK:STDOUT: %Self.binding.as_type => constants.%Self.binding.as_type.7ec // CHECK:STDOUT: %tuple.type.loc6_40.2 => constants.%tuple.type.762 +// CHECK:STDOUT: %.loc6_40.1 => constants.%.de9 // CHECK:STDOUT: %pattern_type.loc6_25 => constants.%pattern_type.f66 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -557,6 +566,7 @@ fn CallIndirect() { // CHECK:STDOUT: %pattern_type.loc16_18 => constants.%pattern_type.4f4b84.1 // CHECK:STDOUT: %tuple => constants.%tuple.7ab // CHECK:STDOUT: %tuple.type.loc16 => constants.%tuple.type.244 +// CHECK:STDOUT: %.loc16_37.1 => constants.%.c5f // CHECK:STDOUT: %pattern_type.loc16_25 => constants.%pattern_type.06d // CHECK:STDOUT: } // CHECK:STDOUT: @@ -571,6 +581,7 @@ fn CallIndirect() { // CHECK:STDOUT: %tuple => constants.%tuple.5c5 // CHECK:STDOUT: %Self.binding.as_type => constants.%Y // CHECK:STDOUT: %tuple.type.loc6_40.2 => constants.%tuple.type.244 +// CHECK:STDOUT: %.loc6_40.1 => constants.%.c5f // CHECK:STDOUT: %pattern_type.loc6_25 => constants.%pattern_type.06d // CHECK:STDOUT: } // CHECK:STDOUT: @@ -580,6 +591,7 @@ fn CallIndirect() { // CHECK:STDOUT: %pattern_type.loc16_18 => constants.%pattern_type.771 // CHECK:STDOUT: %tuple => constants.%tuple.84f // CHECK:STDOUT: %tuple.type.loc16 => constants.%tuple.type.847 +// CHECK:STDOUT: %.loc16_37.1 => constants.%.f46 // CHECK:STDOUT: %pattern_type.loc16_25 => constants.%pattern_type.79c // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -609,6 +621,7 @@ fn CallIndirect() { // CHECK:STDOUT: %tuple => constants.%tuple.d24 // CHECK:STDOUT: %Self.binding.as_type => constants.%T.binding.as_type.3d0 // CHECK:STDOUT: %tuple.type.loc6_40.2 => constants.%tuple.type.a50 +// CHECK:STDOUT: %.loc6_40.1 => constants.%.2e0 // CHECK:STDOUT: %pattern_type.loc6_25 => constants.%pattern_type.160 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -639,6 +652,7 @@ fn CallIndirect() { // CHECK:STDOUT: %tuple => constants.%tuple.6cd // CHECK:STDOUT: %Self.binding.as_type => constants.%Y // CHECK:STDOUT: %tuple.type.loc6_40.2 => constants.%tuple.type.847 +// CHECK:STDOUT: %.loc6_40.1 => constants.%.f46 // CHECK:STDOUT: %pattern_type.loc6_25 => constants.%pattern_type.79c // CHECK:STDOUT: } // CHECK:STDOUT: @@ -660,6 +674,7 @@ fn CallIndirect() { // CHECK:STDOUT: %tuple.f25: %tuple.type.f2d = tuple_value (%T.67d, %Self.362, %U.4e7) [symbolic] // CHECK:STDOUT: %Self.binding.as_type.7ec: type = symbolic_binding_type Self, 1, %Self.362 [symbolic] // CHECK:STDOUT: %tuple.type.7f3: type = tuple_type (%T.67d, %Self.binding.as_type.7ec, %U.4e7) [symbolic] +// CHECK:STDOUT: %.95d: form = init_form %tuple.type.7f3, call_param1 [symbolic] // CHECK:STDOUT: %pattern_type.22d: type = pattern_type %tuple.type.7f3 [symbolic] // CHECK:STDOUT: %A.F.type.71b: type = fn_type @A.F, @A(%T.67d) [symbolic] // CHECK:STDOUT: %A.F.155: %A.F.type.71b = struct_value () [symbolic] @@ -690,6 +705,7 @@ fn CallIndirect() { // CHECK:STDOUT: %tuple.type.11f: type = tuple_type (type, %tuple.type.24b, type) [concrete] // CHECK:STDOUT: %tuple.117: %tuple.type.11f = tuple_value (%W, %tuple.4b9, %U.ce4) [symbolic] // CHECK:STDOUT: %tuple.type.897: type = tuple_type (%W, %tuple.type.a5e, %U.ce4) [symbolic] +// CHECK:STDOUT: %.c84: form = init_form %tuple.type.897, call_param1 [symbolic] // CHECK:STDOUT: %pattern_type.5cc: type = pattern_type %tuple.type.897 [symbolic] // CHECK:STDOUT: %tuple.type.as.A.impl.F.type.ce6: type = fn_type @tuple.type.as.A.impl.F, @tuple.type.as.A.impl(%V1, %V2, %W) [symbolic] // CHECK:STDOUT: %tuple.type.as.A.impl.F.74d: %tuple.type.as.A.impl.F.type.ce6 = struct_value () [symbolic] @@ -719,6 +735,7 @@ fn CallIndirect() { // CHECK:STDOUT: %pattern_type.bdb: type = pattern_type %Z [concrete] // CHECK:STDOUT: %tuple.66d: %tuple.type.11f = tuple_value (%X, %tuple.dd5, %Z) [concrete] // CHECK:STDOUT: %tuple.type.65a: type = tuple_type (%X, %tuple.type.ab2, %Z) [concrete] +// CHECK:STDOUT: %.d4d: form = init_form %tuple.type.65a, call_param1 [concrete] // CHECK:STDOUT: %pattern_type.30b: type = pattern_type %tuple.type.65a [concrete] // CHECK:STDOUT: %tuple.type.as.A.impl.F.specific_fn.af6: = specific_function %tuple.type.as.A.impl.F.cc8, @tuple.type.as.A.impl.F(%Y1, %Y2, %X, %Z) [concrete] // CHECK:STDOUT: %Z.val: %Z = struct_value () [concrete] @@ -739,6 +756,7 @@ fn CallIndirect() { // CHECK:STDOUT: %tuple.type.f96: type = tuple_type (type, %A.type.ab6, type) [concrete] // CHECK:STDOUT: %tuple.631: %tuple.type.f96 = tuple_value (%X, %T.2bc, %Z) [symbolic] // CHECK:STDOUT: %tuple.type.856: type = tuple_type (%X, %T.binding.as_type, %Z) [symbolic] +// CHECK:STDOUT: %.ade: form = init_form %tuple.type.856, call_param1 [symbolic] // CHECK:STDOUT: %pattern_type.4b2: type = pattern_type %tuple.type.856 [symbolic] // CHECK:STDOUT: %specific_impl_fn: = specific_impl_function %impl.elem0, @A.F(%X, %T.2bc, %Z) [symbolic] // CHECK:STDOUT: %require_complete.7d4: = require_complete_type %tuple.type.856 [symbolic] @@ -846,10 +864,11 @@ fn CallIndirect() { // CHECK:STDOUT: %.loc6_31: @A.F.%A.type (%A.type.ade) = specific_constant @A.%Self.loc5_23.1, @A(constants.%T.67d) [symbolic = %Self (constants.%Self.362)] // CHECK:STDOUT: %Self.ref: @A.F.%A.type (%A.type.ade) = name_ref Self, %.loc6_31 [symbolic = %Self (constants.%Self.362)] // CHECK:STDOUT: %U.ref.loc6_37: type = name_ref U, %U.loc6_8.2 [symbolic = %U.loc6_8.1 (constants.%U.4e7)] -// CHECK:STDOUT: %.loc6_38.1: @A.F.%tuple.type.loc6_38.1 (%tuple.type.f2d) = tuple_literal (%T.ref, %Self.ref, %U.ref.loc6_37) [symbolic = %tuple (constants.%tuple.f25)] +// CHECK:STDOUT: %.loc6_38.2: @A.F.%tuple.type.loc6_38.1 (%tuple.type.f2d) = tuple_literal (%T.ref, %Self.ref, %U.ref.loc6_37) [symbolic = %tuple (constants.%tuple.f25)] // CHECK:STDOUT: %Self.as_type: type = facet_access_type constants.%Self.362 [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type.7ec)] -// CHECK:STDOUT: %.loc6_38.2: type = converted constants.%Self.362, %Self.as_type [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type.7ec)] -// CHECK:STDOUT: %.loc6_38.3: type = converted %.loc6_38.1, constants.%tuple.type.7f3 [symbolic = %tuple.type.loc6_38.2 (constants.%tuple.type.7f3)] +// CHECK:STDOUT: %.loc6_38.3: type = converted constants.%Self.362, %Self.as_type [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type.7ec)] +// CHECK:STDOUT: %.loc6_38.4: type = converted %.loc6_38.2, constants.%tuple.type.7f3 [symbolic = %tuple.type.loc6_38.2 (constants.%tuple.type.7f3)] +// CHECK:STDOUT: %.loc6_38.5: form = init_form %.loc6_38.4, call_param1 [symbolic = %.loc6_38.1 (constants.%.95d)] // CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] // CHECK:STDOUT: %U.loc6_8.2: type = symbolic_binding U, 2 [symbolic = %U.loc6_8.1 (constants.%U.4e7)] // CHECK:STDOUT: %u.param: @A.F.%U.loc6_8.1 (%U.4e7) = value_param call_param0 @@ -897,9 +916,10 @@ fn CallIndirect() { // CHECK:STDOUT: %V2.ref: type = name_ref V2, @tuple.type.as.A.impl.%V2.loc14_25.2 [symbolic = %V2 (constants.%V2)] // CHECK:STDOUT: %.loc17_38: %tuple.type.24b = tuple_literal (%V1.ref, %V2.ref) [symbolic = %tuple.loc17_38 (constants.%tuple.4b9)] // CHECK:STDOUT: %U.ref.loc17_41: type = name_ref U, %U.loc17_8.2 [symbolic = %U.loc17_8.1 (constants.%U.ce4)] -// CHECK:STDOUT: %.loc17_42.1: %tuple.type.11f = tuple_literal (%W.ref, %.loc17_38, %U.ref.loc17_41) [symbolic = %tuple.loc17_42 (constants.%tuple.117)] -// CHECK:STDOUT: %.loc17_42.2: type = converted constants.%tuple.4b9, constants.%tuple.type.a5e [symbolic = %tuple.type.loc17_42.1 (constants.%tuple.type.a5e)] -// CHECK:STDOUT: %.loc17_42.3: type = converted %.loc17_42.1, constants.%tuple.type.897 [symbolic = %tuple.type.loc17_42.2 (constants.%tuple.type.897)] +// CHECK:STDOUT: %.loc17_42.2: %tuple.type.11f = tuple_literal (%W.ref, %.loc17_38, %U.ref.loc17_41) [symbolic = %tuple.loc17_42 (constants.%tuple.117)] +// CHECK:STDOUT: %.loc17_42.3: type = converted constants.%tuple.4b9, constants.%tuple.type.a5e [symbolic = %tuple.type.loc17_42.1 (constants.%tuple.type.a5e)] +// CHECK:STDOUT: %.loc17_42.4: type = converted %.loc17_42.2, constants.%tuple.type.897 [symbolic = %tuple.type.loc17_42.2 (constants.%tuple.type.897)] +// CHECK:STDOUT: %.loc17_42.5: form = init_form %.loc17_42.4, call_param1 [symbolic = %.loc17_42.1 (constants.%.c84)] // CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] // CHECK:STDOUT: %U.loc17_8.2: type = symbolic_binding U, 3 [symbolic = %U.loc17_8.1 (constants.%U.ce4)] // CHECK:STDOUT: %u.param: @tuple.type.as.A.impl.F.%U.loc17_8.1 (%U.ce4) = value_param call_param0 @@ -962,6 +982,7 @@ fn CallIndirect() { // CHECK:STDOUT: %tuple: @A.F.%tuple.type.loc6_38.1 (%tuple.type.f2d) = tuple_value (%T, %Self, %U.loc6_8.1) [symbolic = %tuple (constants.%tuple.f25)] // CHECK:STDOUT: %Self.binding.as_type: type = symbolic_binding_type Self, 1, %Self [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type.7ec)] // CHECK:STDOUT: %tuple.type.loc6_38.2: type = tuple_type (%T, %Self.binding.as_type, %U.loc6_8.1) [symbolic = %tuple.type.loc6_38.2 (constants.%tuple.type.7f3)] +// CHECK:STDOUT: %.loc6_38.1: form = init_form %tuple.type.loc6_38.2, call_param1 [symbolic = %.loc6_38.1 (constants.%.95d)] // CHECK:STDOUT: %pattern_type.loc6_24: type = pattern_type %tuple.type.loc6_38.2 [symbolic = %pattern_type.loc6_24 (constants.%pattern_type.22d)] // CHECK:STDOUT: // CHECK:STDOUT: fn(%u.param: @A.F.%U.loc6_8.1 (%U.4e7)) -> @A.F.%tuple.type.loc6_38.2 (%tuple.type.7f3); @@ -977,6 +998,7 @@ fn CallIndirect() { // CHECK:STDOUT: %tuple.loc17_42: %tuple.type.11f = tuple_value (%W, %tuple.loc17_38, %U.loc17_8.1) [symbolic = %tuple.loc17_42 (constants.%tuple.117)] // CHECK:STDOUT: %tuple.type.loc17_42.1: type = tuple_type (%V1, %V2) [symbolic = %tuple.type.loc17_42.1 (constants.%tuple.type.a5e)] // CHECK:STDOUT: %tuple.type.loc17_42.2: type = tuple_type (%W, %tuple.type.loc17_42.1, %U.loc17_8.1) [symbolic = %tuple.type.loc17_42.2 (constants.%tuple.type.897)] +// CHECK:STDOUT: %.loc17_42.1: form = init_form %tuple.type.loc17_42.2, call_param1 [symbolic = %.loc17_42.1 (constants.%.c84)] // CHECK:STDOUT: %pattern_type.loc17_24: type = pattern_type %tuple.type.loc17_42.2 [symbolic = %pattern_type.loc17_24 (constants.%pattern_type.5cc)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -1109,6 +1131,7 @@ fn CallIndirect() { // CHECK:STDOUT: %tuple => constants.%tuple.f25 // CHECK:STDOUT: %Self.binding.as_type => constants.%Self.binding.as_type.7ec // CHECK:STDOUT: %tuple.type.loc6_38.2 => constants.%tuple.type.7f3 +// CHECK:STDOUT: %.loc6_38.1 => constants.%.95d // CHECK:STDOUT: %pattern_type.loc6_24 => constants.%pattern_type.22d // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1149,6 +1172,7 @@ fn CallIndirect() { // CHECK:STDOUT: %tuple.loc17_42 => constants.%tuple.117 // CHECK:STDOUT: %tuple.type.loc17_42.1 => constants.%tuple.type.a5e // CHECK:STDOUT: %tuple.type.loc17_42.2 => constants.%tuple.type.897 +// CHECK:STDOUT: %.loc17_42.1 => constants.%.c84 // CHECK:STDOUT: %pattern_type.loc17_24 => constants.%pattern_type.5cc // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -1169,6 +1193,7 @@ fn CallIndirect() { // CHECK:STDOUT: %tuple => constants.%tuple.ec4 // CHECK:STDOUT: %Self.binding.as_type => constants.%tuple.type.a5e // CHECK:STDOUT: %tuple.type.loc6_38.2 => constants.%tuple.type.897 +// CHECK:STDOUT: %.loc6_38.1 => constants.%.c84 // CHECK:STDOUT: %pattern_type.loc6_24 => constants.%pattern_type.5cc // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1209,6 +1234,7 @@ fn CallIndirect() { // CHECK:STDOUT: %tuple.loc17_42 => constants.%tuple.66d // CHECK:STDOUT: %tuple.type.loc17_42.1 => constants.%tuple.type.ab2 // CHECK:STDOUT: %tuple.type.loc17_42.2 => constants.%tuple.type.65a +// CHECK:STDOUT: %.loc17_42.1 => constants.%.d4d // CHECK:STDOUT: %pattern_type.loc17_24 => constants.%pattern_type.30b // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -1233,6 +1259,7 @@ fn CallIndirect() { // CHECK:STDOUT: %tuple => constants.%tuple.631 // CHECK:STDOUT: %Self.binding.as_type => constants.%T.binding.as_type // CHECK:STDOUT: %tuple.type.loc6_38.2 => constants.%tuple.type.856 +// CHECK:STDOUT: %.loc6_38.1 => constants.%.ade // CHECK:STDOUT: %pattern_type.loc6_24 => constants.%pattern_type.4b2 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1262,6 +1289,7 @@ fn CallIndirect() { // CHECK:STDOUT: %tuple => constants.%tuple.5e4 // CHECK:STDOUT: %Self.binding.as_type => constants.%tuple.type.ab2 // CHECK:STDOUT: %tuple.type.loc6_38.2 => constants.%tuple.type.65a +// CHECK:STDOUT: %.loc6_38.1 => constants.%.d4d // CHECK:STDOUT: %pattern_type.loc6_24 => constants.%pattern_type.30b // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/interface/member_lookup.carbon b/toolchain/check/testdata/interface/member_lookup.carbon index b8b78e4308a6..a7cba649be51 100644 --- a/toolchain/check/testdata/interface/member_lookup.carbon +++ b/toolchain/check/testdata/interface/member_lookup.carbon @@ -69,6 +69,7 @@ fn AccessMissingConcrete(I:! Interface(i32)) -> i32 { // CHECK:STDOUT: %assoc0.624: %Interface.assoc_type.5a2 = assoc_entity element0, @Interface.%X [symbolic] // CHECK:STDOUT: %I.682: %Interface.type.442 = symbolic_binding I, 1 [symbolic] // CHECK:STDOUT: %pattern_type.cbe: type = pattern_type %Interface.type.442 [symbolic] +// CHECK:STDOUT: %.9e5: form = init_form %ptr.e8f, call_param0 [symbolic] // CHECK:STDOUT: %pattern_type.4f4: type = pattern_type %ptr.e8f [symbolic] // CHECK:STDOUT: %AccessGeneric.type: type = fn_type @AccessGeneric [concrete] // CHECK:STDOUT: %AccessGeneric: %AccessGeneric.type = struct_value () [concrete] @@ -96,6 +97,7 @@ fn AccessMissingConcrete(I:! Interface(i32)) -> i32 { // CHECK:STDOUT: %I.50d: %Interface.type.389 = symbolic_binding I, 0 [symbolic] // CHECK:STDOUT: %pattern_type.e2d: type = pattern_type %Interface.type.389 [concrete] // CHECK:STDOUT: %ptr.235: type = ptr_type %i32 [concrete] +// CHECK:STDOUT: %.740: form = init_form %ptr.235, call_param0 [concrete] // CHECK:STDOUT: %pattern_type.fe8: type = pattern_type %ptr.235 [concrete] // CHECK:STDOUT: %AccessConcrete.type: type = fn_type @AccessConcrete [concrete] // CHECK:STDOUT: %AccessConcrete: %AccessConcrete.type = struct_value () [concrete] @@ -151,9 +153,10 @@ fn AccessMissingConcrete(I:! Interface(i32)) -> i32 { // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc8_49: type = name_ref T, %T.loc8_18.2 [symbolic = %T.loc8_18.1 (constants.%T.67d)] // CHECK:STDOUT: %ptr.loc8_50.2: type = ptr_type %T.ref.loc8_49 [symbolic = %ptr.loc8_50.1 (constants.%ptr.e8f)] +// CHECK:STDOUT: %.loc8_50.2: form = init_form %ptr.loc8_50.2, call_param0 [symbolic = %.loc8_50.1 (constants.%.9e5)] // CHECK:STDOUT: %.Self.1: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] // CHECK:STDOUT: %T.loc8_18.2: type = symbolic_binding T, 0 [symbolic = %T.loc8_18.1 (constants.%T.67d)] -// CHECK:STDOUT: %.loc8: type = splice_block %Interface.type.loc8_43.2 [symbolic = %Interface.type.loc8_43.1 (constants.%Interface.type.442)] { +// CHECK:STDOUT: %.loc8_43: type = splice_block %Interface.type.loc8_43.2 [symbolic = %Interface.type.loc8_43.1 (constants.%Interface.type.442)] { // CHECK:STDOUT: %.Self.2: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] // CHECK:STDOUT: %Interface.ref: %Interface.type.815 = name_ref Interface, file.%Interface.decl [concrete = constants.%Interface.generic] // CHECK:STDOUT: %T.ref.loc8_42: type = name_ref T, %T.loc8_18.2 [symbolic = %T.loc8_18.1 (constants.%T.67d)] @@ -171,7 +174,8 @@ fn AccessMissingConcrete(I:! Interface(i32)) -> i32 { // CHECK:STDOUT: %int_32.loc12_42: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc12_42: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %ptr: type = ptr_type %i32.loc12_42 [concrete = constants.%ptr.235] -// CHECK:STDOUT: %.loc12: type = splice_block %Interface.type [concrete = constants.%Interface.type.389] { +// CHECK:STDOUT: %.loc12_45: form = init_form %ptr, call_param0 [concrete = constants.%.740] +// CHECK:STDOUT: %.loc12_36: type = splice_block %Interface.type [concrete = constants.%Interface.type.389] { // CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] // CHECK:STDOUT: %Interface.ref: %Interface.type.815 = name_ref Interface, file.%Interface.decl [concrete = constants.%Interface.generic] // CHECK:STDOUT: %int_32.loc12_33: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] @@ -223,16 +227,17 @@ fn AccessMissingConcrete(I:! Interface(i32)) -> i32 { // CHECK:STDOUT: %I.loc8_28.1: @AccessGeneric.%Interface.type.loc8_43.1 (%Interface.type.442) = symbolic_binding I, 1 [symbolic = %I.loc8_28.1 (constants.%I.682)] // CHECK:STDOUT: %pattern_type.loc8_28: type = pattern_type %Interface.type.loc8_43.1 [symbolic = %pattern_type.loc8_28 (constants.%pattern_type.cbe)] // CHECK:STDOUT: %ptr.loc8_50.1: type = ptr_type %T.loc8_18.1 [symbolic = %ptr.loc8_50.1 (constants.%ptr.e8f)] +// CHECK:STDOUT: %.loc8_50.1: form = init_form %ptr.loc8_50.1, call_param0 [symbolic = %.loc8_50.1 (constants.%.9e5)] // CHECK:STDOUT: %pattern_type.loc8_46: type = pattern_type %ptr.loc8_50.1 [symbolic = %pattern_type.loc8_46 (constants.%pattern_type.4f4)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc9_10: = require_complete_type %Interface.type.loc8_43.1 [symbolic = %require_complete.loc9_10 (constants.%require_complete.46e)] +// CHECK:STDOUT: %require_complete.loc8: = require_complete_type %ptr.loc8_50.1 [symbolic = %require_complete.loc8 (constants.%require_complete.ef1)] +// CHECK:STDOUT: %require_complete.loc9: = require_complete_type %Interface.type.loc8_43.1 [symbolic = %require_complete.loc9 (constants.%require_complete.46e)] // CHECK:STDOUT: %Interface.assoc_type: type = assoc_entity_type @Interface, @Interface(%T.loc8_18.1) [symbolic = %Interface.assoc_type (constants.%Interface.assoc_type.5a2)] // CHECK:STDOUT: %assoc0: @AccessGeneric.%Interface.assoc_type (%Interface.assoc_type.5a2) = assoc_entity element0, @Interface.%X [symbolic = %assoc0 (constants.%assoc0.624)] // CHECK:STDOUT: %I.binding.as_type: type = symbolic_binding_type I, 1, %I.loc8_28.1 [symbolic = %I.binding.as_type (constants.%I.binding.as_type.24f)] // CHECK:STDOUT: %Interface.lookup_impl_witness: = lookup_impl_witness %I.loc8_28.1, @Interface, @Interface(%T.loc8_18.1) [symbolic = %Interface.lookup_impl_witness (constants.%Interface.lookup_impl_witness.9f1)] // CHECK:STDOUT: %impl.elem0.loc9_11.3: @AccessGeneric.%ptr.loc8_50.1 (%ptr.e8f) = impl_witness_access %Interface.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc9_11.3 (constants.%impl.elem0.117)] -// CHECK:STDOUT: %require_complete.loc9_13: = require_complete_type %ptr.loc8_50.1 [symbolic = %require_complete.loc9_13 (constants.%require_complete.ef1)] // CHECK:STDOUT: %.loc9_11.3: require_specific_def_type = require_specific_def @ptr.as.Copy.impl(%T.loc8_18.1) [symbolic = %.loc9_11.3 (constants.%.2f2)] // CHECK:STDOUT: %Copy.lookup_impl_witness: = lookup_impl_witness %ptr.loc8_50.1, @Copy [symbolic = %Copy.lookup_impl_witness (constants.%Copy.lookup_impl_witness.2e6)] // CHECK:STDOUT: %Copy.facet: %Copy.type = facet_value %ptr.loc8_50.1, (%Copy.lookup_impl_witness) [symbolic = %Copy.facet (constants.%Copy.facet.c25)] @@ -308,6 +313,7 @@ fn AccessMissingConcrete(I:! Interface(i32)) -> i32 { // CHECK:STDOUT: %I.loc8_28.1 => constants.%I.682 // CHECK:STDOUT: %pattern_type.loc8_28 => constants.%pattern_type.cbe // CHECK:STDOUT: %ptr.loc8_50.1 => constants.%ptr.e8f +// CHECK:STDOUT: %.loc8_50.1 => constants.%.9e5 // CHECK:STDOUT: %pattern_type.loc8_46 => constants.%pattern_type.4f4 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -354,6 +360,7 @@ fn AccessMissingConcrete(I:! Interface(i32)) -> i32 { // CHECK:STDOUT: %assoc0.624: %Interface.assoc_type.5a2 = assoc_entity element0, @Interface.%X [symbolic] // CHECK:STDOUT: %I.682: %Interface.type.442 = symbolic_binding I, 1 [symbolic] // CHECK:STDOUT: %pattern_type.cbe: type = pattern_type %Interface.type.442 [symbolic] +// CHECK:STDOUT: %.c6c: form = init_form %T, call_param0 [symbolic] // CHECK:STDOUT: %pattern_type.51d: type = pattern_type %T [symbolic] // CHECK:STDOUT: %AccessMissingGeneric.type: type = fn_type @AccessMissingGeneric [concrete] // CHECK:STDOUT: %AccessMissingGeneric: %AccessMissingGeneric.type = struct_value () [concrete] @@ -366,6 +373,7 @@ fn AccessMissingConcrete(I:! Interface(i32)) -> i32 { // CHECK:STDOUT: %Interface.type.389: type = facet_type <@Interface, @Interface(%i32)> [concrete] // CHECK:STDOUT: %I.50d: %Interface.type.389 = symbolic_binding I, 0 [symbolic] // CHECK:STDOUT: %pattern_type.e2d: type = pattern_type %Interface.type.389 [concrete] +// CHECK:STDOUT: %.941: form = init_form %i32, call_param0 [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %AccessMissingConcrete.type: type = fn_type @AccessMissingConcrete [concrete] // CHECK:STDOUT: %AccessMissingConcrete: %AccessMissingConcrete.type = struct_value () [concrete] @@ -404,9 +412,10 @@ fn AccessMissingConcrete(I:! Interface(i32)) -> i32 { // CHECK:STDOUT: %return.param_patt: @AccessMissingGeneric.%pattern_type.loc8_53 (%pattern_type.51d) = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc8_56: type = name_ref T, %T.loc8_25.2 [symbolic = %T.loc8_25.1 (constants.%T)] +// CHECK:STDOUT: %.loc8_56.2: form = init_form %T.ref.loc8_56, call_param0 [symbolic = %.loc8_56.1 (constants.%.c6c)] // CHECK:STDOUT: %.Self.1: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] // CHECK:STDOUT: %T.loc8_25.2: type = symbolic_binding T, 0 [symbolic = %T.loc8_25.1 (constants.%T)] -// CHECK:STDOUT: %.loc8: type = splice_block %Interface.type.loc8_50.2 [symbolic = %Interface.type.loc8_50.1 (constants.%Interface.type.442)] { +// CHECK:STDOUT: %.loc8_50: type = splice_block %Interface.type.loc8_50.2 [symbolic = %Interface.type.loc8_50.1 (constants.%Interface.type.442)] { // CHECK:STDOUT: %.Self.2: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] // CHECK:STDOUT: %Interface.ref: %Interface.type.815 = name_ref Interface, file.%Interface.decl [concrete = constants.%Interface.generic] // CHECK:STDOUT: %T.ref.loc8_49: type = name_ref T, %T.loc8_25.2 [symbolic = %T.loc8_25.1 (constants.%T)] @@ -423,7 +432,8 @@ fn AccessMissingConcrete(I:! Interface(i32)) -> i32 { // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32.loc16_49: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc16_49: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %.loc16: type = splice_block %Interface.type [concrete = constants.%Interface.type.389] { +// CHECK:STDOUT: %.loc16_49: form = init_form %i32.loc16_49, call_param0 [concrete = constants.%.941] +// CHECK:STDOUT: %.loc16_43: type = splice_block %Interface.type [concrete = constants.%Interface.type.389] { // CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] // CHECK:STDOUT: %Interface.ref: %Interface.type.815 = name_ref Interface, file.%Interface.decl [concrete = constants.%Interface.generic] // CHECK:STDOUT: %int_32.loc16_40: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] @@ -475,6 +485,7 @@ fn AccessMissingConcrete(I:! Interface(i32)) -> i32 { // CHECK:STDOUT: %Interface.type.loc8_50.1: type = facet_type <@Interface, @Interface(%T.loc8_25.1)> [symbolic = %Interface.type.loc8_50.1 (constants.%Interface.type.442)] // CHECK:STDOUT: %I.loc8_35.1: @AccessMissingGeneric.%Interface.type.loc8_50.1 (%Interface.type.442) = symbolic_binding I, 1 [symbolic = %I.loc8_35.1 (constants.%I.682)] // CHECK:STDOUT: %pattern_type.loc8_35: type = pattern_type %Interface.type.loc8_50.1 [symbolic = %pattern_type.loc8_35 (constants.%pattern_type.cbe)] +// CHECK:STDOUT: %.loc8_56.1: form = init_form %T.loc8_25.1, call_param0 [symbolic = %.loc8_56.1 (constants.%.c6c)] // CHECK:STDOUT: %pattern_type.loc8_53: type = pattern_type %T.loc8_25.1 [symbolic = %pattern_type.loc8_53 (constants.%pattern_type.51d)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -523,6 +534,7 @@ fn AccessMissingConcrete(I:! Interface(i32)) -> i32 { // CHECK:STDOUT: %Interface.type.loc8_50.1 => constants.%Interface.type.442 // CHECK:STDOUT: %I.loc8_35.1 => constants.%I.682 // CHECK:STDOUT: %pattern_type.loc8_35 => constants.%pattern_type.cbe +// CHECK:STDOUT: %.loc8_56.1 => constants.%.c6c // CHECK:STDOUT: %pattern_type.loc8_53 => constants.%pattern_type.51d // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/interface/self.carbon b/toolchain/check/testdata/interface/self.carbon index 83eb9ab146bc..69351bf5ce07 100644 --- a/toolchain/check/testdata/interface/self.carbon +++ b/toolchain/check/testdata/interface/self.carbon @@ -23,6 +23,7 @@ interface UseSelf { // CHECK:STDOUT: %Self: %UseSelf.type = symbolic_binding Self, 0 [symbolic] // CHECK:STDOUT: %Self.binding.as_type: type = symbolic_binding_type Self, 0, %Self [symbolic] // CHECK:STDOUT: %pattern_type: type = pattern_type %Self.binding.as_type [symbolic] +// CHECK:STDOUT: %.2b5: form = init_form %Self.binding.as_type, call_param1 [symbolic] // CHECK:STDOUT: %UseSelf.F.type: type = fn_type @UseSelf.F [concrete] // CHECK:STDOUT: %UseSelf.F: %UseSelf.F.type = struct_value () [concrete] // CHECK:STDOUT: %UseSelf.assoc_type: type = assoc_entity_type @UseSelf [concrete] @@ -46,7 +47,8 @@ interface UseSelf { // CHECK:STDOUT: } { // CHECK:STDOUT: %Self.ref.loc16_25: %UseSelf.type = name_ref Self, @UseSelf.%Self [symbolic = %Self (constants.%Self)] // CHECK:STDOUT: %Self.as_type.loc16_25: type = facet_access_type %Self.ref.loc16_25 [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type)] -// CHECK:STDOUT: %.loc16_25: type = converted %Self.ref.loc16_25, %Self.as_type.loc16_25 [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type)] +// CHECK:STDOUT: %.loc16_25.2: type = converted %Self.ref.loc16_25, %Self.as_type.loc16_25 [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type)] +// CHECK:STDOUT: %.loc16_25.3: form = init_form %.loc16_25.2, call_param1 [symbolic = %.loc16_25.1 (constants.%.2b5)] // CHECK:STDOUT: %self.param: @UseSelf.F.%Self.binding.as_type (%Self.binding.as_type) = value_param call_param0 // CHECK:STDOUT: %.loc16_14.1: type = splice_block %.loc16_14.2 [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type)] { // CHECK:STDOUT: %Self.ref.loc16_14: %UseSelf.type = name_ref Self, @UseSelf.%Self [symbolic = %Self (constants.%Self)] @@ -71,6 +73,7 @@ interface UseSelf { // CHECK:STDOUT: %Self: %UseSelf.type = symbolic_binding Self, 0 [symbolic = %Self (constants.%Self)] // CHECK:STDOUT: %Self.binding.as_type: type = symbolic_binding_type Self, 0, %Self [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type)] // CHECK:STDOUT: %pattern_type: type = pattern_type %Self.binding.as_type [symbolic = %pattern_type (constants.%pattern_type)] +// CHECK:STDOUT: %.loc16_25.1: form = init_form %Self.binding.as_type, call_param1 [symbolic = %.loc16_25.1 (constants.%.2b5)] // CHECK:STDOUT: // CHECK:STDOUT: fn(%self.param: @UseSelf.F.%Self.binding.as_type (%Self.binding.as_type)) -> @UseSelf.F.%Self.binding.as_type (%Self.binding.as_type); // CHECK:STDOUT: } @@ -79,5 +82,6 @@ interface UseSelf { // CHECK:STDOUT: %Self => constants.%Self // CHECK:STDOUT: %Self.binding.as_type => constants.%Self.binding.as_type // CHECK:STDOUT: %pattern_type => constants.%pattern_type +// CHECK:STDOUT: %.loc16_25.1 => constants.%.2b5 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/interface/todo_define_not_default.carbon b/toolchain/check/testdata/interface/todo_define_not_default.carbon index 8998ac7d03ae..4cd10f77b91a 100644 --- a/toolchain/check/testdata/interface/todo_define_not_default.carbon +++ b/toolchain/check/testdata/interface/todo_define_not_default.carbon @@ -37,6 +37,7 @@ interface I { // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] +// CHECK:STDOUT: %.88a: form = init_form %i32, call_param2 [concrete] // CHECK:STDOUT: %I.G.type: type = fn_type @I.G [concrete] // CHECK:STDOUT: %I.G: %I.G.type = struct_value () [concrete] // CHECK:STDOUT: %assoc1: %I.assoc_type = assoc_entity element1, @I.%I.G.decl [concrete] @@ -100,6 +101,7 @@ interface I { // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32.loc18_27: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc18_27: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] +// CHECK:STDOUT: %.loc18_27: form = init_form %i32.loc18_27, call_param2 [concrete = constants.%.88a] // CHECK:STDOUT: %a.param: %i32 = value_param call_param0 // CHECK:STDOUT: %.loc18_11: type = splice_block %i32.loc18_11 [concrete = constants.%i32] { // CHECK:STDOUT: %int_32.loc18_11: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] diff --git a/toolchain/check/testdata/interop/cpp/class/abstract.carbon b/toolchain/check/testdata/interop/cpp/class/abstract.carbon index 1a9cb80c2abb..ddcd7db71075 100644 --- a/toolchain/check/testdata/interop/cpp/class/abstract.carbon +++ b/toolchain/check/testdata/interop/cpp/class/abstract.carbon @@ -94,6 +94,7 @@ fn F() -> Cpp.AbstractFinal { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %AbstractFinal: type = class_type @AbstractFinal [concrete] +// CHECK:STDOUT: %.fd6: form = init_form %AbstractFinal, call_param0 [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %AbstractFinal [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] @@ -114,6 +115,7 @@ fn F() -> Cpp.AbstractFinal { // CHECK:STDOUT: } { // CHECK:STDOUT: %Cpp.ref: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %AbstractFinal.ref: type = name_ref AbstractFinal, imports.%AbstractFinal.decl [concrete = constants.%AbstractFinal] +// CHECK:STDOUT: %.loc11_14: form = init_form %AbstractFinal.ref, call_param0 [concrete = constants.%.fd6] // CHECK:STDOUT: %return.param: ref %AbstractFinal = out_param call_param0 // CHECK:STDOUT: %return: ref %AbstractFinal = return_slot %return.param // CHECK:STDOUT: } @@ -122,8 +124,8 @@ fn F() -> Cpp.AbstractFinal { // CHECK:STDOUT: fn @F() -> %return.param: %AbstractFinal { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %F.ref: %F.type = name_ref F, file.%F.decl [concrete = constants.%F] -// CHECK:STDOUT: %.loc11: ref %AbstractFinal = splice_block %return {} -// CHECK:STDOUT: %F.call: init %AbstractFinal = call %F.ref() to %.loc11 +// CHECK:STDOUT: %.loc11_8: ref %AbstractFinal = splice_block %return {} +// CHECK:STDOUT: %F.call: init %AbstractFinal = call %F.ref() to %.loc11_8 // CHECK:STDOUT: return %F.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/interop/cpp/class/base.carbon b/toolchain/check/testdata/interop/cpp/class/base.carbon index 86379741637d..3092de9fc515 100644 --- a/toolchain/check/testdata/interop/cpp/class/base.carbon +++ b/toolchain/check/testdata/interop/cpp/class/base.carbon @@ -465,6 +465,7 @@ class V { // CHECK:STDOUT: %pattern_type.5c86: type = pattern_type %ptr.ddb [concrete] // CHECK:STDOUT: %Base: type = class_type @Base [concrete] // CHECK:STDOUT: %ptr.fb2: type = ptr_type %Base [concrete] +// CHECK:STDOUT: %.43a: form = init_form %ptr.fb2, call_param1 [concrete] // CHECK:STDOUT: %pattern_type.72a: type = pattern_type %ptr.fb2 [concrete] // CHECK:STDOUT: %ConvertPtr.type: type = fn_type @ConvertPtr [concrete] // CHECK:STDOUT: %ConvertPtr: %ConvertPtr.type = struct_value () [concrete] @@ -508,8 +509,9 @@ class V { // CHECK:STDOUT: %Cpp.ref.loc7_35: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %Base.ref: type = name_ref Base, imports.%Base.decl [concrete = constants.%Base] // CHECK:STDOUT: %ptr.loc7_43: type = ptr_type %Base.ref [concrete = constants.%ptr.fb2] +// CHECK:STDOUT: %.loc7_43: form = init_form %ptr.loc7_43, call_param1 [concrete = constants.%.43a] // CHECK:STDOUT: %d.param: %ptr.ddb = value_param call_param0 -// CHECK:STDOUT: %.loc7: type = splice_block %ptr.loc7_29 [concrete = constants.%ptr.ddb] { +// CHECK:STDOUT: %.loc7_29: type = splice_block %ptr.loc7_29 [concrete = constants.%ptr.ddb] { // CHECK:STDOUT: %Cpp.ref.loc7_18: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %Derived.ref: type = name_ref Derived, imports.%Derived.decl [concrete = constants.%Derived] // CHECK:STDOUT: %ptr.loc7_29: type = ptr_type %Derived.ref [concrete = constants.%ptr.ddb] diff --git a/toolchain/check/testdata/interop/cpp/stdlib/string_view.carbon b/toolchain/check/testdata/interop/cpp/stdlib/string_view.carbon index 31ad2d587caa..9a3e27cc7c50 100644 --- a/toolchain/check/testdata/interop/cpp/stdlib/string_view.carbon +++ b/toolchain/check/testdata/interop/cpp/stdlib/string_view.carbon @@ -75,6 +75,7 @@ fn G() -> str { // CHECK:STDOUT: %ptr.85f: type = ptr_type %str.ee0 [concrete] // CHECK:STDOUT: %Consume__carbon_thunk.type: type = fn_type @Consume__carbon_thunk [concrete] // CHECK:STDOUT: %Consume__carbon_thunk: %Consume__carbon_thunk.type = struct_value () [concrete] +// CHECK:STDOUT: %.a70: form = init_form %str.ee0, call_param0 [concrete] // CHECK:STDOUT: %G.type: type = fn_type @G [concrete] // CHECK:STDOUT: %G: %G.type = struct_value () [concrete] // CHECK:STDOUT: %Produce.cpp_overload_set.type: type = cpp_overload_set_type @Produce.cpp_overload_set [concrete] @@ -109,6 +110,7 @@ fn G() -> str { // CHECK:STDOUT: %return.patt: %pattern_type.461 = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.461 = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { +// CHECK:STDOUT: %.loc13_11: form = init_form constants.%str.ee0, call_param0 [concrete = constants.%.a70] // CHECK:STDOUT: %return.param: ref %str.ee0 = out_param call_param0 // CHECK:STDOUT: %return: ref %str.ee0 = return_slot %return.param // CHECK:STDOUT: } @@ -131,10 +133,10 @@ fn G() -> str { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Cpp.ref: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %Produce.ref: %Produce.cpp_overload_set.type = name_ref Produce, imports.%Produce.cpp_overload_set.value [concrete = constants.%Produce.cpp_overload_set.value] -// CHECK:STDOUT: %.loc13: ref %str.ee0 = splice_block %return {} -// CHECK:STDOUT: %addr: %ptr.85f = addr_of %.loc13 +// CHECK:STDOUT: %.loc13_8: ref %str.ee0 = splice_block %return {} +// CHECK:STDOUT: %addr: %ptr.85f = addr_of %.loc13_8 // CHECK:STDOUT: %Produce__carbon_thunk.call: init %empty_tuple.type = call imports.%Produce__carbon_thunk.decl(%addr) -// CHECK:STDOUT: %.loc14: init %str.ee0 = in_place_init %Produce__carbon_thunk.call, %.loc13 +// CHECK:STDOUT: %.loc14: init %str.ee0 = in_place_init %Produce__carbon_thunk.call, %.loc13_8 // CHECK:STDOUT: return %.loc14 to %return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/let/compile_time_bindings.carbon b/toolchain/check/testdata/let/compile_time_bindings.carbon index 13e1795817e3..3bd265c0e719 100644 --- a/toolchain/check/testdata/let/compile_time_bindings.carbon +++ b/toolchain/check/testdata/let/compile_time_bindings.carbon @@ -178,6 +178,7 @@ impl i32 as Empty { // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %.62c: form = init_form %empty_tuple.type, call_param0 [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %C.F.type: type = fn_type @C.F [concrete] // CHECK:STDOUT: %C.F: %C.F.type = struct_value () [concrete] @@ -210,6 +211,7 @@ impl i32 as Empty { // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc5_14.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc5_14.2: type = converted %.loc5_14.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %.loc5_14.3: form = init_form %.loc5_14.2, call_param0 [concrete = constants.%.62c] // CHECK:STDOUT: %return.param: ref %empty_tuple.type = out_param call_param0 // CHECK:STDOUT: %return: ref %empty_tuple.type = return_slot %return.param // CHECK:STDOUT: } @@ -251,6 +253,7 @@ impl i32 as Empty { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %empty_tuple.type [concrete] +// CHECK:STDOUT: %.62c: form = init_form %empty_tuple.type, call_param0 [concrete] // CHECK:STDOUT: %C.F.type: type = fn_type @C.F [concrete] // CHECK:STDOUT: %C.F: %C.F.type = struct_value () [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] @@ -292,6 +295,7 @@ impl i32 as Empty { // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc10_14.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc10_14.2: type = converted %.loc10_14.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %.loc10_14.3: form = init_form %.loc10_14.2, call_param0 [concrete = constants.%.62c] // CHECK:STDOUT: %return.param: ref %empty_tuple.type = out_param call_param0 // CHECK:STDOUT: %return: ref %empty_tuple.type = return_slot %return.param // CHECK:STDOUT: } @@ -412,6 +416,7 @@ impl i32 as Empty { // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %.62c: form = init_form %empty_tuple.type, call_param0 [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %C.F.type: type = fn_type @C.F [concrete] // CHECK:STDOUT: %C.F: %C.F.type = struct_value () [concrete] @@ -442,6 +447,7 @@ impl i32 as Empty { // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc5_14.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc5_14.2: type = converted %.loc5_14.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %.loc5_14.3: form = init_form %.loc5_14.2, call_param0 [concrete = constants.%.62c] // CHECK:STDOUT: %return.param: ref %empty_tuple.type = out_param call_param0 // CHECK:STDOUT: %return: ref %empty_tuple.type = return_slot %return.param // CHECK:STDOUT: } @@ -496,6 +502,7 @@ impl i32 as Empty { // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] // CHECK:STDOUT: %I.lookup_impl_witness: = lookup_impl_witness %Self, @I [symbolic] // CHECK:STDOUT: %impl.elem0: type = impl_witness_access %I.lookup_impl_witness, element0 [symbolic] +// CHECK:STDOUT: %.1f3: form = init_form %impl.elem0, call_param0 [symbolic] // CHECK:STDOUT: %pattern_type.92d: type = pattern_type %impl.elem0 [symbolic] // CHECK:STDOUT: %I.F.type: type = fn_type @I.F [concrete] // CHECK:STDOUT: %I.F: %I.F.type = struct_value () [concrete] @@ -533,6 +540,7 @@ impl i32 as Empty { // CHECK:STDOUT: } { // CHECK:STDOUT: %impl.elem0.loc6_13.2: type = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc6_13.1 (constants.%impl.elem0)] // CHECK:STDOUT: %T.ref: type = name_ref T, %impl.elem0.loc6_13.2 [symbolic = %impl.elem0.loc6_13.1 (constants.%impl.elem0)] +// CHECK:STDOUT: %.loc6_13.2: form = init_form %T.ref, call_param0 [symbolic = %.loc6_13.1 (constants.%.1f3)] // CHECK:STDOUT: %return.param: ref @I.F.%impl.elem0.loc6_13.1 (%impl.elem0) = out_param call_param0 // CHECK:STDOUT: %return: ref @I.F.%impl.elem0.loc6_13.1 (%impl.elem0) = return_slot %return.param // CHECK:STDOUT: } @@ -557,6 +565,7 @@ impl i32 as Empty { // CHECK:STDOUT: %Self: %I.type = symbolic_binding Self, 0 [symbolic = %Self (constants.%Self)] // CHECK:STDOUT: %I.lookup_impl_witness: = lookup_impl_witness %Self, @I [symbolic = %I.lookup_impl_witness (constants.%I.lookup_impl_witness)] // CHECK:STDOUT: %impl.elem0.loc6_13.1: type = impl_witness_access %I.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc6_13.1 (constants.%impl.elem0)] +// CHECK:STDOUT: %.loc6_13.1: form = init_form %impl.elem0.loc6_13.1, call_param0 [symbolic = %.loc6_13.1 (constants.%.1f3)] // CHECK:STDOUT: %pattern_type: type = pattern_type %impl.elem0.loc6_13.1 [symbolic = %pattern_type (constants.%pattern_type.92d)] // CHECK:STDOUT: // CHECK:STDOUT: fn() -> @I.F.%impl.elem0.loc6_13.1 (%impl.elem0); @@ -568,6 +577,7 @@ impl i32 as Empty { // CHECK:STDOUT: %Self => constants.%Self // CHECK:STDOUT: %I.lookup_impl_witness => constants.%I.lookup_impl_witness // CHECK:STDOUT: %impl.elem0.loc6_13.1 => constants.%impl.elem0 +// CHECK:STDOUT: %.loc6_13.1 => constants.%.1f3 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.92d // CHECK:STDOUT: } // CHECK:STDOUT: @@ -614,13 +624,8 @@ impl i32 as Empty { // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] // CHECK:STDOUT: %T: type = value_binding T, %i32 -// CHECK:STDOUT: %I.F.decl: %I.F.type = fn_decl @I.F [concrete = constants.%I.F] { -// 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: %I.F.decl: %I.F.type = fn_decl @I.F [concrete = constants.%I.F] {} { // CHECK:STDOUT: %T.ref: type = name_ref T, @I.%T -// CHECK:STDOUT: %return.param: ref = out_param call_param0 -// CHECK:STDOUT: %return: ref = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%empty_struct_type [concrete = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type @@ -631,7 +636,7 @@ impl i32 as Empty { // CHECK:STDOUT: .F = %I.F.decl // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @I.F() -> ; +// CHECK:STDOUT: fn @I.F(); // CHECK:STDOUT: // CHECK:STDOUT: --- fail_return_in_package_scope.carbon // CHECK:STDOUT: @@ -668,17 +673,12 @@ impl i32 as Empty { // CHECK:STDOUT: } // CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] // CHECK:STDOUT: %T: type = value_binding T, @__global_init.%i32 -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { -// 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: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} { // CHECK:STDOUT: %T.ref: type = name_ref T, file.%T -// CHECK:STDOUT: %return.param: ref = out_param call_param0 -// CHECK:STDOUT: %return: ref = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F() -> ; +// CHECK:STDOUT: fn @F(); // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: diff --git a/toolchain/check/testdata/let/global.carbon b/toolchain/check/testdata/let/global.carbon index 1ce5950bf378..5e6f25d53947 100644 --- a/toolchain/check/testdata/let/global.carbon +++ b/toolchain/check/testdata/let/global.carbon @@ -42,6 +42,7 @@ fn F() -> i32 { return n; } // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.0b5, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] // CHECK:STDOUT: %bound_method: = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] +// CHECK:STDOUT: %.941: form = init_form %i32, call_param0 [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] // CHECK:STDOUT: %Copy.type: type = facet_type <@Copy> [concrete] @@ -101,6 +102,7 @@ fn F() -> i32 { return n; } // CHECK:STDOUT: } { // 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: %.loc17: form = init_form %i32, call_param0 [concrete = constants.%.941] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/let/shadowed_decl.carbon b/toolchain/check/testdata/let/shadowed_decl.carbon index 7646d2de265b..5efc553ef1fd 100644 --- a/toolchain/check/testdata/let/shadowed_decl.carbon +++ b/toolchain/check/testdata/let/shadowed_decl.carbon @@ -27,6 +27,7 @@ fn F(a: i32) -> i32 { // CHECK:STDOUT: %N: Core.IntLiteral = symbolic_binding N, 0 [symbolic] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] +// CHECK:STDOUT: %.4d5: form = init_form %i32, call_param1 [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] // CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] @@ -89,8 +90,9 @@ fn F(a: i32) -> i32 { // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32.loc15_17: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc15_17: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] +// CHECK:STDOUT: %.loc15_17: form = init_form %i32.loc15_17, call_param1 [concrete = constants.%.4d5] // CHECK:STDOUT: %a.param: %i32 = value_param call_param0 -// CHECK:STDOUT: %.loc15: type = splice_block %i32.loc15_9 [concrete = constants.%i32] { +// CHECK:STDOUT: %.loc15_9: type = splice_block %i32.loc15_9 [concrete = constants.%i32] { // CHECK:STDOUT: %int_32.loc15_9: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc15_9: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/main_run/return_i32.carbon b/toolchain/check/testdata/main_run/return_i32.carbon index 87d9cf808f75..c4a136ae83d3 100644 --- a/toolchain/check/testdata/main_run/return_i32.carbon +++ b/toolchain/check/testdata/main_run/return_i32.carbon @@ -20,6 +20,7 @@ fn Run() -> i32 { return 0; } // CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] +// CHECK:STDOUT: %.941: form = init_form %i32, call_param0 [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %Run.type: type = fn_type @Run [concrete] // CHECK:STDOUT: %Run: %Run.type = struct_value () [concrete] @@ -67,6 +68,7 @@ fn Run() -> i32 { return 0; } // CHECK:STDOUT: } { // 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: %.loc14_13: form = init_form %i32, call_param0 [concrete = constants.%.941] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } @@ -82,7 +84,7 @@ fn Run() -> i32 { return 0; } // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc14_27.2: = bound_method %int_0, %specific_fn [concrete = constants.%bound_method] // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc14_27.2(%int_0) [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: %.loc14: init %i32 = converted %int_0, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: return %.loc14 to %return +// CHECK:STDOUT: %.loc14_27: init %i32 = converted %int_0, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: return %.loc14_27 to %return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/namespace/add_to_import.carbon b/toolchain/check/testdata/namespace/add_to_import.carbon index 137d3e40b96e..8d556ef82a74 100644 --- a/toolchain/check/testdata/namespace/add_to_import.carbon +++ b/toolchain/check/testdata/namespace/add_to_import.carbon @@ -51,6 +51,7 @@ var a: i32 = NS.A(); // CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] +// CHECK:STDOUT: %.941: form = init_form %i32, call_param0 [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %A.type: type = fn_type @A [concrete] // CHECK:STDOUT: %A: %A.type = struct_value () [concrete] @@ -105,6 +106,7 @@ var a: i32 = NS.A(); // CHECK:STDOUT: } { // 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: %.loc4_14: form = init_form %i32, call_param0 [concrete = constants.%.941] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } @@ -128,8 +130,8 @@ var a: i32 = NS.A(); // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc4_28.2: = bound_method %int_0, %specific_fn [concrete = constants.%bound_method] // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc4_28.2(%int_0) [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: %.loc4: init %i32 = converted %int_0, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: return %.loc4 to %return +// CHECK:STDOUT: %.loc4_28: init %i32 = converted %int_0, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: return %.loc4_28 to %return // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { diff --git a/toolchain/check/testdata/namespace/alias.carbon b/toolchain/check/testdata/namespace/alias.carbon index 0fe6038afde1..5270251c4aab 100644 --- a/toolchain/check/testdata/namespace/alias.carbon +++ b/toolchain/check/testdata/namespace/alias.carbon @@ -31,6 +31,7 @@ fn D() -> i32 { return C(); } // CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] +// CHECK:STDOUT: %.941: form = init_form %i32, call_param0 [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %A.type: type = fn_type @A [concrete] // CHECK:STDOUT: %A: %A.type = struct_value () [concrete] @@ -91,6 +92,7 @@ fn D() -> i32 { return C(); } // CHECK:STDOUT: } { // 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: %.loc19_14: form = init_form %i32, call_param0 [concrete = constants.%.941] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } @@ -100,6 +102,7 @@ fn D() -> i32 { return C(); } // CHECK:STDOUT: } { // 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: %.loc21: form = init_form %i32, call_param0 [concrete = constants.%.941] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } @@ -112,6 +115,7 @@ fn D() -> i32 { return C(); } // CHECK:STDOUT: } { // 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: %.loc25: form = init_form %i32, call_param0 [concrete = constants.%.941] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } @@ -125,8 +129,8 @@ fn D() -> i32 { return C(); } // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc19_28.2: = bound_method %int_0, %specific_fn [concrete = constants.%bound_method] // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc19_28.2(%int_0) [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: %.loc19: init %i32 = converted %int_0, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: return %.loc19 to %return +// CHECK:STDOUT: %.loc19_28: init %i32 = converted %int_0, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: return %.loc19_28 to %return // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @B() -> %i32 { diff --git a/toolchain/check/testdata/namespace/fail_decl_in_alias.carbon b/toolchain/check/testdata/namespace/fail_decl_in_alias.carbon index b0e324b73de0..12e6516ec2b9 100644 --- a/toolchain/check/testdata/namespace/fail_decl_in_alias.carbon +++ b/toolchain/check/testdata/namespace/fail_decl_in_alias.carbon @@ -33,6 +33,7 @@ fn ns.A() -> i32 { return 0; } // CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] +// CHECK:STDOUT: %.941: form = init_form %i32, call_param0 [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %A.type: type = fn_type @A [concrete] // CHECK:STDOUT: %A: %A.type = struct_value () [concrete] @@ -84,6 +85,7 @@ fn ns.A() -> i32 { return 0; } // CHECK:STDOUT: } { // 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: %.loc27_14: form = init_form %i32, call_param0 [concrete = constants.%.941] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } @@ -97,7 +99,7 @@ fn ns.A() -> i32 { return 0; } // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc27_28.2: = bound_method %int_0, %specific_fn [concrete = constants.%bound_method] // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc27_28.2(%int_0) [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: %.loc27: init %i32 = converted %int_0, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: return %.loc27 to %return +// CHECK:STDOUT: %.loc27_28: init %i32 = converted %int_0, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: return %.loc27_28 to %return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/namespace/imported_indirect.carbon b/toolchain/check/testdata/namespace/imported_indirect.carbon index 6ec8403e7d04..b09c7944e61c 100644 --- a/toolchain/check/testdata/namespace/imported_indirect.carbon +++ b/toolchain/check/testdata/namespace/imported_indirect.carbon @@ -123,6 +123,7 @@ fn G() { Same.F(); } // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %C: type = class_type @C [concrete] +// CHECK:STDOUT: %.385: form = init_form %C, call_param0 [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %C [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] @@ -156,6 +157,7 @@ fn G() { Same.F(); } // CHECK:STDOUT: } { // CHECK:STDOUT: %A.ref: = name_ref A, imports.%A [concrete = imports.%A] // CHECK:STDOUT: %C.ref: type = name_ref C, imports.%Same.C [concrete = constants.%C] +// CHECK:STDOUT: %.loc7: form = init_form %C.ref, call_param0 [concrete = constants.%.385] // CHECK:STDOUT: %return.param: ref %C = out_param call_param0 // CHECK:STDOUT: %return: ref %C = return_slot %return.param // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/namespace/merging_with_indirections.carbon b/toolchain/check/testdata/namespace/merging_with_indirections.carbon index 5e43aaf7d7ee..8e0c787efaec 100644 --- a/toolchain/check/testdata/namespace/merging_with_indirections.carbon +++ b/toolchain/check/testdata/namespace/merging_with_indirections.carbon @@ -87,6 +87,7 @@ fn Run() { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %A: type = class_type @A [concrete] +// CHECK:STDOUT: %.b71: form = init_form %A, call_param0 [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %A [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] @@ -128,6 +129,7 @@ fn Run() { // CHECK:STDOUT: } { // CHECK:STDOUT: %NS1.ref: = name_ref NS1, imports.%NS1 [concrete = imports.%NS1] // CHECK:STDOUT: %A.ref: type = name_ref A, imports.%Other.A [concrete = constants.%A] +// CHECK:STDOUT: %.loc8_14: form = init_form %A.ref, call_param0 [concrete = constants.%.b71] // CHECK:STDOUT: %return.param: ref %A = out_param call_param0 // CHECK:STDOUT: %return: ref %A = return_slot %return.param // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/namespace/shadow.carbon b/toolchain/check/testdata/namespace/shadow.carbon index 232226f6c571..f1f6f8046d86 100644 --- a/toolchain/check/testdata/namespace/shadow.carbon +++ b/toolchain/check/testdata/namespace/shadow.carbon @@ -44,6 +44,7 @@ fn N.M.B() -> i32 { // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %N: Core.IntLiteral = symbolic_binding N, 0 [symbolic] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] +// CHECK:STDOUT: %.941: form = init_form %i32, call_param0 [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %B.type: type = fn_type @B [concrete] // CHECK:STDOUT: %B: %B.type = struct_value () [concrete] @@ -122,6 +123,7 @@ fn N.M.B() -> i32 { // CHECK:STDOUT: } { // 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: %.loc22: form = init_form %i32.loc22, call_param0 [concrete = constants.%.941] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/operators/builtin/and.carbon b/toolchain/check/testdata/operators/builtin/and.carbon index 9e77a6620f10..7511941b6427 100644 --- a/toolchain/check/testdata/operators/builtin/and.carbon +++ b/toolchain/check/testdata/operators/builtin/and.carbon @@ -35,6 +35,7 @@ fn PartialConstant(x: bool) { // CHECK:STDOUT: constants { // CHECK:STDOUT: %Bool.type: type = fn_type @Bool [concrete] // CHECK:STDOUT: %Bool: %Bool.type = struct_value () [concrete] +// CHECK:STDOUT: %.528: form = init_form bool, call_param0 [concrete] // CHECK:STDOUT: %pattern_type.831: type = pattern_type bool [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] @@ -98,6 +99,7 @@ fn PartialConstant(x: bool) { // CHECK:STDOUT: %Bool.call: init type = call constants.%Bool() [concrete = bool] // CHECK:STDOUT: %.loc15_11.1: type = value_of_initializer %Bool.call [concrete = bool] // CHECK:STDOUT: %.loc15_11.2: type = converted %Bool.call, %.loc15_11.1 [concrete = bool] +// CHECK:STDOUT: %.loc15_11.3: form = init_form %.loc15_11.2, call_param0 [concrete = constants.%.528] // CHECK:STDOUT: %return.param: ref bool = out_param call_param0 // CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } @@ -108,6 +110,7 @@ fn PartialConstant(x: bool) { // CHECK:STDOUT: %Bool.call: init type = call constants.%Bool() [concrete = bool] // CHECK:STDOUT: %.loc16_11.1: type = value_of_initializer %Bool.call [concrete = bool] // CHECK:STDOUT: %.loc16_11.2: type = converted %Bool.call, %.loc16_11.1 [concrete = bool] +// CHECK:STDOUT: %.loc16_11.3: form = init_form %.loc16_11.2, call_param0 [concrete = constants.%.528] // CHECK:STDOUT: %return.param: ref bool = out_param call_param0 // CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } @@ -118,6 +121,7 @@ fn PartialConstant(x: bool) { // CHECK:STDOUT: %Bool.call: init type = call constants.%Bool() [concrete = bool] // CHECK:STDOUT: %.loc18_13.1: type = value_of_initializer %Bool.call [concrete = bool] // CHECK:STDOUT: %.loc18_13.2: type = converted %Bool.call, %.loc18_13.1 [concrete = bool] +// CHECK:STDOUT: %.loc18_13.3: form = init_form %.loc18_13.2, call_param0 [concrete = constants.%.528] // CHECK:STDOUT: %return.param: ref bool = out_param call_param0 // CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/operators/builtin/fail_assignment_to_non_assignable.carbon b/toolchain/check/testdata/operators/builtin/fail_assignment_to_non_assignable.carbon index d0c3ed110e89..cddd5b8388ce 100644 --- a/toolchain/check/testdata/operators/builtin/fail_assignment_to_non_assignable.carbon +++ b/toolchain/check/testdata/operators/builtin/fail_assignment_to_non_assignable.carbon @@ -69,6 +69,7 @@ fn Main() { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] +// CHECK:STDOUT: %.941: form = init_form %i32, call_param0 [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] @@ -173,6 +174,7 @@ fn Main() { // CHECK:STDOUT: } { // 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: %.loc15: form = init_form %i32, call_param0 [concrete = constants.%.941] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/operators/builtin/fail_redundant_compound_access.carbon b/toolchain/check/testdata/operators/builtin/fail_redundant_compound_access.carbon index 08ce9bf9a824..4afbd7db01cf 100644 --- a/toolchain/check/testdata/operators/builtin/fail_redundant_compound_access.carbon +++ b/toolchain/check/testdata/operators/builtin/fail_redundant_compound_access.carbon @@ -37,6 +37,7 @@ fn Main() { // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %N: Core.IntLiteral = symbolic_binding N, 0 [symbolic] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] +// CHECK:STDOUT: %.941: form = init_form %i32, call_param0 [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] @@ -110,6 +111,7 @@ fn Main() { // CHECK:STDOUT: } { // 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: %.loc15_11: form = init_form %i32, call_param0 [concrete = constants.%.941] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } @@ -124,8 +126,8 @@ fn Main() { // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc15_25.2: = bound_method %int_0, %specific_fn [concrete = constants.%bound_method.d2e] // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc15_25.2(%int_0) [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: %.loc15: init %i32 = converted %int_0, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: return %.loc15 to %return +// CHECK:STDOUT: %.loc15_25: init %i32 = converted %int_0, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: return %.loc15_25 to %return // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Main() { diff --git a/toolchain/check/testdata/operators/builtin/fail_type_mismatch_once.carbon b/toolchain/check/testdata/operators/builtin/fail_type_mismatch_once.carbon index 3d44b5f44af7..2faa47e40f39 100644 --- a/toolchain/check/testdata/operators/builtin/fail_type_mismatch_once.carbon +++ b/toolchain/check/testdata/operators/builtin/fail_type_mismatch_once.carbon @@ -29,6 +29,7 @@ fn Main() -> i32 { // CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] +// CHECK:STDOUT: %.941: form = init_form %i32, call_param0 [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %Main.type: type = fn_type @Main [concrete] // CHECK:STDOUT: %Main: %Main.type = struct_value () [concrete] @@ -63,6 +64,7 @@ fn Main() -> i32 { // CHECK:STDOUT: } { // 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: %.loc15: form = init_form %i32, call_param0 [concrete = constants.%.941] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/operators/builtin/fail_unimplemented_op.carbon b/toolchain/check/testdata/operators/builtin/fail_unimplemented_op.carbon index f2532b7ea0e1..180d0fd5028c 100644 --- a/toolchain/check/testdata/operators/builtin/fail_unimplemented_op.carbon +++ b/toolchain/check/testdata/operators/builtin/fail_unimplemented_op.carbon @@ -27,6 +27,7 @@ fn Main() -> i32 { // CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] +// CHECK:STDOUT: %.941: form = init_form %i32, call_param0 [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %Main.type: type = fn_type @Main [concrete] // CHECK:STDOUT: %Main: %Main.type = struct_value () [concrete] @@ -60,6 +61,7 @@ fn Main() -> i32 { // CHECK:STDOUT: } { // 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: %.loc15: form = init_form %i32, call_param0 [concrete = constants.%.941] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/operators/builtin/or.carbon b/toolchain/check/testdata/operators/builtin/or.carbon index 85d588ed6f9f..e893e76abf5f 100644 --- a/toolchain/check/testdata/operators/builtin/or.carbon +++ b/toolchain/check/testdata/operators/builtin/or.carbon @@ -35,6 +35,7 @@ fn PartialConstant(x: bool) { // CHECK:STDOUT: constants { // CHECK:STDOUT: %Bool.type: type = fn_type @Bool [concrete] // CHECK:STDOUT: %Bool: %Bool.type = struct_value () [concrete] +// CHECK:STDOUT: %.528: form = init_form bool, call_param0 [concrete] // CHECK:STDOUT: %pattern_type.831: type = pattern_type bool [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] @@ -98,6 +99,7 @@ fn PartialConstant(x: bool) { // CHECK:STDOUT: %Bool.call: init type = call constants.%Bool() [concrete = bool] // CHECK:STDOUT: %.loc15_11.1: type = value_of_initializer %Bool.call [concrete = bool] // CHECK:STDOUT: %.loc15_11.2: type = converted %Bool.call, %.loc15_11.1 [concrete = bool] +// CHECK:STDOUT: %.loc15_11.3: form = init_form %.loc15_11.2, call_param0 [concrete = constants.%.528] // CHECK:STDOUT: %return.param: ref bool = out_param call_param0 // CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } @@ -108,6 +110,7 @@ fn PartialConstant(x: bool) { // CHECK:STDOUT: %Bool.call: init type = call constants.%Bool() [concrete = bool] // CHECK:STDOUT: %.loc16_11.1: type = value_of_initializer %Bool.call [concrete = bool] // CHECK:STDOUT: %.loc16_11.2: type = converted %Bool.call, %.loc16_11.1 [concrete = bool] +// CHECK:STDOUT: %.loc16_11.3: form = init_form %.loc16_11.2, call_param0 [concrete = constants.%.528] // CHECK:STDOUT: %return.param: ref bool = out_param call_param0 // CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } @@ -118,6 +121,7 @@ fn PartialConstant(x: bool) { // CHECK:STDOUT: %Bool.call: init type = call constants.%Bool() [concrete = bool] // CHECK:STDOUT: %.loc18_12.1: type = value_of_initializer %Bool.call [concrete = bool] // CHECK:STDOUT: %.loc18_12.2: type = converted %Bool.call, %.loc18_12.1 [concrete = bool] +// CHECK:STDOUT: %.loc18_12.3: form = init_form %.loc18_12.2, call_param0 [concrete = constants.%.528] // CHECK:STDOUT: %return.param: ref bool = out_param call_param0 // CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/operators/builtin/unary_op.carbon b/toolchain/check/testdata/operators/builtin/unary_op.carbon index 940b718b5c14..737bd00df71a 100644 --- a/toolchain/check/testdata/operators/builtin/unary_op.carbon +++ b/toolchain/check/testdata/operators/builtin/unary_op.carbon @@ -30,6 +30,7 @@ fn Constant() { // CHECK:STDOUT: %Bool.type: type = fn_type @Bool [concrete] // CHECK:STDOUT: %Bool: %Bool.type = struct_value () [concrete] // CHECK:STDOUT: %pattern_type.831: type = pattern_type bool [concrete] +// CHECK:STDOUT: %.df2: form = init_form bool, call_param1 [concrete] // CHECK:STDOUT: %Not.type: type = fn_type @Not [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %Not: %Not.type = struct_value () [concrete] @@ -87,6 +88,7 @@ fn Constant() { // CHECK:STDOUT: %Bool.call.loc15_20: init type = call constants.%Bool() [concrete = bool] // CHECK:STDOUT: %.loc15_20.1: type = value_of_initializer %Bool.call.loc15_20 [concrete = bool] // CHECK:STDOUT: %.loc15_20.2: type = converted %Bool.call.loc15_20, %.loc15_20.1 [concrete = bool] +// CHECK:STDOUT: %.loc15_20.3: form = init_form %.loc15_20.2, call_param1 [concrete = constants.%.df2] // CHECK:STDOUT: %b.param: bool = value_param call_param0 // CHECK:STDOUT: %.loc15_11.1: type = splice_block %.loc15_11.3 [concrete = bool] { // CHECK:STDOUT: %Bool.call.loc15_11: init type = call constants.%Bool() [concrete = bool] diff --git a/toolchain/check/testdata/operators/overloaded/add.carbon b/toolchain/check/testdata/operators/overloaded/add.carbon index f9a99b76a1c5..9fc542a7825c 100644 --- a/toolchain/check/testdata/operators/overloaded/add.carbon +++ b/toolchain/check/testdata/operators/overloaded/add.carbon @@ -71,7 +71,7 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %impl.elem1: %.042 = impl_witness_access constants.%AddWith.impl_witness, element1 [concrete = constants.%C.as.AddWith.impl.Op] // CHECK:STDOUT: %bound_method: = bound_method %a.ref, %impl.elem1 // CHECK:STDOUT: -// CHECK:STDOUT: %C.as.AddWith.impl.Op.call: init %C = call %bound_method(%a.ref, %b.ref) to %.loc30 +// CHECK:STDOUT: %C.as.AddWith.impl.Op.call: init %C = call %bound_method(%a.ref, %b.ref) to %.loc30_23 // CHECK:STDOUT: return %C.as.AddWith.impl.Op.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/operators/overloaded/bit_and.carbon b/toolchain/check/testdata/operators/overloaded/bit_and.carbon index aa6a1a44dc06..e8c444567464 100644 --- a/toolchain/check/testdata/operators/overloaded/bit_and.carbon +++ b/toolchain/check/testdata/operators/overloaded/bit_and.carbon @@ -71,7 +71,7 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %impl.elem1: %.952 = impl_witness_access constants.%BitAndWith.impl_witness, element1 [concrete = constants.%C.as.BitAndWith.impl.Op] // CHECK:STDOUT: %bound_method: = bound_method %a.ref, %impl.elem1 // CHECK:STDOUT: -// CHECK:STDOUT: %C.as.BitAndWith.impl.Op.call: init %C = call %bound_method(%a.ref, %b.ref) to %.loc30 +// CHECK:STDOUT: %C.as.BitAndWith.impl.Op.call: init %C = call %bound_method(%a.ref, %b.ref) to %.loc30_23 // CHECK:STDOUT: return %C.as.BitAndWith.impl.Op.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/operators/overloaded/bit_complement.carbon b/toolchain/check/testdata/operators/overloaded/bit_complement.carbon index 2d558f2ac291..9ab781d40f2c 100644 --- a/toolchain/check/testdata/operators/overloaded/bit_complement.carbon +++ b/toolchain/check/testdata/operators/overloaded/bit_complement.carbon @@ -52,7 +52,7 @@ fn TestOp(a: C) -> C { // CHECK:STDOUT: %impl.elem1: %.b59 = impl_witness_access constants.%BitComplement.impl_witness, element1 [concrete = constants.%C.as.BitComplement.impl.Op] // CHECK:STDOUT: %bound_method: = bound_method %a.ref, %impl.elem1 // CHECK:STDOUT: -// CHECK:STDOUT: %C.as.BitComplement.impl.Op.call: init %C = call %bound_method(%a.ref) to %.loc27 +// CHECK:STDOUT: %C.as.BitComplement.impl.Op.call: init %C = call %bound_method(%a.ref) to %.loc27_17 // CHECK:STDOUT: return %C.as.BitComplement.impl.Op.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/operators/overloaded/bit_or.carbon b/toolchain/check/testdata/operators/overloaded/bit_or.carbon index fc838de1365e..85d8da798826 100644 --- a/toolchain/check/testdata/operators/overloaded/bit_or.carbon +++ b/toolchain/check/testdata/operators/overloaded/bit_or.carbon @@ -71,7 +71,7 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %impl.elem1: %.288 = impl_witness_access constants.%BitOrWith.impl_witness, element1 [concrete = constants.%C.as.BitOrWith.impl.Op] // CHECK:STDOUT: %bound_method: = bound_method %a.ref, %impl.elem1 // CHECK:STDOUT: -// CHECK:STDOUT: %C.as.BitOrWith.impl.Op.call: init %C = call %bound_method(%a.ref, %b.ref) to %.loc30 +// CHECK:STDOUT: %C.as.BitOrWith.impl.Op.call: init %C = call %bound_method(%a.ref, %b.ref) to %.loc30_23 // CHECK:STDOUT: return %C.as.BitOrWith.impl.Op.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/operators/overloaded/bit_xor.carbon b/toolchain/check/testdata/operators/overloaded/bit_xor.carbon index e816177d027d..fbed86460f52 100644 --- a/toolchain/check/testdata/operators/overloaded/bit_xor.carbon +++ b/toolchain/check/testdata/operators/overloaded/bit_xor.carbon @@ -71,7 +71,7 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %impl.elem1: %.864 = impl_witness_access constants.%BitXorWith.impl_witness, element1 [concrete = constants.%C.as.BitXorWith.impl.Op] // CHECK:STDOUT: %bound_method: = bound_method %a.ref, %impl.elem1 // CHECK:STDOUT: -// CHECK:STDOUT: %C.as.BitXorWith.impl.Op.call: init %C = call %bound_method(%a.ref, %b.ref) to %.loc30 +// CHECK:STDOUT: %C.as.BitXorWith.impl.Op.call: init %C = call %bound_method(%a.ref, %b.ref) to %.loc30_23 // CHECK:STDOUT: return %C.as.BitXorWith.impl.Op.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/operators/overloaded/div.carbon b/toolchain/check/testdata/operators/overloaded/div.carbon index fcecb6d27b58..5b27316b11b3 100644 --- a/toolchain/check/testdata/operators/overloaded/div.carbon +++ b/toolchain/check/testdata/operators/overloaded/div.carbon @@ -71,7 +71,7 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %impl.elem1: %.96d = impl_witness_access constants.%DivWith.impl_witness, element1 [concrete = constants.%C.as.DivWith.impl.Op] // CHECK:STDOUT: %bound_method: = bound_method %a.ref, %impl.elem1 // CHECK:STDOUT: -// CHECK:STDOUT: %C.as.DivWith.impl.Op.call: init %C = call %bound_method(%a.ref, %b.ref) to %.loc30 +// CHECK:STDOUT: %C.as.DivWith.impl.Op.call: init %C = call %bound_method(%a.ref, %b.ref) to %.loc30_23 // CHECK:STDOUT: return %C.as.DivWith.impl.Op.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/operators/overloaded/eq.carbon b/toolchain/check/testdata/operators/overloaded/eq.carbon index 3195a407a22a..f1b40de97abf 100644 --- a/toolchain/check/testdata/operators/overloaded/eq.carbon +++ b/toolchain/check/testdata/operators/overloaded/eq.carbon @@ -97,6 +97,7 @@ fn TestLhsBad(a: D, b: C) -> bool { // CHECK:STDOUT: %pattern_type.476: type = pattern_type %C [concrete] // CHECK:STDOUT: %Bool.type: type = fn_type @Bool [concrete] // CHECK:STDOUT: %Bool: %Bool.type = struct_value () [concrete] +// CHECK:STDOUT: %.650: form = init_form bool, call_param2 [concrete] // CHECK:STDOUT: %C.as.EqWith.impl.Equal.type: type = fn_type @C.as.EqWith.impl.Equal [concrete] // CHECK:STDOUT: %C.as.EqWith.impl.Equal: %C.as.EqWith.impl.Equal.type = struct_value () [concrete] // CHECK:STDOUT: %C.as.EqWith.impl.NotEqual.type: type = fn_type @C.as.EqWith.impl.NotEqual [concrete] @@ -148,6 +149,7 @@ fn TestLhsBad(a: D, b: C) -> bool { // CHECK:STDOUT: %Bool.call: init type = call constants.%Bool() [concrete = bool] // CHECK:STDOUT: %.loc11_29.1: type = value_of_initializer %Bool.call [concrete = bool] // CHECK:STDOUT: %.loc11_29.2: type = converted %Bool.call, %.loc11_29.1 [concrete = bool] +// CHECK:STDOUT: %.loc11_29.3: form = init_form %.loc11_29.2, call_param2 [concrete = constants.%.650] // CHECK:STDOUT: %a.param: %C = value_param call_param0 // CHECK:STDOUT: %C.ref.loc11_17: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %a: %C = value_binding a, %a.param @@ -168,6 +170,7 @@ fn TestLhsBad(a: D, b: C) -> bool { // CHECK:STDOUT: %Bool.call: init type = call constants.%Bool() [concrete = bool] // CHECK:STDOUT: %.loc15_32.1: type = value_of_initializer %Bool.call [concrete = bool] // CHECK:STDOUT: %.loc15_32.2: type = converted %Bool.call, %.loc15_32.1 [concrete = bool] +// CHECK:STDOUT: %.loc15_32.3: form = init_form %.loc15_32.2, call_param2 [concrete = constants.%.650] // CHECK:STDOUT: %a.param: %C = value_param call_param0 // CHECK:STDOUT: %C.ref.loc15_20: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %a: %C = value_binding a, %a.param @@ -191,6 +194,7 @@ fn TestLhsBad(a: D, b: C) -> bool { // CHECK:STDOUT: %Bool.call: init type = call constants.%Bool() [concrete = bool] // CHECK:STDOUT: %.loc7_34.1: type = value_of_initializer %Bool.call [concrete = bool] // CHECK:STDOUT: %.loc7_34.2: type = converted %Bool.call, %.loc7_34.1 [concrete = bool] +// CHECK:STDOUT: %.loc7_34.3: form = init_form %.loc7_34.2, call_param2 [concrete = constants.%.650] // CHECK:STDOUT: %self.param: %C = value_param call_param0 // CHECK:STDOUT: %C.ref.loc7_18: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %self: %C = value_binding self, %self.param @@ -211,6 +215,7 @@ fn TestLhsBad(a: D, b: C) -> bool { // CHECK:STDOUT: %Bool.call: init type = call constants.%Bool() [concrete = bool] // CHECK:STDOUT: %.loc8_37.1: type = value_of_initializer %Bool.call [concrete = bool] // CHECK:STDOUT: %.loc8_37.2: type = converted %Bool.call, %.loc8_37.1 [concrete = bool] +// CHECK:STDOUT: %.loc8_37.3: form = init_form %.loc8_37.2, call_param2 [concrete = constants.%.650] // CHECK:STDOUT: %self.param: %C = value_param call_param0 // CHECK:STDOUT: %C.ref.loc8_21: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %self: %C = value_binding self, %self.param @@ -271,6 +276,7 @@ fn TestLhsBad(a: D, b: C) -> bool { // CHECK:STDOUT: %pattern_type.54d: type = pattern_type %D [concrete] // CHECK:STDOUT: %Bool.type: type = fn_type @Bool [concrete] // CHECK:STDOUT: %Bool: %Bool.type = struct_value () [concrete] +// CHECK:STDOUT: %.650: form = init_form bool, call_param2 [concrete] // CHECK:STDOUT: %pattern_type.831: type = pattern_type bool [concrete] // CHECK:STDOUT: %TestEqual.type: type = fn_type @TestEqual [concrete] // CHECK:STDOUT: %TestEqual: %TestEqual.type = struct_value () [concrete] @@ -311,6 +317,7 @@ fn TestLhsBad(a: D, b: C) -> bool { // CHECK:STDOUT: %Bool.call: init type = call constants.%Bool() [concrete = bool] // CHECK:STDOUT: %.loc6_29.1: type = value_of_initializer %Bool.call [concrete = bool] // CHECK:STDOUT: %.loc6_29.2: type = converted %Bool.call, %.loc6_29.1 [concrete = bool] +// CHECK:STDOUT: %.loc6_29.3: form = init_form %.loc6_29.2, call_param2 [concrete = constants.%.650] // CHECK:STDOUT: %a.param: %D = value_param call_param0 // CHECK:STDOUT: %D.ref.loc6_17: type = name_ref D, file.%D.decl [concrete = constants.%D] // CHECK:STDOUT: %a: %D = value_binding a, %a.param @@ -331,6 +338,7 @@ fn TestLhsBad(a: D, b: C) -> bool { // CHECK:STDOUT: %Bool.call: init type = call constants.%Bool() [concrete = bool] // CHECK:STDOUT: %.loc14_32.1: type = value_of_initializer %Bool.call [concrete = bool] // CHECK:STDOUT: %.loc14_32.2: type = converted %Bool.call, %.loc14_32.1 [concrete = bool] +// CHECK:STDOUT: %.loc14_32.3: form = init_form %.loc14_32.2, call_param2 [concrete = constants.%.650] // CHECK:STDOUT: %a.param: %D = value_param call_param0 // CHECK:STDOUT: %D.ref.loc14_20: type = name_ref D, file.%D.decl [concrete = constants.%D] // CHECK:STDOUT: %a: %D = value_binding a, %a.param @@ -379,6 +387,7 @@ fn TestLhsBad(a: D, b: C) -> bool { // CHECK:STDOUT: %pattern_type.224: type = pattern_type %C [concrete] // CHECK:STDOUT: %Bool.type: type = fn_type @Bool [concrete] // CHECK:STDOUT: %Bool: %Bool.type = struct_value () [concrete] +// CHECK:STDOUT: %.650: form = init_form bool, call_param2 [concrete] // CHECK:STDOUT: %C.as.EqWith.impl.Equal.type: type = fn_type @C.as.EqWith.impl.Equal [concrete] // CHECK:STDOUT: %C.as.EqWith.impl.Equal: %C.as.EqWith.impl.Equal.type = struct_value () [concrete] // CHECK:STDOUT: %C.as.EqWith.impl.NotEqual.type: type = fn_type @C.as.EqWith.impl.NotEqual [concrete] @@ -430,6 +439,7 @@ fn TestLhsBad(a: D, b: C) -> bool { // CHECK:STDOUT: %Bool.call: init type = call constants.%Bool() [concrete = bool] // CHECK:STDOUT: %.loc12_30.1: type = value_of_initializer %Bool.call [concrete = bool] // CHECK:STDOUT: %.loc12_30.2: type = converted %Bool.call, %.loc12_30.1 [concrete = bool] +// CHECK:STDOUT: %.loc12_30.3: form = init_form %.loc12_30.2, call_param2 [concrete = constants.%.650] // CHECK:STDOUT: %a.param: %C = value_param call_param0 // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %a: %C = value_binding a, %a.param @@ -450,6 +460,7 @@ fn TestLhsBad(a: D, b: C) -> bool { // CHECK:STDOUT: %Bool.call: init type = call constants.%Bool() [concrete = bool] // CHECK:STDOUT: %.loc20_30.1: type = value_of_initializer %Bool.call [concrete = bool] // CHECK:STDOUT: %.loc20_30.2: type = converted %Bool.call, %.loc20_30.1 [concrete = bool] +// CHECK:STDOUT: %.loc20_30.3: form = init_form %.loc20_30.2, call_param2 [concrete = constants.%.650] // CHECK:STDOUT: %a.param: %D = value_param call_param0 // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [concrete = constants.%D] // CHECK:STDOUT: %a: %D = value_binding a, %a.param @@ -473,6 +484,7 @@ fn TestLhsBad(a: D, b: C) -> bool { // CHECK:STDOUT: %Bool.call: init type = call constants.%Bool() [concrete = bool] // CHECK:STDOUT: %.loc8_34.1: type = value_of_initializer %Bool.call [concrete = bool] // CHECK:STDOUT: %.loc8_34.2: type = converted %Bool.call, %.loc8_34.1 [concrete = bool] +// CHECK:STDOUT: %.loc8_34.3: form = init_form %.loc8_34.2, call_param2 [concrete = constants.%.650] // CHECK:STDOUT: %self.param: %C = value_param call_param0 // CHECK:STDOUT: %C.ref.loc8_18: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %self: %C = value_binding self, %self.param @@ -493,6 +505,7 @@ fn TestLhsBad(a: D, b: C) -> bool { // CHECK:STDOUT: %Bool.call: init type = call constants.%Bool() [concrete = bool] // CHECK:STDOUT: %.loc9_37.1: type = value_of_initializer %Bool.call [concrete = bool] // CHECK:STDOUT: %.loc9_37.2: type = converted %Bool.call, %.loc9_37.1 [concrete = bool] +// CHECK:STDOUT: %.loc9_37.3: form = init_form %.loc9_37.2, call_param2 [concrete = constants.%.650] // CHECK:STDOUT: %self.param: %C = value_param call_param0 // CHECK:STDOUT: %C.ref.loc9_21: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %self: %C = value_binding self, %self.param diff --git a/toolchain/check/testdata/operators/overloaded/fail_no_impl.carbon b/toolchain/check/testdata/operators/overloaded/fail_no_impl.carbon index dbdc6fd1a2df..34582f83e78f 100644 --- a/toolchain/check/testdata/operators/overloaded/fail_no_impl.carbon +++ b/toolchain/check/testdata/operators/overloaded/fail_no_impl.carbon @@ -53,10 +53,12 @@ fn TestRef(b: C) { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %pattern_type.476: type = pattern_type %C [concrete] +// CHECK:STDOUT: %.c0e: form = init_form %C, call_param1 [concrete] // CHECK:STDOUT: %TestUnary.type: type = fn_type @TestUnary [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %TestUnary: %TestUnary.type = struct_value () [concrete] // CHECK:STDOUT: %Negate.type: type = facet_type <@Negate> [concrete] +// CHECK:STDOUT: %.099: form = init_form %C, call_param2 [concrete] // CHECK:STDOUT: %TestBinary.type: type = fn_type @TestBinary [concrete] // CHECK:STDOUT: %TestBinary: %TestBinary.type = struct_value () [concrete] // CHECK:STDOUT: %AddWith.type.e05: type = generic_interface_type @AddWith [concrete] @@ -107,6 +109,7 @@ fn TestRef(b: C) { // CHECK:STDOUT: %return.param_patt: %pattern_type.476 = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc19_23: type = name_ref C, file.%C.decl [concrete = constants.%C] +// CHECK:STDOUT: %.loc19: form = init_form %C.ref.loc19_23, call_param1 [concrete = constants.%.c0e] // CHECK:STDOUT: %a.param: %C = value_param call_param0 // CHECK:STDOUT: %C.ref.loc19_17: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %a: %C = value_binding a, %a.param @@ -122,6 +125,7 @@ fn TestRef(b: C) { // CHECK:STDOUT: %return.param_patt: %pattern_type.476 = out_param_pattern %return.patt, call_param2 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc27_30: type = name_ref C, file.%C.decl [concrete = constants.%C] +// CHECK:STDOUT: %.loc27: form = init_form %C.ref.loc27_30, call_param2 [concrete = constants.%.099] // CHECK:STDOUT: %a.param: %C = value_param call_param0 // CHECK:STDOUT: %C.ref.loc27_18: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %a: %C = value_binding a, %a.param diff --git a/toolchain/check/testdata/operators/overloaded/implicit_as.carbon b/toolchain/check/testdata/operators/overloaded/implicit_as.carbon index 088a02595b10..fcedf2039f69 100644 --- a/toolchain/check/testdata/operators/overloaded/implicit_as.carbon +++ b/toolchain/check/testdata/operators/overloaded/implicit_as.carbon @@ -57,6 +57,7 @@ fn Test() { // CHECK:STDOUT: %ImplicitAs.impl_witness.f5e: = impl_witness @i32.as.ImplicitAs.impl.%ImplicitAs.impl_witness_table [concrete] // CHECK:STDOUT: %ImplicitAs.Convert.type.9f8: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%X) [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] +// CHECK:STDOUT: %.f39: form = init_form %X, call_param1 [concrete] // CHECK:STDOUT: %pattern_type.05f: type = pattern_type %X [concrete] // CHECK:STDOUT: %i32.as.ImplicitAs.impl.Convert.type: type = fn_type @i32.as.ImplicitAs.impl.Convert [concrete] // CHECK:STDOUT: %i32.as.ImplicitAs.impl.Convert: %i32.as.ImplicitAs.impl.Convert.type = struct_value () [concrete] @@ -71,6 +72,7 @@ fn Test() { // CHECK:STDOUT: %Int.as.Copy.impl.Op.664: %Int.as.Copy.impl.Op.type.546 = struct_value () [concrete] // CHECK:STDOUT: %Copy.facet: %Copy.type = facet_value %i32, (%Copy.impl_witness.f17) [concrete] // CHECK:STDOUT: %.f79: type = fn_type_with_self_type %Copy.Op.type, %Copy.facet [concrete] +// CHECK:STDOUT: %.4d5: form = init_form %i32, call_param1 [concrete] // CHECK:STDOUT: %Int.as.Copy.impl.Op.specific_fn: = specific_function %Int.as.Copy.impl.Op.664, @Int.as.Copy.impl.Op(%int_32) [concrete] // CHECK:STDOUT: %ImplicitAs.type.e8c: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] // CHECK:STDOUT: %ImplicitAs.impl_witness.d6a: = impl_witness @X.as.ImplicitAs.impl.%ImplicitAs.impl_witness_table [concrete] @@ -84,6 +86,7 @@ fn Test() { // CHECK:STDOUT: %Sink_X: %Sink_X.type = struct_value () [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] // CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.c6c: form = init_form %T.67d, call_param0 [symbolic] // CHECK:STDOUT: %pattern_type.51d1c4.2: type = pattern_type %T.67d [symbolic] // CHECK:STDOUT: %Source.type: type = fn_type @Source [concrete] // CHECK:STDOUT: %Source: %Source.type = struct_value () [concrete] @@ -91,8 +94,10 @@ fn Test() { // CHECK:STDOUT: %Source.specific_fn.24a: = specific_function %Source, @Source(%T.67d) [symbolic] // CHECK:STDOUT: %Test.type: type = fn_type @Test [concrete] // CHECK:STDOUT: %Test: %Test.type = struct_value () [concrete] +// CHECK:STDOUT: %.599: form = init_form %X, call_param0 [concrete] // CHECK:STDOUT: %Source.specific_fn.b43: = specific_function %Source, @Source(%X) [concrete] // CHECK:STDOUT: %.3af: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet.5c6 [concrete] +// CHECK:STDOUT: %.941: form = init_form %i32, call_param0 [concrete] // CHECK:STDOUT: %Source.specific_fn.217: = specific_function %Source, @Source(%i32) [concrete] // CHECK:STDOUT: %.3d8: type = fn_type_with_self_type %ImplicitAs.Convert.type.9f8, %ImplicitAs.facet.be6 [concrete] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] @@ -169,6 +174,7 @@ fn Test() { // CHECK:STDOUT: %return.param_patt: @Source.%pattern_type (%pattern_type.51d1c4.2) = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc31_24: type = name_ref T, %T.loc31_11.2 [symbolic = %T.loc31_11.1 (constants.%T.67d)] +// CHECK:STDOUT: %.loc31_24.2: form = init_form %T.ref.loc31_24, call_param0 [symbolic = %.loc31_24.1 (constants.%.c6c)] // CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] // CHECK:STDOUT: %T.loc31_11.2: type = symbolic_binding T, 0 [symbolic = %T.loc31_11.1 (constants.%T.67d)] // CHECK:STDOUT: %return.param: ref @Source.%T.loc31_11.1 (%T.67d) = out_param call_param0 @@ -185,6 +191,7 @@ fn Test() { // CHECK:STDOUT: %return.param_patt: %pattern_type.05f = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %X.ref: type = name_ref X, file.%X.decl [concrete = constants.%X] +// CHECK:STDOUT: %.loc20_30: form = init_form %X.ref, call_param1 [concrete = constants.%.f39] // CHECK:STDOUT: %self.param: %i32 = value_param call_param0 // CHECK:STDOUT: %.loc20_20: type = splice_block %i32 [concrete = constants.%i32] { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] @@ -212,6 +219,7 @@ fn Test() { // CHECK:STDOUT: } { // 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: %.loc24_28: form = init_form %i32, call_param1 [concrete = constants.%.4d5] // CHECK:STDOUT: %self.param: %X = value_param call_param0 // CHECK:STDOUT: %X.ref: type = name_ref X, file.%X.decl [concrete = constants.%X] // CHECK:STDOUT: %self: %X = value_binding self, %self.param @@ -275,6 +283,7 @@ fn Test() { // CHECK:STDOUT: // CHECK:STDOUT: generic fn @Source(%T.loc31_11.2: type) { // CHECK:STDOUT: %T.loc31_11.1: type = symbolic_binding T, 0 [symbolic = %T.loc31_11.1 (constants.%T.67d)] +// CHECK:STDOUT: %.loc31_24.1: form = init_form %T.loc31_11.1, call_param0 [symbolic = %.loc31_24.1 (constants.%.c6c)] // CHECK:STDOUT: %pattern_type: type = pattern_type %T.loc31_11.1 [symbolic = %pattern_type (constants.%pattern_type.51d1c4.2)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -286,8 +295,8 @@ fn Test() { // CHECK:STDOUT: %Source.ref: %Source.type = name_ref Source, file.%Source.decl [concrete = constants.%Source] // CHECK:STDOUT: %T.ref.loc31_42: type = name_ref T, %T.loc31_11.2 [symbolic = %T.loc31_11.1 (constants.%T.67d)] // CHECK:STDOUT: %Source.specific_fn.loc31_35.1: = specific_function %Source.ref, @Source(constants.%T.67d) [symbolic = %Source.specific_fn.loc31_35.2 (constants.%Source.specific_fn.24a)] -// CHECK:STDOUT: %.loc31: ref @Source.%T.loc31_11.1 (%T.67d) = splice_block %return {} -// CHECK:STDOUT: %Source.call: init @Source.%T.loc31_11.1 (%T.67d) = call %Source.specific_fn.loc31_35.1() to %.loc31 +// CHECK:STDOUT: %.loc31_21: ref @Source.%T.loc31_11.1 (%T.67d) = splice_block %return {} +// CHECK:STDOUT: %Source.call: init @Source.%T.loc31_11.1 (%T.67d) = call %Source.specific_fn.loc31_35.1() to %.loc31_21 // CHECK:STDOUT: return %Source.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -335,6 +344,7 @@ fn Test() { // CHECK:STDOUT: // CHECK:STDOUT: specific @Source(constants.%T.67d) { // CHECK:STDOUT: %T.loc31_11.1 => constants.%T.67d +// CHECK:STDOUT: %.loc31_24.1 => constants.%.c6c // CHECK:STDOUT: %pattern_type => constants.%pattern_type.51d1c4.2 // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -344,6 +354,7 @@ fn Test() { // CHECK:STDOUT: // CHECK:STDOUT: specific @Source(constants.%X) { // CHECK:STDOUT: %T.loc31_11.1 => constants.%X +// CHECK:STDOUT: %.loc31_24.1 => constants.%.599 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.05f // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -353,6 +364,7 @@ fn Test() { // CHECK:STDOUT: // CHECK:STDOUT: specific @Source(constants.%i32) { // CHECK:STDOUT: %T.loc31_11.1 => constants.%i32 +// CHECK:STDOUT: %.loc31_24.1 => constants.%.941 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.7ce // CHECK:STDOUT: // CHECK:STDOUT: !definition: diff --git a/toolchain/check/testdata/operators/overloaded/index.carbon b/toolchain/check/testdata/operators/overloaded/index.carbon index 2d3be457c8ab..e23352dc44c6 100644 --- a/toolchain/check/testdata/operators/overloaded/index.carbon +++ b/toolchain/check/testdata/operators/overloaded/index.carbon @@ -193,6 +193,7 @@ fn F() { // CHECK:STDOUT: %Self.binding.as_type: type = symbolic_binding_type Self, 2, %Self [symbolic] // CHECK:STDOUT: %pattern_type.5ae: type = pattern_type %Self.binding.as_type [symbolic] // CHECK:STDOUT: %pattern_type.51d: type = pattern_type %SubscriptType [symbolic] +// CHECK:STDOUT: %.608: form = init_form %ElementType, call_param2 [symbolic] // CHECK:STDOUT: %pattern_type.946: type = pattern_type %ElementType [symbolic] // CHECK:STDOUT: %IndexWith.At.type: type = fn_type @IndexWith.At, @IndexWith(%SubscriptType, %ElementType) [symbolic] // CHECK:STDOUT: %IndexWith.At: %IndexWith.At.type = struct_value () [symbolic] @@ -238,6 +239,7 @@ fn F() { // CHECK:STDOUT: %return.param_patt: @IndexWith.At.%pattern_type.loc5_47 (%pattern_type.946) = out_param_pattern %return.patt, call_param2 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %ElementType.ref: type = name_ref ElementType, @IndexWith.%ElementType.loc4_43.2 [symbolic = %ElementType (constants.%ElementType)] +// CHECK:STDOUT: %.loc5_50.2: form = init_form %ElementType.ref, call_param2 [symbolic = %.loc5_50.1 (constants.%.608)] // CHECK:STDOUT: %self.param: @IndexWith.At.%Self.binding.as_type (%Self.binding.as_type) = value_param call_param0 // CHECK:STDOUT: %.loc5_15.1: type = splice_block %.loc5_15.3 [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type)] { // CHECK:STDOUT: %.loc5_15.2: @IndexWith.At.%IndexWith.type (%IndexWith.type.2c3) = specific_constant @IndexWith.%Self.loc4_63.1, @IndexWith(constants.%SubscriptType, constants.%ElementType) [symbolic = %Self (constants.%Self)] @@ -273,6 +275,7 @@ fn F() { // CHECK:STDOUT: %Self.binding.as_type: type = symbolic_binding_type Self, 2, %Self [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type)] // CHECK:STDOUT: %pattern_type.loc5_9: type = pattern_type %Self.binding.as_type [symbolic = %pattern_type.loc5_9 (constants.%pattern_type.5ae)] // CHECK:STDOUT: %pattern_type.loc5_21: type = pattern_type %SubscriptType [symbolic = %pattern_type.loc5_21 (constants.%pattern_type.51d)] +// CHECK:STDOUT: %.loc5_50.1: form = init_form %ElementType, call_param2 [symbolic = %.loc5_50.1 (constants.%.608)] // CHECK:STDOUT: %pattern_type.loc5_47: type = pattern_type %ElementType [symbolic = %pattern_type.loc5_47 (constants.%pattern_type.946)] // CHECK:STDOUT: // CHECK:STDOUT: fn(%self.param: @IndexWith.At.%Self.binding.as_type (%Self.binding.as_type), %subscript.param: @IndexWith.At.%SubscriptType (%SubscriptType)) -> @IndexWith.At.%ElementType (%ElementType); @@ -291,6 +294,7 @@ fn F() { // CHECK:STDOUT: %Self.binding.as_type => constants.%Self.binding.as_type // CHECK:STDOUT: %pattern_type.loc5_9 => constants.%pattern_type.5ae // CHECK:STDOUT: %pattern_type.loc5_21 => constants.%pattern_type.51d +// CHECK:STDOUT: %.loc5_50.1 => constants.%.608 // CHECK:STDOUT: %pattern_type.loc5_47 => constants.%pattern_type.946 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -314,6 +318,7 @@ fn F() { // CHECK:STDOUT: %pattern_type.946: type = pattern_type %ElementType [symbolic] // CHECK:STDOUT: %Self.binding.as_type.79f: type = symbolic_binding_type Self, 2, %Self.b10 [symbolic] // CHECK:STDOUT: %pattern_type.994: type = pattern_type %Self.binding.as_type.79f [symbolic] +// CHECK:STDOUT: %.608: form = init_form %ElementType, call_param2 [symbolic] // CHECK:STDOUT: %pattern_type.51d: type = pattern_type %SubscriptType [symbolic] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %IndexWith.type.483: type = facet_type <@IndexWith, @IndexWith(%empty_tuple.type, %empty_tuple.type)> [concrete] @@ -325,6 +330,7 @@ fn F() { // CHECK:STDOUT: %assoc0.e4f: %IndexWith.assoc_type.d10 = assoc_entity element0, imports.%Core.import_ref.336 [concrete] // CHECK:STDOUT: %pattern_type.7c7: type = pattern_type %C [concrete] // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] +// CHECK:STDOUT: %.6b2: form = init_form %empty_tuple.type, call_param2 [concrete] // CHECK:STDOUT: %C.as.IndexWith.impl.At.type: type = fn_type @C.as.IndexWith.impl.At [concrete] // CHECK:STDOUT: %C.as.IndexWith.impl.At: %C.as.IndexWith.impl.At.type = struct_value () [concrete] // CHECK:STDOUT: %IndexWith.facet: %IndexWith.type.483 = facet_value %C, (%IndexWith.impl_witness) [concrete] @@ -412,6 +418,7 @@ fn F() { // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc9_40.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc9_40.2: type = converted %.loc9_40.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %.loc9_40.3: form = init_form %.loc9_40.2, call_param2 [concrete = constants.%.6b2] // CHECK:STDOUT: %self.param: %C = value_param call_param0 // CHECK:STDOUT: %Self.ref: type = name_ref Self, @C.as.IndexWith.impl.%C.ref [concrete = constants.%C] // CHECK:STDOUT: %self: %C = value_binding self, %self.param @@ -448,6 +455,7 @@ fn F() { // CHECK:STDOUT: %Self.binding.as_type: type = symbolic_binding_type Self, 2, %Self [symbolic = %Self.binding.as_type (constants.%Self.binding.as_type.79f)] // CHECK:STDOUT: %pattern_type.1: type = pattern_type %Self.binding.as_type [symbolic = %pattern_type.1 (constants.%pattern_type.994)] // CHECK:STDOUT: %pattern_type.2: type = pattern_type %SubscriptType [symbolic = %pattern_type.2 (constants.%pattern_type.51d)] +// CHECK:STDOUT: %.1: form = init_form %ElementType, call_param2 [symbolic = %.1 (constants.%.608)] // CHECK:STDOUT: %pattern_type.3: type = pattern_type %ElementType [symbolic = %pattern_type.3 (constants.%pattern_type.946)] // CHECK:STDOUT: // CHECK:STDOUT: fn; @@ -496,6 +504,7 @@ fn F() { // CHECK:STDOUT: %Self.binding.as_type => constants.%Self.binding.as_type.79f // CHECK:STDOUT: %pattern_type.1 => constants.%pattern_type.994 // CHECK:STDOUT: %pattern_type.2 => constants.%pattern_type.51d +// CHECK:STDOUT: %.1 => constants.%.608 // CHECK:STDOUT: %pattern_type.3 => constants.%pattern_type.946 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -520,6 +529,7 @@ fn F() { // CHECK:STDOUT: %Self.binding.as_type => constants.%C // CHECK:STDOUT: %pattern_type.1 => constants.%pattern_type.7c7 // CHECK:STDOUT: %pattern_type.2 => constants.%pattern_type.cb1 +// CHECK:STDOUT: %.1 => constants.%.6b2 // CHECK:STDOUT: %pattern_type.3 => constants.%pattern_type.cb1 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/operators/overloaded/index_with_prelude.carbon b/toolchain/check/testdata/operators/overloaded/index_with_prelude.carbon index 3fad062132cb..1d15678c3d62 100644 --- a/toolchain/check/testdata/operators/overloaded/index_with_prelude.carbon +++ b/toolchain/check/testdata/operators/overloaded/index_with_prelude.carbon @@ -107,6 +107,7 @@ let x: i32 = c[0]; // CHECK:STDOUT: %IndexWith.impl_witness: = impl_witness @C.as.IndexWith.impl.%IndexWith.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.7c7: type = pattern_type %C [concrete] // CHECK:STDOUT: %pattern_type.541: type = pattern_type %SubscriptType.9ec [concrete] +// CHECK:STDOUT: %.8ff: form = init_form %ElementType, call_param2 [concrete] // CHECK:STDOUT: %pattern_type.fde: type = pattern_type %ElementType [concrete] // CHECK:STDOUT: %C.as.IndexWith.impl.At.type: type = fn_type @C.as.IndexWith.impl.At [concrete] // CHECK:STDOUT: %C.as.IndexWith.impl.At: %C.as.IndexWith.impl.At.type = struct_value () [concrete] @@ -203,6 +204,7 @@ let x: i32 = c[0]; // CHECK:STDOUT: %return.param_patt: %pattern_type.fde = out_param_pattern %return.patt, call_param2 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %ElementType.ref: type = name_ref ElementType, file.%ElementType.decl [concrete = constants.%ElementType] +// CHECK:STDOUT: %.loc9: form = init_form %ElementType.ref, call_param2 [concrete = constants.%.8ff] // CHECK:STDOUT: %self.param: %C = value_param call_param0 // CHECK:STDOUT: %Self.ref: type = name_ref Self, @C.as.IndexWith.impl.%C.ref [concrete = constants.%C] // CHECK:STDOUT: %self: %C = value_binding self, %self.param @@ -297,6 +299,7 @@ let x: i32 = c[0]; // CHECK:STDOUT: %IndexWith.impl_witness: = impl_witness @tuple.type.as.IndexWith.impl.%IndexWith.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.c3b: type = pattern_type %tuple.type.d23 [concrete] // CHECK:STDOUT: %pattern_type.dc0: type = pattern_type Core.IntLiteral [concrete] +// CHECK:STDOUT: %.355: form = init_form %C, call_param2 [concrete] // CHECK:STDOUT: %pattern_type.7c7: type = pattern_type %C [concrete] // CHECK:STDOUT: %tuple.type.as.IndexWith.impl.At.type: type = fn_type @tuple.type.as.IndexWith.impl.At [concrete] // CHECK:STDOUT: %tuple.type.as.IndexWith.impl.At: %tuple.type.as.IndexWith.impl.At.type = struct_value () [concrete] @@ -392,6 +395,7 @@ let x: i32 = c[0]; // CHECK:STDOUT: %return.param_patt: %pattern_type.7c7 = out_param_pattern %return.patt, call_param2 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] +// CHECK:STDOUT: %.loc9_54: form = init_form %C.ref, call_param2 [concrete = constants.%.355] // CHECK:STDOUT: %self.param: %tuple.type.d23 = value_param call_param0 // CHECK:STDOUT: %Self.ref: type = name_ref Self, @tuple.type.as.IndexWith.impl.%.loc8_11.2 [concrete = constants.%tuple.type.d23] // CHECK:STDOUT: %self: %tuple.type.d23 = value_binding self, %self.param @@ -486,6 +490,7 @@ let x: i32 = c[0]; // CHECK:STDOUT: %IndexWith.impl_witness: = impl_witness @C.as.IndexWith.impl.%IndexWith.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.7c7: type = pattern_type %C [concrete] // CHECK:STDOUT: %pattern_type.541: type = pattern_type %SubscriptType.9ec [concrete] +// CHECK:STDOUT: %.8ff: form = init_form %ElementType, call_param2 [concrete] // CHECK:STDOUT: %pattern_type.fde: type = pattern_type %ElementType [concrete] // CHECK:STDOUT: %C.as.IndexWith.impl.At.type: type = fn_type @C.as.IndexWith.impl.At [concrete] // CHECK:STDOUT: %C.as.IndexWith.impl.At: %C.as.IndexWith.impl.At.type = struct_value () [concrete] @@ -567,6 +572,7 @@ let x: i32 = c[0]; // CHECK:STDOUT: %return.param_patt: %pattern_type.fde = out_param_pattern %return.patt, call_param2 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %ElementType.ref: type = name_ref ElementType, file.%ElementType.decl [concrete = constants.%ElementType] +// CHECK:STDOUT: %.loc9: form = init_form %ElementType.ref, call_param2 [concrete = constants.%.8ff] // CHECK:STDOUT: %self.param: %C = value_param call_param0 // CHECK:STDOUT: %Self.ref: type = name_ref Self, @C.as.IndexWith.impl.%C.ref [concrete = constants.%C] // CHECK:STDOUT: %self: %C = value_binding self, %self.param diff --git a/toolchain/check/testdata/operators/overloaded/left_shift.carbon b/toolchain/check/testdata/operators/overloaded/left_shift.carbon index 74ac96a6b62c..d7f85a567aa2 100644 --- a/toolchain/check/testdata/operators/overloaded/left_shift.carbon +++ b/toolchain/check/testdata/operators/overloaded/left_shift.carbon @@ -71,7 +71,7 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %impl.elem1: %.ad2 = impl_witness_access constants.%LeftShiftWith.impl_witness, element1 [concrete = constants.%C.as.LeftShiftWith.impl.Op] // CHECK:STDOUT: %bound_method: = bound_method %a.ref, %impl.elem1 // CHECK:STDOUT: -// CHECK:STDOUT: %C.as.LeftShiftWith.impl.Op.call: init %C = call %bound_method(%a.ref, %b.ref) to %.loc30 +// CHECK:STDOUT: %C.as.LeftShiftWith.impl.Op.call: init %C = call %bound_method(%a.ref, %b.ref) to %.loc30_23 // CHECK:STDOUT: return %C.as.LeftShiftWith.impl.Op.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/operators/overloaded/mod.carbon b/toolchain/check/testdata/operators/overloaded/mod.carbon index 5e601fa0d07a..6ec0827250ad 100644 --- a/toolchain/check/testdata/operators/overloaded/mod.carbon +++ b/toolchain/check/testdata/operators/overloaded/mod.carbon @@ -71,7 +71,7 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %impl.elem1: %.523 = impl_witness_access constants.%ModWith.impl_witness, element1 [concrete = constants.%C.as.ModWith.impl.Op] // CHECK:STDOUT: %bound_method: = bound_method %a.ref, %impl.elem1 // CHECK:STDOUT: -// CHECK:STDOUT: %C.as.ModWith.impl.Op.call: init %C = call %bound_method(%a.ref, %b.ref) to %.loc30 +// CHECK:STDOUT: %C.as.ModWith.impl.Op.call: init %C = call %bound_method(%a.ref, %b.ref) to %.loc30_23 // CHECK:STDOUT: return %C.as.ModWith.impl.Op.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/operators/overloaded/mul.carbon b/toolchain/check/testdata/operators/overloaded/mul.carbon index a9528b7eec73..cfdcb9b95df0 100644 --- a/toolchain/check/testdata/operators/overloaded/mul.carbon +++ b/toolchain/check/testdata/operators/overloaded/mul.carbon @@ -71,7 +71,7 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %impl.elem1: %.92e = impl_witness_access constants.%MulWith.impl_witness, element1 [concrete = constants.%C.as.MulWith.impl.Op] // CHECK:STDOUT: %bound_method: = bound_method %a.ref, %impl.elem1 // CHECK:STDOUT: -// CHECK:STDOUT: %C.as.MulWith.impl.Op.call: init %C = call %bound_method(%a.ref, %b.ref) to %.loc30 +// CHECK:STDOUT: %C.as.MulWith.impl.Op.call: init %C = call %bound_method(%a.ref, %b.ref) to %.loc30_23 // CHECK:STDOUT: return %C.as.MulWith.impl.Op.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/operators/overloaded/negate.carbon b/toolchain/check/testdata/operators/overloaded/negate.carbon index e350db0a911a..3b593d26b14a 100644 --- a/toolchain/check/testdata/operators/overloaded/negate.carbon +++ b/toolchain/check/testdata/operators/overloaded/negate.carbon @@ -52,7 +52,7 @@ fn TestOp(a: C) -> C { // CHECK:STDOUT: %impl.elem1: %.e21 = impl_witness_access constants.%Negate.impl_witness, element1 [concrete = constants.%C.as.Negate.impl.Op] // CHECK:STDOUT: %bound_method: = bound_method %a.ref, %impl.elem1 // CHECK:STDOUT: -// CHECK:STDOUT: %C.as.Negate.impl.Op.call: init %C = call %bound_method(%a.ref) to %.loc27 +// CHECK:STDOUT: %C.as.Negate.impl.Op.call: init %C = call %bound_method(%a.ref) to %.loc27_17 // CHECK:STDOUT: return %C.as.Negate.impl.Op.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/operators/overloaded/ordered.carbon b/toolchain/check/testdata/operators/overloaded/ordered.carbon index e9619838e32d..270ef3ba417c 100644 --- a/toolchain/check/testdata/operators/overloaded/ordered.carbon +++ b/toolchain/check/testdata/operators/overloaded/ordered.carbon @@ -97,6 +97,7 @@ fn TestGreaterEqual(a: D, b: D) -> bool { // CHECK:STDOUT: %pattern_type.476: type = pattern_type %C [concrete] // CHECK:STDOUT: %Bool.type: type = fn_type @Bool [concrete] // CHECK:STDOUT: %Bool: %Bool.type = struct_value () [concrete] +// CHECK:STDOUT: %.650: form = init_form bool, call_param2 [concrete] // CHECK:STDOUT: %C.as.OrderedWith.impl.Less.type: type = fn_type @C.as.OrderedWith.impl.Less [concrete] // CHECK:STDOUT: %C.as.OrderedWith.impl.Less: %C.as.OrderedWith.impl.Less.type = struct_value () [concrete] // CHECK:STDOUT: %C.as.OrderedWith.impl.LessOrEquivalent.type: type = fn_type @C.as.OrderedWith.impl.LessOrEquivalent [concrete] @@ -160,6 +161,7 @@ fn TestGreaterEqual(a: D, b: D) -> bool { // CHECK:STDOUT: %Bool.call: init type = call constants.%Bool() [concrete = bool] // CHECK:STDOUT: %.loc13_28.1: type = value_of_initializer %Bool.call [concrete = bool] // CHECK:STDOUT: %.loc13_28.2: type = converted %Bool.call, %.loc13_28.1 [concrete = bool] +// CHECK:STDOUT: %.loc13_28.3: form = init_form %.loc13_28.2, call_param2 [concrete = constants.%.650] // CHECK:STDOUT: %a.param: %C = value_param call_param0 // CHECK:STDOUT: %C.ref.loc13_16: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %a: %C = value_binding a, %a.param @@ -180,6 +182,7 @@ fn TestGreaterEqual(a: D, b: D) -> bool { // CHECK:STDOUT: %Bool.call: init type = call constants.%Bool() [concrete = bool] // CHECK:STDOUT: %.loc17_33.1: type = value_of_initializer %Bool.call [concrete = bool] // CHECK:STDOUT: %.loc17_33.2: type = converted %Bool.call, %.loc17_33.1 [concrete = bool] +// CHECK:STDOUT: %.loc17_33.3: form = init_form %.loc17_33.2, call_param2 [concrete = constants.%.650] // CHECK:STDOUT: %a.param: %C = value_param call_param0 // CHECK:STDOUT: %C.ref.loc17_21: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %a: %C = value_binding a, %a.param @@ -200,6 +203,7 @@ fn TestGreaterEqual(a: D, b: D) -> bool { // CHECK:STDOUT: %Bool.call: init type = call constants.%Bool() [concrete = bool] // CHECK:STDOUT: %.loc21_31.1: type = value_of_initializer %Bool.call [concrete = bool] // CHECK:STDOUT: %.loc21_31.2: type = converted %Bool.call, %.loc21_31.1 [concrete = bool] +// CHECK:STDOUT: %.loc21_31.3: form = init_form %.loc21_31.2, call_param2 [concrete = constants.%.650] // CHECK:STDOUT: %a.param: %C = value_param call_param0 // CHECK:STDOUT: %C.ref.loc21_19: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %a: %C = value_binding a, %a.param @@ -220,6 +224,7 @@ fn TestGreaterEqual(a: D, b: D) -> bool { // CHECK:STDOUT: %Bool.call: init type = call constants.%Bool() [concrete = bool] // CHECK:STDOUT: %.loc25_36.1: type = value_of_initializer %Bool.call [concrete = bool] // CHECK:STDOUT: %.loc25_36.2: type = converted %Bool.call, %.loc25_36.1 [concrete = bool] +// CHECK:STDOUT: %.loc25_36.3: form = init_form %.loc25_36.2, call_param2 [concrete = constants.%.650] // CHECK:STDOUT: %a.param: %C = value_param call_param0 // CHECK:STDOUT: %C.ref.loc25_24: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %a: %C = value_binding a, %a.param @@ -243,6 +248,7 @@ fn TestGreaterEqual(a: D, b: D) -> bool { // CHECK:STDOUT: %Bool.call: init type = call constants.%Bool() [concrete = bool] // CHECK:STDOUT: %.loc7_33.1: type = value_of_initializer %Bool.call [concrete = bool] // CHECK:STDOUT: %.loc7_33.2: type = converted %Bool.call, %.loc7_33.1 [concrete = bool] +// CHECK:STDOUT: %.loc7_33.3: form = init_form %.loc7_33.2, call_param2 [concrete = constants.%.650] // CHECK:STDOUT: %self.param: %C = value_param call_param0 // CHECK:STDOUT: %C.ref.loc7_17: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %self: %C = value_binding self, %self.param @@ -263,6 +269,7 @@ fn TestGreaterEqual(a: D, b: D) -> bool { // CHECK:STDOUT: %Bool.call: init type = call constants.%Bool() [concrete = bool] // CHECK:STDOUT: %.loc8_45.1: type = value_of_initializer %Bool.call [concrete = bool] // CHECK:STDOUT: %.loc8_45.2: type = converted %Bool.call, %.loc8_45.1 [concrete = bool] +// CHECK:STDOUT: %.loc8_45.3: form = init_form %.loc8_45.2, call_param2 [concrete = constants.%.650] // CHECK:STDOUT: %self.param: %C = value_param call_param0 // CHECK:STDOUT: %C.ref.loc8_29: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %self: %C = value_binding self, %self.param @@ -283,6 +290,7 @@ fn TestGreaterEqual(a: D, b: D) -> bool { // CHECK:STDOUT: %Bool.call: init type = call constants.%Bool() [concrete = bool] // CHECK:STDOUT: %.loc9_36.1: type = value_of_initializer %Bool.call [concrete = bool] // CHECK:STDOUT: %.loc9_36.2: type = converted %Bool.call, %.loc9_36.1 [concrete = bool] +// CHECK:STDOUT: %.loc9_36.3: form = init_form %.loc9_36.2, call_param2 [concrete = constants.%.650] // CHECK:STDOUT: %self.param: %C = value_param call_param0 // CHECK:STDOUT: %C.ref.loc9_20: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %self: %C = value_binding self, %self.param @@ -303,6 +311,7 @@ fn TestGreaterEqual(a: D, b: D) -> bool { // CHECK:STDOUT: %Bool.call: init type = call constants.%Bool() [concrete = bool] // CHECK:STDOUT: %.loc10_48.1: type = value_of_initializer %Bool.call [concrete = bool] // CHECK:STDOUT: %.loc10_48.2: type = converted %Bool.call, %.loc10_48.1 [concrete = bool] +// CHECK:STDOUT: %.loc10_48.3: form = init_form %.loc10_48.2, call_param2 [concrete = constants.%.650] // CHECK:STDOUT: %self.param: %C = value_param call_param0 // CHECK:STDOUT: %C.ref.loc10_32: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %self: %C = value_binding self, %self.param @@ -389,6 +398,7 @@ fn TestGreaterEqual(a: D, b: D) -> bool { // CHECK:STDOUT: %pattern_type.54d: type = pattern_type %D [concrete] // CHECK:STDOUT: %Bool.type: type = fn_type @Bool [concrete] // CHECK:STDOUT: %Bool: %Bool.type = struct_value () [concrete] +// CHECK:STDOUT: %.650: form = init_form bool, call_param2 [concrete] // CHECK:STDOUT: %pattern_type.831: type = pattern_type bool [concrete] // CHECK:STDOUT: %TestLess.type: type = fn_type @TestLess [concrete] // CHECK:STDOUT: %TestLess: %TestLess.type = struct_value () [concrete] @@ -435,6 +445,7 @@ fn TestGreaterEqual(a: D, b: D) -> bool { // CHECK:STDOUT: %Bool.call: init type = call constants.%Bool() [concrete = bool] // CHECK:STDOUT: %.loc6_28.1: type = value_of_initializer %Bool.call [concrete = bool] // CHECK:STDOUT: %.loc6_28.2: type = converted %Bool.call, %.loc6_28.1 [concrete = bool] +// CHECK:STDOUT: %.loc6_28.3: form = init_form %.loc6_28.2, call_param2 [concrete = constants.%.650] // CHECK:STDOUT: %a.param: %D = value_param call_param0 // CHECK:STDOUT: %D.ref.loc6_16: type = name_ref D, file.%D.decl [concrete = constants.%D] // CHECK:STDOUT: %a: %D = value_binding a, %a.param @@ -455,6 +466,7 @@ fn TestGreaterEqual(a: D, b: D) -> bool { // CHECK:STDOUT: %Bool.call: init type = call constants.%Bool() [concrete = bool] // CHECK:STDOUT: %.loc14_33.1: type = value_of_initializer %Bool.call [concrete = bool] // CHECK:STDOUT: %.loc14_33.2: type = converted %Bool.call, %.loc14_33.1 [concrete = bool] +// CHECK:STDOUT: %.loc14_33.3: form = init_form %.loc14_33.2, call_param2 [concrete = constants.%.650] // CHECK:STDOUT: %a.param: %D = value_param call_param0 // CHECK:STDOUT: %D.ref.loc14_21: type = name_ref D, file.%D.decl [concrete = constants.%D] // CHECK:STDOUT: %a: %D = value_binding a, %a.param @@ -475,6 +487,7 @@ fn TestGreaterEqual(a: D, b: D) -> bool { // CHECK:STDOUT: %Bool.call: init type = call constants.%Bool() [concrete = bool] // CHECK:STDOUT: %.loc22_31.1: type = value_of_initializer %Bool.call [concrete = bool] // CHECK:STDOUT: %.loc22_31.2: type = converted %Bool.call, %.loc22_31.1 [concrete = bool] +// CHECK:STDOUT: %.loc22_31.3: form = init_form %.loc22_31.2, call_param2 [concrete = constants.%.650] // CHECK:STDOUT: %a.param: %D = value_param call_param0 // CHECK:STDOUT: %D.ref.loc22_19: type = name_ref D, file.%D.decl [concrete = constants.%D] // CHECK:STDOUT: %a: %D = value_binding a, %a.param @@ -495,6 +508,7 @@ fn TestGreaterEqual(a: D, b: D) -> bool { // CHECK:STDOUT: %Bool.call: init type = call constants.%Bool() [concrete = bool] // CHECK:STDOUT: %.loc30_36.1: type = value_of_initializer %Bool.call [concrete = bool] // CHECK:STDOUT: %.loc30_36.2: type = converted %Bool.call, %.loc30_36.1 [concrete = bool] +// CHECK:STDOUT: %.loc30_36.3: form = init_form %.loc30_36.2, call_param2 [concrete = constants.%.650] // CHECK:STDOUT: %a.param: %D = value_param call_param0 // CHECK:STDOUT: %D.ref.loc30_24: type = name_ref D, file.%D.decl [concrete = constants.%D] // CHECK:STDOUT: %a: %D = value_binding a, %a.param diff --git a/toolchain/check/testdata/operators/overloaded/right_shift.carbon b/toolchain/check/testdata/operators/overloaded/right_shift.carbon index 3a5271739065..62680334e338 100644 --- a/toolchain/check/testdata/operators/overloaded/right_shift.carbon +++ b/toolchain/check/testdata/operators/overloaded/right_shift.carbon @@ -71,7 +71,7 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %impl.elem1: %.6b7 = impl_witness_access constants.%RightShiftWith.impl_witness, element1 [concrete = constants.%C.as.RightShiftWith.impl.Op] // CHECK:STDOUT: %bound_method: = bound_method %a.ref, %impl.elem1 // CHECK:STDOUT: -// CHECK:STDOUT: %C.as.RightShiftWith.impl.Op.call: init %C = call %bound_method(%a.ref, %b.ref) to %.loc30 +// CHECK:STDOUT: %C.as.RightShiftWith.impl.Op.call: init %C = call %bound_method(%a.ref, %b.ref) to %.loc30_23 // CHECK:STDOUT: return %C.as.RightShiftWith.impl.Op.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/operators/overloaded/sub.carbon b/toolchain/check/testdata/operators/overloaded/sub.carbon index 59a4eeed215b..dd2064c41926 100644 --- a/toolchain/check/testdata/operators/overloaded/sub.carbon +++ b/toolchain/check/testdata/operators/overloaded/sub.carbon @@ -71,7 +71,7 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %impl.elem1: %.d15 = impl_witness_access constants.%SubWith.impl_witness, element1 [concrete = constants.%C.as.SubWith.impl.Op] // CHECK:STDOUT: %bound_method: = bound_method %a.ref, %impl.elem1 // CHECK:STDOUT: -// CHECK:STDOUT: %C.as.SubWith.impl.Op.call: init %C = call %bound_method(%a.ref, %b.ref) to %.loc30 +// CHECK:STDOUT: %C.as.SubWith.impl.Op.call: init %C = call %bound_method(%a.ref, %b.ref) to %.loc30_23 // CHECK:STDOUT: return %C.as.SubWith.impl.Op.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/packages/export_import.carbon b/toolchain/check/testdata/packages/export_import.carbon index fdea34424968..d112486e239f 100644 --- a/toolchain/check/testdata/packages/export_import.carbon +++ b/toolchain/check/testdata/packages/export_import.carbon @@ -890,15 +890,10 @@ export Poison; // CHECK:STDOUT: .Poison = // CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: } -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { -// 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: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} { // CHECK:STDOUT: %Poison.ref: = name_ref Poison, [concrete = ] -// CHECK:STDOUT: %return.param: ref = out_param call_param0 -// CHECK:STDOUT: %return: ref = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F() -> ; +// CHECK:STDOUT: fn @F(); // CHECK:STDOUT: diff --git a/toolchain/check/testdata/packages/missing_prelude.carbon b/toolchain/check/testdata/packages/missing_prelude.carbon index 06116bc63047..9e454c20b5c9 100644 --- a/toolchain/check/testdata/packages/missing_prelude.carbon +++ b/toolchain/check/testdata/packages/missing_prelude.carbon @@ -168,6 +168,7 @@ var n: {} = i32; // CHECK:STDOUT: %pattern_type.51d: type = pattern_type %T [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] +// CHECK:STDOUT: %.e6e: form = init_form %empty_struct_type, call_param0 [concrete] // CHECK:STDOUT: %pattern_type.a96: type = pattern_type %empty_struct_type [concrete] // CHECK:STDOUT: %Int.type: type = fn_type @Int [concrete] // CHECK:STDOUT: %Int: %Int.type = struct_value () [concrete] @@ -185,6 +186,7 @@ var n: {} = i32; // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc4_29.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc4_29.2: type = converted %.loc4_29.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] +// CHECK:STDOUT: %.loc4_29.3: form = init_form %.loc4_29.2, call_param0 [concrete = constants.%.e6e] // CHECK:STDOUT: %.Self.1: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] // CHECK:STDOUT: %T.loc4_8.2: type = symbolic_binding T, 0 [symbolic = %T.loc4_8.1 (constants.%T)] // CHECK:STDOUT: %.loc4_22: type = splice_block %T.ref [symbolic = %T.loc4_8.1 (constants.%T)] { @@ -307,6 +309,7 @@ var n: {} = i32; // CHECK:STDOUT: %pattern_type.51d: type = pattern_type %T [symbolic] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %.62c: form = init_form %empty_tuple.type, call_param0 [concrete] // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %Int.type: type = fn_type @Int [concrete] // CHECK:STDOUT: %Int: %Int.type = struct_value () [concrete] @@ -328,6 +331,7 @@ var n: {} = i32; // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc8_29.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc8_29.2: type = converted %.loc8_29.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %.loc8_29.3: form = init_form %.loc8_29.2, call_param0 [concrete = constants.%.62c] // CHECK:STDOUT: %.Self.1: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] // CHECK:STDOUT: %T.loc8_8.2: type = symbolic_binding T, 0 [symbolic = %T.loc8_8.1 (constants.%T)] // CHECK:STDOUT: %.loc8_22: type = splice_block %T.ref [symbolic = %T.loc8_8.1 (constants.%T)] { diff --git a/toolchain/check/testdata/pointer/address_of_deref.carbon b/toolchain/check/testdata/pointer/address_of_deref.carbon index e38d0eb12082..d37fca7b44b6 100644 --- a/toolchain/check/testdata/pointer/address_of_deref.carbon +++ b/toolchain/check/testdata/pointer/address_of_deref.carbon @@ -26,6 +26,7 @@ fn F() -> i32 { // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %N: Core.IntLiteral = symbolic_binding N, 0 [symbolic] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] +// CHECK:STDOUT: %.941: form = init_form %i32, call_param0 [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] @@ -93,6 +94,7 @@ fn F() -> i32 { // CHECK:STDOUT: } { // 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: %.loc15: form = init_form %i32.loc15, call_param0 [concrete = constants.%.941] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/pointer/basic.carbon b/toolchain/check/testdata/pointer/basic.carbon index 1c198f3d6aa4..b219215743ea 100644 --- a/toolchain/check/testdata/pointer/basic.carbon +++ b/toolchain/check/testdata/pointer/basic.carbon @@ -28,6 +28,7 @@ fn F() -> i32 { // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %N: Core.IntLiteral = symbolic_binding N, 0 [symbolic] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] +// CHECK:STDOUT: %.941: form = init_form %i32, call_param0 [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] @@ -109,6 +110,7 @@ fn F() -> i32 { // CHECK:STDOUT: } { // 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: %.loc15: form = init_form %i32.loc15, call_param0 [concrete = constants.%.941] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/pointer/fail_type_mismatch.carbon b/toolchain/check/testdata/pointer/fail_type_mismatch.carbon index e39d62feff0f..0abdc9002129 100644 --- a/toolchain/check/testdata/pointer/fail_type_mismatch.carbon +++ b/toolchain/check/testdata/pointer/fail_type_mismatch.carbon @@ -33,6 +33,7 @@ fn ConstMismatch(p: const {}*) -> const ({}*) { // CHECK:STDOUT: %pattern_type.db0: type = pattern_type %ptr.bf9 [concrete] // CHECK:STDOUT: %ptr.c28: type = ptr_type %empty_struct_type [concrete] // CHECK:STDOUT: %const.987: type = const_type %ptr.c28 [concrete] +// CHECK:STDOUT: %.351: form = init_form %const.987, call_param1 [concrete] // CHECK:STDOUT: %pattern_type.3c6: type = pattern_type %const.987 [concrete] // CHECK:STDOUT: %ConstMismatch.type: type = fn_type @ConstMismatch [concrete] // CHECK:STDOUT: %ConstMismatch: %ConstMismatch.type = struct_value () [concrete] @@ -65,6 +66,7 @@ fn ConstMismatch(p: const {}*) -> const ({}*) { // CHECK:STDOUT: %.loc15_44: type = converted %.loc15_43, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %ptr.loc15_44: type = ptr_type %.loc15_44 [concrete = constants.%ptr.c28] // CHECK:STDOUT: %const.loc15_35: type = const_type %ptr.loc15_44 [concrete = constants.%const.987] +// CHECK:STDOUT: %.loc15_35: form = init_form %const.loc15_35, call_param1 [concrete = constants.%.351] // CHECK:STDOUT: %p.param: %ptr.bf9 = value_param call_param0 // CHECK:STDOUT: %.loc15_29: type = splice_block %ptr.loc15_29 [concrete = constants.%ptr.bf9] { // CHECK:STDOUT: %.loc15_28: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] diff --git a/toolchain/check/testdata/pointer/nested_const.carbon b/toolchain/check/testdata/pointer/nested_const.carbon index 09d9876f96bb..0bbbede449d8 100644 --- a/toolchain/check/testdata/pointer/nested_const.carbon +++ b/toolchain/check/testdata/pointer/nested_const.carbon @@ -31,6 +31,7 @@ fn F(p: const (const (const i32*)*)) -> const i32 { // CHECK:STDOUT: %ptr.6e8: type = ptr_type %const.58f [concrete] // CHECK:STDOUT: %const.fa2: type = const_type %ptr.6e8 [concrete] // CHECK:STDOUT: %pattern_type.800: type = pattern_type %const.fa2 [concrete] +// CHECK:STDOUT: %.d3c: form = init_form %const.20a, call_param1 [concrete] // CHECK:STDOUT: %pattern_type.a65: type = pattern_type %const.20a [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] @@ -81,8 +82,9 @@ fn F(p: const (const (const i32*)*)) -> const i32 { // CHECK:STDOUT: %int_32.loc16_47: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc16_47: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %const.loc16_41: type = const_type %i32.loc16_47 [concrete = constants.%const.20a] +// CHECK:STDOUT: %.loc16_41: form = init_form %const.loc16_41, call_param1 [concrete = constants.%.d3c] // CHECK:STDOUT: %p.param: %const.fa2 = value_param call_param0 -// CHECK:STDOUT: %.loc16: type = splice_block %const.loc16_9 [concrete = constants.%const.fa2] { +// CHECK:STDOUT: %.loc16_9: type = splice_block %const.loc16_9 [concrete = constants.%const.fa2] { // CHECK:STDOUT: %int_32.loc16_29: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc16_29: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %const.loc16_23: type = const_type %i32.loc16_29 [concrete = constants.%const.20a] diff --git a/toolchain/check/testdata/pointer/types.carbon b/toolchain/check/testdata/pointer/types.carbon index d790db79fb95..0dec26e3a652 100644 --- a/toolchain/check/testdata/pointer/types.carbon +++ b/toolchain/check/testdata/pointer/types.carbon @@ -29,6 +29,7 @@ fn ConstPtr(p: const i32*) -> (const i32)* { // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] // CHECK:STDOUT: %ptr.235: type = ptr_type %i32 [concrete] // CHECK:STDOUT: %pattern_type.fe8: type = pattern_type %ptr.235 [concrete] +// CHECK:STDOUT: %.4f9: form = init_form %ptr.235, call_param1 [concrete] // CHECK:STDOUT: %Ptr.type: type = fn_type @Ptr [concrete] // CHECK:STDOUT: %Ptr: %Ptr.type = struct_value () [concrete] // CHECK:STDOUT: %Copy.type: type = facet_type <@Copy> [concrete] @@ -45,6 +46,7 @@ fn ConstPtr(p: const i32*) -> (const i32)* { // CHECK:STDOUT: %const.20a: type = const_type %i32 [concrete] // CHECK:STDOUT: %ptr.36b: type = ptr_type %const.20a [concrete] // CHECK:STDOUT: %pattern_type.bff: type = pattern_type %ptr.36b [concrete] +// CHECK:STDOUT: %.e29: form = init_form %ptr.36b, call_param1 [concrete] // CHECK:STDOUT: %ConstPtr.type: type = fn_type @ConstPtr [concrete] // CHECK:STDOUT: %ConstPtr: %ConstPtr.type = struct_value () [concrete] // CHECK:STDOUT: %Copy.impl_witness.ce1: = impl_witness imports.%Copy.impl_witness_table.c3a, @ptr.as.Copy.impl(%const.20a) [concrete] @@ -84,8 +86,9 @@ fn ConstPtr(p: const i32*) -> (const i32)* { // CHECK:STDOUT: %int_32.loc15_20: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc15_20: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %ptr.loc15_23: type = ptr_type %i32.loc15_20 [concrete = constants.%ptr.235] +// CHECK:STDOUT: %.loc15_23: form = init_form %ptr.loc15_23, call_param1 [concrete = constants.%.4f9] // CHECK:STDOUT: %p.param: %ptr.235 = value_param call_param0 -// CHECK:STDOUT: %.loc15: type = splice_block %ptr.loc15_14 [concrete = constants.%ptr.235] { +// CHECK:STDOUT: %.loc15_14: type = splice_block %ptr.loc15_14 [concrete = constants.%ptr.235] { // CHECK:STDOUT: %int_32.loc15_11: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc15_11: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %ptr.loc15_14: type = ptr_type %i32.loc15_11 [concrete = constants.%ptr.235] @@ -104,8 +107,9 @@ fn ConstPtr(p: const i32*) -> (const i32)* { // CHECK:STDOUT: %i32.loc19_38: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %const.loc19_32: type = const_type %i32.loc19_38 [concrete = constants.%const.20a] // CHECK:STDOUT: %ptr.loc19_42: type = ptr_type %const.loc19_32 [concrete = constants.%ptr.36b] +// CHECK:STDOUT: %.loc19_42: form = init_form %ptr.loc19_42, call_param1 [concrete = constants.%.e29] // CHECK:STDOUT: %p.param: %ptr.36b = value_param call_param0 -// CHECK:STDOUT: %.loc19: type = splice_block %ptr.loc19_25 [concrete = constants.%ptr.36b] { +// CHECK:STDOUT: %.loc19_25: type = splice_block %ptr.loc19_25 [concrete = constants.%ptr.36b] { // CHECK:STDOUT: %int_32.loc19_22: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc19_22: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %const.loc19_16: type = const_type %i32.loc19_22 [concrete = constants.%const.20a] diff --git a/toolchain/check/testdata/return/code_after_return_value.carbon b/toolchain/check/testdata/return/code_after_return_value.carbon index 0198e43801e0..d170ccce4667 100644 --- a/toolchain/check/testdata/return/code_after_return_value.carbon +++ b/toolchain/check/testdata/return/code_after_return_value.carbon @@ -34,6 +34,7 @@ fn F(b: bool) -> i32 { // CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] +// CHECK:STDOUT: %.4d5: form = init_form %i32, call_param1 [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] @@ -88,6 +89,7 @@ fn F(b: bool) -> i32 { // CHECK:STDOUT: } { // 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: %.loc15_18: form = init_form %i32, call_param1 [concrete = constants.%.4d5] // CHECK:STDOUT: %b.param: bool = value_param call_param0 // CHECK:STDOUT: %.loc15_9.1: type = splice_block %.loc15_9.3 [concrete = bool] { // CHECK:STDOUT: %Bool.call: init type = call constants.%Bool() [concrete = bool] diff --git a/toolchain/check/testdata/return/fail_call_in_type.carbon b/toolchain/check/testdata/return/fail_call_in_type.carbon index 8ffb578ad255..bc188c785aad 100644 --- a/toolchain/check/testdata/return/fail_call_in_type.carbon +++ b/toolchain/check/testdata/return/fail_call_in_type.carbon @@ -24,6 +24,7 @@ fn Six() -> ReturnType() { return 6; } // CHECK:STDOUT: --- fail_call_in_type.carbon // CHECK:STDOUT: // CHECK:STDOUT: constants { +// CHECK:STDOUT: %.d96: form = init_form type, call_param0 [concrete] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %ReturnType.type: type = fn_type @ReturnType [concrete] // CHECK:STDOUT: %ReturnType: %ReturnType.type = struct_value () [concrete] @@ -68,19 +69,15 @@ fn Six() -> ReturnType() { return 6; } // CHECK:STDOUT: %return.patt: %pattern_type.98f = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.98f = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { +// CHECK:STDOUT: %.loc17: form = init_form type, call_param0 [concrete = constants.%.d96] // CHECK:STDOUT: %return.param: ref type = out_param call_param0 // CHECK:STDOUT: %return: ref type = return_slot %return.param // CHECK:STDOUT: } -// 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: %Six.decl: %Six.type = fn_decl @Six [concrete = constants.%Six] {} { // CHECK:STDOUT: %ReturnType.ref: %ReturnType.type = name_ref ReturnType, file.%ReturnType.decl [concrete = constants.%ReturnType] // CHECK:STDOUT: %ReturnType.call: init type = call %ReturnType.ref() // CHECK:STDOUT: %.loc22_24.1: type = value_of_initializer %ReturnType.call // CHECK:STDOUT: %.loc22_24.2: type = converted %ReturnType.call, %.loc22_24.1 -// CHECK:STDOUT: %return.param: ref = out_param call_param0 -// CHECK:STDOUT: %return: ref = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -94,9 +91,9 @@ fn Six() -> ReturnType() { return 6; } // CHECK:STDOUT: return %type.as.Copy.impl.Op.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Six() -> { +// CHECK:STDOUT: fn @Six() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %int_6: Core.IntLiteral = int_value 6 [concrete = constants.%int_6] -// CHECK:STDOUT: return to %return +// CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/return/fail_error_in_type.carbon b/toolchain/check/testdata/return/fail_error_in_type.carbon index 23ee6cbe47eb..b727d3a4319e 100644 --- a/toolchain/check/testdata/return/fail_error_in_type.carbon +++ b/toolchain/check/testdata/return/fail_error_in_type.carbon @@ -39,15 +39,10 @@ fn Six() -> x; // CHECK:STDOUT: .Six = %Six.decl // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// 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: %Six.decl: %Six.type = fn_decl @Six [concrete = constants.%Six] {} { // CHECK:STDOUT: %x.ref: = name_ref x, [concrete = ] -// CHECK:STDOUT: %return.param: ref = out_param call_param0 -// CHECK:STDOUT: %return: ref = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Six() -> ; +// CHECK:STDOUT: fn @Six(); // CHECK:STDOUT: diff --git a/toolchain/check/testdata/return/fail_let_in_type.carbon b/toolchain/check/testdata/return/fail_let_in_type.carbon index 5ad75423a2f3..0c447aac0112 100644 --- a/toolchain/check/testdata/return/fail_let_in_type.carbon +++ b/toolchain/check/testdata/return/fail_let_in_type.carbon @@ -86,58 +86,43 @@ fn FirstPerfectNumber() -> z { return 6; } // CHECK:STDOUT: %x.patt: %pattern_type.98f = value_binding_pattern x [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %x: type = value_binding x, @__global_init.%i32.loc15 -// 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: %Six.decl: %Six.type = fn_decl @Six [concrete = constants.%Six] {} { // CHECK:STDOUT: %x.ref: type = name_ref x, file.%x -// CHECK:STDOUT: %return.param: ref = out_param call_param0 -// CHECK:STDOUT: %return: ref = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %y.patt: %pattern_type.98f = value_binding_pattern y [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %.Self.1: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] // CHECK:STDOUT: %y: type = value_binding y, @__global_init.%i32.loc27 -// CHECK:STDOUT: %HalfDozen.decl: %HalfDozen.type = fn_decl @HalfDozen [concrete = constants.%HalfDozen] { -// 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: %HalfDozen.decl: %HalfDozen.type = fn_decl @HalfDozen [concrete = constants.%HalfDozen] {} { // CHECK:STDOUT: %y.ref: type = name_ref y, file.%y -// CHECK:STDOUT: %return.param: ref = out_param call_param0 -// CHECK:STDOUT: %return: ref = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %z.patt: %pattern_type.98f = value_binding_pattern z [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %.Self.2: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] // CHECK:STDOUT: %z: type = value_binding z, @__global_init.%i32.loc39 -// CHECK:STDOUT: %FirstPerfectNumber.decl: %FirstPerfectNumber.type = fn_decl @FirstPerfectNumber [concrete = constants.%FirstPerfectNumber] { -// 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: %FirstPerfectNumber.decl: %FirstPerfectNumber.type = fn_decl @FirstPerfectNumber [concrete = constants.%FirstPerfectNumber] {} { // CHECK:STDOUT: %z.ref: type = name_ref z, file.%z -// CHECK:STDOUT: %return.param: ref = out_param call_param0 -// CHECK:STDOUT: %return: ref = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Six() -> { +// CHECK:STDOUT: fn @Six() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %int_6: Core.IntLiteral = int_value 6 [concrete = constants.%int_6] -// CHECK:STDOUT: return to %return +// CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @HalfDozen() -> { +// CHECK:STDOUT: fn @HalfDozen() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %int_6: Core.IntLiteral = int_value 6 [concrete = constants.%int_6] -// CHECK:STDOUT: return to %return +// CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @FirstPerfectNumber() -> { +// CHECK:STDOUT: fn @FirstPerfectNumber() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %int_6: Core.IntLiteral = int_value 6 [concrete = constants.%int_6] -// CHECK:STDOUT: return to %return +// CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { diff --git a/toolchain/check/testdata/return/fail_missing_return.carbon b/toolchain/check/testdata/return/fail_missing_return.carbon index 9760656828b4..9151d514e03d 100644 --- a/toolchain/check/testdata/return/fail_missing_return.carbon +++ b/toolchain/check/testdata/return/fail_missing_return.carbon @@ -26,6 +26,7 @@ fn Main() -> i32 { // CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] +// CHECK:STDOUT: %.941: form = init_form %i32, call_param0 [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %Main.type: type = fn_type @Main [concrete] // CHECK:STDOUT: %Main: %Main.type = struct_value () [concrete] @@ -52,6 +53,7 @@ fn Main() -> i32 { // CHECK:STDOUT: } { // 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: %.loc15: form = init_form %i32, call_param0 [concrete = constants.%.941] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/return/fail_missing_return_empty_tuple.carbon b/toolchain/check/testdata/return/fail_missing_return_empty_tuple.carbon index c4bc7f1058e4..5a3ae2be2a4b 100644 --- a/toolchain/check/testdata/return/fail_missing_return_empty_tuple.carbon +++ b/toolchain/check/testdata/return/fail_missing_return_empty_tuple.carbon @@ -24,6 +24,7 @@ fn F() -> () { // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %.62c: form = init_form %empty_tuple.type, call_param0 [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] @@ -39,6 +40,7 @@ fn F() -> () { // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc15_12.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc15_12.2: type = converted %.loc15_12.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %.loc15_12.3: form = init_form %.loc15_12.2, call_param0 [concrete = constants.%.62c] // CHECK:STDOUT: %return.param: ref %empty_tuple.type = out_param call_param0 // CHECK:STDOUT: %return: ref %empty_tuple.type = return_slot %return.param // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/return/fail_return_var_no_returned_var.carbon b/toolchain/check/testdata/return/fail_return_var_no_returned_var.carbon index b7cdd0a72fd3..38357c61fe95 100644 --- a/toolchain/check/testdata/return/fail_return_var_no_returned_var.carbon +++ b/toolchain/check/testdata/return/fail_return_var_no_returned_var.carbon @@ -25,6 +25,7 @@ fn Procedure() -> {} { // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] +// CHECK:STDOUT: %.e6e: form = init_form %empty_struct_type, call_param0 [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %empty_struct_type [concrete] // CHECK:STDOUT: %Procedure.type: type = fn_type @Procedure [concrete] // CHECK:STDOUT: %Procedure: %Procedure.type = struct_value () [concrete] @@ -40,6 +41,7 @@ fn Procedure() -> {} { // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc15_20.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc15_20.2: type = converted %.loc15_20.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] +// CHECK:STDOUT: %.loc15_20.3: form = init_form %.loc15_20.2, call_param0 [concrete = constants.%.e6e] // CHECK:STDOUT: %return.param: ref %empty_struct_type = out_param call_param0 // CHECK:STDOUT: %return: ref %empty_struct_type = return_slot %return.param // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/return/fail_return_with_returned_var.carbon b/toolchain/check/testdata/return/fail_return_with_returned_var.carbon index 66a100739156..2d195acdc6e1 100644 --- a/toolchain/check/testdata/return/fail_return_with_returned_var.carbon +++ b/toolchain/check/testdata/return/fail_return_with_returned_var.carbon @@ -45,6 +45,7 @@ fn G() -> C { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] +// CHECK:STDOUT: %.941: form = init_form %i32, call_param0 [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] @@ -73,6 +74,7 @@ fn G() -> C { // CHECK:STDOUT: %C.elem: type = unbound_element_type %C, %i32 [concrete] // CHECK:STDOUT: %struct_type.a.b.501: type = struct_type {.a: %i32, .b: %i32} [concrete] // CHECK:STDOUT: %complete_type.705: = complete_type_witness %struct_type.a.b.501 [concrete] +// CHECK:STDOUT: %.64f: form = init_form %C, call_param0 [concrete] // CHECK:STDOUT: %pattern_type.7c7: type = pattern_type %C [concrete] // CHECK:STDOUT: %G.type: type = fn_type @G [concrete] // CHECK:STDOUT: %G: %G.type = struct_value () [concrete] @@ -117,6 +119,7 @@ fn G() -> C { // CHECK:STDOUT: } { // 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: %.loc15: form = init_form %i32.loc15, call_param0 [concrete = constants.%.941] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } @@ -126,6 +129,7 @@ fn G() -> C { // CHECK:STDOUT: %return.param_patt: %pattern_type.7c7 = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc28: type = name_ref C, file.%C.decl [concrete = constants.%C] +// CHECK:STDOUT: %.loc28: form = init_form %C.ref.loc28, call_param0 [concrete = constants.%.64f] // CHECK:STDOUT: %return.param: ref %C = out_param call_param0 // CHECK:STDOUT: %return: ref %C = return_slot %return.param // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/return/fail_returned_var_shadow.carbon b/toolchain/check/testdata/return/fail_returned_var_shadow.carbon index 1ac61e74dab3..745c2a1e74c5 100644 --- a/toolchain/check/testdata/return/fail_returned_var_shadow.carbon +++ b/toolchain/check/testdata/return/fail_returned_var_shadow.carbon @@ -52,6 +52,7 @@ fn DifferentScopes() -> i32 { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] +// CHECK:STDOUT: %.941: form = init_form %i32, call_param0 [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %SameScope.type: type = fn_type @SameScope [concrete] // CHECK:STDOUT: %SameScope: %SameScope.type = struct_value () [concrete] @@ -112,6 +113,7 @@ fn DifferentScopes() -> i32 { // CHECK:STDOUT: } { // 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: %.loc15: form = init_form %i32.loc15, call_param0 [concrete = constants.%.941] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } @@ -121,6 +123,7 @@ fn DifferentScopes() -> i32 { // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32.loc30: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc30: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] +// CHECK:STDOUT: %.loc30: form = init_form %i32.loc30, call_param0 [concrete = constants.%.941] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/return/fail_returned_var_type.carbon b/toolchain/check/testdata/return/fail_returned_var_type.carbon index e02da84a9176..4300a1ad07ca 100644 --- a/toolchain/check/testdata/return/fail_returned_var_type.carbon +++ b/toolchain/check/testdata/return/fail_returned_var_type.carbon @@ -32,6 +32,7 @@ fn Mismatch() -> i32 { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] +// CHECK:STDOUT: %.941: form = init_form %i32, call_param0 [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %Mismatch.type: type = fn_type @Mismatch [concrete] // CHECK:STDOUT: %Mismatch: %Mismatch.type = struct_value () [concrete] @@ -91,6 +92,7 @@ fn Mismatch() -> i32 { // CHECK:STDOUT: } { // 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: %.loc15: form = init_form %i32, call_param0 [concrete = constants.%.941] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/return/fail_type_mismatch.carbon b/toolchain/check/testdata/return/fail_type_mismatch.carbon index 1bb71b9efcc9..d29f9fe693b2 100644 --- a/toolchain/check/testdata/return/fail_type_mismatch.carbon +++ b/toolchain/check/testdata/return/fail_type_mismatch.carbon @@ -30,6 +30,7 @@ fn Main() -> i32 { // CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] +// CHECK:STDOUT: %.941: form = init_form %i32, call_param0 [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %Main.type: type = fn_type @Main [concrete] // CHECK:STDOUT: %Main: %Main.type = struct_value () [concrete] @@ -61,6 +62,7 @@ fn Main() -> i32 { // CHECK:STDOUT: } { // 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: %.loc15: form = init_form %i32, call_param0 [concrete = constants.%.941] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/return/fail_value_missing.carbon b/toolchain/check/testdata/return/fail_value_missing.carbon index fe1b0f5130b2..38314804fed0 100644 --- a/toolchain/check/testdata/return/fail_value_missing.carbon +++ b/toolchain/check/testdata/return/fail_value_missing.carbon @@ -30,6 +30,7 @@ fn Main() -> i32 { // CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] +// CHECK:STDOUT: %.941: form = init_form %i32, call_param0 [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %Main.type: type = fn_type @Main [concrete] // CHECK:STDOUT: %Main: %Main.type = struct_value () [concrete] @@ -56,6 +57,7 @@ fn Main() -> i32 { // CHECK:STDOUT: } { // 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: %.loc15: form = init_form %i32, call_param0 [concrete = constants.%.941] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/return/fail_var_in_type.carbon b/toolchain/check/testdata/return/fail_var_in_type.carbon index 4d3b8f7ff2ea..d1a26107ab8f 100644 --- a/toolchain/check/testdata/return/fail_var_in_type.carbon +++ b/toolchain/check/testdata/return/fail_var_in_type.carbon @@ -66,21 +66,16 @@ fn Six() -> x { return 6; } // CHECK:STDOUT: } // CHECK:STDOUT: %x.var: ref type = var %x.var_patt [concrete] // CHECK:STDOUT: %x: ref type = ref_binding 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: %Six.decl: %Six.type = fn_decl @Six [concrete = constants.%Six] {} { // CHECK:STDOUT: %x.ref: ref type = name_ref x, file.%x [concrete = file.%x.var] // CHECK:STDOUT: %.loc20: type = acquire_value %x.ref -// CHECK:STDOUT: %return.param: ref = out_param call_param0 -// CHECK:STDOUT: %return: ref = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Six() -> { +// CHECK:STDOUT: fn @Six() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %int_6: Core.IntLiteral = int_value 6 [concrete = constants.%int_6] -// CHECK:STDOUT: return to %return +// CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { diff --git a/toolchain/check/testdata/return/import_convert_function.carbon b/toolchain/check/testdata/return/import_convert_function.carbon index 48d1d65685f0..aaae6e3ff5eb 100644 --- a/toolchain/check/testdata/return/import_convert_function.carbon +++ b/toolchain/check/testdata/return/import_convert_function.carbon @@ -67,6 +67,7 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: %D.elem: type = unbound_element_type %D, %i32 [concrete] // CHECK:STDOUT: %struct_type.n.m.de8: type = struct_type {.n: %i32, .m: %i32} [concrete] // CHECK:STDOUT: %complete_type.ea0: = complete_type_witness %struct_type.n.m.de8 [concrete] +// CHECK:STDOUT: %.6ef: form = init_form %D, call_param0 [concrete] // CHECK:STDOUT: %pattern_type.c49: type = pattern_type %D [concrete] // CHECK:STDOUT: %Make.type: type = fn_type @Make [concrete] // CHECK:STDOUT: %Make: %Make.type = struct_value () [concrete] @@ -94,6 +95,7 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: %ImplicitAs.type.1a9: type = facet_type <@ImplicitAs, @ImplicitAs(%D)> [concrete] // CHECK:STDOUT: %ImplicitAs.impl_witness.78c: = impl_witness @C.as.ImplicitAs.impl.c43.%ImplicitAs.impl_witness_table [concrete] // CHECK:STDOUT: %pattern_type.2de: type = pattern_type %C.4f5 [concrete] +// CHECK:STDOUT: %.382: form = init_form %D, call_param1 [concrete] // CHECK:STDOUT: %C.as.ImplicitAs.impl.Convert.type.f45: type = fn_type @C.as.ImplicitAs.impl.Convert.loc8 [concrete] // CHECK:STDOUT: %C.as.ImplicitAs.impl.Convert.72e: %C.as.ImplicitAs.impl.Convert.type.f45 = struct_value () [concrete] // CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] @@ -198,6 +200,7 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: %return.param_patt: %pattern_type.c49 = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [concrete = constants.%D] +// CHECK:STDOUT: %.loc6_14: form = init_form %D.ref, call_param0 [concrete = constants.%.6ef] // CHECK:STDOUT: %return.param: ref %D = out_param call_param0 // CHECK:STDOUT: %return: ref %D = return_slot %return.param // CHECK:STDOUT: } @@ -339,6 +342,7 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: %return.param_patt: %pattern_type.c49 = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [concrete = constants.%D] +// CHECK:STDOUT: %.loc8_63: form = init_form %D.ref, call_param1 [concrete = constants.%.382] // CHECK:STDOUT: %self.param: %C.4f5 = value_param call_param0 // CHECK:STDOUT: %Self.ref: type = name_ref Self, @C.as.ImplicitAs.impl.c43.%C [concrete = constants.%C.4f5] // CHECK:STDOUT: %self: %C.4f5 = value_binding self, %self.param @@ -363,6 +367,7 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: %return.param_patt: %pattern_type.c49 = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [concrete = constants.%D] +// CHECK:STDOUT: %.loc9_63: form = init_form %D.ref, call_param1 [concrete = constants.%.382] // CHECK:STDOUT: %self.param: %C.95b = value_param call_param0 // CHECK:STDOUT: %Self.ref: type = name_ref Self, @C.as.ImplicitAs.impl.7c3.%C [concrete = constants.%C.95b] // CHECK:STDOUT: %self: %C.95b = value_binding self, %self.param @@ -387,6 +392,7 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: %return.param_patt: %pattern_type.c49 = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [concrete = constants.%D] +// CHECK:STDOUT: %.loc10_63: form = init_form %D.ref, call_param1 [concrete = constants.%.382] // CHECK:STDOUT: %self.param: %C.a93 = value_param call_param0 // CHECK:STDOUT: %Self.ref: type = name_ref Self, @C.as.ImplicitAs.impl.fa3.%C [concrete = constants.%C.a93] // CHECK:STDOUT: %self: %C.a93 = value_binding self, %self.param @@ -411,6 +417,7 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: %return.param_patt: %pattern_type.c49 = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [concrete = constants.%D] +// CHECK:STDOUT: %.loc11_63: form = init_form %D.ref, call_param1 [concrete = constants.%.382] // CHECK:STDOUT: %self.param: %C.1d7 = value_param call_param0 // CHECK:STDOUT: %Self.ref: type = name_ref Self, @C.as.ImplicitAs.impl.158.%C [concrete = constants.%C.1d7] // CHECK:STDOUT: %self: %C.1d7 = value_binding self, %self.param @@ -435,6 +442,7 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: %return.param_patt: %pattern_type.c49 = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [concrete = constants.%D] +// CHECK:STDOUT: %.loc12_63: form = init_form %D.ref, call_param1 [concrete = constants.%.382] // CHECK:STDOUT: %self.param: %C.e40 = value_param call_param0 // CHECK:STDOUT: %Self.ref: type = name_ref Self, @C.as.ImplicitAs.impl.f64.%C [concrete = constants.%C.e40] // CHECK:STDOUT: %self: %C.e40 = value_binding self, %self.param @@ -459,6 +467,7 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: %return.param_patt: %pattern_type.c49 = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [concrete = constants.%D] +// CHECK:STDOUT: %.loc13_63: form = init_form %D.ref, call_param1 [concrete = constants.%.382] // CHECK:STDOUT: %self.param: %C.3f1 = value_param call_param0 // CHECK:STDOUT: %Self.ref: type = name_ref Self, @C.as.ImplicitAs.impl.d86.%C [concrete = constants.%C.3f1] // CHECK:STDOUT: %self: %C.3f1 = value_binding self, %self.param @@ -483,6 +492,7 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: %return.param_patt: %pattern_type.c49 = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [concrete = constants.%D] +// CHECK:STDOUT: %.loc14_63: form = init_form %D.ref, call_param1 [concrete = constants.%.382] // CHECK:STDOUT: %self.param: %C.0fa = value_param call_param0 // CHECK:STDOUT: %Self.ref: type = name_ref Self, @C.as.ImplicitAs.impl.f13.%C [concrete = constants.%C.0fa] // CHECK:STDOUT: %self: %C.0fa = value_binding self, %self.param @@ -507,6 +517,7 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: %return.param_patt: %pattern_type.c49 = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [concrete = constants.%D] +// CHECK:STDOUT: %.loc15_63: form = init_form %D.ref, call_param1 [concrete = constants.%.382] // CHECK:STDOUT: %self.param: %C.2b7 = value_param call_param0 // CHECK:STDOUT: %Self.ref: type = name_ref Self, @C.as.ImplicitAs.impl.83b.%C [concrete = constants.%C.2b7] // CHECK:STDOUT: %self: %C.2b7 = value_binding self, %self.param @@ -582,64 +593,64 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: fn @C.as.ImplicitAs.impl.Convert.loc8(%self.param: %C.4f5) -> %return.param: %D { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Make.ref: %Make.type = name_ref Make, file.%Make.decl [concrete = constants.%Make] -// CHECK:STDOUT: %.loc8: ref %D = splice_block %return {} -// CHECK:STDOUT: %Make.call: init %D = call %Make.ref() to %.loc8 +// CHECK:STDOUT: %.loc8_60: ref %D = splice_block %return {} +// CHECK:STDOUT: %Make.call: init %D = call %Make.ref() to %.loc8_60 // CHECK:STDOUT: return %Make.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @C.as.ImplicitAs.impl.Convert.loc9(%self.param: %C.95b) -> %return.param: %D { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Make.ref: %Make.type = name_ref Make, file.%Make.decl [concrete = constants.%Make] -// CHECK:STDOUT: %.loc9: ref %D = splice_block %return {} -// CHECK:STDOUT: %Make.call: init %D = call %Make.ref() to %.loc9 +// CHECK:STDOUT: %.loc9_60: ref %D = splice_block %return {} +// CHECK:STDOUT: %Make.call: init %D = call %Make.ref() to %.loc9_60 // CHECK:STDOUT: return %Make.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @C.as.ImplicitAs.impl.Convert.loc10(%self.param: %C.a93) -> %return.param: %D { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Make.ref: %Make.type = name_ref Make, file.%Make.decl [concrete = constants.%Make] -// CHECK:STDOUT: %.loc10: ref %D = splice_block %return {} -// CHECK:STDOUT: %Make.call: init %D = call %Make.ref() to %.loc10 +// CHECK:STDOUT: %.loc10_60: ref %D = splice_block %return {} +// CHECK:STDOUT: %Make.call: init %D = call %Make.ref() to %.loc10_60 // CHECK:STDOUT: return %Make.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @C.as.ImplicitAs.impl.Convert.loc11(%self.param: %C.1d7) -> %return.param: %D { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Make.ref: %Make.type = name_ref Make, file.%Make.decl [concrete = constants.%Make] -// CHECK:STDOUT: %.loc11: ref %D = splice_block %return {} -// CHECK:STDOUT: %Make.call: init %D = call %Make.ref() to %.loc11 +// CHECK:STDOUT: %.loc11_60: ref %D = splice_block %return {} +// CHECK:STDOUT: %Make.call: init %D = call %Make.ref() to %.loc11_60 // CHECK:STDOUT: return %Make.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @C.as.ImplicitAs.impl.Convert.loc12(%self.param: %C.e40) -> %return.param: %D { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Make.ref: %Make.type = name_ref Make, file.%Make.decl [concrete = constants.%Make] -// CHECK:STDOUT: %.loc12: ref %D = splice_block %return {} -// CHECK:STDOUT: %Make.call: init %D = call %Make.ref() to %.loc12 +// CHECK:STDOUT: %.loc12_60: ref %D = splice_block %return {} +// CHECK:STDOUT: %Make.call: init %D = call %Make.ref() to %.loc12_60 // CHECK:STDOUT: return %Make.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @C.as.ImplicitAs.impl.Convert.loc13(%self.param: %C.3f1) -> %return.param: %D { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Make.ref: %Make.type = name_ref Make, file.%Make.decl [concrete = constants.%Make] -// CHECK:STDOUT: %.loc13: ref %D = splice_block %return {} -// CHECK:STDOUT: %Make.call: init %D = call %Make.ref() to %.loc13 +// CHECK:STDOUT: %.loc13_60: ref %D = splice_block %return {} +// CHECK:STDOUT: %Make.call: init %D = call %Make.ref() to %.loc13_60 // CHECK:STDOUT: return %Make.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @C.as.ImplicitAs.impl.Convert.loc14(%self.param: %C.0fa) -> %return.param: %D { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Make.ref: %Make.type = name_ref Make, file.%Make.decl [concrete = constants.%Make] -// CHECK:STDOUT: %.loc14: ref %D = splice_block %return {} -// CHECK:STDOUT: %Make.call: init %D = call %Make.ref() to %.loc14 +// CHECK:STDOUT: %.loc14_60: ref %D = splice_block %return {} +// CHECK:STDOUT: %Make.call: init %D = call %Make.ref() to %.loc14_60 // CHECK:STDOUT: return %Make.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @C.as.ImplicitAs.impl.Convert.loc15(%self.param: %C.2b7) -> %return.param: %D { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Make.ref: %Make.type = name_ref Make, file.%Make.decl [concrete = constants.%Make] -// CHECK:STDOUT: %.loc15: ref %D = splice_block %return {} -// CHECK:STDOUT: %Make.call: init %D = call %Make.ref() to %.loc15 +// CHECK:STDOUT: %.loc15_60: ref %D = splice_block %return {} +// CHECK:STDOUT: %Make.call: init %D = call %Make.ref() to %.loc15_60 // CHECK:STDOUT: return %Make.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -707,6 +718,7 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: %D: type = class_type @D [concrete] // CHECK:STDOUT: %struct_type.n.m: type = struct_type {.n: %i32, .m: %i32} [concrete] // CHECK:STDOUT: %complete_type.ea0: = complete_type_witness %struct_type.n.m [concrete] +// CHECK:STDOUT: %.6c0: form = init_form %D, call_param1 [concrete] // CHECK:STDOUT: %pattern_type.f8a: type = pattern_type %D [concrete] // CHECK:STDOUT: %F0.type: type = fn_type @F0 [concrete] // CHECK:STDOUT: %F0: %F0.type = struct_value () [concrete] @@ -928,6 +940,7 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: } { // CHECK:STDOUT: %P.ref.loc6: = name_ref P, imports.%P [concrete = imports.%P] // CHECK:STDOUT: %D.ref: type = name_ref D, imports.%P.D [concrete = constants.%D] +// CHECK:STDOUT: %.loc6_19: form = init_form %D.ref, call_param1 [concrete = constants.%.6c0] // CHECK:STDOUT: %n.param: %i32 = value_param call_param0 // CHECK:STDOUT: %.loc6_10: type = splice_block %i32 [concrete = constants.%i32] { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] diff --git a/toolchain/check/testdata/return/returned_var.carbon b/toolchain/check/testdata/return/returned_var.carbon index d4ccdc5b84b0..4c0c2e48d536 100644 --- a/toolchain/check/testdata/return/returned_var.carbon +++ b/toolchain/check/testdata/return/returned_var.carbon @@ -39,6 +39,7 @@ fn G() -> i32 { // CHECK:STDOUT: %C.elem: type = unbound_element_type %C, %i32 [concrete] // CHECK:STDOUT: %struct_type.a.b.501: type = struct_type {.a: %i32, .b: %i32} [concrete] // CHECK:STDOUT: %complete_type.705: = complete_type_witness %struct_type.a.b.501 [concrete] +// CHECK:STDOUT: %.64f: form = init_form %C, call_param0 [concrete] // CHECK:STDOUT: %pattern_type.7c7: type = pattern_type %C [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] @@ -67,6 +68,7 @@ fn G() -> i32 { // CHECK:STDOUT: %bound_method.646: = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_2.ef8: %i32 = int_value 2 [concrete] // CHECK:STDOUT: %C.val: %C = struct_value (%int_1.5d2, %int_2.ef8) [concrete] +// CHECK:STDOUT: %.941: form = init_form %i32, call_param0 [concrete] // CHECK:STDOUT: %G.type: type = fn_type @G [concrete] // CHECK:STDOUT: %G: %G.type = struct_value () [concrete] // CHECK:STDOUT: %int_0.5c6: Core.IntLiteral = int_value 0 [concrete] @@ -107,6 +109,7 @@ fn G() -> i32 { // CHECK:STDOUT: %return.param_patt: %pattern_type.7c7 = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc20: type = name_ref C, file.%C.decl [concrete = constants.%C] +// CHECK:STDOUT: %.loc20: form = init_form %C.ref.loc20, call_param0 [concrete = constants.%.64f] // CHECK:STDOUT: %return.param: ref %C = out_param call_param0 // CHECK:STDOUT: %return: ref %C = return_slot %return.param // CHECK:STDOUT: } @@ -116,6 +119,7 @@ fn G() -> i32 { // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32.loc25: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc25: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] +// CHECK:STDOUT: %.loc25: form = init_form %i32.loc25, call_param0 [concrete = constants.%.941] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/return/returned_var_scope.carbon b/toolchain/check/testdata/return/returned_var_scope.carbon index bc8ec9a63bbd..fb7c4ef19529 100644 --- a/toolchain/check/testdata/return/returned_var_scope.carbon +++ b/toolchain/check/testdata/return/returned_var_scope.carbon @@ -39,6 +39,7 @@ fn EnclosingButAfter(b: bool) -> i32 { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] +// CHECK:STDOUT: %.941: form = init_form %i32, call_param0 [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %UnrelatedScopes.type: type = fn_type @UnrelatedScopes [concrete] // CHECK:STDOUT: %UnrelatedScopes: %UnrelatedScopes.type = struct_value () [concrete] @@ -57,6 +58,7 @@ fn EnclosingButAfter(b: bool) -> i32 { // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.e8c = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.6bc) [concrete] // CHECK:STDOUT: %.863: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete] // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.897: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.0b5 [concrete] +// CHECK:STDOUT: %.4d5: form = init_form %i32, call_param1 [concrete] // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.0b5, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete] // CHECK:STDOUT: %bound_method.d2e: = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %int_0.6a9: %i32 = int_value 0 [concrete] @@ -104,6 +106,7 @@ fn EnclosingButAfter(b: bool) -> i32 { // CHECK:STDOUT: } { // 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: %.loc15: form = init_form %i32.loc15, call_param0 [concrete = constants.%.941] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } @@ -115,6 +118,7 @@ fn EnclosingButAfter(b: bool) -> i32 { // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32.loc25: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc25: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] +// CHECK:STDOUT: %.loc25_34: form = init_form %i32.loc25, call_param1 [concrete = constants.%.4d5] // CHECK:STDOUT: %b.param: bool = value_param call_param0 // CHECK:STDOUT: %.loc25_25.1: type = splice_block %.loc25_25.3 [concrete = bool] { // CHECK:STDOUT: %Bool.call: init type = call constants.%Bool() [concrete = bool] diff --git a/toolchain/check/testdata/return/struct.carbon b/toolchain/check/testdata/return/struct.carbon index 3733207525c4..ea439bc3de00 100644 --- a/toolchain/check/testdata/return/struct.carbon +++ b/toolchain/check/testdata/return/struct.carbon @@ -24,6 +24,7 @@ fn Main() -> {.a: i32} { // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] // CHECK:STDOUT: %struct_type.a.ba9: type = struct_type {.a: %i32} [concrete] +// CHECK:STDOUT: %.563: form = init_form %struct_type.a.ba9, call_param0 [concrete] // CHECK:STDOUT: %pattern_type.268: type = pattern_type %struct_type.a.ba9 [concrete] // CHECK:STDOUT: %Main.type: type = fn_type @Main [concrete] // CHECK:STDOUT: %Main: %Main.type = struct_value () [concrete] @@ -75,6 +76,7 @@ fn Main() -> {.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: %struct_type.a: type = struct_type {.a: %i32} [concrete = constants.%struct_type.a.ba9] +// CHECK:STDOUT: %.loc15: form = init_form %struct_type.a, call_param0 [concrete = constants.%.563] // CHECK:STDOUT: %return.param: ref %struct_type.a.ba9 = out_param call_param0 // CHECK:STDOUT: %return: ref %struct_type.a.ba9 = return_slot %return.param // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/return/tuple.carbon b/toolchain/check/testdata/return/tuple.carbon index fccb7235ffc8..d01641f5bbe6 100644 --- a/toolchain/check/testdata/return/tuple.carbon +++ b/toolchain/check/testdata/return/tuple.carbon @@ -27,6 +27,7 @@ fn Main() -> (i32, i32) { // CHECK:STDOUT: %tuple.type.24b: type = tuple_type (type, type) [concrete] // CHECK:STDOUT: %tuple.95a: %tuple.type.24b = tuple_value (%i32, %i32) [concrete] // CHECK:STDOUT: %tuple.type.d07: type = tuple_type (%i32, %i32) [concrete] +// CHECK:STDOUT: %.073: form = init_form %tuple.type.d07, call_param0 [concrete] // CHECK:STDOUT: %pattern_type.511: type = pattern_type %tuple.type.d07 [concrete] // CHECK:STDOUT: %Main.type: type = fn_type @Main [concrete] // CHECK:STDOUT: %Main: %Main.type = struct_value () [concrete] @@ -85,6 +86,7 @@ fn Main() -> (i32, i32) { // CHECK:STDOUT: %i32.loc16_20: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %.loc16_23.1: %tuple.type.24b = tuple_literal (%i32.loc16_15, %i32.loc16_20) [concrete = constants.%tuple.95a] // CHECK:STDOUT: %.loc16_23.2: type = converted %.loc16_23.1, constants.%tuple.type.d07 [concrete = constants.%tuple.type.d07] +// CHECK:STDOUT: %.loc16_23.3: form = init_form %.loc16_23.2, call_param0 [concrete = constants.%.073] // CHECK:STDOUT: %return.param: ref %tuple.type.d07 = out_param call_param0 // CHECK:STDOUT: %return: ref %tuple.type.d07 = return_slot %return.param // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/return/value.carbon b/toolchain/check/testdata/return/value.carbon index af83e9c02f65..ca4860ba26a9 100644 --- a/toolchain/check/testdata/return/value.carbon +++ b/toolchain/check/testdata/return/value.carbon @@ -23,6 +23,7 @@ fn Main() -> i32 { // CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] +// CHECK:STDOUT: %.941: form = init_form %i32, call_param0 [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %Main.type: type = fn_type @Main [concrete] // CHECK:STDOUT: %Main: %Main.type = struct_value () [concrete] @@ -70,6 +71,7 @@ fn Main() -> i32 { // CHECK:STDOUT: } { // 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: %.loc15: form = init_form %i32, call_param0 [concrete = constants.%.941] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/struct/fail_duplicate_name.carbon b/toolchain/check/testdata/struct/fail_duplicate_name.carbon index abcdc7c444a9..6805488cce89 100644 --- a/toolchain/check/testdata/struct/fail_duplicate_name.carbon +++ b/toolchain/check/testdata/struct/fail_duplicate_name.carbon @@ -98,10 +98,7 @@ var y: {.b: i32, .c: i32} = {.b = 3, .b = 4}; // CHECK:STDOUT: .y = %y // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { -// 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: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} { // CHECK:STDOUT: %int_32.loc22_16: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc22_16: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %int_32.loc22_27: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] @@ -112,8 +109,6 @@ var y: {.b: i32, .c: i32} = {.b = 3, .b = 4}; // CHECK:STDOUT: %i32.loc22_47: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %int_32.loc22_56: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc22_56: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %return.param: ref = out_param call_param0 -// CHECK:STDOUT: %return: ref = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %v.patt: = value_binding_pattern v [concrete] @@ -159,7 +154,7 @@ var y: {.b: i32, .c: i32} = {.b = 3, .b = 4}; // CHECK:STDOUT: %y: ref %struct_type.b.c = ref_binding y, %y.var [concrete = %y.var] // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F() -> ; +// CHECK:STDOUT: fn @F(); // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: diff --git a/toolchain/check/testdata/struct/literal_member_access.carbon b/toolchain/check/testdata/struct/literal_member_access.carbon index d317859c7a90..77a2551bfecc 100644 --- a/toolchain/check/testdata/struct/literal_member_access.carbon +++ b/toolchain/check/testdata/struct/literal_member_access.carbon @@ -28,9 +28,11 @@ fn F() -> i32 { // CHECK:STDOUT: %N: Core.IntLiteral = symbolic_binding N, 0 [symbolic] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] // CHECK:STDOUT: %struct_type.x.y.z: type = struct_type {.x: %i32, .y: %i32, .z: %i32} [concrete] +// CHECK:STDOUT: %.a42: form = init_form %struct_type.x.y.z, call_param0 [concrete] // CHECK:STDOUT: %pattern_type.c6b: type = pattern_type %struct_type.x.y.z [concrete] // CHECK:STDOUT: %G.type: type = fn_type @G [concrete] // CHECK:STDOUT: %G: %G.type = struct_value () [concrete] +// CHECK:STDOUT: %.941: form = init_form %i32, call_param0 [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] @@ -85,6 +87,7 @@ fn F() -> i32 { // CHECK:STDOUT: %int_32.loc15_34: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc15_34: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %struct_type.x.y.z: type = struct_type {.x: %i32, .y: %i32, .z: %i32} [concrete = constants.%struct_type.x.y.z] +// CHECK:STDOUT: %.loc15: form = init_form %struct_type.x.y.z, call_param0 [concrete = constants.%.a42] // CHECK:STDOUT: %return.param: ref %struct_type.x.y.z = out_param call_param0 // CHECK:STDOUT: %return: ref %struct_type.x.y.z = return_slot %return.param // CHECK:STDOUT: } @@ -94,6 +97,7 @@ fn F() -> i32 { // CHECK:STDOUT: } { // 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: %.loc17: form = init_form %i32, call_param0 [concrete = constants.%.941] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/struct/nested_struct_in_place.carbon b/toolchain/check/testdata/struct/nested_struct_in_place.carbon index 74d650367b35..14ec9e1f79ba 100644 --- a/toolchain/check/testdata/struct/nested_struct_in_place.carbon +++ b/toolchain/check/testdata/struct/nested_struct_in_place.carbon @@ -29,6 +29,7 @@ fn G() { // CHECK:STDOUT: %tuple.type.ff9: type = tuple_type (type, type, type) [concrete] // CHECK:STDOUT: %tuple: %tuple.type.ff9 = tuple_value (%i32, %i32, %i32) [concrete] // CHECK:STDOUT: %tuple.type.189: type = tuple_type (%i32, %i32, %i32) [concrete] +// CHECK:STDOUT: %.084: form = init_form %tuple.type.189, call_param0 [concrete] // CHECK:STDOUT: %pattern_type.b5a: type = pattern_type %tuple.type.189 [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] @@ -71,6 +72,7 @@ fn G() { // CHECK:STDOUT: %i32.loc15_22: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %.loc15_25.1: %tuple.type.ff9 = tuple_literal (%i32.loc15_12, %i32.loc15_17, %i32.loc15_22) [concrete = constants.%tuple] // CHECK:STDOUT: %.loc15_25.2: type = converted %.loc15_25.1, constants.%tuple.type.189 [concrete = constants.%tuple.type.189] +// CHECK:STDOUT: %.loc15_25.3: form = init_form %.loc15_25.2, call_param0 [concrete = constants.%.084] // CHECK:STDOUT: %return.param: ref %tuple.type.189 = out_param call_param0 // CHECK:STDOUT: %return: ref %tuple.type.189 = return_slot %return.param // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/struct/partially_const.carbon b/toolchain/check/testdata/struct/partially_const.carbon index 363549c0a57e..90c1cb330d1a 100644 --- a/toolchain/check/testdata/struct/partially_const.carbon +++ b/toolchain/check/testdata/struct/partially_const.carbon @@ -26,6 +26,7 @@ fn Make(n: i32) -> {.a: i32, .b: i32, .c: i32} { // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %struct_type.a.b.c.0b6: type = struct_type {.a: %i32, .b: %i32, .c: %i32} [concrete] +// CHECK:STDOUT: %.aee: form = init_form %struct_type.a.b.c.0b6, call_param1 [concrete] // CHECK:STDOUT: %pattern_type.8ae: type = pattern_type %struct_type.a.b.c.0b6 [concrete] // CHECK:STDOUT: %Make.type: type = fn_type @Make [concrete] // CHECK:STDOUT: %Make: %Make.type = struct_value () [concrete] @@ -95,8 +96,9 @@ fn Make(n: i32) -> {.a: i32, .b: i32, .c: i32} { // CHECK:STDOUT: %int_32.loc15_43: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc15_43: 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.0b6] +// CHECK:STDOUT: %.loc15_46: form = init_form %struct_type.a.b.c, call_param1 [concrete = constants.%.aee] // CHECK:STDOUT: %n.param: %i32 = value_param call_param0 -// CHECK:STDOUT: %.loc15: type = splice_block %i32.loc15_12 [concrete = constants.%i32] { +// CHECK:STDOUT: %.loc15_12: type = splice_block %i32.loc15_12 [concrete = constants.%i32] { // CHECK:STDOUT: %int_32.loc15_12: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc15_12: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/struct/reorder_fields.carbon b/toolchain/check/testdata/struct/reorder_fields.carbon index 4b6d8bbafd03..a0e1a30c5572 100644 --- a/toolchain/check/testdata/struct/reorder_fields.carbon +++ b/toolchain/check/testdata/struct/reorder_fields.carbon @@ -29,6 +29,7 @@ fn F() -> {.a: i32, .b: f64} { // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %N: Core.IntLiteral = symbolic_binding N, 0 [symbolic] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] +// CHECK:STDOUT: %.941: form = init_form %i32, call_param0 [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %MakeI32.type: type = fn_type @MakeI32 [concrete] // CHECK:STDOUT: %MakeI32: %MakeI32.type = struct_value () [concrete] @@ -36,10 +37,12 @@ fn F() -> {.a: i32, .b: f64} { // CHECK:STDOUT: %Float.type: type = generic_class_type @Float [concrete] // CHECK:STDOUT: %Float.generic: %Float.type = struct_value () [concrete] // CHECK:STDOUT: %f64.d77: type = class_type @Float, @Float(%int_64) [concrete] +// CHECK:STDOUT: %.08f: form = init_form %f64.d77, call_param0 [concrete] // CHECK:STDOUT: %pattern_type.0ae: type = pattern_type %f64.d77 [concrete] // CHECK:STDOUT: %MakeF64.type: type = fn_type @MakeF64 [concrete] // CHECK:STDOUT: %MakeF64: %MakeF64.type = struct_value () [concrete] // CHECK:STDOUT: %struct_type.a.b: type = struct_type {.a: %i32, .b: %f64.d77} [concrete] +// CHECK:STDOUT: %.fd1: form = init_form %struct_type.a.b, call_param0 [concrete] // CHECK:STDOUT: %pattern_type.a5c: type = pattern_type %struct_type.a.b [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] @@ -96,6 +99,7 @@ fn F() -> {.a: i32, .b: f64} { // CHECK:STDOUT: } { // 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: %.loc15: form = init_form %i32, call_param0 [concrete = constants.%.941] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } @@ -105,6 +109,7 @@ fn F() -> {.a: i32, .b: f64} { // CHECK:STDOUT: } { // CHECK:STDOUT: %int_64: Core.IntLiteral = int_value 64 [concrete = constants.%int_64] // CHECK:STDOUT: %f64: type = class_type @Float, @Float(constants.%int_64) [concrete = constants.%f64.d77] +// CHECK:STDOUT: %.loc16: form = init_form %f64, call_param0 [concrete = constants.%.08f] // CHECK:STDOUT: %return.param: ref %f64.d77 = out_param call_param0 // CHECK:STDOUT: %return: ref %f64.d77 = return_slot %return.param // CHECK:STDOUT: } @@ -117,6 +122,7 @@ fn F() -> {.a: i32, .b: f64} { // CHECK:STDOUT: %int_64.loc18: Core.IntLiteral = int_value 64 [concrete = constants.%int_64] // CHECK:STDOUT: %f64.loc18: type = class_type @Float, @Float(constants.%int_64) [concrete = constants.%f64.d77] // CHECK:STDOUT: %struct_type.a.b.loc18: type = struct_type {.a: %i32, .b: %f64.d77} [concrete = constants.%struct_type.a.b] +// CHECK:STDOUT: %.loc18: form = init_form %struct_type.a.b.loc18, call_param0 [concrete = constants.%.fd1] // CHECK:STDOUT: %return.param: ref %struct_type.a.b = out_param call_param0 // CHECK:STDOUT: %return: ref %struct_type.a.b = return_slot %return.param // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/var/global_decl_import.carbon b/toolchain/check/testdata/var/global_decl_import.carbon index f7535d817ed3..cb36ea511d69 100644 --- a/toolchain/check/testdata/var/global_decl_import.carbon +++ b/toolchain/check/testdata/var/global_decl_import.carbon @@ -60,6 +60,7 @@ fn G() -> {.v: ()} { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %struct_type.v: type = struct_type {.v: %empty_tuple.type} [concrete] +// CHECK:STDOUT: %.4c9: form = init_form %struct_type.v, call_param0 [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] @@ -87,6 +88,7 @@ fn G() -> {.v: ()} { // CHECK:STDOUT: %.loc6_17.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // 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: %.loc6_18: form = init_form %struct_type.v, call_param0 [concrete = constants.%.4c9] // 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: } diff --git a/toolchain/check/testdata/var/var_pattern.carbon b/toolchain/check/testdata/var/var_pattern.carbon index de2307114209..56ed12c286d2 100644 --- a/toolchain/check/testdata/var/var_pattern.carbon +++ b/toolchain/check/testdata/var/var_pattern.carbon @@ -842,6 +842,7 @@ fn G() { // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %.62c: form = init_form %empty_tuple.type, call_param0 [concrete] // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] @@ -876,6 +877,7 @@ fn G() { // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc4_12.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc4_12.2: type = converted %.loc4_12.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %.loc4_12.3: form = init_form %.loc4_12.2, call_param0 [concrete = constants.%.62c] // CHECK:STDOUT: %return.param: ref %empty_tuple.type = out_param call_param0 // CHECK:STDOUT: %return: ref %empty_tuple.type = return_slot %return.param // CHECK:STDOUT: } diff --git a/toolchain/check/type_completion.cpp b/toolchain/check/type_completion.cpp index 56e40686fc44..96c6d1918d53 100644 --- a/toolchain/check/type_completion.cpp +++ b/toolchain/check/type_completion.cpp @@ -205,11 +205,11 @@ class TypeCompleter { requires(InstT::Kind.template IsAnyOf< SemIR::AutoType, SemIR::BoolType, SemIR::BoundMethodType, SemIR::CharLiteralType, SemIR::ErrorInst, SemIR::FacetType, - SemIR::FloatLiteralType, SemIR::FloatType, SemIR::IntType, - SemIR::IntLiteralType, SemIR::NamespaceType, SemIR::PatternType, - SemIR::PointerType, SemIR::RequireSpecificDefinitionType, - SemIR::SpecificFunctionType, SemIR::TypeType, SemIR::VtableType, - SemIR::WitnessType>()) + SemIR::FloatLiteralType, SemIR::FloatType, SemIR::FormType, + SemIR::IntType, SemIR::IntLiteralType, SemIR::NamespaceType, + SemIR::PatternType, SemIR::PointerType, + SemIR::RequireSpecificDefinitionType, SemIR::SpecificFunctionType, + SemIR::TypeType, SemIR::VtableType, SemIR::WitnessType>()) auto BuildInfoForInst(SemIR::TypeId type_id, InstT /*inst*/) const -> SemIR::CompleteTypeInfo { return {.value_repr = MakeCopyValueRepr(type_id)}; diff --git a/toolchain/driver/testdata/stdin.carbon b/toolchain/driver/testdata/stdin.carbon index 29780d700d3c..85fe911e3a75 100644 --- a/toolchain/driver/testdata/stdin.carbon +++ b/toolchain/driver/testdata/stdin.carbon @@ -32,7 +32,7 @@ // CHECK:STDOUT: import_ir_insts: {} // CHECK:STDOUT: clang_decls: {} // CHECK:STDOUT: name_scopes: -// CHECK:STDOUT: name_scope0: {inst: instE, parent_scope: name_scope, has_error: false, extended_scopes: [], names: {}} +// CHECK:STDOUT: name_scope0: {inst: instF, parent_scope: name_scope, has_error: false, extended_scopes: [], names: {}} // CHECK:STDOUT: entity_names: {} // CHECK:STDOUT: cpp_global_vars: {} // CHECK:STDOUT: functions: {} @@ -44,15 +44,17 @@ // CHECK:STDOUT: types: // CHECK:STDOUT: 'type(TypeType)': // CHECK:STDOUT: value_repr: {kind: copy, type: type(TypeType)} +// CHECK:STDOUT: 'type(inst(FormType))': +// CHECK:STDOUT: value_repr: {kind: copy, type: type(inst(FormType))} // CHECK:STDOUT: 'type(Error)': // CHECK:STDOUT: value_repr: {kind: copy, type: type(Error)} // CHECK:STDOUT: 'type(inst(NamespaceType))': // CHECK:STDOUT: value_repr: {kind: copy, type: type(inst(NamespaceType))} // CHECK:STDOUT: insts: -// CHECK:STDOUT: instE: {kind: Namespace, arg0: name_scope0, arg1: inst, type: type(inst(NamespaceType))} +// CHECK:STDOUT: instF: {kind: Namespace, arg0: name_scope0, arg1: inst, type: type(inst(NamespaceType))} // CHECK:STDOUT: constant_values: // CHECK:STDOUT: values: -// CHECK:STDOUT: instE: concrete_constant(instE) +// CHECK:STDOUT: instF: concrete_constant(instF) // CHECK:STDOUT: symbolic_constants: {} // CHECK:STDOUT: inst_blocks: // CHECK:STDOUT: inst_block_empty: {} @@ -60,7 +62,7 @@ // CHECK:STDOUT: imports: {} // CHECK:STDOUT: global_init: {} // CHECK:STDOUT: inst_block60000004: -// CHECK:STDOUT: 0: instE +// CHECK:STDOUT: 0: instF // CHECK:STDOUT: ... // CHECK:STDOUT: --- - // CHECK:STDOUT: diff --git a/toolchain/lower/context.h b/toolchain/lower/context.h index ecdb09ba3776..0dec8a2c5f01 100644 --- a/toolchain/lower/context.h +++ b/toolchain/lower/context.h @@ -93,6 +93,15 @@ class Context { return type_type_; } + // Returns the empty LLVM struct type used to represent the type `type`. + auto GetFormType() -> llvm::StructType* { + if (!form_type_) { + // `Core.Form` is lowered to an empty LLVM StructType. + form_type_ = llvm::StructType::create(*llvm_context_, {}, "Core.Form"); + } + return form_type_; + } + auto llvm_context() -> llvm::LLVMContext& { return *llvm_context_; } auto llvm_module() -> llvm::Module& { return *llvm_module_; } auto file_system() -> llvm::IntrusiveRefCntPtr& { @@ -158,6 +167,9 @@ class Context { // Lowered version of the builtin type `type`. llvm::StructType* type_type_ = nullptr; + // Lowered version of the builtin type `Core.Form`. + llvm::StructType* form_type_ = nullptr; + // Global format string for `printf.int.format` used by the PrintInt builtin. llvm::Value* printf_int_format_string_ = nullptr; diff --git a/toolchain/lower/file_context.cpp b/toolchain/lower/file_context.cpp index 2ee5d367175a..d2cb011995ff 100644 --- a/toolchain/lower/file_context.cpp +++ b/toolchain/lower/file_context.cpp @@ -997,6 +997,11 @@ static auto BuildTypeForInst(FileContext& context, SemIR::TypeType /*inst*/) return {context.GetTypeType(), nullptr}; } +static auto BuildTypeForInst(FileContext& context, SemIR::FormType /*inst*/) + -> FileContext::LoweredTypes { + return {context.GetFormType(), nullptr}; +} + static auto BuildTypeForInst(FileContext& context, SemIR::VtableType /*inst*/) -> FileContext::LoweredTypes { return {llvm::Type::getVoidTy(context.llvm_context()), nullptr}; diff --git a/toolchain/lower/file_context.h b/toolchain/lower/file_context.h index 05b3e7b04729..55919c141175 100644 --- a/toolchain/lower/file_context.h +++ b/toolchain/lower/file_context.h @@ -109,6 +109,7 @@ class FileContext { // Returns the empty LLVM struct type used to represent the type `type`. auto GetTypeType() -> llvm::StructType* { return context().GetTypeType(); } + auto GetFormType() -> llvm::StructType* { return context().GetFormType(); } auto context() -> Context& { return *context_; } auto llvm_context() -> llvm::LLVMContext& { return context().llvm_context(); } diff --git a/toolchain/lower/testdata/var/import.carbon b/toolchain/lower/testdata/var/import.carbon index d08d29d2e16c..b7a8d0d09829 100644 --- a/toolchain/lower/testdata/var/import.carbon +++ b/toolchain/lower/testdata/var/import.carbon @@ -154,29 +154,29 @@ fn Z() -> i32 { return z; } // CHECK:STDOUT: ; Function Attrs: nounwind // CHECK:STDOUT: define i32 @_CV.Main() #0 !dbg !4 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %.loc6 = load i32, ptr @_Cv.Main, align 4, !dbg !8 -// CHECK:STDOUT: ret i32 %.loc6, !dbg !9 +// CHECK:STDOUT: %.loc6_24 = load i32, ptr @_Cv.Main, align 4, !dbg !8 +// CHECK:STDOUT: ret i32 %.loc6_24, !dbg !9 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind // CHECK:STDOUT: define i32 @_CW.Main() #0 !dbg !10 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %.loc7 = load i32, ptr getelementptr inbounds nuw ({ i32, i32 }, ptr @_Cv.Main, i32 0, i32 1), align 4, !dbg !11 -// CHECK:STDOUT: ret i32 %.loc7, !dbg !12 +// CHECK:STDOUT: %.loc7_24 = load i32, ptr getelementptr inbounds nuw ({ i32, i32 }, ptr @_Cv.Main, i32 0, i32 1), align 4, !dbg !11 +// CHECK:STDOUT: ret i32 %.loc7_24, !dbg !12 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind // CHECK:STDOUT: define i32 @_CY.Main() #0 !dbg !13 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %.loc9 = load i32, ptr @_Cy.Main, align 4, !dbg !14 -// CHECK:STDOUT: ret i32 %.loc9, !dbg !15 +// CHECK:STDOUT: %.loc9_24 = load i32, ptr @_Cy.Main, align 4, !dbg !14 +// CHECK:STDOUT: ret i32 %.loc9_24, !dbg !15 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind // CHECK:STDOUT: define i32 @_CZ.Main() #0 !dbg !16 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %.loc10 = load i32, ptr getelementptr inbounds nuw ({ i32, i32 }, ptr @_Cz.Main, i32 0, i32 1), align 4, !dbg !17 -// CHECK:STDOUT: ret i32 %.loc10, !dbg !18 +// CHECK:STDOUT: %.loc10_24 = load i32, ptr getelementptr inbounds nuw ({ i32, i32 }, ptr @_Cz.Main, i32 0, i32 1), align 4, !dbg !17 +// CHECK:STDOUT: ret i32 %.loc10_24, !dbg !18 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; uselistorder directives diff --git a/toolchain/sem_ir/file.cpp b/toolchain/sem_ir/file.cpp index 3901c87dd0f4..823a4e38b50f 100644 --- a/toolchain/sem_ir/file.cpp +++ b/toolchain/sem_ir/file.cpp @@ -69,10 +69,13 @@ File::File(const Parse::Tree* parse_tree, CheckIRId check_ir_id, custom_layouts_(allocator_, IdTag(check_ir_id.index, 1)), expr_regions_(check_ir_id), clang_source_locs_(check_ir_id) { - // `type` and the error type are both complete & concrete types. + // `type`, `form`, and the error type are both complete & concrete types. types_.SetComplete( TypeType::TypeId, {.value_repr = {.kind = ValueRepr::Copy, .type_id = TypeType::TypeId}}); + types_.SetComplete( + FormType::TypeId, + {.value_repr = {.kind = ValueRepr::Copy, .type_id = FormType::TypeId}}); types_.SetComplete( ErrorInst::TypeId, {.value_repr = {.kind = ValueRepr::Copy, .type_id = ErrorInst::TypeId}}); diff --git a/toolchain/sem_ir/inst_kind.def b/toolchain/sem_ir/inst_kind.def index e85df792061c..971321edd449 100644 --- a/toolchain/sem_ir/inst_kind.def +++ b/toolchain/sem_ir/inst_kind.def @@ -69,6 +69,7 @@ CARBON_SEM_IR_INST_KIND(FloatLiteralType) CARBON_SEM_IR_INST_KIND(FloatLiteralValue) CARBON_SEM_IR_INST_KIND(FloatType) CARBON_SEM_IR_INST_KIND(FloatValue) +CARBON_SEM_IR_INST_KIND(FormType) CARBON_SEM_IR_INST_KIND(FunctionDecl) CARBON_SEM_IR_INST_KIND(FunctionType) CARBON_SEM_IR_INST_KIND(FunctionTypeWithSelfType) @@ -86,6 +87,7 @@ CARBON_SEM_IR_INST_KIND(ImportDecl) CARBON_SEM_IR_INST_KIND(ImportRefLoaded) CARBON_SEM_IR_INST_KIND(ImportRefUnloaded) CARBON_SEM_IR_INST_KIND(InPlaceInit) +CARBON_SEM_IR_INST_KIND(InitForm) CARBON_SEM_IR_INST_KIND(InitializeFrom) CARBON_SEM_IR_INST_KIND(InstType) CARBON_SEM_IR_INST_KIND(InstValue) @@ -107,6 +109,7 @@ CARBON_SEM_IR_INST_KIND(PatternType) CARBON_SEM_IR_INST_KIND(PointerType) CARBON_SEM_IR_INST_KIND(RefBinding) CARBON_SEM_IR_INST_KIND(RefBindingPattern) +CARBON_SEM_IR_INST_KIND(RefForm) CARBON_SEM_IR_INST_KIND(RefParam) CARBON_SEM_IR_INST_KIND(RefParamPattern) CARBON_SEM_IR_INST_KIND(RefTagExpr) diff --git a/toolchain/sem_ir/singleton_insts.h b/toolchain/sem_ir/singleton_insts.h index 94c3fefa7079..bab0f03d7363 100644 --- a/toolchain/sem_ir/singleton_insts.h +++ b/toolchain/sem_ir/singleton_insts.h @@ -20,6 +20,7 @@ static constexpr std::array SingletonInstKinds = { InstKind::CharLiteralType, InstKind::ErrorInst, InstKind::FloatLiteralType, + InstKind::FormType, InstKind::InstType, InstKind::IntLiteralType, InstKind::NamespaceType, diff --git a/toolchain/sem_ir/typed_insts.h b/toolchain/sem_ir/typed_insts.h index 5d66e2b85233..c3305675b38d 100644 --- a/toolchain/sem_ir/typed_insts.h +++ b/toolchain/sem_ir/typed_insts.h @@ -739,6 +739,13 @@ struct FloatValue { FloatId float_id; }; +// The type `Core.Form`. +struct FormType : public SingletonTypeInst { + // `FormType` is always set complete in file.cpp. + static constexpr auto TypeId = + TypeId::ForTypeConstant(ConstantId::ForConcreteConstant(TypeInstId)); +}; + // A function declaration. struct FunctionDecl { static constexpr auto Kind = @@ -1038,6 +1045,22 @@ struct InPlaceInit { DestInstId dest_id; }; +// An initializing primitive form. +struct InitForm { + static constexpr auto Kind = InstKind::InitForm.Define( + {.ir_name = "init_form", + .constant_kind = InstConstantKind::WheneverPossible, + .is_lowered = false}); + + // Always FormType + TypeId type_id; + // The type component of the form. + InstId type_component_inst_id; + // If this is a function's return form, the index of the corresponding + // `OutParam` in the function's `Call` parameter list. + CallParamIndex index; +}; + // Finalizes the initialization of `dest_id` from the initializer expression // `src_id`, by performing a final copy from source to destination, for types // whose initialization is not in-place. @@ -1339,6 +1362,17 @@ struct RefBindingPattern { EntityNameId entity_name_id; }; +struct RefForm { + static constexpr auto Kind = + InstKind::RefForm.Define( + {.ir_name = "ref_form", + .constant_kind = InstConstantKind::WheneverPossible, + .is_lowered = false}); + + TypeId type_id; + InstId type_component_inst_id; +}; + // A by-reference `Call` parameter. See AnyParam for member documentation. Note // that this may correspond to either a RefParamPattern or a VarParamPattern. struct RefParam {