Format FormType as "Core.Form" (#6734)

This commit is contained in:
Geoff Romer
2026-02-13 19:44:21 +00:00
committed by GitHub
parent 9a90f19c60
commit 1c885a629e
186 changed files with 1431 additions and 1431 deletions
+20 -20
View File
@@ -78,7 +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: %.6c815b.1: Core.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: <witness> = require_complete_type %T.binding.as_type [symbolic]
@@ -93,7 +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: %.4fe: Core.Form = init_form %ptr.e8f, call_param1 [symbolic]
// CHECK:STDOUT: %Function.specific_fn.a87: <specific function> = 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: <witness> = lookup_impl_witness %ptr.e8f, @Copy [symbolic]
@@ -102,7 +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: %.1eb: Core.Form = init_form %ptr.31e, call_param1 [concrete]
// CHECK:STDOUT: %Copy.impl_witness.2c7: <witness> = 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]
@@ -138,7 +138,7 @@ fn CallSpecific(x: C*) -> C* {
// 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.3: 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.4: form = init_form %.loc5_37.3, call_param1 [symbolic = %.loc5_37.2 (constants.%.075d25.1)]
// CHECK:STDOUT: %.loc5_37.4: Core.Form = init_form %.loc5_37.3, call_param1 [symbolic = %.loc5_37.2 (constants.%.6c815b.1)]
// CHECK:STDOUT: %.loc5_21: type = splice_block %Copy.ref [concrete = constants.%Copy.type] {
// CHECK:STDOUT: <elided>
// CHECK:STDOUT: %Core.ref: <namespace> = name_ref Core, imports.%Core [concrete = imports.%Core]
@@ -161,7 +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.2: form = init_form %T.binding.as_type, call_param1 [symbolic = %.loc5_37.2 (constants.%.075d25.1)]
// CHECK:STDOUT: %.loc5_37.2: Core.Form = init_form %T.binding.as_type, call_param1 [symbolic = %.loc5_37.2 (constants.%.6c815b.1)]
// CHECK:STDOUT:
// CHECK:STDOUT: !definition:
// CHECK:STDOUT: %require_complete: <witness> = require_complete_type %T.binding.as_type [symbolic = %require_complete (constants.%require_complete.67c)]
@@ -253,7 +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.2 => constants.%.075d25.1
// CHECK:STDOUT: %.loc5_37.2 => constants.%.6c815b.1
// CHECK:STDOUT:
// CHECK:STDOUT: !definition:
// CHECK:STDOUT: %require_complete => constants.%require_complete.67c
@@ -267,21 +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.2 => constants.%.075d25.1
// CHECK:STDOUT: %.loc10_40.2 => constants.%.6c815b.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: %.loc16_40.1 => constants.%.4fe
// 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.2 => constants.%.ba4
// CHECK:STDOUT: %.loc5_37.2 => constants.%.4fe
// CHECK:STDOUT:
// CHECK:STDOUT: !definition:
// CHECK:STDOUT: %require_complete => constants.%require_complete.ef1
@@ -295,7 +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.2 => constants.%.485
// CHECK:STDOUT: %.loc5_37.2 => constants.%.1eb
// CHECK:STDOUT:
// CHECK:STDOUT: !definition:
// CHECK:STDOUT: %require_complete => constants.%complete_type.17a
@@ -313,7 +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: %.6c815b.1: Core.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: <witness> = require_complete_type %T.binding.as_type [symbolic]
@@ -328,7 +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: %.4fe: Core.Form = init_form %ptr.e8f, call_param1 [symbolic]
// CHECK:STDOUT: %Function.specific_fn.a87: <specific function> = 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: <witness> = lookup_impl_witness %ptr.e8f, @Copy [symbolic]
@@ -337,7 +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: %.1eb: Core.Form = init_form %ptr.31e, call_param1 [concrete]
// CHECK:STDOUT: %Copy.impl_witness.2c7: <witness> = 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]
@@ -373,7 +373,7 @@ fn CallSpecific(x: C*) -> C* {
// 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.3: 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.4: form = init_form %.loc5_37.3, call_param1 [symbolic = %.loc5_37.2 (constants.%.075d25.1)]
// CHECK:STDOUT: %.loc5_37.4: Core.Form = init_form %.loc5_37.3, call_param1 [symbolic = %.loc5_37.2 (constants.%.6c815b.1)]
// CHECK:STDOUT: %.loc5_21: type = splice_block %Copy.ref [concrete = constants.%Copy.type] {
// CHECK:STDOUT: <elided>
// CHECK:STDOUT: %Core.ref: <namespace> = name_ref Core, imports.%Core [concrete = imports.%Core]
@@ -396,7 +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.2: form = init_form %T.binding.as_type, call_param1 [symbolic = %.loc5_37.2 (constants.%.075d25.1)]
// CHECK:STDOUT: %.loc5_37.2: Core.Form = init_form %T.binding.as_type, call_param1 [symbolic = %.loc5_37.2 (constants.%.6c815b.1)]
// CHECK:STDOUT:
// CHECK:STDOUT: !definition:
// CHECK:STDOUT: %require_complete: <witness> = require_complete_type %T.binding.as_type [symbolic = %require_complete (constants.%require_complete.67c)]
@@ -479,7 +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.2 => constants.%.075d25.1
// CHECK:STDOUT: %.loc5_37.2 => constants.%.6c815b.1
// CHECK:STDOUT:
// CHECK:STDOUT: !definition:
// CHECK:STDOUT: %require_complete => constants.%require_complete.67c
@@ -493,21 +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.2 => constants.%.075d25.1
// CHECK:STDOUT: %.loc10_40.2 => constants.%.6c815b.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: %.loc16_40.1 => constants.%.4fe
// 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.2 => constants.%.ba4
// CHECK:STDOUT: %.loc5_37.2 => constants.%.4fe
// CHECK:STDOUT:
// CHECK:STDOUT: !definition:
// CHECK:STDOUT: %require_complete => constants.%require_complete.ef1
@@ -521,7 +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.2 => constants.%.485
// CHECK:STDOUT: %.loc5_37.2 => constants.%.1eb
// CHECK:STDOUT:
// CHECK:STDOUT: !definition:
// CHECK:STDOUT: %require_complete => constants.%complete_type.17a
+39 -39
View File
@@ -221,7 +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: %.8e9: Core.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]
@@ -232,14 +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: %.546: Core.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> = 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: %.5bf: Core.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]
@@ -272,7 +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: %.loc4_39.2: Core.Form = init_form %ptr.loc4_39.2, call_param0 [symbolic = %.loc4_39.1 (constants.%.8e9)]
// 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
@@ -285,7 +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: %.loc6: Core.Form = init_form %ptr, call_param0 [concrete = constants.%.546]
// CHECK:STDOUT: %return.param: ref %ptr.235 = out_param call_param0
// CHECK:STDOUT: %return: ref %ptr.235 = return_slot %return.param
// CHECK:STDOUT: }
@@ -297,7 +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: %.loc10_63.2: Core.Form = init_form %ptr.loc10_63.2, call_param0 [symbolic = %.loc10_63.1 (constants.%.5bf)]
// 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
@@ -308,7 +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: %.loc4_39.1: Core.Form = init_form %ptr.loc4_39.1, call_param0 [symbolic = %.loc4_39.1 (constants.%.8e9)]
// CHECK:STDOUT: %pattern_type: type = pattern_type %ptr.loc4_39.1 [symbolic = %pattern_type (constants.%pattern_type.4f4)]
// CHECK:STDOUT:
// CHECK:STDOUT: !definition:
@@ -339,7 +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: %.loc10_63.1: Core.Form = init_form %ptr.loc10_63.1, call_param0 [symbolic = %.loc10_63.1 (constants.%.5bf)]
// CHECK:STDOUT: %pattern_type: type = pattern_type %ptr.loc10_63.1 [symbolic = %pattern_type (constants.%pattern_type.1cb)]
// CHECK:STDOUT:
// CHECK:STDOUT: !definition:
@@ -360,7 +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: %.loc4_39.1 => constants.%.8e9
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.4f4
// CHECK:STDOUT:
// CHECK:STDOUT: !definition:
@@ -371,7 +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: %.loc4_39.1 => constants.%.546
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.fe8
// CHECK:STDOUT:
// CHECK:STDOUT: !definition:
@@ -383,14 +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: %.loc10_63.1 => constants.%.5bf
// 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: %.loc4_39.1 => constants.%.5bf
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.1cb
// CHECK:STDOUT:
// CHECK:STDOUT: !definition:
@@ -406,7 +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: %.8e9: Core.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]
@@ -440,7 +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: %.loc4_39.2: Core.Form = init_form %ptr.loc4_39.2, call_param0 [symbolic = %.loc4_39.1 (constants.%.8e9)]
// 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
@@ -464,7 +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: %.loc4_39.1: Core.Form = init_form %ptr.loc4_39.1, call_param0 [symbolic = %.loc4_39.1 (constants.%.8e9)]
// CHECK:STDOUT: %pattern_type: type = pattern_type %ptr.loc4_39.1 [symbolic = %pattern_type (constants.%pattern_type.4f4)]
// CHECK:STDOUT:
// CHECK:STDOUT: !definition:
@@ -509,7 +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: %.loc4_39.1 => constants.%.8e9
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.4f4
// CHECK:STDOUT:
// CHECK:STDOUT: !definition:
@@ -533,7 +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: %.4fe: Core.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]
@@ -542,13 +542,13 @@ fn F() {
// CHECK:STDOUT: %require_complete.ef1: <witness> = require_complete_type %ptr.e8f [symbolic]
// CHECK:STDOUT: %ExplicitAndAlsoDeduced.specific_fn.7e7: <specific function> = 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: %.e72: Core.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: %.6ec: Core.Form = init_form %ptr.643, call_param1 [concrete]
// CHECK:STDOUT: %ExplicitAndAlsoDeduced.specific_fn.1f3: <specific function> = specific_function %ExplicitAndAlsoDeduced, @ExplicitAndAlsoDeduced(%A) [concrete]
// CHECK:STDOUT: %A.val: %A = struct_value () [concrete]
// CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete]
@@ -584,7 +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: %.loc6_47.2: Core.Form = init_form %ptr.loc6_47.2, call_param1 [symbolic = %.loc6_47.1 (constants.%.4fe)]
// 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
@@ -599,7 +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: %.loc10: Core.Form = init_form %ptr, call_param0 [concrete = constants.%.e72]
// CHECK:STDOUT: %return.param: ref %ptr.643 = out_param call_param0
// CHECK:STDOUT: %return: ref %ptr.643 = return_slot %return.param
// CHECK:STDOUT: }
@@ -617,7 +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: %.loc6_47.1: Core.Form = init_form %ptr.loc6_47.1, call_param1 [symbolic = %.loc6_47.1 (constants.%.4fe)]
// 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:
@@ -659,7 +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: %.loc6_47.1 => constants.%.4fe
// CHECK:STDOUT: %pattern_type.loc6_43 => constants.%pattern_type.4f4
// CHECK:STDOUT:
// CHECK:STDOUT: !definition:
@@ -672,7 +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: %.loc6_47.1 => constants.%.6ec
// CHECK:STDOUT: %pattern_type.loc6_43 => constants.%pattern_type.f29
// CHECK:STDOUT:
// CHECK:STDOUT: !definition:
@@ -690,7 +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: %.4fe: Core.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]
@@ -703,7 +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: %.85d: Core.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]
@@ -738,7 +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: %.loc4_45.2: Core.Form = init_form %ptr.loc4_45.2, call_param1 [symbolic = %.loc4_45.1 (constants.%.4fe)]
// 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
@@ -756,7 +756,7 @@ 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: %.loc6_43: Core.Form = init_form %ptr, call_param1 [concrete = constants.%.85d]
// CHECK:STDOUT: %n.param: %i32 = value_param call_param0
// 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]
@@ -772,7 +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: %.loc4_45.1: Core.Form = init_form %ptr.loc4_45.1, call_param1 [symbolic = %.loc4_45.1 (constants.%.4fe)]
// 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:
@@ -803,7 +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: %.loc4_45.1 => constants.%.4fe
// CHECK:STDOUT: %pattern_type.loc4_41 => constants.%pattern_type.4f4
// CHECK:STDOUT:
// CHECK:STDOUT: !definition:
@@ -816,7 +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: %.loc4_45.1 => constants.%.85d
// CHECK:STDOUT: %pattern_type.loc4_41 => constants.%pattern_type.fe8
// CHECK:STDOUT:
// CHECK:STDOUT: !definition:
@@ -1465,7 +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: %.4b7: Core.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]
@@ -1497,7 +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: %.loc6_54.2: Core.Form = init_form %U.ref, call_param1 [symbolic = %.loc6_54.1 (constants.%.4b7)]
// 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]
@@ -1515,7 +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: %.loc6_54.1: Core.Form = init_form %U.loc6_35.1, call_param1 [symbolic = %.loc6_54.1 (constants.%.4b7)]
// 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)) -> out %return.param: @ImplicitNotDeducible.%U.loc6_35.1 (%U);
@@ -1532,7 +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: %.loc6_54.1 => constants.%.4b7
// CHECK:STDOUT: %pattern_type.loc6_51 => constants.%pattern_type.946
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -1544,7 +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: %.b1d: Core.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]
@@ -1579,7 +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: %.loc4_50.2: Core.Form = init_form %T.ref.loc4_50, call_param2 [symbolic = %.loc4_50.1 (constants.%.b1d)]
// 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
@@ -1597,7 +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: %.loc4_50.1: Core.Form = init_form %T.loc4_25.1, call_param2 [symbolic = %.loc4_50.1 (constants.%.b1d)]
// CHECK:STDOUT:
// CHECK:STDOUT: fn(%x.param: @ImplicitNotDeducible.%T.loc4_25.1 (%T), %y.param: @ImplicitNotDeducible.%T.loc4_25.1 (%T)) -> out %return.param: @ImplicitNotDeducible.%T.loc4_25.1 (%T);
// CHECK:STDOUT: }
@@ -1614,7 +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: %.loc4_50.1 => constants.%.b1d
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: --- deduce_nested_generic_class.carbon
@@ -27,7 +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: %.4fe: Core.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]
@@ -73,7 +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: %.loc4_28.1 => constants.%.4fe
// CHECK:STDOUT: %pattern_type.loc4_24 => constants.%pattern_type.4f4
// CHECK:STDOUT: }
// CHECK:STDOUT:
+29 -29
View File
@@ -102,7 +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: %.8e9: Core.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]
@@ -130,7 +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: %.loc4_20.2: Core.Form = init_form %ptr.loc4_20.2, call_param0 [symbolic = %.loc4_20.1 (constants.%.8e9)]
// 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
@@ -143,7 +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: %.loc6: Core.Form = init_form %ptr.loc6, call_param0 [symbolic = %.loc4_20.1 (constants.%.8e9)]
// 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
@@ -154,7 +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: %.loc4_20.1: Core.Form = init_form %ptr.loc4_20.1, call_param0 [symbolic = %.loc4_20.1 (constants.%.8e9)]
// CHECK:STDOUT: %pattern_type: type = pattern_type %ptr.loc4_20.1 [symbolic = %pattern_type (constants.%pattern_type.4f4)]
// CHECK:STDOUT:
// CHECK:STDOUT: !definition:
@@ -174,7 +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: %.loc4_20.1 => constants.%.8e9
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.4f4
// CHECK:STDOUT:
// CHECK:STDOUT: !definition:
@@ -191,12 +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: %.8e9: Core.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: %.a9f: Core.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]
@@ -224,7 +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: %.loc4_30.2: Core.Form = init_form %ptr.loc4_30.2, call_param0 [symbolic = %.loc4_30.1 (constants.%.8e9)]
// 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]
@@ -240,7 +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: %.loc13_30.2: Core.Form = init_form %ptr.loc13_30.2, call_param0 [symbolic = %.loc13_30.1 (constants.%.a9f)]
// 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]
@@ -254,7 +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: %.loc4_30.1: Core.Form = init_form %ptr.loc4_30.1, call_param0 [symbolic = %.loc4_30.1 (constants.%.8e9)]
// CHECK:STDOUT: %pattern_type: type = pattern_type %ptr.loc4_30.1 [symbolic = %pattern_type (constants.%pattern_type.4f4)]
// CHECK:STDOUT:
// CHECK:STDOUT: fn() -> out %return.param: @F.loc4.%ptr.loc4_30.1 (%ptr.e8f);
@@ -264,7 +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: %.loc13_30.1: Core.Form = init_form %ptr.loc13_30.1, call_param0 [symbolic = %.loc13_30.1 (constants.%.a9f)]
// CHECK:STDOUT: %pattern_type: type = pattern_type %ptr.loc13_30.1 [symbolic = %pattern_type (constants.%pattern_type.423)]
// CHECK:STDOUT:
// CHECK:STDOUT: !definition:
@@ -282,7 +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: %.loc4_30.1 => constants.%.8e9
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.4f4
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -290,7 +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: %.loc13_30.1 => constants.%.a9f
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.423
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -303,14 +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: %.8e9: Core.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: %.a9f: Core.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]
@@ -338,7 +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: %.loc4_30.2: Core.Form = init_form %ptr.loc4_30.2, call_param0 [symbolic = %.loc4_30.1 (constants.%.8e9)]
// 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]
@@ -354,7 +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: %.loc13_30.2: Core.Form = init_form %ptr.loc13_30.2, call_param0 [symbolic = %.loc13_30.1 (constants.%.a9f)]
// 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]
@@ -368,7 +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: %.loc4_30.1: Core.Form = init_form %ptr.loc4_30.1, call_param0 [symbolic = %.loc4_30.1 (constants.%.8e9)]
// CHECK:STDOUT: %pattern_type: type = pattern_type %ptr.loc4_30.1 [symbolic = %pattern_type (constants.%pattern_type.4f4)]
// CHECK:STDOUT:
// CHECK:STDOUT: fn() -> out %return.param: @F.loc4.%ptr.loc4_30.1 (%ptr.e8f);
@@ -378,7 +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: %.loc13_30.1: Core.Form = init_form %ptr.loc13_30.1, call_param0 [symbolic = %.loc13_30.1 (constants.%.a9f)]
// CHECK:STDOUT: %pattern_type: type = pattern_type %ptr.loc13_30.1 [symbolic = %pattern_type (constants.%pattern_type.423)]
// CHECK:STDOUT:
// CHECK:STDOUT: !definition:
@@ -396,7 +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: %.loc4_30.1 => constants.%.8e9
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.4f4
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -404,7 +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: %.loc13_30.1 => constants.%.a9f
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.423
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -417,14 +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: %.8e9764.1: Core.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: %.8e9764.2: Core.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]
@@ -452,7 +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: %.loc4_30.2: Core.Form = init_form %ptr.loc4_30.2, call_param0 [symbolic = %.loc4_30.1 (constants.%.8e9764.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]
@@ -468,7 +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: %.loc13_30.2: Core.Form = init_form %ptr.loc13_30.2, call_param0 [symbolic = %.loc13_30.1 (constants.%.8e9764.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]
@@ -482,7 +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: %.loc4_30.1: Core.Form = init_form %ptr.loc4_30.1, call_param0 [symbolic = %.loc4_30.1 (constants.%.8e9764.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() -> out %return.param: @F.loc4.%ptr.loc4_30.1 (%ptr.e8f8f9.1);
@@ -492,7 +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: %.loc13_30.1: Core.Form = init_form %ptr.loc13_30.1, call_param0 [symbolic = %.loc13_30.1 (constants.%.8e9764.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:
@@ -510,7 +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: %.loc4_30.1 => constants.%.8e9764.1
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.4f4b84.1
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -518,7 +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: %.loc13_30.1 => constants.%.8e9764.2
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.4f4b84.2
// CHECK:STDOUT: }
// CHECK:STDOUT:
+10 -10
View File
@@ -35,7 +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: %.41b: Core.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]
@@ -61,20 +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: %.437: Core.Form = init_form %i32, call_param0 [concrete]
// CHECK:STDOUT: %Wrap.Make.specific_fn.35c: <specific function> = 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: %.842: Core.Form = init_form %empty_tuple.type, call_param0 [concrete]
// CHECK:STDOUT: %Wrap.Make.specific_fn.c03: <specific function> = 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: %.768: Core.Form = init_form %C, call_param0 [concrete]
// CHECK:STDOUT: %Wrap.Make.specific_fn.cb9: <specific function> = 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]
@@ -128,7 +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.3: form = init_form %T.ref, call_param0 [symbolic = %.loc16_16.2 (constants.%.c6c)]
// CHECK:STDOUT: %.loc16_16.3: Core.Form = init_form %T.ref, call_param0 [symbolic = %.loc16_16.2 (constants.%.41b)]
// 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: }
@@ -158,7 +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.2: form = init_form %T, call_param0 [symbolic = %.loc16_16.2 (constants.%.c6c)]
// CHECK:STDOUT: %.loc16_16.2: Core.Form = init_form %T, call_param0 [symbolic = %.loc16_16.2 (constants.%.41b)]
// CHECK:STDOUT: %pattern_type: type = pattern_type %T [symbolic = %pattern_type (constants.%pattern_type.51d)]
// CHECK:STDOUT:
// CHECK:STDOUT: !definition:
@@ -259,7 +259,7 @@ fn G() {
// CHECK:STDOUT:
// CHECK:STDOUT: specific @Wrap.Make(constants.%T) {
// CHECK:STDOUT: %T => constants.%T
// CHECK:STDOUT: %.loc16_16.2 => constants.%.c6c
// CHECK:STDOUT: %.loc16_16.2 => constants.%.41b
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.51d
// CHECK:STDOUT:
// CHECK:STDOUT: !definition:
@@ -279,7 +279,7 @@ fn G() {
// CHECK:STDOUT:
// CHECK:STDOUT: specific @Wrap.Make(constants.%i32) {
// CHECK:STDOUT: %T => constants.%i32
// CHECK:STDOUT: %.loc16_16.2 => constants.%.941
// CHECK:STDOUT: %.loc16_16.2 => constants.%.437
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.7ce
// CHECK:STDOUT:
// CHECK:STDOUT: !definition:
@@ -299,7 +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.2 => constants.%.62c
// CHECK:STDOUT: %.loc16_16.2 => constants.%.842
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.cb1
// CHECK:STDOUT:
// CHECK:STDOUT: !definition:
@@ -319,7 +319,7 @@ fn G() {
// CHECK:STDOUT:
// CHECK:STDOUT: specific @Wrap.Make(constants.%C) {
// CHECK:STDOUT: %T => constants.%C
// CHECK:STDOUT: %.loc16_16.2 => constants.%.64f
// CHECK:STDOUT: %.loc16_16.2 => constants.%.768
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.7c7
// CHECK:STDOUT:
// CHECK:STDOUT: !definition:
@@ -27,7 +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: %.4fe: Core.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]
@@ -78,6 +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: %.loc4_27.1 => constants.%.4fe
// CHECK:STDOUT: }
// CHECK:STDOUT: