mirror of
https://github.com/carbon-language/carbon-lang.git
synced 2026-10-05 22:02:55 +01:00
Implement thunking in terms of constant evaluation (#7332)
The bulk of this change is changing most pattern insts to be `Always` rather than `AlwaysUnique` constants, so that they can be wrapped in `SpecificConstant`s to perform substitution. That then lets thunking rely much more on `SpecificConstant` wrappers instead of deep-copying the inst tree with modified types. This approach to thunking should scale better, particularly as things like form generics make function signatures more complex, because we can leverage the existing support for constant evaluation and substitution. Unfortunately, applying this approach to binding patterns will require more work; see the TODO near the top of `thunk.cpp` for details. --------- Co-authored-by: Richard Smith <richard@metafoo.co.uk>
This commit is contained in:
co-authored by
Richard Smith
parent
40d2d8f68c
commit
e023f75254
+44
-26
@@ -56,24 +56,38 @@ fn Int(N: MyIntLiteral) -> type = "int.make_type_signed";
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %.805: Core.Form = init_form type [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt.70e: %pattern_type.98f = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt.3ae: %pattern_type.98f = return_slot_pattern %return.param_patt.70e, type [concrete]
|
||||
// CHECK:STDOUT: %MakeIntLiteral.type: type = fn_type @MakeIntLiteral [concrete]
|
||||
// CHECK:STDOUT: %MakeIntLiteral: %MakeIntLiteral.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %MyIntLiteral: type = class_type @MyIntLiteral [concrete]
|
||||
// CHECK:STDOUT: %complete_type.972: <witness> = complete_type_witness Core.IntLiteral [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.129: type = pattern_type %MyIntLiteral [concrete]
|
||||
// CHECK:STDOUT: %N.param_patt: %pattern_type.129 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %N.patt: %pattern_type.129 = at_binding_pattern N, %N.param_patt [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.80c: %MyIntLiteral = int_value 32 [concrete]
|
||||
// CHECK:STDOUT: %i32.builtin: type = int_type signed, %int_32.80c [concrete]
|
||||
// CHECK:STDOUT: %a.param_patt.c64: %pattern_type.129 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %a.patt.3fb: %pattern_type.129 = at_binding_pattern a, %a.param_patt.c64 [concrete]
|
||||
// CHECK:STDOUT: %.6a2: Core.Form = init_form %MyInt32 [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.af4: type = pattern_type %MyInt32 [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt.cca: %pattern_type.af4 = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt.5b1: %pattern_type.af4 = return_slot_pattern %return.param_patt.cca, %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.113: <witness> = complete_type_witness %i32.builtin [concrete]
|
||||
// CHECK:STDOUT: %a.param_patt.c63: %pattern_type.af4 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %a.patt.603: %pattern_type.af4 = at_binding_pattern a, %a.param_patt.c63 [concrete]
|
||||
// CHECK:STDOUT: %b.param_patt: %pattern_type.af4 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %b.patt: %pattern_type.af4 = at_binding_pattern b, %b.param_patt [concrete]
|
||||
// CHECK:STDOUT: %MyAdd.type: type = fn_type @MyAdd [concrete]
|
||||
// CHECK:STDOUT: %MyAdd: %MyAdd.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %v.patt: %pattern_type.af4 = ref_binding_pattern v [concrete]
|
||||
// CHECK:STDOUT: %v.var_patt: %pattern_type.af4 = var_pattern %v.patt [concrete]
|
||||
// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete]
|
||||
// CHECK:STDOUT: %int_1.004: %MyIntLiteral = int_value 1 [concrete]
|
||||
// CHECK:STDOUT: %int_1.adf: %MyInt32 = int_value 1 [concrete]
|
||||
@@ -94,8 +108,8 @@ fn Int(N: MyIntLiteral) -> type = "int.make_type_signed";
|
||||
// CHECK:STDOUT: .v = %v
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %MakeIntLiteral.decl: %MakeIntLiteral.type = fn_decl @MakeIntLiteral [concrete = constants.%MakeIntLiteral] {
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.98f = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.98f = return_slot_pattern %return.param_patt, %.loc4_24.1 [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.98f = out_param_pattern [concrete = constants.%return.param_patt.70e]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.98f = return_slot_pattern %return.param_patt, %.loc4_24.1 [concrete = constants.%return.patt.3ae]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %.loc4_24.1: type = type_literal type [concrete = type]
|
||||
// CHECK:STDOUT: %.loc4_24.2: Core.Form = init_form %.loc4_24.1 [concrete = constants.%.805]
|
||||
@@ -109,10 +123,10 @@ fn Int(N: MyIntLiteral) -> type = "int.make_type_signed";
|
||||
// CHECK:STDOUT: %IntLiteral: type = alias_binding IntLiteral, %.loc5_35.2 [concrete = Core.IntLiteral]
|
||||
// CHECK:STDOUT: %MyIntLiteral.decl: type = class_decl @MyIntLiteral [concrete = constants.%MyIntLiteral] {} {}
|
||||
// CHECK:STDOUT: %Int.decl: %Int.type = fn_decl @Int [concrete = constants.%Int] {
|
||||
// CHECK:STDOUT: %N.param_patt: %pattern_type.129 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %N.patt: %pattern_type.129 = at_binding_pattern N, %N.param_patt [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.98f = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.98f = return_slot_pattern %return.param_patt, %.loc11_28.1 [concrete]
|
||||
// CHECK:STDOUT: %N.param_patt: %pattern_type.129 = value_param_pattern [concrete = constants.%N.param_patt]
|
||||
// CHECK:STDOUT: %N.patt: %pattern_type.129 = at_binding_pattern N, %N.param_patt [concrete = constants.%N.patt]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.98f = out_param_pattern [concrete = constants.%return.param_patt.70e]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.98f = return_slot_pattern %return.param_patt, %.loc11_28.1 [concrete = constants.%return.patt.3ae]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %.loc11_28.1: type = type_literal type [concrete = type]
|
||||
// CHECK:STDOUT: %.loc11_28.2: Core.Form = init_form %.loc11_28.1 [concrete = constants.%.805]
|
||||
@@ -124,10 +138,10 @@ fn Int(N: MyIntLiteral) -> type = "int.make_type_signed";
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %MyInt32.decl: type = class_decl @MyInt32 [concrete = constants.%MyInt32] {} {}
|
||||
// CHECK:STDOUT: %MyInt32.Make.decl: %MyInt32.Make.type = fn_decl @MyInt32.Make [concrete = constants.%MyInt32.Make] {
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type.129 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.129 = at_binding_pattern a, %a.param_patt [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.af4 = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.af4 = return_slot_pattern %return.param_patt, %MyInt32.ref.loc19 [concrete]
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type.129 = value_param_pattern [concrete = constants.%a.param_patt.c64]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.129 = at_binding_pattern a, %a.param_patt [concrete = constants.%a.patt.3fb]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.af4 = out_param_pattern [concrete = constants.%return.param_patt.cca]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.af4 = return_slot_pattern %return.param_patt, %MyInt32.ref.loc19 [concrete = constants.%return.patt.5b1]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %MyInt32.ref.loc19: type = name_ref MyInt32, file.%MyInt32.decl [concrete = constants.%MyInt32]
|
||||
// CHECK:STDOUT: %.loc19: Core.Form = init_form %MyInt32.ref.loc19 [concrete = constants.%.6a2]
|
||||
@@ -138,12 +152,12 @@ fn Int(N: MyIntLiteral) -> type = "int.make_type_signed";
|
||||
// CHECK:STDOUT: %return.loc19: ref %MyInt32 = return_slot %return.param.loc19
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %MyAdd.decl: %MyAdd.type = fn_decl @MyAdd [concrete = constants.%MyAdd] {
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type.af4 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.af4 = at_binding_pattern a, %a.param_patt [concrete]
|
||||
// CHECK:STDOUT: %b.param_patt: %pattern_type.af4 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %b.patt: %pattern_type.af4 = at_binding_pattern b, %b.param_patt [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.af4 = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.af4 = return_slot_pattern %return.param_patt, %MyInt32.ref.loc21_37 [concrete]
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type.af4 = value_param_pattern [concrete = constants.%a.param_patt.c63]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.af4 = at_binding_pattern a, %a.param_patt [concrete = constants.%a.patt.603]
|
||||
// CHECK:STDOUT: %b.param_patt: %pattern_type.af4 = value_param_pattern [concrete = constants.%b.param_patt]
|
||||
// CHECK:STDOUT: %b.patt: %pattern_type.af4 = at_binding_pattern b, %b.param_patt [concrete = constants.%b.patt]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.af4 = out_param_pattern [concrete = constants.%return.param_patt.cca]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.af4 = return_slot_pattern %return.param_patt, %MyInt32.ref.loc21_37 [concrete = constants.%return.patt.5b1]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %MyInt32.ref.loc21_37: type = name_ref MyInt32, file.%MyInt32.decl [concrete = constants.%MyInt32]
|
||||
// CHECK:STDOUT: %.loc21: Core.Form = init_form %MyInt32.ref.loc21_37 [concrete = constants.%.6a2]
|
||||
@@ -157,8 +171,8 @@ fn Int(N: MyIntLiteral) -> type = "int.make_type_signed";
|
||||
// CHECK:STDOUT: %return: ref %MyInt32 = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %v.patt: %pattern_type.af4 = ref_binding_pattern v [concrete]
|
||||
// CHECK:STDOUT: %v.var_patt: %pattern_type.af4 = var_pattern %v.patt [concrete]
|
||||
// CHECK:STDOUT: %v.patt: %pattern_type.af4 = ref_binding_pattern v [concrete = constants.%v.patt]
|
||||
// CHECK:STDOUT: %v.var_patt: %pattern_type.af4 = var_pattern %v.patt [concrete = constants.%v.var_patt]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %v.var: ref %MyInt32 = var %v.var_patt [concrete]
|
||||
// CHECK:STDOUT: %MyInt32.ref: type = name_ref MyInt32, %MyInt32.decl [concrete = constants.%MyInt32]
|
||||
@@ -187,10 +201,10 @@ fn Int(N: MyIntLiteral) -> type = "int.make_type_signed";
|
||||
// CHECK:STDOUT: %.loc14_32.2: type = converted %Int.call, %.loc14_32.1 [concrete = constants.%i32.builtin]
|
||||
// CHECK:STDOUT: adapt_decl %.loc14_32.2 [concrete]
|
||||
// CHECK:STDOUT: %MyInt32.Make.decl: %MyInt32.Make.type = fn_decl @MyInt32.Make [concrete = constants.%MyInt32.Make] {
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type.129 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.129 = at_binding_pattern a, %a.param_patt [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.af4 = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.af4 = return_slot_pattern %return.param_patt, %MyInt32.ref.loc19 [concrete]
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type.129 = value_param_pattern [concrete = constants.%a.param_patt.c64]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.129 = at_binding_pattern a, %a.param_patt [concrete = constants.%a.patt.3fb]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.af4 = out_param_pattern [concrete = constants.%return.param_patt.cca]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.af4 = return_slot_pattern %return.param_patt, %MyInt32.ref.loc19 [concrete = constants.%return.patt.5b1]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %MyInt32.ref.loc16: type = name_ref MyInt32, file.%MyInt32.decl [concrete = constants.%MyInt32]
|
||||
// CHECK:STDOUT: %.loc16: Core.Form = init_form %MyInt32.ref.loc16 [concrete = constants.%.6a2]
|
||||
@@ -253,8 +267,12 @@ fn Int(N: MyIntLiteral) -> type = "int.make_type_signed";
|
||||
// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.129: type = pattern_type %MyIntLiteral [concrete]
|
||||
// CHECK:STDOUT: %N.param_patt: %pattern_type.129 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %N.patt: %pattern_type.129 = at_binding_pattern N, %N.param_patt [concrete]
|
||||
// CHECK:STDOUT: %.805: Core.Form = init_form type [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.98f = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.98f = return_slot_pattern %return.param_patt, type [concrete]
|
||||
// CHECK:STDOUT: %Int.type: type = fn_type @Int [concrete]
|
||||
// CHECK:STDOUT: %Int: %Int.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
@@ -266,10 +284,10 @@ fn Int(N: MyIntLiteral) -> type = "int.make_type_signed";
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %MyIntLiteral.decl: type = class_decl @MyIntLiteral [concrete = constants.%MyIntLiteral] {} {}
|
||||
// CHECK:STDOUT: %Int.decl: %Int.type = fn_decl @Int [concrete = constants.%Int] {
|
||||
// CHECK:STDOUT: %N.param_patt: %pattern_type.129 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %N.patt: %pattern_type.129 = at_binding_pattern N, %N.param_patt [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.98f = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.98f = return_slot_pattern %return.param_patt, %.loc12_28.1 [concrete]
|
||||
// CHECK:STDOUT: %N.param_patt: %pattern_type.129 = value_param_pattern [concrete = constants.%N.param_patt]
|
||||
// CHECK:STDOUT: %N.patt: %pattern_type.129 = at_binding_pattern N, %N.param_patt [concrete = constants.%N.patt]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.98f = out_param_pattern [concrete = constants.%return.param_patt]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.98f = return_slot_pattern %return.param_patt, %.loc12_28.1 [concrete = constants.%return.patt]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %.loc12_28.1: type = type_literal type [concrete = type]
|
||||
// CHECK:STDOUT: %.loc12_28.2: Core.Form = init_form %.loc12_28.1 [concrete = constants.%.805]
|
||||
|
||||
+22
-14
@@ -28,7 +28,13 @@ 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.6b6: type = pattern_type %i32 [concrete]
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type.6b6 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.6b6 = at_binding_pattern a, %a.param_patt [concrete]
|
||||
// CHECK:STDOUT: %b.param_patt: %pattern_type.6b6 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %b.patt: %pattern_type.6b6 = at_binding_pattern b, %b.param_patt [concrete]
|
||||
// CHECK:STDOUT: %.795: Core.Form = init_form %i32 [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt.a9a: %pattern_type.6b6 = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt.e1b: %pattern_type.6b6 = return_slot_pattern %return.param_patt.a9a, %i32 [concrete]
|
||||
// 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]
|
||||
@@ -69,6 +75,8 @@ fn RuntimeCall(a: i32, b: i32) -> i32 {
|
||||
// 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: %pattern_type.771: type = pattern_type %array_type [concrete]
|
||||
// CHECK:STDOUT: %arr.patt: %pattern_type.771 = ref_binding_pattern arr [concrete]
|
||||
// CHECK:STDOUT: %arr.var_patt: %pattern_type.771 = var_pattern %arr.patt [concrete]
|
||||
// CHECK:STDOUT: %DefaultOrUnformed.type: type = facet_type <@DefaultOrUnformed> [concrete]
|
||||
// CHECK:STDOUT: %T.67d: type = symbolic_binding T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %T.as.DefaultOrUnformed.impl.Op.type.150: type = fn_type @T.as.DefaultOrUnformed.impl.Op, @T.as.DefaultOrUnformed.impl(%T.67d) [symbolic]
|
||||
@@ -110,12 +118,12 @@ fn RuntimeCall(a: i32, b: i32) -> i32 {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %Add.decl: %Add.type = fn_decl @Add [concrete = constants.%Add] {
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type.6b6 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.6b6 = at_binding_pattern a, %a.param_patt [concrete]
|
||||
// CHECK:STDOUT: %b.param_patt: %pattern_type.6b6 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %b.patt: %pattern_type.6b6 = at_binding_pattern b, %b.param_patt [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.6b6 = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32.loc15_27 [concrete]
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type.6b6 = value_param_pattern [concrete = constants.%a.param_patt]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.6b6 = at_binding_pattern a, %a.param_patt [concrete = constants.%a.patt]
|
||||
// CHECK:STDOUT: %b.param_patt: %pattern_type.6b6 = value_param_pattern [concrete = constants.%b.param_patt]
|
||||
// CHECK:STDOUT: %b.patt: %pattern_type.6b6 = at_binding_pattern b, %b.param_patt [concrete = constants.%b.patt]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.6b6 = out_param_pattern [concrete = constants.%return.param_patt.a9a]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32.loc15_27 [concrete = constants.%return.patt.e1b]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %i32.loc15_27: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %.loc15: Core.Form = init_form %i32.loc15_27 [concrete = constants.%.795]
|
||||
@@ -129,8 +137,8 @@ fn RuntimeCall(a: i32, b: i32) -> i32 {
|
||||
// CHECK:STDOUT: %return: ref %i32 = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %arr.patt: %pattern_type.771 = ref_binding_pattern arr [concrete]
|
||||
// CHECK:STDOUT: %arr.var_patt: %pattern_type.771 = var_pattern %arr.patt [concrete]
|
||||
// CHECK:STDOUT: %arr.patt: %pattern_type.771 = ref_binding_pattern arr [concrete = constants.%arr.patt]
|
||||
// CHECK:STDOUT: %arr.var_patt: %pattern_type.771 = var_pattern %arr.patt [concrete = constants.%arr.var_patt]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %arr.var: ref %array_type = var %arr.var_patt [concrete]
|
||||
// CHECK:STDOUT: %.loc17_30: type = splice_block %array_type [concrete = constants.%array_type] {
|
||||
@@ -166,12 +174,12 @@ fn RuntimeCall(a: i32, b: i32) -> i32 {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %arr: ref %array_type = ref_binding arr, %arr.var [concrete = %arr.var]
|
||||
// CHECK:STDOUT: %RuntimeCall.decl: %RuntimeCall.type = fn_decl @RuntimeCall [concrete = constants.%RuntimeCall] {
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type.6b6 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.6b6 = at_binding_pattern a, %a.param_patt [concrete]
|
||||
// CHECK:STDOUT: %b.param_patt: %pattern_type.6b6 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %b.patt: %pattern_type.6b6 = at_binding_pattern b, %b.param_patt [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.6b6 = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32.loc19_35 [concrete]
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type.6b6 = value_param_pattern [concrete = constants.%a.param_patt]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.6b6 = at_binding_pattern a, %a.param_patt [concrete = constants.%a.patt]
|
||||
// CHECK:STDOUT: %b.param_patt: %pattern_type.6b6 = value_param_pattern [concrete = constants.%b.param_patt]
|
||||
// CHECK:STDOUT: %b.patt: %pattern_type.6b6 = at_binding_pattern b, %b.param_patt [concrete = constants.%b.patt]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.6b6 = out_param_pattern [concrete = constants.%return.param_patt.a9a]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32.loc19_35 [concrete = constants.%return.patt.e1b]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %i32.loc19_35: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %.loc19: Core.Form = init_form %i32.loc19_35 [concrete = constants.%.795]
|
||||
|
||||
+180
-43
@@ -60,13 +60,18 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32));
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %.805: Core.Form = init_form type [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt.70e: %pattern_type.98f = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt.3ae: %pattern_type.98f = return_slot_pattern %return.param_patt.70e, type [concrete]
|
||||
// CHECK:STDOUT: %MakeIntLiteral.type: type = fn_type @MakeIntLiteral [concrete]
|
||||
// CHECK:STDOUT: %MakeIntLiteral: %MakeIntLiteral.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.dc0: type = pattern_type Core.IntLiteral [concrete]
|
||||
// CHECK:STDOUT: %N.param_patt: %pattern_type.dc0 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %N.patt: %pattern_type.dc0 = at_binding_pattern N, %N.param_patt [concrete]
|
||||
// CHECK:STDOUT: %Int.type: type = fn_type @Int [concrete]
|
||||
// CHECK:STDOUT: %Int: %Int.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %type: type = facet_type <type> [concrete]
|
||||
// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self]
|
||||
// CHECK:STDOUT: %T.patt: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %T: type = symbolic_binding T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %AddWith.type.2ef: type = generic_interface_type @AddWith [concrete]
|
||||
// CHECK:STDOUT: %AddWith.generic: %AddWith.type.2ef = struct_value () [concrete]
|
||||
@@ -74,7 +79,13 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32));
|
||||
// CHECK:STDOUT: %Self.8d5: %AddWith.type.7e9 = symbolic_binding Self, 1 [symbolic]
|
||||
// CHECK:STDOUT: %Self.as_type.48c: type = facet_access_type %Self.8d5 [symbolic]
|
||||
// CHECK:STDOUT: %pattern_type.131: type = pattern_type %Self.as_type.48c [symbolic]
|
||||
// CHECK:STDOUT: %self.param_patt.72e: %pattern_type.131 = value_param_pattern [symbolic]
|
||||
// CHECK:STDOUT: %self.patt.ac5: %pattern_type.131 = at_binding_pattern self, %self.param_patt.72e [symbolic]
|
||||
// CHECK:STDOUT: %other.param_patt.89e: %pattern_type.131 = value_param_pattern [symbolic]
|
||||
// CHECK:STDOUT: %other.patt.f3d: %pattern_type.131 = at_binding_pattern other, %other.param_patt.89e [symbolic]
|
||||
// CHECK:STDOUT: %.e80: Core.Form = init_form %Self.as_type.48c [symbolic]
|
||||
// CHECK:STDOUT: %return.param_patt.8c6: %pattern_type.131 = out_param_pattern [symbolic]
|
||||
// CHECK:STDOUT: %return.patt.169: %pattern_type.131 = return_slot_pattern %return.param_patt.8c6, %Self.as_type.48c [symbolic]
|
||||
// CHECK:STDOUT: %AddWith.WithSelf.Op.type.e49: type = fn_type @AddWith.WithSelf.Op, @AddWith.WithSelf(%T, %Self.8d5) [symbolic]
|
||||
// CHECK:STDOUT: %AddWith.WithSelf.Op.adc: %AddWith.WithSelf.Op.type.e49 = struct_value () [symbolic]
|
||||
// CHECK:STDOUT: %AddWith.assoc_type.588: type = assoc_entity_type @AddWith, @AddWith(%T) [symbolic]
|
||||
@@ -85,8 +96,12 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32));
|
||||
// CHECK:STDOUT: %Self.f80: %As.type.c5f = symbolic_binding Self, 1 [symbolic]
|
||||
// CHECK:STDOUT: %Self.as_type.1ce: type = facet_access_type %Self.f80 [symbolic]
|
||||
// CHECK:STDOUT: %pattern_type.a01: type = pattern_type %Self.as_type.1ce [symbolic]
|
||||
// CHECK:STDOUT: %self.param_patt.29a: %pattern_type.a01 = value_param_pattern [symbolic]
|
||||
// CHECK:STDOUT: %self.patt.a95: %pattern_type.a01 = at_binding_pattern self, %self.param_patt.29a [symbolic]
|
||||
// CHECK:STDOUT: %.184: Core.Form = init_form %T [symbolic]
|
||||
// CHECK:STDOUT: %pattern_type.51d: type = pattern_type %T [symbolic]
|
||||
// CHECK:STDOUT: %return.param_patt.41d: %pattern_type.51d = out_param_pattern [symbolic]
|
||||
// CHECK:STDOUT: %return.patt.b39: %pattern_type.51d = return_slot_pattern %return.param_patt.41d, %T [symbolic]
|
||||
// CHECK:STDOUT: %As.WithSelf.Convert.type.640: type = fn_type @As.WithSelf.Convert, @As.WithSelf(%T, %Self.f80) [symbolic]
|
||||
// CHECK:STDOUT: %As.WithSelf.Convert.896: %As.WithSelf.Convert.type.640 = struct_value () [symbolic]
|
||||
// CHECK:STDOUT: %As.assoc_type.b40: type = assoc_entity_type @As, @As(%T) [symbolic]
|
||||
@@ -97,6 +112,8 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32));
|
||||
// CHECK:STDOUT: %Self.bb1: %ImplicitAs.type.3aa = symbolic_binding Self, 1 [symbolic]
|
||||
// CHECK:STDOUT: %Self.as_type.5b8: type = facet_access_type %Self.bb1 [symbolic]
|
||||
// CHECK:STDOUT: %pattern_type.701: type = pattern_type %Self.as_type.5b8 [symbolic]
|
||||
// CHECK:STDOUT: %self.param_patt.c3f: %pattern_type.701 = value_param_pattern [symbolic]
|
||||
// CHECK:STDOUT: %self.patt.f5a: %pattern_type.701 = at_binding_pattern self, %self.param_patt.c3f [symbolic]
|
||||
// CHECK:STDOUT: %ImplicitAs.WithSelf.Convert.type.920: type = fn_type @ImplicitAs.WithSelf.Convert, @ImplicitAs.WithSelf(%T, %Self.bb1) [symbolic]
|
||||
// CHECK:STDOUT: %ImplicitAs.WithSelf.Convert.293: %ImplicitAs.WithSelf.Convert.type.920 = struct_value () [symbolic]
|
||||
// CHECK:STDOUT: %ImplicitAs.assoc_type.fcc: type = assoc_entity_type @ImplicitAs, @ImplicitAs(%T) [symbolic]
|
||||
@@ -111,7 +128,13 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32));
|
||||
// CHECK:STDOUT: %AddWith.assoc_type.439: type = assoc_entity_type @AddWith, @AddWith(%i32.builtin) [concrete]
|
||||
// CHECK:STDOUT: %assoc0.7f8: %AddWith.assoc_type.439 = assoc_entity element0, @AddWith.WithSelf.%AddWith.WithSelf.Op.decl [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.956: type = pattern_type %i32.builtin [concrete]
|
||||
// CHECK:STDOUT: %self.param_patt.936: %pattern_type.956 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %self.patt.703: %pattern_type.956 = at_binding_pattern self, %self.param_patt.936 [concrete]
|
||||
// CHECK:STDOUT: %other.param_patt.36d: %pattern_type.956 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %other.patt.760: %pattern_type.956 = at_binding_pattern other, %other.param_patt.36d [concrete]
|
||||
// CHECK:STDOUT: %.9cb: Core.Form = init_form %i32.builtin [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt.903: %pattern_type.956 = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt.930: %pattern_type.956 = return_slot_pattern %return.param_patt.903, %i32.builtin [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.7c6 = facet_value %i32.builtin, (%AddWith.impl_witness) [concrete]
|
||||
@@ -124,6 +147,8 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32));
|
||||
// CHECK:STDOUT: %As.WithSelf.Convert.140: %As.WithSelf.Convert.type.d9c = struct_value () [symbolic]
|
||||
// CHECK:STDOUT: %As.assoc_type.7f2: type = assoc_entity_type @As, @As(%i32.builtin) [concrete]
|
||||
// CHECK:STDOUT: %assoc0.402: %As.assoc_type.7f2 = assoc_entity element0, @As.WithSelf.%As.WithSelf.Convert.decl [concrete]
|
||||
// CHECK:STDOUT: %self.param_patt.1ca: %pattern_type.dc0 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %self.patt.cea: %pattern_type.dc0 = at_binding_pattern self, %self.param_patt.1ca [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.dfb = facet_value Core.IntLiteral, (%As.impl_witness) [concrete]
|
||||
@@ -149,6 +174,8 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32));
|
||||
// CHECK:STDOUT: %ImplicitAs.assoc_type.e73: type = assoc_entity_type @ImplicitAs, @ImplicitAs(Core.IntLiteral) [concrete]
|
||||
// CHECK:STDOUT: %assoc0.a37: %ImplicitAs.assoc_type.e73 = assoc_entity element0, @ImplicitAs.WithSelf.%ImplicitAs.WithSelf.Convert.decl [concrete]
|
||||
// CHECK:STDOUT: %.f7d: Core.Form = init_form Core.IntLiteral [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt.eab: %pattern_type.dc0 = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt.cd4: %pattern_type.dc0 = return_slot_pattern %return.param_patt.eab, Core.IntLiteral [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.776: %ImplicitAs.type.7cb = facet_value %i32.builtin, (%ImplicitAs.impl_witness.9d7) [concrete]
|
||||
@@ -166,8 +193,8 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32));
|
||||
// CHECK:STDOUT: .ImplicitAs = %ImplicitAs.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %MakeIntLiteral.decl: %MakeIntLiteral.type = fn_decl @MakeIntLiteral [concrete = constants.%MakeIntLiteral] {
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.98f = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.98f = return_slot_pattern %return.param_patt, %.loc4_24.1 [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.98f = out_param_pattern [concrete = constants.%return.param_patt.70e]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.98f = return_slot_pattern %return.param_patt, %.loc4_24.1 [concrete = constants.%return.patt.3ae]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %.loc4_24.1: type = type_literal type [concrete = type]
|
||||
// CHECK:STDOUT: %.loc4_24.2: Core.Form = init_form %.loc4_24.1 [concrete = constants.%.805]
|
||||
@@ -180,10 +207,10 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32));
|
||||
// CHECK:STDOUT: %.loc5_35.2: type = converted %MakeIntLiteral.call, %.loc5_35.1 [concrete = Core.IntLiteral]
|
||||
// CHECK:STDOUT: %IntLiteral: type = alias_binding IntLiteral, %.loc5_35.2 [concrete = Core.IntLiteral]
|
||||
// CHECK:STDOUT: %Int.decl: %Int.type = fn_decl @Int [concrete = constants.%Int] {
|
||||
// CHECK:STDOUT: %N.param_patt: %pattern_type.dc0 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %N.patt: %pattern_type.dc0 = at_binding_pattern N, %N.param_patt [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.98f = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.98f = return_slot_pattern %return.param_patt, %.loc6_26.1 [concrete]
|
||||
// CHECK:STDOUT: %N.param_patt: %pattern_type.dc0 = value_param_pattern [concrete = constants.%N.param_patt]
|
||||
// CHECK:STDOUT: %N.patt: %pattern_type.dc0 = at_binding_pattern N, %N.param_patt [concrete = constants.%N.patt]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.98f = out_param_pattern [concrete = constants.%return.param_patt.70e]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.98f = return_slot_pattern %return.param_patt, %.loc6_26.1 [concrete = constants.%return.patt.3ae]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %.loc6_26.1: type = type_literal type [concrete = type]
|
||||
// CHECK:STDOUT: %.loc6_26.2: Core.Form = init_form %.loc6_26.1 [concrete = constants.%.805]
|
||||
@@ -194,7 +221,7 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32));
|
||||
// CHECK:STDOUT: %return: ref type = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %AddWith.decl: %AddWith.type.2ef = interface_decl @AddWith [concrete = constants.%AddWith.generic] {
|
||||
// CHECK:STDOUT: %T.patt: %pattern_type.98f = symbolic_binding_pattern T, 0 [concrete]
|
||||
// CHECK:STDOUT: %T.patt.loc8_20.1: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc8_20.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %.loc8_23.1: type = splice_block %.loc8_23.2 [concrete = type] {
|
||||
// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self]
|
||||
@@ -203,7 +230,7 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32));
|
||||
// CHECK:STDOUT: %T.loc8_20.2: type = symbolic_binding T, 0 [symbolic = %T.loc8_20.1 (constants.%T)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %As.decl: %As.type.116 = interface_decl @As [concrete = constants.%As.generic] {
|
||||
// CHECK:STDOUT: %T.patt: %pattern_type.98f = symbolic_binding_pattern T, 0 [concrete]
|
||||
// CHECK:STDOUT: %T.patt.loc12_15.1: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc12_15.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %.loc12_18.1: type = splice_block %.loc12_18.2 [concrete = type] {
|
||||
// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self]
|
||||
@@ -212,7 +239,7 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32));
|
||||
// CHECK:STDOUT: %T.loc12_15.2: type = symbolic_binding T, 0 [symbolic = %T.loc12_15.1 (constants.%T)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %ImplicitAs.decl: %ImplicitAs.type.0ff = interface_decl @ImplicitAs [concrete = constants.%ImplicitAs.generic] {
|
||||
// CHECK:STDOUT: %T.patt: %pattern_type.98f = symbolic_binding_pattern T, 0 [concrete]
|
||||
// CHECK:STDOUT: %T.patt.loc16_23.1: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc16_23.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %.loc16_26.1: type = splice_block %.loc16_26.2 [concrete = type] {
|
||||
// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self]
|
||||
@@ -247,6 +274,7 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32));
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: generic interface @AddWith(%T.loc8_20.2: type) {
|
||||
// CHECK:STDOUT: %T.patt.loc8_20.2: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc8_20.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %T.loc8_20.1: type = symbolic_binding T, 0 [symbolic = %T.loc8_20.1 (constants.%T)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
@@ -259,12 +287,12 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32));
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !with Self:
|
||||
// CHECK:STDOUT: %AddWith.WithSelf.Op.decl: @AddWith.WithSelf.%AddWith.WithSelf.Op.type (%AddWith.WithSelf.Op.type.e49) = fn_decl @AddWith.WithSelf.Op [symbolic = @AddWith.WithSelf.%AddWith.WithSelf.Op (constants.%AddWith.WithSelf.Op.adc)] {
|
||||
// CHECK:STDOUT: %self.param_patt: @AddWith.WithSelf.Op.%pattern_type (%pattern_type.131) = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %self.patt: @AddWith.WithSelf.Op.%pattern_type (%pattern_type.131) = at_binding_pattern self, %self.param_patt [concrete]
|
||||
// CHECK:STDOUT: %other.param_patt: @AddWith.WithSelf.Op.%pattern_type (%pattern_type.131) = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %other.patt: @AddWith.WithSelf.Op.%pattern_type (%pattern_type.131) = at_binding_pattern other, %other.param_patt [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt: @AddWith.WithSelf.Op.%pattern_type (%pattern_type.131) = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt: @AddWith.WithSelf.Op.%pattern_type (%pattern_type.131) = return_slot_pattern %return.param_patt, %.loc9_31.3 [concrete]
|
||||
// CHECK:STDOUT: %self.param_patt.loc9_9.1: @AddWith.WithSelf.Op.%pattern_type (%pattern_type.131) = value_param_pattern [symbolic = %self.param_patt.loc9_9.2 (constants.%self.param_patt.72e)]
|
||||
// CHECK:STDOUT: %self.patt.loc9_9.1: @AddWith.WithSelf.Op.%pattern_type (%pattern_type.131) = at_binding_pattern self, %self.param_patt.loc9_9.1 [symbolic = %self.patt.loc9_9.2 (constants.%self.patt.ac5)]
|
||||
// CHECK:STDOUT: %other.param_patt.loc9_20.1: @AddWith.WithSelf.Op.%pattern_type (%pattern_type.131) = value_param_pattern [symbolic = %other.param_patt.loc9_20.2 (constants.%other.param_patt.89e)]
|
||||
// CHECK:STDOUT: %other.patt.loc9_20.1: @AddWith.WithSelf.Op.%pattern_type (%pattern_type.131) = at_binding_pattern other, %other.param_patt.loc9_20.1 [symbolic = %other.patt.loc9_20.2 (constants.%other.patt.f3d)]
|
||||
// CHECK:STDOUT: %return.param_patt.loc9_31.1: @AddWith.WithSelf.Op.%pattern_type (%pattern_type.131) = out_param_pattern [symbolic = %return.param_patt.loc9_31.2 (constants.%return.param_patt.8c6)]
|
||||
// CHECK:STDOUT: %return.patt.loc9_28.1: @AddWith.WithSelf.Op.%pattern_type (%pattern_type.131) = return_slot_pattern %return.param_patt.loc9_31.1, %.loc9_31.3 [symbolic = %return.patt.loc9_28.2 (constants.%return.patt.169)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %.loc9_31.2: @AddWith.WithSelf.Op.%AddWith.type (%AddWith.type.7e9) = specific_constant @AddWith.%Self.loc8_29.1, @AddWith(constants.%T) [symbolic = %Self (constants.%Self.8d5)]
|
||||
// CHECK:STDOUT: %Self.ref.loc9_31: @AddWith.WithSelf.Op.%AddWith.type (%AddWith.type.7e9) = name_ref Self, %.loc9_31.2 [symbolic = %Self (constants.%Self.8d5)]
|
||||
@@ -302,6 +330,7 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32));
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: generic interface @As(%T.loc12_15.2: type) {
|
||||
// CHECK:STDOUT: %T.patt.loc12_15.2: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc12_15.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %T.loc12_15.1: type = symbolic_binding T, 0 [symbolic = %T.loc12_15.1 (constants.%T)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
@@ -314,10 +343,10 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32));
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !with Self:
|
||||
// CHECK:STDOUT: %As.WithSelf.Convert.decl: @As.WithSelf.%As.WithSelf.Convert.type (%As.WithSelf.Convert.type.640) = fn_decl @As.WithSelf.Convert [symbolic = @As.WithSelf.%As.WithSelf.Convert (constants.%As.WithSelf.Convert.896)] {
|
||||
// CHECK:STDOUT: %self.param_patt: @As.WithSelf.Convert.%pattern_type.loc13_14 (%pattern_type.a01) = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %self.patt: @As.WithSelf.Convert.%pattern_type.loc13_14 (%pattern_type.a01) = at_binding_pattern self, %self.param_patt [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt: @As.WithSelf.Convert.%pattern_type.loc13_23 (%pattern_type.51d) = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt: @As.WithSelf.Convert.%pattern_type.loc13_23 (%pattern_type.51d) = return_slot_pattern %return.param_patt, %T.ref [concrete]
|
||||
// CHECK:STDOUT: %self.param_patt.loc13_14.1: @As.WithSelf.Convert.%pattern_type.loc13_14 (%pattern_type.a01) = value_param_pattern [symbolic = %self.param_patt.loc13_14.2 (constants.%self.param_patt.29a)]
|
||||
// CHECK:STDOUT: %self.patt.loc13_14.1: @As.WithSelf.Convert.%pattern_type.loc13_14 (%pattern_type.a01) = at_binding_pattern self, %self.param_patt.loc13_14.1 [symbolic = %self.patt.loc13_14.2 (constants.%self.patt.a95)]
|
||||
// CHECK:STDOUT: %return.param_patt.loc13_23.1: @As.WithSelf.Convert.%pattern_type.loc13_23 (%pattern_type.51d) = out_param_pattern [symbolic = %return.param_patt.loc13_23.2 (constants.%return.param_patt.41d)]
|
||||
// CHECK:STDOUT: %return.patt.loc13_20.1: @As.WithSelf.Convert.%pattern_type.loc13_23 (%pattern_type.51d) = return_slot_pattern %return.param_patt.loc13_23.1, %T.ref [symbolic = %return.patt.loc13_20.2 (constants.%return.patt.b39)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.ref: type = name_ref T, @As.%T.loc12_15.2 [symbolic = %T (constants.%T)]
|
||||
// CHECK:STDOUT: %.loc13_23.2: Core.Form = init_form %T.ref [symbolic = %.loc13_23.1 (constants.%.184)]
|
||||
@@ -346,6 +375,7 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32));
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: generic interface @ImplicitAs(%T.loc16_23.2: type) {
|
||||
// CHECK:STDOUT: %T.patt.loc16_23.2: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc16_23.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %T.loc16_23.1: type = symbolic_binding T, 0 [symbolic = %T.loc16_23.1 (constants.%T)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
@@ -358,10 +388,10 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32));
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !with Self:
|
||||
// CHECK:STDOUT: %ImplicitAs.WithSelf.Convert.decl: @ImplicitAs.WithSelf.%ImplicitAs.WithSelf.Convert.type (%ImplicitAs.WithSelf.Convert.type.920) = fn_decl @ImplicitAs.WithSelf.Convert [symbolic = @ImplicitAs.WithSelf.%ImplicitAs.WithSelf.Convert (constants.%ImplicitAs.WithSelf.Convert.293)] {
|
||||
// CHECK:STDOUT: %self.param_patt: @ImplicitAs.WithSelf.Convert.%pattern_type.loc17_14 (%pattern_type.701) = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %self.patt: @ImplicitAs.WithSelf.Convert.%pattern_type.loc17_14 (%pattern_type.701) = at_binding_pattern self, %self.param_patt [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt: @ImplicitAs.WithSelf.Convert.%pattern_type.loc17_23 (%pattern_type.51d) = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt: @ImplicitAs.WithSelf.Convert.%pattern_type.loc17_23 (%pattern_type.51d) = return_slot_pattern %return.param_patt, %T.ref [concrete]
|
||||
// CHECK:STDOUT: %self.param_patt.loc17_14.1: @ImplicitAs.WithSelf.Convert.%pattern_type.loc17_14 (%pattern_type.701) = value_param_pattern [symbolic = %self.param_patt.loc17_14.2 (constants.%self.param_patt.c3f)]
|
||||
// CHECK:STDOUT: %self.patt.loc17_14.1: @ImplicitAs.WithSelf.Convert.%pattern_type.loc17_14 (%pattern_type.701) = at_binding_pattern self, %self.param_patt.loc17_14.1 [symbolic = %self.patt.loc17_14.2 (constants.%self.patt.f5a)]
|
||||
// CHECK:STDOUT: %return.param_patt.loc17_23.1: @ImplicitAs.WithSelf.Convert.%pattern_type.loc17_23 (%pattern_type.51d) = out_param_pattern [symbolic = %return.param_patt.loc17_23.2 (constants.%return.param_patt.41d)]
|
||||
// CHECK:STDOUT: %return.patt.loc17_20.1: @ImplicitAs.WithSelf.Convert.%pattern_type.loc17_23 (%pattern_type.51d) = return_slot_pattern %return.param_patt.loc17_23.1, %T.ref [symbolic = %return.patt.loc17_20.2 (constants.%return.patt.b39)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.ref: type = name_ref T, @ImplicitAs.%T.loc16_23.2 [symbolic = %T (constants.%T)]
|
||||
// CHECK:STDOUT: %.loc17_23.2: Core.Form = init_form %T.ref [symbolic = %.loc17_23.1 (constants.%.184)]
|
||||
@@ -392,12 +422,12 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32));
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl @i32.builtin.as.AddWith.impl: %.loc20_6 as %AddWith.type {
|
||||
// CHECK:STDOUT: %i32.builtin.as.AddWith.impl.Op.decl: %i32.builtin.as.AddWith.impl.Op.type = fn_decl @i32.builtin.as.AddWith.impl.Op [concrete = constants.%i32.builtin.as.AddWith.impl.Op] {
|
||||
// CHECK:STDOUT: %self.param_patt: %pattern_type.956 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %self.patt: %pattern_type.956 = at_binding_pattern self, %self.param_patt [concrete]
|
||||
// CHECK:STDOUT: %other.param_patt: %pattern_type.956 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %other.patt: %pattern_type.956 = at_binding_pattern other, %other.param_patt [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.956 = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.956 = return_slot_pattern %return.param_patt, %Self.ref.loc21_31 [concrete]
|
||||
// CHECK:STDOUT: %self.param_patt: %pattern_type.956 = value_param_pattern [concrete = constants.%self.param_patt.936]
|
||||
// CHECK:STDOUT: %self.patt: %pattern_type.956 = at_binding_pattern self, %self.param_patt [concrete = constants.%self.patt.703]
|
||||
// CHECK:STDOUT: %other.param_patt: %pattern_type.956 = value_param_pattern [concrete = constants.%other.param_patt.36d]
|
||||
// CHECK:STDOUT: %other.patt: %pattern_type.956 = at_binding_pattern other, %other.param_patt [concrete = constants.%other.patt.760]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.956 = out_param_pattern [concrete = constants.%return.param_patt.903]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.956 = return_slot_pattern %return.param_patt, %Self.ref.loc21_31 [concrete = constants.%return.patt.930]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %Self.ref.loc21_31: type = name_ref Self, @i32.builtin.as.AddWith.impl.%.loc20_6 [concrete = constants.%i32.builtin]
|
||||
// CHECK:STDOUT: %.loc21: Core.Form = init_form %Self.ref.loc21_31 [concrete = constants.%.9cb]
|
||||
@@ -421,10 +451,10 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32));
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl @Core.IntLiteral.as.As.impl: %IntLiteral.ref as %As.type {
|
||||
// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.decl: %Core.IntLiteral.as.As.impl.Convert.type = fn_decl @Core.IntLiteral.as.As.impl.Convert [concrete = constants.%Core.IntLiteral.as.As.impl.Convert] {
|
||||
// CHECK:STDOUT: %self.param_patt: %pattern_type.dc0 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %self.patt: %pattern_type.dc0 = at_binding_pattern self, %self.param_patt [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.956 = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.956 = return_slot_pattern %return.param_patt, %.loc25_23.1 [concrete]
|
||||
// CHECK:STDOUT: %self.param_patt: %pattern_type.dc0 = value_param_pattern [concrete = constants.%self.param_patt.1ca]
|
||||
// CHECK:STDOUT: %self.patt: %pattern_type.dc0 = at_binding_pattern self, %self.param_patt [concrete = constants.%self.patt.cea]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.956 = out_param_pattern [concrete = constants.%return.param_patt.903]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.956 = return_slot_pattern %return.param_patt, %.loc25_23.1 [concrete = constants.%return.patt.930]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %.loc25_23.1: type = type_literal constants.%i32.builtin [concrete = constants.%i32.builtin]
|
||||
// CHECK:STDOUT: %.loc25_23.2: Core.Form = init_form %.loc25_23.1 [concrete = constants.%.9cb]
|
||||
@@ -445,10 +475,10 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32));
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl @Core.IntLiteral.as.ImplicitAs.impl: %IntLiteral.ref as %ImplicitAs.type {
|
||||
// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.decl: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type = fn_decl @Core.IntLiteral.as.ImplicitAs.impl.Convert [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert] {
|
||||
// CHECK:STDOUT: %self.param_patt: %pattern_type.dc0 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %self.patt: %pattern_type.dc0 = at_binding_pattern self, %self.param_patt [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.956 = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.956 = return_slot_pattern %return.param_patt, %.loc29_23.1 [concrete]
|
||||
// CHECK:STDOUT: %self.param_patt: %pattern_type.dc0 = value_param_pattern [concrete = constants.%self.param_patt.1ca]
|
||||
// CHECK:STDOUT: %self.patt: %pattern_type.dc0 = at_binding_pattern self, %self.param_patt [concrete = constants.%self.patt.cea]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.956 = out_param_pattern [concrete = constants.%return.param_patt.903]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.956 = return_slot_pattern %return.param_patt, %.loc29_23.1 [concrete = constants.%return.patt.930]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %.loc29_23.1: type = type_literal constants.%i32.builtin [concrete = constants.%i32.builtin]
|
||||
// CHECK:STDOUT: %.loc29_23.2: Core.Form = init_form %.loc29_23.1 [concrete = constants.%.9cb]
|
||||
@@ -469,10 +499,10 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32));
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl @i32.builtin.as.ImplicitAs.impl: %.loc32 as %ImplicitAs.type {
|
||||
// CHECK:STDOUT: %i32.builtin.as.ImplicitAs.impl.Convert.decl: %i32.builtin.as.ImplicitAs.impl.Convert.type = fn_decl @i32.builtin.as.ImplicitAs.impl.Convert [concrete = constants.%i32.builtin.as.ImplicitAs.impl.Convert] {
|
||||
// CHECK:STDOUT: %self.param_patt: %pattern_type.956 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %self.patt: %pattern_type.956 = at_binding_pattern self, %self.param_patt [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.dc0 = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.dc0 = return_slot_pattern %return.param_patt, %IntLiteral.ref [concrete]
|
||||
// CHECK:STDOUT: %self.param_patt: %pattern_type.956 = value_param_pattern [concrete = constants.%self.param_patt.936]
|
||||
// CHECK:STDOUT: %self.patt: %pattern_type.956 = at_binding_pattern self, %self.param_patt [concrete = constants.%self.patt.703]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.dc0 = out_param_pattern [concrete = constants.%return.param_patt.eab]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.dc0 = return_slot_pattern %return.param_patt, %IntLiteral.ref [concrete = constants.%return.patt.cd4]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %IntLiteral.ref: type = name_ref IntLiteral, file.%IntLiteral [concrete = Core.IntLiteral]
|
||||
// CHECK:STDOUT: %.loc33: Core.Form = init_form %IntLiteral.ref [concrete = constants.%.f7d]
|
||||
@@ -502,7 +532,13 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32));
|
||||
// CHECK:STDOUT: %Self: @AddWith.WithSelf.Op.%AddWith.type (%AddWith.type.7e9) = symbolic_binding Self, 1 [symbolic = %Self (constants.%Self.8d5)]
|
||||
// CHECK:STDOUT: %Self.as_type.loc9_9.1: type = facet_access_type %Self [symbolic = %Self.as_type.loc9_9.1 (constants.%Self.as_type.48c)]
|
||||
// CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type.loc9_9.1 [symbolic = %pattern_type (constants.%pattern_type.131)]
|
||||
// CHECK:STDOUT: %self.param_patt.loc9_9.2: @AddWith.WithSelf.Op.%pattern_type (%pattern_type.131) = value_param_pattern [symbolic = %self.param_patt.loc9_9.2 (constants.%self.param_patt.72e)]
|
||||
// CHECK:STDOUT: %self.patt.loc9_9.2: @AddWith.WithSelf.Op.%pattern_type (%pattern_type.131) = at_binding_pattern self, %self.param_patt.loc9_9.2 [symbolic = %self.patt.loc9_9.2 (constants.%self.patt.ac5)]
|
||||
// CHECK:STDOUT: %other.param_patt.loc9_20.2: @AddWith.WithSelf.Op.%pattern_type (%pattern_type.131) = value_param_pattern [symbolic = %other.param_patt.loc9_20.2 (constants.%other.param_patt.89e)]
|
||||
// CHECK:STDOUT: %other.patt.loc9_20.2: @AddWith.WithSelf.Op.%pattern_type (%pattern_type.131) = at_binding_pattern other, %other.param_patt.loc9_20.2 [symbolic = %other.patt.loc9_20.2 (constants.%other.patt.f3d)]
|
||||
// CHECK:STDOUT: %.loc9_31.1: Core.Form = init_form %Self.as_type.loc9_9.1 [symbolic = %.loc9_31.1 (constants.%.e80)]
|
||||
// CHECK:STDOUT: %return.param_patt.loc9_31.2: @AddWith.WithSelf.Op.%pattern_type (%pattern_type.131) = out_param_pattern [symbolic = %return.param_patt.loc9_31.2 (constants.%return.param_patt.8c6)]
|
||||
// CHECK:STDOUT: %return.patt.loc9_28.2: @AddWith.WithSelf.Op.%pattern_type (%pattern_type.131) = return_slot_pattern %return.param_patt.loc9_31.2, %Self.as_type.loc9_9.1 [symbolic = %return.patt.loc9_28.2 (constants.%return.patt.169)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn(%self.param: @AddWith.WithSelf.Op.%Self.as_type.loc9_9.1 (%Self.as_type.48c), %other.param: @AddWith.WithSelf.Op.%Self.as_type.loc9_9.1 (%Self.as_type.48c)) -> out %return.param: @AddWith.WithSelf.Op.%Self.as_type.loc9_9.1 (%Self.as_type.48c);
|
||||
// CHECK:STDOUT: }
|
||||
@@ -513,8 +549,12 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32));
|
||||
// CHECK:STDOUT: %Self: @As.WithSelf.Convert.%As.type (%As.type.c5f) = symbolic_binding Self, 1 [symbolic = %Self (constants.%Self.f80)]
|
||||
// CHECK:STDOUT: %Self.as_type.loc13_14.1: type = facet_access_type %Self [symbolic = %Self.as_type.loc13_14.1 (constants.%Self.as_type.1ce)]
|
||||
// CHECK:STDOUT: %pattern_type.loc13_14: type = pattern_type %Self.as_type.loc13_14.1 [symbolic = %pattern_type.loc13_14 (constants.%pattern_type.a01)]
|
||||
// CHECK:STDOUT: %self.param_patt.loc13_14.2: @As.WithSelf.Convert.%pattern_type.loc13_14 (%pattern_type.a01) = value_param_pattern [symbolic = %self.param_patt.loc13_14.2 (constants.%self.param_patt.29a)]
|
||||
// CHECK:STDOUT: %self.patt.loc13_14.2: @As.WithSelf.Convert.%pattern_type.loc13_14 (%pattern_type.a01) = at_binding_pattern self, %self.param_patt.loc13_14.2 [symbolic = %self.patt.loc13_14.2 (constants.%self.patt.a95)]
|
||||
// CHECK:STDOUT: %.loc13_23.1: Core.Form = init_form %T [symbolic = %.loc13_23.1 (constants.%.184)]
|
||||
// CHECK:STDOUT: %pattern_type.loc13_23: type = pattern_type %T [symbolic = %pattern_type.loc13_23 (constants.%pattern_type.51d)]
|
||||
// CHECK:STDOUT: %return.param_patt.loc13_23.2: @As.WithSelf.Convert.%pattern_type.loc13_23 (%pattern_type.51d) = out_param_pattern [symbolic = %return.param_patt.loc13_23.2 (constants.%return.param_patt.41d)]
|
||||
// CHECK:STDOUT: %return.patt.loc13_20.2: @As.WithSelf.Convert.%pattern_type.loc13_23 (%pattern_type.51d) = return_slot_pattern %return.param_patt.loc13_23.2, %T [symbolic = %return.patt.loc13_20.2 (constants.%return.patt.b39)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn(%self.param: @As.WithSelf.Convert.%Self.as_type.loc13_14.1 (%Self.as_type.1ce)) -> out %return.param: @As.WithSelf.Convert.%T (%T);
|
||||
// CHECK:STDOUT: }
|
||||
@@ -525,8 +565,12 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32));
|
||||
// CHECK:STDOUT: %Self: @ImplicitAs.WithSelf.Convert.%ImplicitAs.type (%ImplicitAs.type.3aa) = symbolic_binding Self, 1 [symbolic = %Self (constants.%Self.bb1)]
|
||||
// CHECK:STDOUT: %Self.as_type.loc17_14.1: type = facet_access_type %Self [symbolic = %Self.as_type.loc17_14.1 (constants.%Self.as_type.5b8)]
|
||||
// CHECK:STDOUT: %pattern_type.loc17_14: type = pattern_type %Self.as_type.loc17_14.1 [symbolic = %pattern_type.loc17_14 (constants.%pattern_type.701)]
|
||||
// CHECK:STDOUT: %self.param_patt.loc17_14.2: @ImplicitAs.WithSelf.Convert.%pattern_type.loc17_14 (%pattern_type.701) = value_param_pattern [symbolic = %self.param_patt.loc17_14.2 (constants.%self.param_patt.c3f)]
|
||||
// CHECK:STDOUT: %self.patt.loc17_14.2: @ImplicitAs.WithSelf.Convert.%pattern_type.loc17_14 (%pattern_type.701) = at_binding_pattern self, %self.param_patt.loc17_14.2 [symbolic = %self.patt.loc17_14.2 (constants.%self.patt.f5a)]
|
||||
// CHECK:STDOUT: %.loc17_23.1: Core.Form = init_form %T [symbolic = %.loc17_23.1 (constants.%.184)]
|
||||
// CHECK:STDOUT: %pattern_type.loc17_23: type = pattern_type %T [symbolic = %pattern_type.loc17_23 (constants.%pattern_type.51d)]
|
||||
// CHECK:STDOUT: %return.param_patt.loc17_23.2: @ImplicitAs.WithSelf.Convert.%pattern_type.loc17_23 (%pattern_type.51d) = out_param_pattern [symbolic = %return.param_patt.loc17_23.2 (constants.%return.param_patt.41d)]
|
||||
// CHECK:STDOUT: %return.patt.loc17_20.2: @ImplicitAs.WithSelf.Convert.%pattern_type.loc17_23 (%pattern_type.51d) = return_slot_pattern %return.param_patt.loc17_23.2, %T [symbolic = %return.patt.loc17_20.2 (constants.%return.patt.b39)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn(%self.param: @ImplicitAs.WithSelf.Convert.%Self.as_type.loc17_14.1 (%Self.as_type.5b8)) -> out %return.param: @ImplicitAs.WithSelf.Convert.%T (%T);
|
||||
// CHECK:STDOUT: }
|
||||
@@ -540,6 +584,7 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32));
|
||||
// CHECK:STDOUT: fn @i32.builtin.as.ImplicitAs.impl.Convert(%self.param: %i32.builtin) -> out %return.param: Core.IntLiteral = "int.convert_checked";
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @AddWith(constants.%T) {
|
||||
// CHECK:STDOUT: %T.patt.loc8_20.2 => constants.%T.patt
|
||||
// CHECK:STDOUT: %T.loc8_20.1 => constants.%T
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -551,10 +596,17 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32));
|
||||
// CHECK:STDOUT: %Self => constants.%Self.8d5
|
||||
// CHECK:STDOUT: %Self.as_type.loc9_9.1 => constants.%Self.as_type.48c
|
||||
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.131
|
||||
// CHECK:STDOUT: %self.param_patt.loc9_9.2 => constants.%self.param_patt.72e
|
||||
// CHECK:STDOUT: %self.patt.loc9_9.2 => constants.%self.patt.ac5
|
||||
// CHECK:STDOUT: %other.param_patt.loc9_20.2 => constants.%other.param_patt.89e
|
||||
// CHECK:STDOUT: %other.patt.loc9_20.2 => constants.%other.patt.f3d
|
||||
// CHECK:STDOUT: %.loc9_31.1 => constants.%.e80
|
||||
// CHECK:STDOUT: %return.param_patt.loc9_31.2 => constants.%return.param_patt.8c6
|
||||
// CHECK:STDOUT: %return.patt.loc9_28.2 => constants.%return.patt.169
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @As(constants.%T) {
|
||||
// CHECK:STDOUT: %T.patt.loc12_15.2 => constants.%T.patt
|
||||
// CHECK:STDOUT: %T.loc12_15.1 => constants.%T
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -566,11 +618,16 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32));
|
||||
// CHECK:STDOUT: %Self => constants.%Self.f80
|
||||
// CHECK:STDOUT: %Self.as_type.loc13_14.1 => constants.%Self.as_type.1ce
|
||||
// CHECK:STDOUT: %pattern_type.loc13_14 => constants.%pattern_type.a01
|
||||
// CHECK:STDOUT: %self.param_patt.loc13_14.2 => constants.%self.param_patt.29a
|
||||
// CHECK:STDOUT: %self.patt.loc13_14.2 => constants.%self.patt.a95
|
||||
// CHECK:STDOUT: %.loc13_23.1 => constants.%.184
|
||||
// CHECK:STDOUT: %pattern_type.loc13_23 => constants.%pattern_type.51d
|
||||
// CHECK:STDOUT: %return.param_patt.loc13_23.2 => constants.%return.param_patt.41d
|
||||
// CHECK:STDOUT: %return.patt.loc13_20.2 => constants.%return.patt.b39
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @ImplicitAs(constants.%T) {
|
||||
// CHECK:STDOUT: %T.patt.loc16_23.2 => constants.%T.patt
|
||||
// CHECK:STDOUT: %T.loc16_23.1 => constants.%T
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -582,11 +639,16 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32));
|
||||
// CHECK:STDOUT: %Self => constants.%Self.bb1
|
||||
// CHECK:STDOUT: %Self.as_type.loc17_14.1 => constants.%Self.as_type.5b8
|
||||
// CHECK:STDOUT: %pattern_type.loc17_14 => constants.%pattern_type.701
|
||||
// CHECK:STDOUT: %self.param_patt.loc17_14.2 => constants.%self.param_patt.c3f
|
||||
// CHECK:STDOUT: %self.patt.loc17_14.2 => constants.%self.patt.f5a
|
||||
// CHECK:STDOUT: %.loc17_23.1 => constants.%.184
|
||||
// CHECK:STDOUT: %pattern_type.loc17_23 => constants.%pattern_type.51d
|
||||
// CHECK:STDOUT: %return.param_patt.loc17_23.2 => constants.%return.param_patt.41d
|
||||
// CHECK:STDOUT: %return.patt.loc17_20.2 => constants.%return.patt.b39
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @AddWith(constants.%i32.builtin) {
|
||||
// CHECK:STDOUT: %T.patt.loc8_20.2 => constants.%T.patt
|
||||
// CHECK:STDOUT: %T.loc8_20.1 => constants.%i32.builtin
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
@@ -622,10 +684,17 @@ 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.as_type.loc9_9.1 => constants.%i32.builtin
|
||||
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.956
|
||||
// CHECK:STDOUT: %self.param_patt.loc9_9.2 => constants.%self.param_patt.936
|
||||
// CHECK:STDOUT: %self.patt.loc9_9.2 => constants.%self.patt.703
|
||||
// CHECK:STDOUT: %other.param_patt.loc9_20.2 => constants.%other.param_patt.36d
|
||||
// CHECK:STDOUT: %other.patt.loc9_20.2 => constants.%other.patt.760
|
||||
// CHECK:STDOUT: %.loc9_31.1 => constants.%.9cb
|
||||
// CHECK:STDOUT: %return.param_patt.loc9_31.2 => constants.%return.param_patt.903
|
||||
// CHECK:STDOUT: %return.patt.loc9_28.2 => constants.%return.patt.930
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @As(constants.%i32.builtin) {
|
||||
// CHECK:STDOUT: %T.patt.loc12_15.2 => constants.%T.patt
|
||||
// CHECK:STDOUT: %T.loc12_15.1 => constants.%i32.builtin
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
@@ -661,11 +730,16 @@ 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.as_type.loc13_14.1 => Core.IntLiteral
|
||||
// CHECK:STDOUT: %pattern_type.loc13_14 => constants.%pattern_type.dc0
|
||||
// CHECK:STDOUT: %self.param_patt.loc13_14.2 => constants.%self.param_patt.1ca
|
||||
// CHECK:STDOUT: %self.patt.loc13_14.2 => constants.%self.patt.cea
|
||||
// CHECK:STDOUT: %.loc13_23.1 => constants.%.9cb
|
||||
// CHECK:STDOUT: %pattern_type.loc13_23 => constants.%pattern_type.956
|
||||
// CHECK:STDOUT: %return.param_patt.loc13_23.2 => constants.%return.param_patt.903
|
||||
// CHECK:STDOUT: %return.patt.loc13_20.2 => constants.%return.patt.930
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @ImplicitAs(constants.%i32.builtin) {
|
||||
// CHECK:STDOUT: %T.patt.loc16_23.2 => constants.%T.patt
|
||||
// CHECK:STDOUT: %T.loc16_23.1 => constants.%i32.builtin
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
@@ -701,11 +775,16 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32));
|
||||
// CHECK:STDOUT: %Self => constants.%ImplicitAs.facet.18f
|
||||
// CHECK:STDOUT: %Self.as_type.loc17_14.1 => Core.IntLiteral
|
||||
// CHECK:STDOUT: %pattern_type.loc17_14 => constants.%pattern_type.dc0
|
||||
// CHECK:STDOUT: %self.param_patt.loc17_14.2 => constants.%self.param_patt.1ca
|
||||
// CHECK:STDOUT: %self.patt.loc17_14.2 => constants.%self.patt.cea
|
||||
// CHECK:STDOUT: %.loc17_23.1 => constants.%.9cb
|
||||
// CHECK:STDOUT: %pattern_type.loc17_23 => constants.%pattern_type.956
|
||||
// CHECK:STDOUT: %return.param_patt.loc17_23.2 => constants.%return.param_patt.903
|
||||
// CHECK:STDOUT: %return.patt.loc17_20.2 => constants.%return.patt.930
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @ImplicitAs(Core.IntLiteral) {
|
||||
// CHECK:STDOUT: %T.patt.loc16_23.2 => constants.%T.patt
|
||||
// CHECK:STDOUT: %T.loc16_23.1 => Core.IntLiteral
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
@@ -741,8 +820,12 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32));
|
||||
// CHECK:STDOUT: %Self => constants.%ImplicitAs.facet.776
|
||||
// CHECK:STDOUT: %Self.as_type.loc17_14.1 => constants.%i32.builtin
|
||||
// CHECK:STDOUT: %pattern_type.loc17_14 => constants.%pattern_type.956
|
||||
// CHECK:STDOUT: %self.param_patt.loc17_14.2 => constants.%self.param_patt.936
|
||||
// CHECK:STDOUT: %self.patt.loc17_14.2 => constants.%self.patt.703
|
||||
// CHECK:STDOUT: %.loc17_23.1 => constants.%.f7d
|
||||
// CHECK:STDOUT: %pattern_type.loc17_23 => constants.%pattern_type.dc0
|
||||
// CHECK:STDOUT: %return.param_patt.loc17_23.2 => constants.%return.param_patt.eab
|
||||
// CHECK:STDOUT: %return.patt.loc17_20.2 => constants.%return.patt.cd4
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: --- user.carbon
|
||||
@@ -751,19 +834,25 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32));
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete]
|
||||
// CHECK:STDOUT: %Int.type: type = fn_type @Int [concrete]
|
||||
// CHECK:STDOUT: %Int: %Int.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete]
|
||||
// CHECK:STDOUT: %i32.builtin: type = int_type signed, %int_32 [concrete]
|
||||
// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete]
|
||||
// CHECK:STDOUT: %As.type.116: type = generic_interface_type @As [concrete]
|
||||
// CHECK:STDOUT: %As.generic: %As.type.116 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %T: type = symbolic_binding T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %As.type.c5f: type = facet_type <@As, @As(%T)> [symbolic]
|
||||
// CHECK:STDOUT: %T.patt: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %Self.37a: %As.type.c5f = symbolic_binding Self, 1 [symbolic]
|
||||
// CHECK:STDOUT: %As.assoc_type.b40: type = assoc_entity_type @As, @As(%T) [symbolic]
|
||||
// CHECK:STDOUT: %As.WithSelf.Convert.type.ff8: type = fn_type @As.WithSelf.Convert, @As.WithSelf(%T, %Self.37a) [symbolic]
|
||||
// CHECK:STDOUT: %As.WithSelf.Convert.87d: %As.WithSelf.Convert.type.ff8 = struct_value () [symbolic]
|
||||
// CHECK:STDOUT: %pattern_type.51d: type = pattern_type %T [symbolic]
|
||||
// CHECK:STDOUT: %return.param_patt.41d: %pattern_type.51d = out_param_pattern [symbolic]
|
||||
// CHECK:STDOUT: %return.patt.c39: %pattern_type.51d = return_slot_pattern %return.param_patt.41d, invalid [symbolic]
|
||||
// CHECK:STDOUT: %Self.as_type.d4a: type = facet_access_type %Self.37a [symbolic]
|
||||
// CHECK:STDOUT: %pattern_type.e33: type = pattern_type %Self.as_type.d4a [symbolic]
|
||||
// CHECK:STDOUT: %self.param_patt.9e9: %pattern_type.e33 = value_param_pattern [symbolic]
|
||||
// CHECK:STDOUT: %self.patt.51c: %pattern_type.e33 = at_binding_pattern self, %self.param_patt.9e9 [symbolic]
|
||||
// CHECK:STDOUT: %.184: Core.Form = init_form %T [symbolic]
|
||||
// CHECK:STDOUT: %As.type.dfb: type = facet_type <@As, @As(%i32.builtin)> [concrete]
|
||||
// CHECK:STDOUT: %Self.256: %As.type.dfb = symbolic_binding Self, 1 [symbolic]
|
||||
@@ -793,7 +882,13 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32));
|
||||
// CHECK:STDOUT: %AddWith.WithSelf.Op.eab: %AddWith.WithSelf.Op.type.28e = struct_value () [symbolic]
|
||||
// CHECK:STDOUT: %Self.as_type.331: type = facet_access_type %Self.96a [symbolic]
|
||||
// CHECK:STDOUT: %pattern_type.aed: type = pattern_type %Self.as_type.331 [symbolic]
|
||||
// CHECK:STDOUT: %return.param_patt.7c8: %pattern_type.aed = out_param_pattern [symbolic]
|
||||
// CHECK:STDOUT: %return.patt.1c8: %pattern_type.aed = return_slot_pattern %return.param_patt.7c8, invalid [symbolic]
|
||||
// CHECK:STDOUT: %self.param_patt.aae: %pattern_type.aed = value_param_pattern [symbolic]
|
||||
// CHECK:STDOUT: %self.patt.c4d: %pattern_type.aed = at_binding_pattern self, %self.param_patt.aae [symbolic]
|
||||
// CHECK:STDOUT: %.4cc: Core.Form = init_form %Self.as_type.331 [symbolic]
|
||||
// CHECK:STDOUT: %other.param_patt.076: %pattern_type.aed = value_param_pattern [symbolic]
|
||||
// CHECK:STDOUT: %other.patt.667: %pattern_type.aed = at_binding_pattern other, %other.param_patt.076 [symbolic]
|
||||
// CHECK:STDOUT: %AddWith.type.7c6: type = facet_type <@AddWith, @AddWith(%i32.builtin)> [concrete]
|
||||
// CHECK:STDOUT: %Self.bd2: %AddWith.type.7c6 = symbolic_binding Self, 1 [symbolic]
|
||||
// CHECK:STDOUT: %AddWith.WithSelf.Op.type.0ff: type = fn_type @AddWith.WithSelf.Op, @AddWith.WithSelf(%i32.builtin, %Self.96a) [symbolic]
|
||||
@@ -819,6 +914,8 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32));
|
||||
// CHECK:STDOUT: %ImplicitAs.WithSelf.Convert.945: %ImplicitAs.WithSelf.Convert.type.97e = struct_value () [symbolic]
|
||||
// CHECK:STDOUT: %Self.as_type.ef0: type = facet_access_type %Self.294 [symbolic]
|
||||
// CHECK:STDOUT: %pattern_type.20e: type = pattern_type %Self.as_type.ef0 [symbolic]
|
||||
// CHECK:STDOUT: %self.param_patt.360: %pattern_type.20e = value_param_pattern [symbolic]
|
||||
// CHECK:STDOUT: %self.patt.25f: %pattern_type.20e = at_binding_pattern self, %self.param_patt.360 [symbolic]
|
||||
// CHECK:STDOUT: %ImplicitAs.type.7cb: type = facet_type <@ImplicitAs, @ImplicitAs(Core.IntLiteral)> [concrete]
|
||||
// CHECK:STDOUT: %Self.f63: %ImplicitAs.type.7cb = symbolic_binding Self, 1 [symbolic]
|
||||
// CHECK:STDOUT: %ImplicitAs.WithSelf.Convert.type.e70: type = fn_type @ImplicitAs.WithSelf.Convert, @ImplicitAs.WithSelf(Core.IntLiteral, %Self.294) [symbolic]
|
||||
@@ -839,6 +936,8 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32));
|
||||
// CHECK:STDOUT: %int_3.1ba: Core.IntLiteral = int_value 3 [concrete]
|
||||
// CHECK:STDOUT: %array_type: type = array_type %int_3.1ba, %i32.builtin [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.9e2: type = pattern_type %array_type [concrete]
|
||||
// CHECK:STDOUT: %arr.patt: %pattern_type.9e2 = ref_binding_pattern arr [concrete]
|
||||
// CHECK:STDOUT: %arr.var_patt: %pattern_type.9e2 = var_pattern %arr.patt [concrete]
|
||||
// CHECK:STDOUT: %int_4.0c1: Core.IntLiteral = int_value 4 [concrete]
|
||||
// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.bound.94b: <bound method> = bound_method %int_3.1ba, %Core.IntLiteral.as.As.impl.Convert [concrete]
|
||||
// CHECK:STDOUT: %Core.IntLiteral.as.As.impl.Convert.bound.0f9: <bound method> = bound_method %int_4.0c1, %Core.IntLiteral.as.As.impl.Convert [concrete]
|
||||
@@ -929,8 +1028,8 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32));
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %arr.patt: %pattern_type.9e2 = ref_binding_pattern arr [concrete]
|
||||
// CHECK:STDOUT: %arr.var_patt: %pattern_type.9e2 = var_pattern %arr.patt [concrete]
|
||||
// CHECK:STDOUT: %arr.patt: %pattern_type.9e2 = ref_binding_pattern arr [concrete = constants.%arr.patt]
|
||||
// CHECK:STDOUT: %arr.var_patt: %pattern_type.9e2 = var_pattern %arr.patt [concrete = constants.%arr.var_patt]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %arr.var: ref %array_type = var %arr.var_patt [concrete]
|
||||
// CHECK:STDOUT: %.loc4_44: type = splice_block %array_type [concrete = constants.%array_type] {
|
||||
@@ -965,6 +1064,7 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32));
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: generic interface @As(imports.%Core.import_ref.b3bc94.3: type) [from "core.carbon"] {
|
||||
// CHECK:STDOUT: %T.patt: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %T: type = symbolic_binding T, 0 [symbolic = %T (constants.%T)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
@@ -982,6 +1082,7 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32));
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: generic interface @AddWith(imports.%Core.import_ref.b3bc94.6: type) [from "core.carbon"] {
|
||||
// CHECK:STDOUT: %T.patt: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %T: type = symbolic_binding T, 0 [symbolic = %T (constants.%T)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
@@ -999,6 +1100,7 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32));
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: generic interface @ImplicitAs(imports.%Core.import_ref.b3bc94.9: type) [from "core.carbon"] {
|
||||
// CHECK:STDOUT: %T.patt: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %T: type = symbolic_binding T, 0 [symbolic = %T (constants.%T)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
@@ -1043,8 +1145,12 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32));
|
||||
// CHECK:STDOUT: %Self: @As.WithSelf.Convert.%As.type (%As.type.c5f) = symbolic_binding Self, 1 [symbolic = %Self (constants.%Self.37a)]
|
||||
// CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self [symbolic = %Self.as_type (constants.%Self.as_type.d4a)]
|
||||
// CHECK:STDOUT: %pattern_type.1: type = pattern_type %Self.as_type [symbolic = %pattern_type.1 (constants.%pattern_type.e33)]
|
||||
// CHECK:STDOUT: %self.param_patt: @As.WithSelf.Convert.%pattern_type.1 (%pattern_type.e33) = value_param_pattern [symbolic = %self.param_patt (constants.%self.param_patt.9e9)]
|
||||
// CHECK:STDOUT: %self.patt: @As.WithSelf.Convert.%pattern_type.1 (%pattern_type.e33) = at_binding_pattern self, %self.param_patt [symbolic = %self.patt (constants.%self.patt.51c)]
|
||||
// CHECK:STDOUT: %.1: Core.Form = init_form %T [symbolic = %.1 (constants.%.184)]
|
||||
// CHECK:STDOUT: %pattern_type.2: type = pattern_type %T [symbolic = %pattern_type.2 (constants.%pattern_type.51d)]
|
||||
// CHECK:STDOUT: %return.param_patt: @As.WithSelf.Convert.%pattern_type.2 (%pattern_type.51d) = out_param_pattern [symbolic = %return.param_patt (constants.%return.param_patt.41d)]
|
||||
// CHECK:STDOUT: %return.patt: @As.WithSelf.Convert.%pattern_type.2 (%pattern_type.51d) = return_slot_pattern %return.param_patt, invalid [symbolic = %return.patt (constants.%return.patt.c39)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn;
|
||||
// CHECK:STDOUT: }
|
||||
@@ -1057,7 +1163,13 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32));
|
||||
// CHECK:STDOUT: %Self: @AddWith.WithSelf.Op.%AddWith.type (%AddWith.type.7e9) = symbolic_binding Self, 1 [symbolic = %Self (constants.%Self.96a)]
|
||||
// CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self [symbolic = %Self.as_type (constants.%Self.as_type.331)]
|
||||
// CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type [symbolic = %pattern_type (constants.%pattern_type.aed)]
|
||||
// CHECK:STDOUT: %self.param_patt: @AddWith.WithSelf.Op.%pattern_type (%pattern_type.aed) = value_param_pattern [symbolic = %self.param_patt (constants.%self.param_patt.aae)]
|
||||
// CHECK:STDOUT: %self.patt: @AddWith.WithSelf.Op.%pattern_type (%pattern_type.aed) = at_binding_pattern self, %self.param_patt [symbolic = %self.patt (constants.%self.patt.c4d)]
|
||||
// CHECK:STDOUT: %other.param_patt: @AddWith.WithSelf.Op.%pattern_type (%pattern_type.aed) = value_param_pattern [symbolic = %other.param_patt (constants.%other.param_patt.076)]
|
||||
// CHECK:STDOUT: %other.patt: @AddWith.WithSelf.Op.%pattern_type (%pattern_type.aed) = at_binding_pattern other, %other.param_patt [symbolic = %other.patt (constants.%other.patt.667)]
|
||||
// CHECK:STDOUT: %.1: Core.Form = init_form %Self.as_type [symbolic = %.1 (constants.%.4cc)]
|
||||
// CHECK:STDOUT: %return.param_patt: @AddWith.WithSelf.Op.%pattern_type (%pattern_type.aed) = out_param_pattern [symbolic = %return.param_patt (constants.%return.param_patt.7c8)]
|
||||
// CHECK:STDOUT: %return.patt: @AddWith.WithSelf.Op.%pattern_type (%pattern_type.aed) = return_slot_pattern %return.param_patt, invalid [symbolic = %return.patt (constants.%return.patt.1c8)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn;
|
||||
// CHECK:STDOUT: }
|
||||
@@ -1070,8 +1182,12 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32));
|
||||
// CHECK:STDOUT: %Self: @ImplicitAs.WithSelf.Convert.%ImplicitAs.type (%ImplicitAs.type.3aa) = symbolic_binding Self, 1 [symbolic = %Self (constants.%Self.294)]
|
||||
// CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self [symbolic = %Self.as_type (constants.%Self.as_type.ef0)]
|
||||
// CHECK:STDOUT: %pattern_type.1: type = pattern_type %Self.as_type [symbolic = %pattern_type.1 (constants.%pattern_type.20e)]
|
||||
// CHECK:STDOUT: %self.param_patt: @ImplicitAs.WithSelf.Convert.%pattern_type.1 (%pattern_type.20e) = value_param_pattern [symbolic = %self.param_patt (constants.%self.param_patt.360)]
|
||||
// CHECK:STDOUT: %self.patt: @ImplicitAs.WithSelf.Convert.%pattern_type.1 (%pattern_type.20e) = at_binding_pattern self, %self.param_patt [symbolic = %self.patt (constants.%self.patt.25f)]
|
||||
// CHECK:STDOUT: %.1: Core.Form = init_form %T [symbolic = %.1 (constants.%.184)]
|
||||
// CHECK:STDOUT: %pattern_type.2: type = pattern_type %T [symbolic = %pattern_type.2 (constants.%pattern_type.51d)]
|
||||
// CHECK:STDOUT: %return.param_patt: @ImplicitAs.WithSelf.Convert.%pattern_type.2 (%pattern_type.51d) = out_param_pattern [symbolic = %return.param_patt (constants.%return.param_patt.41d)]
|
||||
// CHECK:STDOUT: %return.patt: @ImplicitAs.WithSelf.Convert.%pattern_type.2 (%pattern_type.51d) = return_slot_pattern %return.param_patt, invalid [symbolic = %return.patt (constants.%return.patt.c39)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn;
|
||||
// CHECK:STDOUT: }
|
||||
@@ -1126,6 +1242,7 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32));
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @As(constants.%T) {
|
||||
// CHECK:STDOUT: %T.patt => constants.%T.patt
|
||||
// CHECK:STDOUT: %T => constants.%T
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -1137,11 +1254,16 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32));
|
||||
// CHECK:STDOUT: %Self => constants.%Self.37a
|
||||
// CHECK:STDOUT: %Self.as_type => constants.%Self.as_type.d4a
|
||||
// CHECK:STDOUT: %pattern_type.1 => constants.%pattern_type.e33
|
||||
// CHECK:STDOUT: %self.param_patt => constants.%self.param_patt.9e9
|
||||
// CHECK:STDOUT: %self.patt => constants.%self.patt.51c
|
||||
// CHECK:STDOUT: %.1 => constants.%.184
|
||||
// CHECK:STDOUT: %pattern_type.2 => constants.%pattern_type.51d
|
||||
// CHECK:STDOUT: %return.param_patt => constants.%return.param_patt.41d
|
||||
// CHECK:STDOUT: %return.patt => constants.%return.patt.c39
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @As(constants.%i32.builtin) {
|
||||
// CHECK:STDOUT: %T.patt => constants.%T.patt
|
||||
// CHECK:STDOUT: %T => constants.%i32.builtin
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
@@ -1172,6 +1294,7 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32));
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @AddWith(constants.%T) {
|
||||
// CHECK:STDOUT: %T.patt => constants.%T.patt
|
||||
// CHECK:STDOUT: %T => constants.%T
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -1183,10 +1306,17 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32));
|
||||
// CHECK:STDOUT: %Self => constants.%Self.96a
|
||||
// CHECK:STDOUT: %Self.as_type => constants.%Self.as_type.331
|
||||
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.aed
|
||||
// CHECK:STDOUT: %self.param_patt => constants.%self.param_patt.aae
|
||||
// CHECK:STDOUT: %self.patt => constants.%self.patt.c4d
|
||||
// CHECK:STDOUT: %other.param_patt => constants.%other.param_patt.076
|
||||
// CHECK:STDOUT: %other.patt => constants.%other.patt.667
|
||||
// CHECK:STDOUT: %.1 => constants.%.4cc
|
||||
// CHECK:STDOUT: %return.param_patt => constants.%return.param_patt.7c8
|
||||
// CHECK:STDOUT: %return.patt => constants.%return.patt.1c8
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @AddWith(constants.%i32.builtin) {
|
||||
// CHECK:STDOUT: %T.patt => constants.%T.patt
|
||||
// CHECK:STDOUT: %T => constants.%i32.builtin
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
@@ -1217,6 +1347,7 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32));
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @ImplicitAs(constants.%T) {
|
||||
// CHECK:STDOUT: %T.patt => constants.%T.patt
|
||||
// CHECK:STDOUT: %T => constants.%T
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -1228,11 +1359,16 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32));
|
||||
// CHECK:STDOUT: %Self => constants.%Self.294
|
||||
// CHECK:STDOUT: %Self.as_type => constants.%Self.as_type.ef0
|
||||
// CHECK:STDOUT: %pattern_type.1 => constants.%pattern_type.20e
|
||||
// CHECK:STDOUT: %self.param_patt => constants.%self.param_patt.360
|
||||
// CHECK:STDOUT: %self.patt => constants.%self.patt.25f
|
||||
// CHECK:STDOUT: %.1 => constants.%.184
|
||||
// CHECK:STDOUT: %pattern_type.2 => constants.%pattern_type.51d
|
||||
// CHECK:STDOUT: %return.param_patt => constants.%return.param_patt.41d
|
||||
// CHECK:STDOUT: %return.patt => constants.%return.patt.c39
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @ImplicitAs(Core.IntLiteral) {
|
||||
// CHECK:STDOUT: %T.patt => constants.%T.patt
|
||||
// CHECK:STDOUT: %T => Core.IntLiteral
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
@@ -1252,6 +1388,7 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32));
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @ImplicitAs(constants.%i32.builtin) {
|
||||
// CHECK:STDOUT: %T.patt => constants.%T.patt
|
||||
// CHECK:STDOUT: %T => constants.%i32.builtin
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
|
||||
+12
-6
@@ -22,7 +22,13 @@ 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.6b6: type = pattern_type %i32 [concrete]
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type.6b6 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.6b6 = at_binding_pattern a, %a.param_patt [concrete]
|
||||
// CHECK:STDOUT: %b.param_patt: %pattern_type.6b6 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %b.patt: %pattern_type.6b6 = at_binding_pattern b, %b.param_patt [concrete]
|
||||
// CHECK:STDOUT: %.795: Core.Form = init_form %i32 [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.6b6 = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32 [concrete]
|
||||
// CHECK:STDOUT: %Add.type: type = fn_type @Add [concrete]
|
||||
// CHECK:STDOUT: %Add: %Add.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
@@ -43,12 +49,12 @@ fn Add(a: i32, b: i32) -> i32 = "int.sadd";
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %Add.decl: %Add.type = fn_decl @Add [concrete = constants.%Add] {
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type.6b6 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.6b6 = at_binding_pattern a, %a.param_patt [concrete]
|
||||
// CHECK:STDOUT: %b.param_patt: %pattern_type.6b6 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %b.patt: %pattern_type.6b6 = at_binding_pattern b, %b.param_patt [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.6b6 = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32.loc15_27 [concrete]
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type.6b6 = value_param_pattern [concrete = constants.%a.param_patt]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.6b6 = at_binding_pattern a, %a.param_patt [concrete = constants.%a.patt]
|
||||
// CHECK:STDOUT: %b.param_patt: %pattern_type.6b6 = value_param_pattern [concrete = constants.%b.param_patt]
|
||||
// CHECK:STDOUT: %b.patt: %pattern_type.6b6 = at_binding_pattern b, %b.param_patt [concrete = constants.%b.patt]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.6b6 = out_param_pattern [concrete = constants.%return.param_patt]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32.loc15_27 [concrete = constants.%return.patt]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %i32.loc15_27: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %.loc15: Core.Form = init_form %i32.loc15_27 [concrete = constants.%.795]
|
||||
|
||||
+42
-36
@@ -51,7 +51,13 @@ 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.6b6: type = pattern_type %i32 [concrete]
|
||||
// CHECK:STDOUT: %n.param_patt: %pattern_type.6b6 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %n.patt: %pattern_type.6b6 = at_binding_pattern n, %n.param_patt [concrete]
|
||||
// CHECK:STDOUT: %m.param_patt: %pattern_type.6b6 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %m.patt: %pattern_type.6b6 = at_binding_pattern m, %m.param_patt [concrete]
|
||||
// CHECK:STDOUT: %.795: Core.Form = init_form %i32 [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt.a9a: %pattern_type.6b6 = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt.e1b: %pattern_type.6b6 = return_slot_pattern %return.param_patt.a9a, %i32 [concrete]
|
||||
// CHECK:STDOUT: %A.type.9f4a6d.1: type = fn_type @A.loc15 [concrete]
|
||||
// CHECK:STDOUT: %A.921eb9.1: %A.type.9f4a6d.1 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %A.type.9f4a6d.2: type = fn_type @A.loc23 [concrete]
|
||||
@@ -98,12 +104,12 @@ fn C(n: i32, m: i32) -> i32 = "int.sadd";
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %A.decl.loc15: %A.type.9f4a6d.1 = fn_decl @A.loc15 [concrete = constants.%A.921eb9.1] {
|
||||
// CHECK:STDOUT: %n.param_patt: %pattern_type.6b6 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %n.patt: %pattern_type.6b6 = at_binding_pattern n, %n.param_patt [concrete]
|
||||
// CHECK:STDOUT: %m.param_patt: %pattern_type.6b6 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %m.patt: %pattern_type.6b6 = at_binding_pattern m, %m.param_patt [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.6b6 = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32.loc15_25 [concrete]
|
||||
// CHECK:STDOUT: %n.param_patt: %pattern_type.6b6 = value_param_pattern [concrete = constants.%n.param_patt]
|
||||
// CHECK:STDOUT: %n.patt: %pattern_type.6b6 = at_binding_pattern n, %n.param_patt [concrete = constants.%n.patt]
|
||||
// CHECK:STDOUT: %m.param_patt: %pattern_type.6b6 = value_param_pattern [concrete = constants.%m.param_patt]
|
||||
// CHECK:STDOUT: %m.patt: %pattern_type.6b6 = at_binding_pattern m, %m.param_patt [concrete = constants.%m.patt]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.6b6 = out_param_pattern [concrete = constants.%return.param_patt.a9a]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32.loc15_25 [concrete = constants.%return.patt.e1b]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %i32.loc15_25: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %.loc15: Core.Form = init_form %i32.loc15_25 [concrete = constants.%.795]
|
||||
@@ -117,12 +123,12 @@ fn C(n: i32, m: i32) -> i32 = "int.sadd";
|
||||
// CHECK:STDOUT: %return: ref %i32 = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %A.decl.loc23: %A.type.9f4a6d.2 = fn_decl @A.loc23 [concrete = constants.%A.921eb9.2] {
|
||||
// CHECK:STDOUT: %n.param_patt: %pattern_type.6b6 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %n.patt: %pattern_type.6b6 = at_binding_pattern n, %n.param_patt [concrete]
|
||||
// CHECK:STDOUT: %m.param_patt: %pattern_type.6b6 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %m.patt: %pattern_type.6b6 = at_binding_pattern m, %m.param_patt [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.6b6 = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32.loc23_32 [concrete]
|
||||
// CHECK:STDOUT: %n.param_patt: %pattern_type.6b6 = value_param_pattern [concrete = constants.%n.param_patt]
|
||||
// CHECK:STDOUT: %n.patt: %pattern_type.6b6 = at_binding_pattern n, %n.param_patt [concrete = constants.%n.patt]
|
||||
// CHECK:STDOUT: %m.param_patt: %pattern_type.6b6 = value_param_pattern [concrete = constants.%m.param_patt]
|
||||
// CHECK:STDOUT: %m.patt: %pattern_type.6b6 = at_binding_pattern m, %m.param_patt [concrete = constants.%m.patt]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.6b6 = out_param_pattern [concrete = constants.%return.param_patt.a9a]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32.loc23_32 [concrete = constants.%return.patt.e1b]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %i32.loc23_32: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %.loc23: Core.Form = init_form %i32.loc23_32 [concrete = constants.%.795]
|
||||
@@ -136,12 +142,12 @@ fn C(n: i32, m: i32) -> i32 = "int.sadd";
|
||||
// CHECK:STDOUT: %return: ref %i32 = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %B.decl.loc25: %B.type.573c71.1 = fn_decl @B.loc25 [concrete = constants.%B.08ed21.1] {
|
||||
// CHECK:STDOUT: %n.param_patt: %pattern_type.6b6 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %n.patt: %pattern_type.6b6 = at_binding_pattern n, %n.param_patt [concrete]
|
||||
// CHECK:STDOUT: %m.param_patt: %pattern_type.6b6 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %m.patt: %pattern_type.6b6 = at_binding_pattern m, %m.param_patt [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.6b6 = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32.loc25_32 [concrete]
|
||||
// CHECK:STDOUT: %n.param_patt: %pattern_type.6b6 = value_param_pattern [concrete = constants.%n.param_patt]
|
||||
// CHECK:STDOUT: %n.patt: %pattern_type.6b6 = at_binding_pattern n, %n.param_patt [concrete = constants.%n.patt]
|
||||
// CHECK:STDOUT: %m.param_patt: %pattern_type.6b6 = value_param_pattern [concrete = constants.%m.param_patt]
|
||||
// CHECK:STDOUT: %m.patt: %pattern_type.6b6 = at_binding_pattern m, %m.param_patt [concrete = constants.%m.patt]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.6b6 = out_param_pattern [concrete = constants.%return.param_patt.a9a]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32.loc25_32 [concrete = constants.%return.patt.e1b]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %i32.loc25_32: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %.loc25: Core.Form = init_form %i32.loc25_32 [concrete = constants.%.795]
|
||||
@@ -155,12 +161,12 @@ fn C(n: i32, m: i32) -> i32 = "int.sadd";
|
||||
// CHECK:STDOUT: %return: ref %i32 = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %B.decl.loc33: %B.type.573c71.2 = fn_decl @B.loc33 [concrete = constants.%B.08ed21.2] {
|
||||
// CHECK:STDOUT: %n.param_patt: %pattern_type.6b6 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %n.patt: %pattern_type.6b6 = at_binding_pattern n, %n.param_patt [concrete]
|
||||
// CHECK:STDOUT: %m.param_patt: %pattern_type.6b6 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %m.patt: %pattern_type.6b6 = at_binding_pattern m, %m.param_patt [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.6b6 = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32.loc33_25 [concrete]
|
||||
// CHECK:STDOUT: %n.param_patt: %pattern_type.6b6 = value_param_pattern [concrete = constants.%n.param_patt]
|
||||
// CHECK:STDOUT: %n.patt: %pattern_type.6b6 = at_binding_pattern n, %n.param_patt [concrete = constants.%n.patt]
|
||||
// CHECK:STDOUT: %m.param_patt: %pattern_type.6b6 = value_param_pattern [concrete = constants.%m.param_patt]
|
||||
// CHECK:STDOUT: %m.patt: %pattern_type.6b6 = at_binding_pattern m, %m.param_patt [concrete = constants.%m.patt]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.6b6 = out_param_pattern [concrete = constants.%return.param_patt.a9a]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32.loc33_25 [concrete = constants.%return.patt.e1b]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %i32.loc33_25: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %.loc33: Core.Form = init_form %i32.loc33_25 [concrete = constants.%.795]
|
||||
@@ -174,12 +180,12 @@ fn C(n: i32, m: i32) -> i32 = "int.sadd";
|
||||
// CHECK:STDOUT: %return: ref %i32 = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %C.decl.loc35: %C.type.322e3b.1 = fn_decl @C.loc35 [concrete = constants.%C.010386.1] {
|
||||
// CHECK:STDOUT: %n.param_patt: %pattern_type.6b6 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %n.patt: %pattern_type.6b6 = at_binding_pattern n, %n.param_patt [concrete]
|
||||
// CHECK:STDOUT: %m.param_patt: %pattern_type.6b6 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %m.patt: %pattern_type.6b6 = at_binding_pattern m, %m.param_patt [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.6b6 = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32.loc35_25 [concrete]
|
||||
// CHECK:STDOUT: %n.param_patt: %pattern_type.6b6 = value_param_pattern [concrete = constants.%n.param_patt]
|
||||
// CHECK:STDOUT: %n.patt: %pattern_type.6b6 = at_binding_pattern n, %n.param_patt [concrete = constants.%n.patt]
|
||||
// CHECK:STDOUT: %m.param_patt: %pattern_type.6b6 = value_param_pattern [concrete = constants.%m.param_patt]
|
||||
// CHECK:STDOUT: %m.patt: %pattern_type.6b6 = at_binding_pattern m, %m.param_patt [concrete = constants.%m.patt]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.6b6 = out_param_pattern [concrete = constants.%return.param_patt.a9a]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32.loc35_25 [concrete = constants.%return.patt.e1b]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %i32.loc35_25: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %.loc35: Core.Form = init_form %i32.loc35_25 [concrete = constants.%.795]
|
||||
@@ -193,12 +199,12 @@ fn C(n: i32, m: i32) -> i32 = "int.sadd";
|
||||
// CHECK:STDOUT: %return: ref %i32 = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %C.decl.loc43: %C.type.322e3b.2 = fn_decl @C.loc43 [concrete = constants.%C.010386.2] {
|
||||
// CHECK:STDOUT: %n.param_patt: %pattern_type.6b6 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %n.patt: %pattern_type.6b6 = at_binding_pattern n, %n.param_patt [concrete]
|
||||
// CHECK:STDOUT: %m.param_patt: %pattern_type.6b6 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %m.patt: %pattern_type.6b6 = at_binding_pattern m, %m.param_patt [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.6b6 = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32.loc43_25 [concrete]
|
||||
// CHECK:STDOUT: %n.param_patt: %pattern_type.6b6 = value_param_pattern [concrete = constants.%n.param_patt]
|
||||
// CHECK:STDOUT: %n.patt: %pattern_type.6b6 = at_binding_pattern n, %n.param_patt [concrete = constants.%n.patt]
|
||||
// CHECK:STDOUT: %m.param_patt: %pattern_type.6b6 = value_param_pattern [concrete = constants.%m.param_patt]
|
||||
// CHECK:STDOUT: %m.patt: %pattern_type.6b6 = at_binding_pattern m, %m.param_patt [concrete = constants.%m.patt]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.6b6 = out_param_pattern [concrete = constants.%return.param_patt.a9a]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32.loc43_25 [concrete = constants.%return.patt.e1b]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %i32.loc43_25: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %.loc43: Core.Form = init_form %i32.loc43_25 [concrete = constants.%.795]
|
||||
|
||||
+38
-22
@@ -37,20 +37,34 @@ var arr: array(i32, Core.AsIntLiteral(Core.TestAdd(Core.AsI32(1), Core.AsI32(2))
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %.805: Core.Form = init_form type [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt.70e: %pattern_type.98f = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt.3ae: %pattern_type.98f = return_slot_pattern %return.param_patt.70e, type [concrete]
|
||||
// CHECK:STDOUT: %MakeIntLiteral.type: type = fn_type @MakeIntLiteral [concrete]
|
||||
// CHECK:STDOUT: %MakeIntLiteral: %MakeIntLiteral.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.dc0: type = pattern_type Core.IntLiteral [concrete]
|
||||
// CHECK:STDOUT: %N.param_patt: %pattern_type.dc0 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %N.patt: %pattern_type.dc0 = at_binding_pattern N, %N.param_patt [concrete]
|
||||
// CHECK:STDOUT: %Int.type: type = fn_type @Int [concrete]
|
||||
// CHECK:STDOUT: %Int: %Int.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %a.param_patt.ba0: %pattern_type.dc0 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %a.patt.442: %pattern_type.dc0 = at_binding_pattern a, %a.param_patt.ba0 [concrete]
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete]
|
||||
// CHECK:STDOUT: %i32.builtin: type = int_type signed, %int_32 [concrete]
|
||||
// CHECK:STDOUT: %.9cb: Core.Form = init_form %i32.builtin [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.956: type = pattern_type %i32.builtin [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt.903: %pattern_type.956 = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt.930: %pattern_type.956 = return_slot_pattern %return.param_patt.903, %i32.builtin [concrete]
|
||||
// CHECK:STDOUT: %AsI32.type: type = fn_type @AsI32 [concrete]
|
||||
// CHECK:STDOUT: %AsI32: %AsI32.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %a.param_patt.b97: %pattern_type.956 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %a.patt.9c9: %pattern_type.956 = at_binding_pattern a, %a.param_patt.b97 [concrete]
|
||||
// CHECK:STDOUT: %.f7d: Core.Form = init_form Core.IntLiteral [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt.eab: %pattern_type.dc0 = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt.cd4: %pattern_type.dc0 = return_slot_pattern %return.param_patt.eab, Core.IntLiteral [concrete]
|
||||
// CHECK:STDOUT: %AsIntLiteral.type: type = fn_type @AsIntLiteral [concrete]
|
||||
// CHECK:STDOUT: %AsIntLiteral: %AsIntLiteral.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %b.param_patt: %pattern_type.956 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %b.patt: %pattern_type.956 = at_binding_pattern b, %b.param_patt [concrete]
|
||||
// CHECK:STDOUT: %TestAdd.type: type = fn_type @TestAdd [concrete]
|
||||
// CHECK:STDOUT: %TestAdd: %TestAdd.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
@@ -65,8 +79,8 @@ var arr: array(i32, Core.AsIntLiteral(Core.TestAdd(Core.AsI32(1), Core.AsI32(2))
|
||||
// CHECK:STDOUT: .TestAdd = %TestAdd.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %MakeIntLiteral.decl: %MakeIntLiteral.type = fn_decl @MakeIntLiteral [concrete = constants.%MakeIntLiteral] {
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.98f = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.98f = return_slot_pattern %return.param_patt, %.loc5_24.1 [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.98f = out_param_pattern [concrete = constants.%return.param_patt.70e]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.98f = return_slot_pattern %return.param_patt, %.loc5_24.1 [concrete = constants.%return.patt.3ae]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %.loc5_24.1: type = type_literal type [concrete = type]
|
||||
// CHECK:STDOUT: %.loc5_24.2: Core.Form = init_form %.loc5_24.1 [concrete = constants.%.805]
|
||||
@@ -79,10 +93,10 @@ var arr: array(i32, Core.AsIntLiteral(Core.TestAdd(Core.AsI32(1), Core.AsI32(2))
|
||||
// CHECK:STDOUT: %.loc6_35.2: type = converted %MakeIntLiteral.call, %.loc6_35.1 [concrete = Core.IntLiteral]
|
||||
// CHECK:STDOUT: %IntLiteral: type = alias_binding IntLiteral, %.loc6_35.2 [concrete = Core.IntLiteral]
|
||||
// CHECK:STDOUT: %Int.decl: %Int.type = fn_decl @Int [concrete = constants.%Int] {
|
||||
// CHECK:STDOUT: %N.param_patt: %pattern_type.dc0 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %N.patt: %pattern_type.dc0 = at_binding_pattern N, %N.param_patt [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.98f = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.98f = return_slot_pattern %return.param_patt, %.loc7_26.1 [concrete]
|
||||
// CHECK:STDOUT: %N.param_patt: %pattern_type.dc0 = value_param_pattern [concrete = constants.%N.param_patt]
|
||||
// CHECK:STDOUT: %N.patt: %pattern_type.dc0 = at_binding_pattern N, %N.param_patt [concrete = constants.%N.patt]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.98f = out_param_pattern [concrete = constants.%return.param_patt.70e]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.98f = return_slot_pattern %return.param_patt, %.loc7_26.1 [concrete = constants.%return.patt.3ae]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %.loc7_26.1: type = type_literal type [concrete = type]
|
||||
// CHECK:STDOUT: %.loc7_26.2: Core.Form = init_form %.loc7_26.1 [concrete = constants.%.805]
|
||||
@@ -93,10 +107,10 @@ var arr: array(i32, Core.AsIntLiteral(Core.TestAdd(Core.AsI32(1), Core.AsI32(2))
|
||||
// CHECK:STDOUT: %return: ref type = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %AsI32.decl: %AsI32.type = fn_decl @AsI32 [concrete = constants.%AsI32] {
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type.dc0 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.dc0 = at_binding_pattern a, %a.param_patt [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.956 = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.956 = return_slot_pattern %return.param_patt, %.loc9_28.1 [concrete]
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type.dc0 = value_param_pattern [concrete = constants.%a.param_patt.ba0]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.dc0 = at_binding_pattern a, %a.param_patt [concrete = constants.%a.patt.442]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.956 = out_param_pattern [concrete = constants.%return.param_patt.903]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.956 = return_slot_pattern %return.param_patt, %.loc9_28.1 [concrete = constants.%return.patt.930]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %.loc9_28.1: type = type_literal constants.%i32.builtin [concrete = constants.%i32.builtin]
|
||||
// CHECK:STDOUT: %.loc9_28.2: Core.Form = init_form %.loc9_28.1 [concrete = constants.%.9cb]
|
||||
@@ -107,10 +121,10 @@ var arr: array(i32, Core.AsIntLiteral(Core.TestAdd(Core.AsI32(1), Core.AsI32(2))
|
||||
// CHECK:STDOUT: %return: ref %i32.builtin = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %AsIntLiteral.decl: %AsIntLiteral.type = fn_decl @AsIntLiteral [concrete = constants.%AsIntLiteral] {
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type.956 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.956 = at_binding_pattern a, %a.param_patt [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.dc0 = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.dc0 = return_slot_pattern %return.param_patt, %IntLiteral.ref [concrete]
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type.956 = value_param_pattern [concrete = constants.%a.param_patt.b97]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.956 = at_binding_pattern a, %a.param_patt [concrete = constants.%a.patt.9c9]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.dc0 = out_param_pattern [concrete = constants.%return.param_patt.eab]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.dc0 = return_slot_pattern %return.param_patt, %IntLiteral.ref [concrete = constants.%return.patt.cd4]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %IntLiteral.ref: type = name_ref IntLiteral, file.%IntLiteral [concrete = Core.IntLiteral]
|
||||
// CHECK:STDOUT: %.loc10_28: Core.Form = init_form %IntLiteral.ref [concrete = constants.%.f7d]
|
||||
@@ -121,12 +135,12 @@ var arr: array(i32, Core.AsIntLiteral(Core.TestAdd(Core.AsI32(1), Core.AsI32(2))
|
||||
// CHECK:STDOUT: %return: ref Core.IntLiteral = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %TestAdd.decl: %TestAdd.type = fn_decl @TestAdd [concrete = constants.%TestAdd] {
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type.956 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.956 = at_binding_pattern a, %a.param_patt [concrete]
|
||||
// CHECK:STDOUT: %b.param_patt: %pattern_type.956 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %b.patt: %pattern_type.956 = at_binding_pattern b, %b.param_patt [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.956 = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.956 = return_slot_pattern %return.param_patt, %.loc12_31.1 [concrete]
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type.956 = value_param_pattern [concrete = constants.%a.param_patt.b97]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.956 = at_binding_pattern a, %a.param_patt [concrete = constants.%a.patt.9c9]
|
||||
// CHECK:STDOUT: %b.param_patt: %pattern_type.956 = value_param_pattern [concrete = constants.%b.param_patt]
|
||||
// CHECK:STDOUT: %b.patt: %pattern_type.956 = at_binding_pattern b, %b.param_patt [concrete = constants.%b.patt]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.956 = out_param_pattern [concrete = constants.%return.param_patt.903]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.956 = return_slot_pattern %return.param_patt, %.loc12_31.1 [concrete = constants.%return.patt.930]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %.loc12_31.1: type = type_literal constants.%i32.builtin [concrete = constants.%i32.builtin]
|
||||
// CHECK:STDOUT: %.loc12_31.2: Core.Form = init_form %.loc12_31.1 [concrete = constants.%.9cb]
|
||||
@@ -172,6 +186,8 @@ var arr: array(i32, Core.AsIntLiteral(Core.TestAdd(Core.AsI32(1), Core.AsI32(2))
|
||||
// CHECK:STDOUT: %int_3.1ba: Core.IntLiteral = int_value 3 [concrete]
|
||||
// CHECK:STDOUT: %array_type: type = array_type %int_3.1ba, %i32.builtin [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.9e2: type = pattern_type %array_type [concrete]
|
||||
// CHECK:STDOUT: %arr.patt: %pattern_type.9e2 = ref_binding_pattern arr [concrete]
|
||||
// CHECK:STDOUT: %arr.var_patt: %pattern_type.9e2 = var_pattern %arr.patt [concrete]
|
||||
// CHECK:STDOUT: %tuple.type: type = tuple_type (%i32.builtin, %i32.builtin, %i32.builtin) [concrete]
|
||||
// CHECK:STDOUT: %tuple: %tuple.type = tuple_value (%int_1.f38, %int_2.5a1, %int_3.a0f) [concrete]
|
||||
// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete]
|
||||
@@ -199,8 +215,8 @@ var arr: array(i32, Core.AsIntLiteral(Core.TestAdd(Core.AsI32(1), Core.AsI32(2))
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %arr.patt: %pattern_type.9e2 = ref_binding_pattern arr [concrete]
|
||||
// CHECK:STDOUT: %arr.var_patt: %pattern_type.9e2 = var_pattern %arr.patt [concrete]
|
||||
// CHECK:STDOUT: %arr.patt: %pattern_type.9e2 = ref_binding_pattern arr [concrete = constants.%arr.patt]
|
||||
// CHECK:STDOUT: %arr.var_patt: %pattern_type.9e2 = var_pattern %arr.patt [concrete = constants.%arr.var_patt]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %arr.var: ref %array_type = var %arr.var_patt [concrete]
|
||||
// CHECK:STDOUT: %.loc4_82: type = splice_block %array_type [concrete = constants.%array_type] {
|
||||
|
||||
+46
-14
@@ -30,7 +30,13 @@ var arr: array(i32, (1 as i32).(I.F)(2));
|
||||
// CHECK:STDOUT: %Self.37e: %I.type = symbolic_binding Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %Self.as_type.c84: type = facet_access_type %Self.37e [symbolic]
|
||||
// CHECK:STDOUT: %pattern_type.c60: type = pattern_type %Self.as_type.c84 [symbolic]
|
||||
// CHECK:STDOUT: %self.param_patt.a33: %pattern_type.c60 = value_param_pattern [symbolic]
|
||||
// CHECK:STDOUT: %self.patt.696: %pattern_type.c60 = at_binding_pattern self, %self.param_patt.a33 [symbolic]
|
||||
// CHECK:STDOUT: %other.param_patt.03c: %pattern_type.c60 = value_param_pattern [symbolic]
|
||||
// CHECK:STDOUT: %other.patt.852: %pattern_type.c60 = at_binding_pattern other, %other.param_patt.03c [symbolic]
|
||||
// CHECK:STDOUT: %.8fc: Core.Form = init_form %Self.as_type.c84 [symbolic]
|
||||
// CHECK:STDOUT: %return.param_patt.434: %pattern_type.c60 = out_param_pattern [symbolic]
|
||||
// CHECK:STDOUT: %return.patt.44a: %pattern_type.c60 = return_slot_pattern %return.param_patt.434, %Self.as_type.c84 [symbolic]
|
||||
// CHECK:STDOUT: %I.WithSelf.F.type.dcc: type = fn_type @I.WithSelf.F, @I.WithSelf(%Self.37e) [symbolic]
|
||||
// CHECK:STDOUT: %I.WithSelf.F.ec6: %I.WithSelf.F.type.dcc = struct_value () [symbolic]
|
||||
// CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type @I [concrete]
|
||||
@@ -41,7 +47,13 @@ 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: <witness> = impl_witness @i32.as.I.impl.%I.impl_witness_table [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.6b6: type = pattern_type %i32 [concrete]
|
||||
// CHECK:STDOUT: %self.param_patt.049: %pattern_type.6b6 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %self.patt.f6c: %pattern_type.6b6 = at_binding_pattern self, %self.param_patt.049 [concrete]
|
||||
// CHECK:STDOUT: %other.param_patt.12c: %pattern_type.6b6 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %other.patt.656: %pattern_type.6b6 = at_binding_pattern other, %other.param_patt.12c [concrete]
|
||||
// CHECK:STDOUT: %.795: Core.Form = init_form %i32 [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt.a9a: %pattern_type.6b6 = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt.e1b: %pattern_type.6b6 = return_slot_pattern %return.param_patt.a9a, %i32 [concrete]
|
||||
// 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]
|
||||
@@ -99,6 +111,8 @@ var arr: array(i32, (1 as i32).(I.F)(2));
|
||||
// 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: %pattern_type.771: type = pattern_type %array_type [concrete]
|
||||
// CHECK:STDOUT: %arr.patt: %pattern_type.771 = ref_binding_pattern arr [concrete]
|
||||
// CHECK:STDOUT: %arr.var_patt: %pattern_type.771 = var_pattern %arr.patt [concrete]
|
||||
// CHECK:STDOUT: %DefaultOrUnformed.type: type = facet_type <@DefaultOrUnformed> [concrete]
|
||||
// CHECK:STDOUT: %T.67d: type = symbolic_binding T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %T.as.DefaultOrUnformed.impl.Op.type.150: type = fn_type @T.as.DefaultOrUnformed.impl.Op, @T.as.DefaultOrUnformed.impl(%T.67d) [symbolic]
|
||||
@@ -146,8 +160,8 @@ var arr: array(i32, (1 as i32).(I.F)(2));
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %arr.patt: %pattern_type.771 = ref_binding_pattern arr [concrete]
|
||||
// CHECK:STDOUT: %arr.var_patt: %pattern_type.771 = var_pattern %arr.patt [concrete]
|
||||
// CHECK:STDOUT: %arr.patt: %pattern_type.771 = ref_binding_pattern arr [concrete = constants.%arr.patt]
|
||||
// CHECK:STDOUT: %arr.var_patt: %pattern_type.771 = var_pattern %arr.patt [concrete = constants.%arr.var_patt]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %arr.var: ref %array_type = var %arr.var_patt [concrete]
|
||||
// CHECK:STDOUT: %.loc23_40: type = splice_block %array_type [concrete = constants.%array_type] {
|
||||
@@ -194,12 +208,12 @@ var arr: array(i32, (1 as i32).(I.F)(2));
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !with Self:
|
||||
// CHECK:STDOUT: %I.WithSelf.F.decl: @I.WithSelf.%I.WithSelf.F.type (%I.WithSelf.F.type.dcc) = fn_decl @I.WithSelf.F [symbolic = @I.WithSelf.%I.WithSelf.F (constants.%I.WithSelf.F.ec6)] {
|
||||
// CHECK:STDOUT: %self.param_patt: @I.WithSelf.F.%pattern_type (%pattern_type.c60) = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %self.patt: @I.WithSelf.F.%pattern_type (%pattern_type.c60) = at_binding_pattern self, %self.param_patt [concrete]
|
||||
// CHECK:STDOUT: %other.param_patt: @I.WithSelf.F.%pattern_type (%pattern_type.c60) = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %other.patt: @I.WithSelf.F.%pattern_type (%pattern_type.c60) = at_binding_pattern other, %other.param_patt [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt: @I.WithSelf.F.%pattern_type (%pattern_type.c60) = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt: @I.WithSelf.F.%pattern_type (%pattern_type.c60) = return_slot_pattern %return.param_patt, %.loc16_30.2 [concrete]
|
||||
// CHECK:STDOUT: %self.param_patt.loc16_8.1: @I.WithSelf.F.%pattern_type (%pattern_type.c60) = value_param_pattern [symbolic = %self.param_patt.loc16_8.2 (constants.%self.param_patt.a33)]
|
||||
// CHECK:STDOUT: %self.patt.loc16_8.1: @I.WithSelf.F.%pattern_type (%pattern_type.c60) = at_binding_pattern self, %self.param_patt.loc16_8.1 [symbolic = %self.patt.loc16_8.2 (constants.%self.patt.696)]
|
||||
// CHECK:STDOUT: %other.param_patt.loc16_19.1: @I.WithSelf.F.%pattern_type (%pattern_type.c60) = value_param_pattern [symbolic = %other.param_patt.loc16_19.2 (constants.%other.param_patt.03c)]
|
||||
// CHECK:STDOUT: %other.patt.loc16_19.1: @I.WithSelf.F.%pattern_type (%pattern_type.c60) = at_binding_pattern other, %other.param_patt.loc16_19.1 [symbolic = %other.patt.loc16_19.2 (constants.%other.patt.852)]
|
||||
// CHECK:STDOUT: %return.param_patt.loc16_30.1: @I.WithSelf.F.%pattern_type (%pattern_type.c60) = out_param_pattern [symbolic = %return.param_patt.loc16_30.2 (constants.%return.param_patt.434)]
|
||||
// CHECK:STDOUT: %return.patt.loc16_27.1: @I.WithSelf.F.%pattern_type (%pattern_type.c60) = return_slot_pattern %return.param_patt.loc16_30.1, %.loc16_30.2 [symbolic = %return.patt.loc16_27.2 (constants.%return.patt.44a)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %Self.ref.loc16_30: %I.type = name_ref Self, @I.%Self [symbolic = %Self (constants.%Self.37e)]
|
||||
// CHECK:STDOUT: %Self.as_type.loc16_30: type = facet_access_type %Self.ref.loc16_30 [symbolic = %Self.as_type.loc16_8.1 (constants.%Self.as_type.c84)]
|
||||
@@ -234,12 +248,12 @@ var arr: array(i32, (1 as i32).(I.F)(2));
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl @i32.as.I.impl: %i32 as %I.ref {
|
||||
// CHECK:STDOUT: %i32.as.I.impl.F.decl: %i32.as.I.impl.F.type = fn_decl @i32.as.I.impl.F [concrete = constants.%i32.as.I.impl.F] {
|
||||
// CHECK:STDOUT: %self.param_patt: %pattern_type.6b6 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %self.patt: %pattern_type.6b6 = at_binding_pattern self, %self.param_patt [concrete]
|
||||
// CHECK:STDOUT: %other.param_patt: %pattern_type.6b6 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %other.patt: %pattern_type.6b6 = at_binding_pattern other, %other.param_patt [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.6b6 = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32.loc20_34 [concrete]
|
||||
// CHECK:STDOUT: %self.param_patt: %pattern_type.6b6 = value_param_pattern [concrete = constants.%self.param_patt.049]
|
||||
// CHECK:STDOUT: %self.patt: %pattern_type.6b6 = at_binding_pattern self, %self.param_patt [concrete = constants.%self.patt.f6c]
|
||||
// CHECK:STDOUT: %other.param_patt: %pattern_type.6b6 = value_param_pattern [concrete = constants.%other.param_patt.12c]
|
||||
// CHECK:STDOUT: %other.patt: %pattern_type.6b6 = at_binding_pattern other, %other.param_patt [concrete = constants.%other.patt.656]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.6b6 = out_param_pattern [concrete = constants.%return.param_patt.a9a]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32.loc20_34 [concrete = constants.%return.patt.e1b]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %i32.loc20_34: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %.loc20: Core.Form = init_form %i32.loc20_34 [concrete = constants.%.795]
|
||||
@@ -265,7 +279,13 @@ var arr: array(i32, (1 as i32).(I.F)(2));
|
||||
// CHECK:STDOUT: %Self: %I.type = symbolic_binding Self, 0 [symbolic = %Self (constants.%Self.37e)]
|
||||
// CHECK:STDOUT: %Self.as_type.loc16_8.1: type = facet_access_type %Self [symbolic = %Self.as_type.loc16_8.1 (constants.%Self.as_type.c84)]
|
||||
// CHECK:STDOUT: %pattern_type: type = pattern_type %Self.as_type.loc16_8.1 [symbolic = %pattern_type (constants.%pattern_type.c60)]
|
||||
// CHECK:STDOUT: %self.param_patt.loc16_8.2: @I.WithSelf.F.%pattern_type (%pattern_type.c60) = value_param_pattern [symbolic = %self.param_patt.loc16_8.2 (constants.%self.param_patt.a33)]
|
||||
// CHECK:STDOUT: %self.patt.loc16_8.2: @I.WithSelf.F.%pattern_type (%pattern_type.c60) = at_binding_pattern self, %self.param_patt.loc16_8.2 [symbolic = %self.patt.loc16_8.2 (constants.%self.patt.696)]
|
||||
// CHECK:STDOUT: %other.param_patt.loc16_19.2: @I.WithSelf.F.%pattern_type (%pattern_type.c60) = value_param_pattern [symbolic = %other.param_patt.loc16_19.2 (constants.%other.param_patt.03c)]
|
||||
// CHECK:STDOUT: %other.patt.loc16_19.2: @I.WithSelf.F.%pattern_type (%pattern_type.c60) = at_binding_pattern other, %other.param_patt.loc16_19.2 [symbolic = %other.patt.loc16_19.2 (constants.%other.patt.852)]
|
||||
// CHECK:STDOUT: %.loc16_30.1: Core.Form = init_form %Self.as_type.loc16_8.1 [symbolic = %.loc16_30.1 (constants.%.8fc)]
|
||||
// CHECK:STDOUT: %return.param_patt.loc16_30.2: @I.WithSelf.F.%pattern_type (%pattern_type.c60) = out_param_pattern [symbolic = %return.param_patt.loc16_30.2 (constants.%return.param_patt.434)]
|
||||
// CHECK:STDOUT: %return.patt.loc16_27.2: @I.WithSelf.F.%pattern_type (%pattern_type.c60) = return_slot_pattern %return.param_patt.loc16_30.2, %Self.as_type.loc16_8.1 [symbolic = %return.patt.loc16_27.2 (constants.%return.patt.44a)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn(%self.param: @I.WithSelf.F.%Self.as_type.loc16_8.1 (%Self.as_type.c84), %other.param: @I.WithSelf.F.%Self.as_type.loc16_8.1 (%Self.as_type.c84)) -> out %return.param: @I.WithSelf.F.%Self.as_type.loc16_8.1 (%Self.as_type.c84);
|
||||
// CHECK:STDOUT: }
|
||||
@@ -296,7 +316,13 @@ var arr: array(i32, (1 as i32).(I.F)(2));
|
||||
// CHECK:STDOUT: %Self => constants.%Self.37e
|
||||
// CHECK:STDOUT: %Self.as_type.loc16_8.1 => constants.%Self.as_type.c84
|
||||
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.c60
|
||||
// CHECK:STDOUT: %self.param_patt.loc16_8.2 => constants.%self.param_patt.a33
|
||||
// CHECK:STDOUT: %self.patt.loc16_8.2 => constants.%self.patt.696
|
||||
// CHECK:STDOUT: %other.param_patt.loc16_19.2 => constants.%other.param_patt.03c
|
||||
// CHECK:STDOUT: %other.patt.loc16_19.2 => constants.%other.patt.852
|
||||
// CHECK:STDOUT: %.loc16_30.1 => constants.%.8fc
|
||||
// CHECK:STDOUT: %return.param_patt.loc16_30.2 => constants.%return.param_patt.434
|
||||
// CHECK:STDOUT: %return.patt.loc16_27.2 => constants.%return.patt.44a
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @I.WithSelf(constants.%I.facet) {
|
||||
@@ -310,6 +336,12 @@ var arr: array(i32, (1 as i32).(I.F)(2));
|
||||
// CHECK:STDOUT: %Self => constants.%I.facet
|
||||
// CHECK:STDOUT: %Self.as_type.loc16_8.1 => constants.%i32
|
||||
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.6b6
|
||||
// CHECK:STDOUT: %self.param_patt.loc16_8.2 => constants.%self.param_patt.049
|
||||
// CHECK:STDOUT: %self.patt.loc16_8.2 => constants.%self.patt.f6c
|
||||
// CHECK:STDOUT: %other.param_patt.loc16_19.2 => constants.%other.param_patt.12c
|
||||
// CHECK:STDOUT: %other.patt.loc16_19.2 => constants.%other.patt.656
|
||||
// CHECK:STDOUT: %.loc16_30.1 => constants.%.795
|
||||
// CHECK:STDOUT: %return.param_patt.loc16_30.2 => constants.%return.param_patt.a9a
|
||||
// CHECK:STDOUT: %return.patt.loc16_27.2 => constants.%return.patt.e1b
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
@@ -43,6 +43,8 @@ fn Mul = "int.smul";
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %.795: Core.Form = init_form %i32 [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.6b6: type = pattern_type %i32 [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.6b6 = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32 [concrete]
|
||||
// CHECK:STDOUT: %Add.type: type = fn_type @Add [concrete]
|
||||
// CHECK:STDOUT: %Add: %Add.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Mul.type: type = fn_type @Mul [concrete]
|
||||
@@ -66,8 +68,8 @@ fn Mul = "int.smul";
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %Add.decl: %Add.type = fn_decl @Add [concrete = constants.%Add] {
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.6b6 = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32 [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.6b6 = out_param_pattern [concrete = constants.%return.param_patt]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32 [concrete = constants.%return.patt]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %.loc10: Core.Form = init_form %i32 [concrete = constants.%.795]
|
||||
|
||||
+8
-4
@@ -27,10 +27,14 @@ fn Main() {
|
||||
// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete]
|
||||
// CHECK:STDOUT: %.262: Core.Form = init_form %empty_tuple.type [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.cb1 = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.cb1 = return_slot_pattern %return.param_patt, %empty_tuple.type [concrete]
|
||||
// CHECK:STDOUT: %A.type: type = fn_type @A [concrete]
|
||||
// CHECK:STDOUT: %A: %A.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Main.type: type = fn_type @Main [concrete]
|
||||
// CHECK:STDOUT: %Main: %Main.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %b.patt: %pattern_type.cb1 = ref_binding_pattern b [concrete]
|
||||
// CHECK:STDOUT: %b.var_patt: %pattern_type.cb1 = var_pattern %b.patt [concrete]
|
||||
// CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete]
|
||||
// CHECK:STDOUT: %Destroy.Op.type: type = fn_type @Destroy.Op [concrete]
|
||||
// CHECK:STDOUT: %Destroy.Op: %Destroy.Op.type = struct_value () [concrete]
|
||||
@@ -54,8 +58,8 @@ fn Main() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %A.decl: %A.type = fn_decl @A [concrete = constants.%A] {
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.cb1 = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.cb1 = return_slot_pattern %return.param_patt, %.loc15_12.2 [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.cb1 = out_param_pattern [concrete = constants.%return.param_patt]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.cb1 = return_slot_pattern %return.param_patt, %.loc15_12.2 [concrete = constants.%return.patt]
|
||||
// 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]
|
||||
@@ -79,8 +83,8 @@ fn Main() {
|
||||
// CHECK:STDOUT: fn @Main() {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %b.patt: %pattern_type.cb1 = ref_binding_pattern b [concrete]
|
||||
// CHECK:STDOUT: %b.var_patt: %pattern_type.cb1 = var_pattern %b.patt [concrete]
|
||||
// CHECK:STDOUT: %b.patt: %pattern_type.cb1 = ref_binding_pattern b [concrete = constants.%b.patt]
|
||||
// CHECK:STDOUT: %b.var_patt: %pattern_type.cb1 = var_pattern %b.patt [concrete = constants.%b.var_patt]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %b.var: ref %empty_tuple.type = var %b.var_patt
|
||||
// CHECK:STDOUT: %B.ref: %A.type = name_ref B, file.%B [concrete = constants.%A]
|
||||
|
||||
@@ -26,7 +26,11 @@ 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: %a.param_patt: %pattern_type = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type = at_binding_pattern a, %a.param_patt [concrete]
|
||||
// CHECK:STDOUT: %.469: Core.Form = init_form %empty_struct_type [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type = return_slot_pattern %return.param_patt, %empty_struct_type [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]
|
||||
@@ -39,10 +43,10 @@ fn Main() {
|
||||
// CHECK:STDOUT: .Main = %Main.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Echo.decl: %Echo.type = fn_decl @Echo [concrete = constants.%Echo] {
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type = at_binding_pattern a, %a.param_patt [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type = return_slot_pattern %return.param_patt, %.loc15_20.2 [concrete]
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type = value_param_pattern [concrete = constants.%a.param_patt]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type = at_binding_pattern a, %a.param_patt [concrete = constants.%a.patt]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type = out_param_pattern [concrete = constants.%return.param_patt]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type = return_slot_pattern %return.param_patt, %.loc15_20.2 [concrete = constants.%return.patt]
|
||||
// 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]
|
||||
|
||||
@@ -26,7 +26,11 @@ 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: %a.param_patt: %pattern_type = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type = at_binding_pattern a, %a.param_patt [concrete]
|
||||
// CHECK:STDOUT: %.262: Core.Form = init_form %empty_tuple.type [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type = return_slot_pattern %return.param_patt, %empty_tuple.type [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]
|
||||
@@ -39,10 +43,10 @@ fn Main() {
|
||||
// CHECK:STDOUT: .Main = %Main.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Echo.decl: %Echo.type = fn_decl @Echo [concrete = constants.%Echo] {
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type = at_binding_pattern a, %a.param_patt [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type = return_slot_pattern %return.param_patt, %.loc15_20.2 [concrete]
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type = value_param_pattern [concrete = constants.%a.param_patt]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type = at_binding_pattern a, %a.param_patt [concrete = constants.%a.patt]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type = out_param_pattern [concrete = constants.%return.param_patt]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type = return_slot_pattern %return.param_patt, %.loc15_20.2 [concrete = constants.%return.patt]
|
||||
// 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]
|
||||
|
||||
@@ -79,8 +79,13 @@ fn Main() {
|
||||
// CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.6b6: type = pattern_type %i32 [concrete]
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type.6b6 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %a.patt.28ecbf.1: %pattern_type.6b6 = at_binding_pattern a, %a.param_patt [concrete]
|
||||
// CHECK:STDOUT: %Run1.type: type = fn_type @Run1 [concrete]
|
||||
// CHECK:STDOUT: %Run1: %Run1.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %a.patt.28ecbf.2: %pattern_type.6b6 = at_binding_pattern a, %a.param_patt [concrete]
|
||||
// CHECK:STDOUT: %b.param_patt: %pattern_type.6b6 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %b.patt: %pattern_type.6b6 = at_binding_pattern b, %b.param_patt [concrete]
|
||||
// CHECK:STDOUT: %Run2.type: type = fn_type @Run2 [concrete]
|
||||
// CHECK:STDOUT: %Run2: %Run2.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Main.type: type = fn_type @Main [concrete]
|
||||
@@ -109,18 +114,18 @@ fn Main() {
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %Run0.decl: %Run0.type = fn_decl @Run0 [concrete = constants.%Run0] {} {}
|
||||
// CHECK:STDOUT: %Run1.decl: %Run1.type = fn_decl @Run1 [concrete = constants.%Run1] {
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type.6b6 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.6b6 = at_binding_pattern a, %a.param_patt [concrete]
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type.6b6 = value_param_pattern [concrete = constants.%a.param_patt]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.6b6 = at_binding_pattern a, %a.param_patt [concrete = constants.%a.patt.28ecbf.1]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %a.param: %i32 = value_param call_param0
|
||||
// CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %a: %i32 = value_binding a, %a.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Run2.decl: %Run2.type = fn_decl @Run2 [concrete = constants.%Run2] {
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type.6b6 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.6b6 = at_binding_pattern a, %a.param_patt [concrete]
|
||||
// CHECK:STDOUT: %b.param_patt: %pattern_type.6b6 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %b.patt: %pattern_type.6b6 = at_binding_pattern b, %b.param_patt [concrete]
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type.6b6 = value_param_pattern [concrete = constants.%a.param_patt]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.6b6 = at_binding_pattern a, %a.param_patt [concrete = constants.%a.patt.28ecbf.2]
|
||||
// CHECK:STDOUT: %b.param_patt: %pattern_type.6b6 = value_param_pattern [concrete = constants.%b.param_patt]
|
||||
// CHECK:STDOUT: %b.patt: %pattern_type.6b6 = at_binding_pattern b, %b.param_patt [concrete = constants.%b.patt]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %a.param: %i32 = value_param call_param0
|
||||
// CHECK:STDOUT: %i32.loc17_19: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
|
||||
@@ -37,6 +37,8 @@ fn F() {
|
||||
// CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.6b6: type = pattern_type %i32 [concrete]
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type.6b6 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.6b6 = at_binding_pattern a, %a.param_patt [concrete]
|
||||
// CHECK:STDOUT: %G.type: type = fn_type @G [concrete]
|
||||
// CHECK:STDOUT: %G: %G.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [concrete]
|
||||
@@ -65,8 +67,8 @@ fn F() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] {
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type.6b6 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.6b6 = at_binding_pattern a, %a.param_patt [concrete]
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type.6b6 = value_param_pattern [concrete = constants.%a.param_patt]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.6b6 = at_binding_pattern a, %a.param_patt [concrete = constants.%a.patt]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %a.param: %i32 = value_param call_param0
|
||||
// CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
|
||||
@@ -35,6 +35,8 @@ fn Run() {
|
||||
// CHECK:STDOUT: %f64.dc1: type = class_type @Float, @Float(%int_64) [concrete]
|
||||
// CHECK:STDOUT: %.b6c: Core.Form = init_form %f64.dc1 [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.fb7: type = pattern_type %f64.dc1 [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt.b08: %pattern_type.fb7 = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt.8e6: %pattern_type.fb7 = return_slot_pattern %return.param_patt.b08, %f64.dc1 [concrete]
|
||||
// CHECK:STDOUT: %Foo.type: type = fn_type @Foo [concrete]
|
||||
// CHECK:STDOUT: %Foo: %Foo.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %float.6da: Core.FloatLiteral = float_literal_value 10e-1 [concrete]
|
||||
@@ -62,6 +64,8 @@ fn Run() {
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %i32.builtin: type = int_type signed, %int_32 [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.6b6: type = pattern_type %i32 [concrete]
|
||||
// CHECK:STDOUT: %x.patt: %pattern_type.6b6 = ref_binding_pattern x [concrete]
|
||||
// CHECK:STDOUT: %x.var_patt: %pattern_type.6b6 = var_pattern %x.patt [concrete]
|
||||
// CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete]
|
||||
// CHECK:STDOUT: %Destroy.Op.type.1d8f74.2: type = fn_type @Destroy.Op.loc25_3.2 [concrete]
|
||||
// CHECK:STDOUT: %Destroy.Op.1a2547.2: %Destroy.Op.type.1d8f74.2 = struct_value () [concrete]
|
||||
@@ -92,8 +96,8 @@ fn Run() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %Foo.decl: %Foo.type = fn_decl @Foo [concrete = constants.%Foo] {
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.fb7 = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.fb7 = return_slot_pattern %return.param_patt, %f64 [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.fb7 = out_param_pattern [concrete = constants.%return.param_patt.b08]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.fb7 = return_slot_pattern %return.param_patt, %f64 [concrete = constants.%return.patt.8e6]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %f64: type = type_literal constants.%f64.dc1 [concrete = constants.%f64.dc1]
|
||||
// CHECK:STDOUT: %.loc15_13: Core.Form = init_form %f64 [concrete = constants.%.b6c]
|
||||
@@ -118,8 +122,8 @@ fn Run() {
|
||||
// CHECK:STDOUT: fn @Run() {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %x.patt: %pattern_type.6b6 = ref_binding_pattern x [concrete]
|
||||
// CHECK:STDOUT: %x.var_patt: %pattern_type.6b6 = var_pattern %x.patt [concrete]
|
||||
// CHECK:STDOUT: %x.patt: %pattern_type.6b6 = ref_binding_pattern x [concrete = constants.%x.patt]
|
||||
// CHECK:STDOUT: %x.var_patt: %pattern_type.6b6 = var_pattern %x.patt [concrete = constants.%x.var_patt]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %x.var: ref %i32 = var %x.var_patt
|
||||
// CHECK:STDOUT: %Foo.ref: %Foo.type = name_ref Foo, file.%Foo.decl [concrete = constants.%Foo]
|
||||
|
||||
+47
-21
@@ -214,14 +214,16 @@ fn F(Form:! Core.Form) ->? Form;
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %.512: Core.Form = ref_form %i32 [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.6b6: type = pattern_type %i32 [concrete]
|
||||
// CHECK:STDOUT: %x.param_patt: %pattern_type.6b6 = ref_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %x.patt: %pattern_type.6b6 = at_binding_pattern x, %x.param_patt [concrete]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [concrete]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {
|
||||
// CHECK:STDOUT: %x.param_patt: %pattern_type.6b6 = ref_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %x.patt: %pattern_type.6b6 = at_binding_pattern x, %x.param_patt [concrete]
|
||||
// CHECK:STDOUT: %x.param_patt: %pattern_type.6b6 = ref_param_pattern [concrete = constants.%x.param_patt]
|
||||
// CHECK:STDOUT: %x.patt: %pattern_type.6b6 = at_binding_pattern x, %x.param_patt [concrete = constants.%x.patt]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %x.param: ref %i32 = ref_param call_param0
|
||||
// CHECK:STDOUT: %.loc4_15.1: Core.Form = splice_block %.loc4_15.2 [concrete = constants.%.512] {
|
||||
@@ -252,6 +254,9 @@ fn F(Form:! Core.Form) ->? Form;
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %.795: Core.Form = init_form %i32 [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.6b6: type = pattern_type %i32 [concrete]
|
||||
// CHECK:STDOUT: %x.param_patt: %pattern_type.6b6 = ref_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %x.var_patt: %pattern_type.6b6 = var_pattern %x.param_patt [concrete]
|
||||
// CHECK:STDOUT: %x.patt: %pattern_type.6b6 = at_binding_pattern x, %x.var_patt [concrete]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [concrete]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %int_0.5c6: Core.IntLiteral = int_value 0 [concrete]
|
||||
@@ -281,9 +286,9 @@ fn F(Form:! Core.Form) ->? Form;
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {
|
||||
// CHECK:STDOUT: %x.param_patt: %pattern_type.6b6 = ref_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %x.var_patt: %pattern_type.6b6 = var_pattern %x.param_patt [concrete]
|
||||
// CHECK:STDOUT: %x.patt: %pattern_type.6b6 = at_binding_pattern x, %x.var_patt [concrete]
|
||||
// CHECK:STDOUT: %x.param_patt: %pattern_type.6b6 = ref_param_pattern [concrete = constants.%x.param_patt]
|
||||
// CHECK:STDOUT: %x.var_patt: %pattern_type.6b6 = var_pattern %x.param_patt [concrete = constants.%x.var_patt]
|
||||
// CHECK:STDOUT: %x.patt: %pattern_type.6b6 = at_binding_pattern x, %x.var_patt [concrete = constants.%x.patt]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %x.param: ref %i32 = ref_param call_param0
|
||||
// CHECK:STDOUT: %.loc4_15.1: Core.Form = splice_block %.loc4_15.2 [concrete = constants.%.795] {
|
||||
@@ -329,6 +334,8 @@ fn F(Form:! Core.Form) ->? Form;
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %.c2a: Core.Form = value_form %i32 [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.6b6: type = pattern_type %i32 [concrete]
|
||||
// CHECK:STDOUT: %x.param_patt: %pattern_type.6b6 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %x.patt: %pattern_type.6b6 = at_binding_pattern x, %x.param_patt [concrete]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [concrete]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %int_0.5c6: Core.IntLiteral = int_value 0 [concrete]
|
||||
@@ -355,8 +362,8 @@ fn F(Form:! Core.Form) ->? Form;
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {
|
||||
// CHECK:STDOUT: %x.param_patt: %pattern_type.6b6 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %x.patt: %pattern_type.6b6 = at_binding_pattern x, %x.param_patt [concrete]
|
||||
// CHECK:STDOUT: %x.param_patt: %pattern_type.6b6 = value_param_pattern [concrete = constants.%x.param_patt]
|
||||
// CHECK:STDOUT: %x.patt: %pattern_type.6b6 = at_binding_pattern x, %x.param_patt [concrete = constants.%x.patt]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %x.param: %i32 = value_param call_param0
|
||||
// CHECK:STDOUT: %.loc4_15.1: Core.Form = splice_block %.loc4_15.2 [concrete = constants.%.c2a] {
|
||||
@@ -391,14 +398,16 @@ fn F(Form:! Core.Form) ->? Form;
|
||||
// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete]
|
||||
// CHECK:STDOUT: %.9f9: Core.Form = ref_form %empty_tuple.type [concrete]
|
||||
// CHECK:STDOUT: %pattern_type: type = pattern_type %empty_tuple.type [concrete]
|
||||
// CHECK:STDOUT: %x.param_patt: %pattern_type = ref_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %x.patt: %pattern_type = at_binding_pattern x, %x.param_patt [concrete]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [concrete]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {
|
||||
// CHECK:STDOUT: %x.param_patt: %pattern_type = ref_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %x.patt: %pattern_type = at_binding_pattern x, %x.param_patt [concrete]
|
||||
// CHECK:STDOUT: %x.param_patt: %pattern_type = ref_param_pattern [concrete = constants.%x.param_patt]
|
||||
// CHECK:STDOUT: %x.patt: %pattern_type = at_binding_pattern x, %x.param_patt [concrete = constants.%x.patt]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %x.param: ref %empty_tuple.type = ref_param call_param0
|
||||
// CHECK:STDOUT: %.loc4_15.1: Core.Form = splice_block %.loc4_15.2 [concrete = constants.%.9f9] {
|
||||
@@ -419,14 +428,17 @@ fn F(Form:! Core.Form) ->? Form;
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %.512: Core.Form = ref_form %i32 [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.6b6: type = pattern_type %i32 [concrete]
|
||||
// CHECK:STDOUT: %.ae0: %pattern_type.6b6 = ref_return_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %.ae0, %i32 [concrete]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [concrete]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %_.patt: %pattern_type.6b6 = ref_binding_pattern _ [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {
|
||||
// CHECK:STDOUT: %.loc4_17.1: %pattern_type.6b6 = ref_return_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %.loc4_17.1, constants.%i32 [concrete]
|
||||
// CHECK:STDOUT: %.loc4_17.1: %pattern_type.6b6 = ref_return_pattern [concrete = constants.%.ae0]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %.loc4_17.1, constants.%i32 [concrete = constants.%return.patt]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %.loc4_17.2: Core.Form = ref_form %i32 [concrete = constants.%.512]
|
||||
@@ -440,7 +452,7 @@ fn F(Form:! Core.Form) ->? Form;
|
||||
// CHECK:STDOUT: fn @G() {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %_.patt: %pattern_type.6b6 = ref_binding_pattern _ [concrete]
|
||||
// CHECK:STDOUT: %_.patt: %pattern_type.6b6 = ref_binding_pattern _ [concrete = constants.%_.patt]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %F.ref: %F.type = name_ref F, file.%F.decl [concrete = constants.%F]
|
||||
// CHECK:STDOUT: %F.call: ref %i32 = call %F.ref()
|
||||
@@ -457,17 +469,21 @@ fn F(Form:! Core.Form) ->? Form;
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %.795: Core.Form = init_form %i32 [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.6b6: type = pattern_type %i32 [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.6b6 = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32 [concrete]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [concrete]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %i32.builtin: type = int_type signed, %int_32 [concrete]
|
||||
// CHECK:STDOUT: %_.patt: %pattern_type.6b6 = ref_binding_pattern _ [concrete]
|
||||
// CHECK:STDOUT: %_.var_patt: %pattern_type.6b6 = var_pattern %_.patt [concrete]
|
||||
// CHECK:STDOUT: %Destroy.Op.type.1d8f74.2: type = fn_type @Destroy.Op.loc9_7.2 [concrete]
|
||||
// CHECK:STDOUT: %Destroy.Op.1a2547.2: %Destroy.Op.type.1d8f74.2 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.6b6 = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, constants.%i32 [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.6b6 = out_param_pattern [concrete = constants.%return.param_patt]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, constants.%i32 [concrete = constants.%return.patt]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %.loc4: Core.Form = init_form %i32 [concrete = constants.%.795]
|
||||
@@ -481,8 +497,8 @@ fn F(Form:! Core.Form) ->? Form;
|
||||
// CHECK:STDOUT: fn @G() {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %_.patt: %pattern_type.6b6 = ref_binding_pattern _ [concrete]
|
||||
// CHECK:STDOUT: %_.var_patt: %pattern_type.6b6 = var_pattern %_.patt [concrete]
|
||||
// CHECK:STDOUT: %_.patt: %pattern_type.6b6 = ref_binding_pattern _ [concrete = constants.%_.patt]
|
||||
// CHECK:STDOUT: %_.var_patt: %pattern_type.6b6 = var_pattern %_.patt [concrete = constants.%_.var_patt]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %_.var: ref %i32 = var %_.var_patt
|
||||
// CHECK:STDOUT: %F.ref: %F.type = name_ref F, file.%F.decl [concrete = constants.%F]
|
||||
@@ -509,14 +525,17 @@ fn F(Form:! Core.Form) ->? Form;
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %.c2a: Core.Form = value_form %i32 [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.6b6: type = pattern_type %i32 [concrete]
|
||||
// CHECK:STDOUT: %.1a5: %pattern_type.6b6 = value_return_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %.1a5, %i32 [concrete]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [concrete]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %_.patt: %pattern_type.6b6 = value_binding_pattern _ [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {
|
||||
// CHECK:STDOUT: %.loc4_17.1: %pattern_type.6b6 = value_return_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %.loc4_17.1, constants.%i32 [concrete]
|
||||
// CHECK:STDOUT: %.loc4_17.1: %pattern_type.6b6 = value_return_pattern [concrete = constants.%.1a5]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %.loc4_17.1, constants.%i32 [concrete = constants.%return.patt]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %.loc4_17.2: Core.Form = value_form %i32 [concrete = constants.%.c2a]
|
||||
@@ -530,7 +549,7 @@ fn F(Form:! Core.Form) ->? Form;
|
||||
// CHECK:STDOUT: fn @G() {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %_.patt: %pattern_type.6b6 = value_binding_pattern _ [concrete]
|
||||
// CHECK:STDOUT: %_.patt: %pattern_type.6b6 = value_binding_pattern _ [concrete = constants.%_.patt]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %F.ref: %F.type = name_ref F, file.%F.decl [concrete = constants.%F]
|
||||
// CHECK:STDOUT: %F.call: %i32 = call %F.ref()
|
||||
@@ -545,17 +564,20 @@ fn F(Form:! Core.Form) ->? Form;
|
||||
// CHECK:STDOUT: %type: type = facet_type <type> [concrete]
|
||||
// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self]
|
||||
// CHECK:STDOUT: %pattern_type.13f: type = pattern_type Core.Form [concrete]
|
||||
// CHECK:STDOUT: %Form.patt: %pattern_type.13f = symbolic_binding_pattern Form, 0 [symbolic]
|
||||
// CHECK:STDOUT: %Form: Core.Form = symbolic_binding Form, 0 [symbolic]
|
||||
// CHECK:STDOUT: %.344: Core.Form = splice_inst @F.%.loc4_28.1 [template]
|
||||
// CHECK:STDOUT: %.82f: type = type_component_of %.344 [template]
|
||||
// CHECK:STDOUT: %pattern_type.ec7: type = pattern_type %.82f [template]
|
||||
// CHECK:STDOUT: %.f74: %.82f = splice_inst @F.%.loc4_24.2 [template]
|
||||
// CHECK:STDOUT: %return.patt.08d: %pattern_type.ec7 = return_slot_pattern %.f74, %.82f [template]
|
||||
// CHECK:STDOUT: %.33d: <instruction> = refine_form_action %Form [template]
|
||||
// CHECK:STDOUT: %.80a: Core.Form = splice_inst %.33d [template]
|
||||
// CHECK:STDOUT: %.af3: <instruction> = out_form_param_pattern_action %.80a [template]
|
||||
// CHECK:STDOUT: %.465: type = type_component_of %.80a [template]
|
||||
// CHECK:STDOUT: %.e7f: %.465 = splice_inst %.af3 [template]
|
||||
// CHECK:STDOUT: %pattern_type.a51: type = pattern_type %.465 [template]
|
||||
// CHECK:STDOUT: %return.patt.de8: %pattern_type.a51 = return_slot_pattern %.e7f, %.465 [template]
|
||||
// CHECK:STDOUT: %.cab: <instruction> = callee_pattern_match_action %.e7f, call_param0 [template]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [concrete]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [concrete]
|
||||
@@ -572,8 +594,8 @@ fn F(Form:! Core.Form) ->? Form;
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {
|
||||
// CHECK:STDOUT: %Form.patt: %pattern_type.13f = symbolic_binding_pattern Form, 0 [concrete]
|
||||
// CHECK:STDOUT: %return.patt: @F.%pattern_type (%pattern_type.ec7) = return_slot_pattern %.loc4_24.6, constants.%.82f [concrete]
|
||||
// CHECK:STDOUT: %Form.patt.loc4_10.1: %pattern_type.13f = symbolic_binding_pattern Form, 0 [symbolic = %Form.patt.loc4_10.2 (constants.%Form.patt)]
|
||||
// CHECK:STDOUT: %return.patt.loc4_24.1: @F.%pattern_type (%pattern_type.ec7) = return_slot_pattern %.loc4_24.6, constants.%.82f [template = %return.patt.loc4_24.2 (constants.%return.patt.08d)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %Form.ref.loc4_28: Core.Form = name_ref Form, %Form.loc4_10.2 [symbolic = %Form.loc4_10.1 (constants.%Form)]
|
||||
// CHECK:STDOUT: %.loc4_28.3: Core.Form = splice_inst %.loc4_28.1 [template = %.loc4_28.2 (constants.%.344)]
|
||||
@@ -590,6 +612,7 @@ fn F(Form:! Core.Form) ->? Form;
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: generic fn @F(%Form.loc4_10.2: Core.Form) {
|
||||
// CHECK:STDOUT: %Form.patt.loc4_10.2: %pattern_type.13f = symbolic_binding_pattern Form, 0 [symbolic = %Form.patt.loc4_10.2 (constants.%Form.patt)]
|
||||
// CHECK:STDOUT: %Form.loc4_10.1: Core.Form = symbolic_binding Form, 0 [symbolic = %Form.loc4_10.1 (constants.%Form)]
|
||||
// CHECK:STDOUT: %.loc4_28.1: <instruction> = refine_form_action %Form.ref.loc4_28 [template]
|
||||
// CHECK:STDOUT: %.loc4_28.2: Core.Form = splice_inst %.loc4_28.1 [template = %.loc4_28.2 (constants.%.344)]
|
||||
@@ -597,12 +620,14 @@ fn F(Form:! Core.Form) ->? Form;
|
||||
// CHECK:STDOUT: %.loc4_24.3: type = type_component_of %.loc4_28.2 [template = %.loc4_24.3 (constants.%.82f)]
|
||||
// CHECK:STDOUT: %.loc4_24.4: @F.%.loc4_24.3 (%.82f) = splice_inst %.loc4_24.2 [template = %.loc4_24.4 (constants.%.f74)]
|
||||
// CHECK:STDOUT: %pattern_type: type = pattern_type %.loc4_24.3 [template = %pattern_type (constants.%pattern_type.ec7)]
|
||||
// CHECK:STDOUT: %return.patt.loc4_24.2: @F.%pattern_type (%pattern_type.ec7) = return_slot_pattern %.loc4_24.4, %.loc4_24.3 [template = %return.patt.loc4_24.2 (constants.%return.patt.08d)]
|
||||
// CHECK:STDOUT: %.loc4_24.5: <instruction> = callee_pattern_match_action %.loc4_24.6, call_param0 [template]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn() -> out %.loc4_24.1:? @F.%.loc4_28.1 (@F.%.loc4_28.1);
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @F(constants.%Form) {
|
||||
// CHECK:STDOUT: %Form.patt.loc4_10.2 => constants.%Form.patt
|
||||
// CHECK:STDOUT: %Form.loc4_10.1 => constants.%Form
|
||||
// CHECK:STDOUT: %.loc4_28.1 => constants.%.33d
|
||||
// CHECK:STDOUT: %.loc4_28.2 => constants.%.80a
|
||||
@@ -610,6 +635,7 @@ fn F(Form:! Core.Form) ->? Form;
|
||||
// CHECK:STDOUT: %.loc4_24.3 => constants.%.465
|
||||
// CHECK:STDOUT: %.loc4_24.4 => constants.%.e7f
|
||||
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.a51
|
||||
// CHECK:STDOUT: %return.patt.loc4_24.2 => constants.%return.patt.de8
|
||||
// CHECK:STDOUT: %.loc4_24.5 => constants.%.cab
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
+12
-6
@@ -30,7 +30,11 @@ 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.6b6: type = pattern_type %i32 [concrete]
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type.6b6 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.6b6 = at_binding_pattern a, %a.param_patt [concrete]
|
||||
// CHECK:STDOUT: %.795: Core.Form = init_form %i32 [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt.a9a: %pattern_type.6b6 = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt.e1b: %pattern_type.6b6 = return_slot_pattern %return.param_patt.a9a, %i32 [concrete]
|
||||
// CHECK:STDOUT: %Echo.type: type = fn_type @Echo [concrete]
|
||||
// CHECK:STDOUT: %Echo: %Echo.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %i32.builtin: type = int_type signed, %int_32 [concrete]
|
||||
@@ -46,6 +50,8 @@ fn Main() {
|
||||
// CHECK:STDOUT: %Int.as.Copy.impl.Op.specific_fn: <specific function> = specific_function %Int.as.Copy.impl.Op.4f6, @Int.as.Copy.impl.Op(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %Main.type: type = fn_type @Main [concrete]
|
||||
// CHECK:STDOUT: %Main: %Main.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %b.patt: %pattern_type.6b6 = ref_binding_pattern b [concrete]
|
||||
// CHECK:STDOUT: %b.var_patt: %pattern_type.6b6 = var_pattern %b.patt [concrete]
|
||||
// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete]
|
||||
// CHECK:STDOUT: %ImplicitAs.type.0ff: type = generic_interface_type @ImplicitAs [concrete]
|
||||
// CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.0ff = struct_value () [concrete]
|
||||
@@ -95,10 +101,10 @@ fn Main() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %Echo.decl: %Echo.type = fn_decl @Echo [concrete = constants.%Echo] {
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type.6b6 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.6b6 = at_binding_pattern a, %a.param_patt [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.6b6 = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32.loc15_20 [concrete]
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type.6b6 = value_param_pattern [concrete = constants.%a.param_patt]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.6b6 = at_binding_pattern a, %a.param_patt [concrete = constants.%a.patt]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.6b6 = out_param_pattern [concrete = constants.%return.param_patt.a9a]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32.loc15_20 [concrete = constants.%return.patt.e1b]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %i32.loc15_20: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %.loc15: Core.Form = init_form %i32.loc15_20 [concrete = constants.%.795]
|
||||
@@ -125,8 +131,8 @@ fn Main() {
|
||||
// CHECK:STDOUT: fn @Main() {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %b.patt: %pattern_type.6b6 = ref_binding_pattern b [concrete]
|
||||
// CHECK:STDOUT: %b.var_patt: %pattern_type.6b6 = var_pattern %b.patt [concrete]
|
||||
// CHECK:STDOUT: %b.patt: %pattern_type.6b6 = ref_binding_pattern b [concrete = constants.%b.patt]
|
||||
// CHECK:STDOUT: %b.var_patt: %pattern_type.6b6 = var_pattern %b.patt [concrete = constants.%b.var_patt]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %b.var: ref %i32 = var %b.var_patt
|
||||
// CHECK:STDOUT: %Echo.ref: %Echo.type = name_ref Echo, file.%Echo.decl [concrete = constants.%Echo]
|
||||
|
||||
+12
-6
@@ -29,6 +29,10 @@ fn Main() {
|
||||
// CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.6b6: type = pattern_type %i32 [concrete]
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type.6b6 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.6b6 = at_binding_pattern a, %a.param_patt [concrete]
|
||||
// CHECK:STDOUT: %b.param_patt: %pattern_type.6b6 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %b.patt: %pattern_type.6b6 = at_binding_pattern b, %b.param_patt [concrete]
|
||||
// CHECK:STDOUT: %Foo.type: type = fn_type @Foo [concrete]
|
||||
// CHECK:STDOUT: %Foo: %Foo.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %i32.builtin: type = int_type signed, %int_32 [concrete]
|
||||
@@ -38,6 +42,8 @@ fn Main() {
|
||||
// CHECK:STDOUT: %tuple.19c: %tuple.type.85c = tuple_value (%i32) [concrete]
|
||||
// CHECK:STDOUT: %tuple.type.a8a: type = tuple_type (%i32) [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.e71: type = pattern_type %tuple.type.a8a [concrete]
|
||||
// CHECK:STDOUT: %x.patt: %pattern_type.e71 = ref_binding_pattern x [concrete]
|
||||
// CHECK:STDOUT: %x.var_patt: %pattern_type.e71 = var_pattern %x.patt [concrete]
|
||||
// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete]
|
||||
// CHECK:STDOUT: %tuple.type.985: type = tuple_type (Core.IntLiteral) [concrete]
|
||||
// CHECK:STDOUT: %tuple.378: %tuple.type.985 = tuple_value (%int_1.5b8) [concrete]
|
||||
@@ -91,10 +97,10 @@ fn Main() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %Foo.decl: %Foo.type = fn_decl @Foo [concrete = constants.%Foo] {
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type.6b6 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.6b6 = at_binding_pattern a, %a.param_patt [concrete]
|
||||
// CHECK:STDOUT: %b.param_patt: %pattern_type.6b6 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %b.patt: %pattern_type.6b6 = at_binding_pattern b, %b.param_patt [concrete]
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type.6b6 = value_param_pattern [concrete = constants.%a.param_patt]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.6b6 = at_binding_pattern a, %a.param_patt [concrete = constants.%a.patt]
|
||||
// CHECK:STDOUT: %b.param_patt: %pattern_type.6b6 = value_param_pattern [concrete = constants.%b.param_patt]
|
||||
// CHECK:STDOUT: %b.patt: %pattern_type.6b6 = at_binding_pattern b, %b.param_patt [concrete = constants.%b.patt]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %a.param: %i32 = value_param call_param0
|
||||
// CHECK:STDOUT: %i32.loc15_18: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
@@ -114,8 +120,8 @@ fn Main() {
|
||||
// CHECK:STDOUT: fn @Main() {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %x.patt: %pattern_type.e71 = ref_binding_pattern x [concrete]
|
||||
// CHECK:STDOUT: %x.var_patt: %pattern_type.e71 = var_pattern %x.patt [concrete]
|
||||
// CHECK:STDOUT: %x.patt: %pattern_type.e71 = ref_binding_pattern x [concrete = constants.%x.patt]
|
||||
// CHECK:STDOUT: %x.var_patt: %pattern_type.e71 = var_pattern %x.patt [concrete = constants.%x.var_patt]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %x.var: ref %tuple.type.a8a = var %x.var_patt
|
||||
// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8]
|
||||
|
||||
@@ -27,6 +27,8 @@ fn Main() {
|
||||
// CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.6b6: type = pattern_type %i32 [concrete]
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type.6b6 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.6b6 = at_binding_pattern a, %a.param_patt [concrete]
|
||||
// CHECK:STDOUT: %Foo.type: type = fn_type @Foo [concrete]
|
||||
// CHECK:STDOUT: %Foo: %Foo.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Main.type: type = fn_type @Main [concrete]
|
||||
@@ -71,8 +73,8 @@ fn Main() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %Foo.decl: %Foo.type = fn_decl @Foo [concrete = constants.%Foo] {
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type.6b6 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.6b6 = at_binding_pattern a, %a.param_patt [concrete]
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type.6b6 = value_param_pattern [concrete = constants.%a.param_patt]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.6b6 = at_binding_pattern a, %a.param_patt [concrete = constants.%a.patt]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %a.param: %i32 = value_param call_param0
|
||||
// CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
|
||||
@@ -28,6 +28,8 @@ fn Main() {
|
||||
// CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.6b6: type = pattern_type %i32 [concrete]
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type.6b6 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.6b6 = at_binding_pattern a, %a.param_patt [concrete]
|
||||
// CHECK:STDOUT: %Foo.type: type = fn_type @Foo [concrete]
|
||||
// CHECK:STDOUT: %Foo: %Foo.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Main.type: type = fn_type @Main [concrete]
|
||||
@@ -72,8 +74,8 @@ fn Main() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %Foo.decl: %Foo.type = fn_decl @Foo [concrete = constants.%Foo] {
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type.6b6 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.6b6 = at_binding_pattern a, %a.param_patt [concrete]
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type.6b6 = value_param_pattern [concrete = constants.%a.param_patt]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.6b6 = at_binding_pattern a, %a.param_patt [concrete = constants.%a.patt]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %a.param: %i32 = value_param call_param0
|
||||
// CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
|
||||
@@ -27,6 +27,10 @@ fn Main() {
|
||||
// CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.6b6: type = pattern_type %i32 [concrete]
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type.6b6 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.6b6 = at_binding_pattern a, %a.param_patt [concrete]
|
||||
// CHECK:STDOUT: %b.param_patt: %pattern_type.6b6 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %b.patt: %pattern_type.6b6 = at_binding_pattern b, %b.param_patt [concrete]
|
||||
// CHECK:STDOUT: %Foo.type: type = fn_type @Foo [concrete]
|
||||
// CHECK:STDOUT: %Foo: %Foo.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Main.type: type = fn_type @Main [concrete]
|
||||
@@ -75,10 +79,10 @@ fn Main() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %Foo.decl: %Foo.type = fn_decl @Foo [concrete = constants.%Foo] {
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type.6b6 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.6b6 = at_binding_pattern a, %a.param_patt [concrete]
|
||||
// CHECK:STDOUT: %b.param_patt: %pattern_type.6b6 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %b.patt: %pattern_type.6b6 = at_binding_pattern b, %b.param_patt [concrete]
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type.6b6 = value_param_pattern [concrete = constants.%a.param_patt]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.6b6 = at_binding_pattern a, %a.param_patt [concrete = constants.%a.patt]
|
||||
// CHECK:STDOUT: %b.param_patt: %pattern_type.6b6 = value_param_pattern [concrete = constants.%b.param_patt]
|
||||
// CHECK:STDOUT: %b.patt: %pattern_type.6b6 = at_binding_pattern b, %b.param_patt [concrete = constants.%b.patt]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %a.param: %i32 = value_param call_param0
|
||||
// CHECK:STDOUT: %i32.loc15_18: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
|
||||
@@ -28,6 +28,10 @@ fn Main() {
|
||||
// CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.6b6: type = pattern_type %i32 [concrete]
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type.6b6 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.6b6 = at_binding_pattern a, %a.param_patt [concrete]
|
||||
// CHECK:STDOUT: %b.param_patt: %pattern_type.6b6 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %b.patt: %pattern_type.6b6 = at_binding_pattern b, %b.param_patt [concrete]
|
||||
// CHECK:STDOUT: %Foo.type: type = fn_type @Foo [concrete]
|
||||
// CHECK:STDOUT: %Foo: %Foo.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Main.type: type = fn_type @Main [concrete]
|
||||
@@ -76,10 +80,10 @@ fn Main() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %Foo.decl: %Foo.type = fn_decl @Foo [concrete = constants.%Foo] {
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type.6b6 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.6b6 = at_binding_pattern a, %a.param_patt [concrete]
|
||||
// CHECK:STDOUT: %b.param_patt: %pattern_type.6b6 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %b.patt: %pattern_type.6b6 = at_binding_pattern b, %b.param_patt [concrete]
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type.6b6 = value_param_pattern [concrete = constants.%a.param_patt]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.6b6 = at_binding_pattern a, %a.param_patt [concrete = constants.%a.patt]
|
||||
// CHECK:STDOUT: %b.param_patt: %pattern_type.6b6 = value_param_pattern [concrete = constants.%b.param_patt]
|
||||
// CHECK:STDOUT: %b.patt: %pattern_type.6b6 = at_binding_pattern b, %b.param_patt [concrete = constants.%b.patt]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %a.param: %i32 = value_param call_param0
|
||||
// CHECK:STDOUT: %i32.loc15_18: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
|
||||
@@ -33,6 +33,7 @@ fn Class(F:! type).Inner.G() -> i32 { return F(); }
|
||||
// CHECK:STDOUT: %type: type = facet_type <type> [concrete]
|
||||
// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self]
|
||||
// CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete]
|
||||
// CHECK:STDOUT: %F.patt: %pattern_type.98f = symbolic_binding_pattern F, 0 [symbolic]
|
||||
// CHECK:STDOUT: %F: type = symbolic_binding F, 0 [symbolic]
|
||||
// CHECK:STDOUT: %Class.type: type = generic_class_type @Class [concrete]
|
||||
// CHECK:STDOUT: %Class.generic: %Class.type = struct_value () [concrete]
|
||||
@@ -44,6 +45,8 @@ fn Class(F:! type).Inner.G() -> i32 { return F(); }
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %.795: Core.Form = init_form %i32 [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.6b6: type = pattern_type %i32 [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt.a9a: %pattern_type.6b6 = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt.e1b: %pattern_type.6b6 = return_slot_pattern %return.param_patt.a9a, %i32 [concrete]
|
||||
// CHECK:STDOUT: %Inner.F.type: type = fn_type @Inner.F, @Inner(%F) [symbolic]
|
||||
// CHECK:STDOUT: %Inner.F: %Inner.F.type = struct_value () [symbolic]
|
||||
// CHECK:STDOUT: %Inner.G.type: type = fn_type @Inner.G, @Inner(%F) [symbolic]
|
||||
@@ -90,7 +93,7 @@ fn Class(F:! type).Inner.G() -> i32 { return F(); }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %Class.decl: %Class.type = class_decl @Class [concrete = constants.%Class.generic] {
|
||||
// CHECK:STDOUT: %F.patt: %pattern_type.98f = symbolic_binding_pattern F, 0 [concrete]
|
||||
// CHECK:STDOUT: %F.patt.loc5_14.1: %pattern_type.98f = symbolic_binding_pattern F, 0 [symbolic = %F.patt.loc5_14.2 (constants.%F.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %.loc5_17.1: type = splice_block %.loc5_17.2 [concrete = type] {
|
||||
// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self]
|
||||
@@ -99,8 +102,8 @@ fn Class(F:! type).Inner.G() -> i32 { return F(); }
|
||||
// CHECK:STDOUT: %F.loc5_14.2: type = symbolic_binding F, 0 [symbolic = %F.loc5_14.1 (constants.%F)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Inner.G.decl: %Inner.G.type = fn_decl @Inner.G [symbolic = constants.%Inner.G] {
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.6b6 = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32.loc13 [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.6b6 = out_param_pattern [concrete = constants.%return.param_patt.a9a]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32.loc13 [concrete = constants.%return.patt.e1b]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %.loc13_14.1: type = splice_block %.loc13_14.2 [concrete = type] {
|
||||
// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self]
|
||||
@@ -115,6 +118,7 @@ fn Class(F:! type).Inner.G() -> i32 { return F(); }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: generic class @Class(%F.loc5_14.2: type) {
|
||||
// CHECK:STDOUT: %F.patt.loc5_14.2: %pattern_type.98f = symbolic_binding_pattern F, 0 [symbolic = %F.patt.loc5_14.2 (constants.%F.patt)]
|
||||
// CHECK:STDOUT: %F.loc5_14.1: type = symbolic_binding F, 0 [symbolic = %F.loc5_14.1 (constants.%F)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
@@ -141,8 +145,8 @@ fn Class(F:! type).Inner.G() -> i32 { return F(); }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class {
|
||||
// CHECK:STDOUT: %Inner.F.decl: @Inner.%Inner.F.type (%Inner.F.type) = fn_decl @Inner.F [symbolic = @Inner.%Inner.F (constants.%Inner.F)] {
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.6b6 = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32 [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.6b6 = out_param_pattern [concrete = constants.%return.param_patt.a9a]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32 [concrete = constants.%return.patt.e1b]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %.loc8_15: Core.Form = init_form %i32 [concrete = constants.%.795]
|
||||
@@ -150,8 +154,8 @@ fn Class(F:! type).Inner.G() -> i32 { return F(); }
|
||||
// CHECK:STDOUT: %return: ref %i32 = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Inner.G.decl: @Inner.%Inner.G.type (%Inner.G.type) = fn_decl @Inner.G [symbolic = @Inner.%Inner.G (constants.%Inner.G)] {
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.6b6 = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32.loc13 [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.6b6 = out_param_pattern [concrete = constants.%return.param_patt.a9a]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32.loc13 [concrete = constants.%return.patt.e1b]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %i32.loc9: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %.loc9: Core.Form = init_form %i32.loc9 [concrete = constants.%.795]
|
||||
@@ -202,6 +206,7 @@ fn Class(F:! type).Inner.G() -> i32 { return F(); }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @Class(constants.%F) {
|
||||
// CHECK:STDOUT: %F.patt.loc5_14.2 => constants.%F.patt
|
||||
// CHECK:STDOUT: %F.loc5_14.1 => constants.%F
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
|
||||
+16
-8
@@ -118,11 +118,15 @@ fn G(ref d: D) { F(ref d); }
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.6b6: type = pattern_type %i32 [concrete]
|
||||
// CHECK:STDOUT: %x.param_patt: %pattern_type.6b6 = ref_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %x.patt: %pattern_type.6b6 = at_binding_pattern x, %x.param_patt [concrete]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [concrete]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %G.type: type = fn_type @G [concrete]
|
||||
// CHECK:STDOUT: %G: %G.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %i32.builtin: type = int_type signed, %int_32 [concrete]
|
||||
// CHECK:STDOUT: %y.patt: %pattern_type.6b6 = ref_binding_pattern y [concrete]
|
||||
// CHECK:STDOUT: %y.var_patt: %pattern_type.6b6 = var_pattern %y.patt [concrete]
|
||||
// CHECK:STDOUT: %int_0.5c6: Core.IntLiteral = int_value 0 [concrete]
|
||||
// CHECK:STDOUT: %ImplicitAs.type.914: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete]
|
||||
// CHECK:STDOUT: %To: Core.IntLiteral = symbolic_binding To, 0 [symbolic]
|
||||
@@ -149,8 +153,8 @@ fn G(ref d: D) { F(ref d); }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {
|
||||
// CHECK:STDOUT: %x.param_patt: %pattern_type.6b6 = ref_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %x.patt: %pattern_type.6b6 = at_binding_pattern x, %x.param_patt [concrete]
|
||||
// CHECK:STDOUT: %x.param_patt: %pattern_type.6b6 = ref_param_pattern [concrete = constants.%x.param_patt]
|
||||
// CHECK:STDOUT: %x.patt: %pattern_type.6b6 = at_binding_pattern x, %x.param_patt [concrete = constants.%x.patt]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %x.param: ref %i32 = ref_param call_param0
|
||||
// CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
@@ -164,8 +168,8 @@ fn G(ref d: D) { F(ref d); }
|
||||
// CHECK:STDOUT: fn @G() {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %y.patt: %pattern_type.6b6 = ref_binding_pattern y [concrete]
|
||||
// CHECK:STDOUT: %y.var_patt: %pattern_type.6b6 = var_pattern %y.patt [concrete]
|
||||
// CHECK:STDOUT: %y.patt: %pattern_type.6b6 = ref_binding_pattern y [concrete = constants.%y.patt]
|
||||
// CHECK:STDOUT: %y.var_patt: %pattern_type.6b6 = var_pattern %y.patt [concrete = constants.%y.var_patt]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %y.var: ref %i32 = var %y.var_patt
|
||||
// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0.5c6]
|
||||
@@ -199,6 +203,8 @@ fn G(ref d: D) { F(ref d); }
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %C: type = class_type @C [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.98b: type = pattern_type %C [concrete]
|
||||
// CHECK:STDOUT: %self.param_patt.99a: %pattern_type.98b = ref_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %self.patt.807: %pattern_type.98b = at_binding_pattern self, %self.param_patt.99a [concrete]
|
||||
// CHECK:STDOUT: %C.F.type: type = fn_type @C.F [concrete]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete]
|
||||
// CHECK:STDOUT: %C.F: %C.F.type = struct_value () [concrete]
|
||||
@@ -206,6 +212,8 @@ fn G(ref d: D) { F(ref d); }
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete]
|
||||
// CHECK:STDOUT: %G.type: type = fn_type @G [concrete]
|
||||
// CHECK:STDOUT: %G: %G.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %c.patt: %pattern_type.98b = ref_binding_pattern c [concrete]
|
||||
// CHECK:STDOUT: %c.var_patt: %pattern_type.98b = var_pattern %c.patt [concrete]
|
||||
// CHECK:STDOUT: %DefaultOrUnformed.type: type = facet_type <@DefaultOrUnformed> [concrete]
|
||||
// CHECK:STDOUT: %T.67d: type = symbolic_binding T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %T.as.DefaultOrUnformed.impl.Op.type.150: type = fn_type @T.as.DefaultOrUnformed.impl.Op, @T.as.DefaultOrUnformed.impl(%T.67d) [symbolic]
|
||||
@@ -228,8 +236,8 @@ fn G(ref d: D) { F(ref d); }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @C {
|
||||
// CHECK:STDOUT: %C.F.decl: %C.F.type = fn_decl @C.F [concrete = constants.%C.F] {
|
||||
// CHECK:STDOUT: %self.param_patt: %pattern_type.98b = ref_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %self.patt: %pattern_type.98b = at_binding_pattern self, %self.param_patt [concrete]
|
||||
// CHECK:STDOUT: %self.param_patt: %pattern_type.98b = ref_param_pattern [concrete = constants.%self.param_patt.99a]
|
||||
// CHECK:STDOUT: %self.patt: %pattern_type.98b = at_binding_pattern self, %self.param_patt [concrete = constants.%self.patt.807]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %self.param: ref %C = ref_param call_param0
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C [concrete = constants.%C]
|
||||
@@ -248,8 +256,8 @@ fn G(ref d: D) { F(ref d); }
|
||||
// CHECK:STDOUT: fn @G() {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %c.patt: %pattern_type.98b = ref_binding_pattern c [concrete]
|
||||
// CHECK:STDOUT: %c.var_patt: %pattern_type.98b = var_pattern %c.patt [concrete]
|
||||
// CHECK:STDOUT: %c.patt: %pattern_type.98b = ref_binding_pattern c [concrete = constants.%c.patt]
|
||||
// CHECK:STDOUT: %c.var_patt: %pattern_type.98b = var_pattern %c.patt [concrete = constants.%c.var_patt]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %c.var: ref %C = var %c.var_patt
|
||||
// CHECK:STDOUT: %DefaultOrUnformed.facet: %DefaultOrUnformed.type = facet_value constants.%C, (constants.%DefaultOrUnformed.impl_witness.59d) [concrete = constants.%DefaultOrUnformed.facet]
|
||||
|
||||
@@ -29,6 +29,8 @@ fn Main() {
|
||||
// CHECK:STDOUT: %Main: %Main.type = struct_value () [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: %b.patt: %pattern_type.cb1 = ref_binding_pattern b [concrete]
|
||||
// CHECK:STDOUT: %b.var_patt: %pattern_type.cb1 = var_pattern %b.patt [concrete]
|
||||
// CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete]
|
||||
// CHECK:STDOUT: %Destroy.Op.type: type = fn_type @Destroy.Op [concrete]
|
||||
// CHECK:STDOUT: %Destroy.Op: %Destroy.Op.type = struct_value () [concrete]
|
||||
@@ -62,8 +64,8 @@ fn Main() {
|
||||
// CHECK:STDOUT: fn @Main() {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %b.patt: %pattern_type.cb1 = ref_binding_pattern b [concrete]
|
||||
// CHECK:STDOUT: %b.var_patt: %pattern_type.cb1 = var_pattern %b.patt [concrete]
|
||||
// CHECK:STDOUT: %b.patt: %pattern_type.cb1 = ref_binding_pattern b [concrete = constants.%b.patt]
|
||||
// CHECK:STDOUT: %b.var_patt: %pattern_type.cb1 = var_pattern %b.patt [concrete = constants.%b.var_patt]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %b.var: ref %empty_tuple.type = var %b.var_patt
|
||||
// CHECK:STDOUT: %MakeImplicitEmptyTuple.ref: %MakeImplicitEmptyTuple.type = name_ref MakeImplicitEmptyTuple, file.%MakeImplicitEmptyTuple.decl [concrete = constants.%MakeImplicitEmptyTuple]
|
||||
|
||||
@@ -85,6 +85,8 @@ var f: () = F();
|
||||
// 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: %f.patt: %pattern_type = ref_binding_pattern f [concrete]
|
||||
// CHECK:STDOUT: %f.var_patt: %pattern_type = var_pattern %f.patt [concrete]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [concrete]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
@@ -100,8 +102,8 @@ var f: () = F();
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %default.import = import <none>
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %f.patt: %pattern_type = ref_binding_pattern f [concrete]
|
||||
// CHECK:STDOUT: %f.var_patt: %pattern_type = var_pattern %f.patt [concrete]
|
||||
// CHECK:STDOUT: %f.patt: %pattern_type = ref_binding_pattern f [concrete = constants.%f.patt]
|
||||
// CHECK:STDOUT: %f.var_patt: %pattern_type = var_pattern %f.patt [concrete = constants.%f.var_patt]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %f.var: ref %empty_tuple.type = var %f.var_patt [concrete]
|
||||
// CHECK:STDOUT: %.loc6_9.1: type = splice_block %.loc6_9.3 [concrete = constants.%empty_tuple.type] {
|
||||
|
||||
@@ -107,6 +107,8 @@ extern library "basic" fn F();
|
||||
// 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: %x.patt: %pattern_type = ref_binding_pattern x [concrete]
|
||||
// CHECK:STDOUT: %x.var_patt: %pattern_type = var_pattern %x.patt [concrete]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [concrete]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
@@ -122,8 +124,8 @@ extern library "basic" fn F();
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %default.import = import <none>
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %x.patt: %pattern_type = ref_binding_pattern x [concrete]
|
||||
// CHECK:STDOUT: %x.var_patt: %pattern_type = var_pattern %x.patt [concrete]
|
||||
// CHECK:STDOUT: %x.patt: %pattern_type = ref_binding_pattern x [concrete = constants.%x.patt]
|
||||
// CHECK:STDOUT: %x.var_patt: %pattern_type = var_pattern %x.patt [concrete = constants.%x.var_patt]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %x.var: ref %empty_tuple.type = var %x.var_patt [concrete]
|
||||
// CHECK:STDOUT: %.loc4_9.1: type = splice_block %.loc4_9.3 [concrete = constants.%empty_tuple.type] {
|
||||
@@ -184,6 +186,8 @@ extern library "basic" fn F();
|
||||
// CHECK:STDOUT: %C.F.type: type = fn_type @C.F [concrete]
|
||||
// CHECK:STDOUT: %C.F: %C.F.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %pattern_type: type = pattern_type %C [concrete]
|
||||
// CHECK:STDOUT: %self.param_patt: %pattern_type = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %self.patt: %pattern_type = at_binding_pattern self, %self.param_patt [concrete]
|
||||
// CHECK:STDOUT: %C.G.type: type = fn_type @C.G [concrete]
|
||||
// CHECK:STDOUT: %C.G: %C.G.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
||||
@@ -200,8 +204,8 @@ extern library "basic" fn F();
|
||||
// CHECK:STDOUT: class @C {
|
||||
// CHECK:STDOUT: %C.F.decl: %C.F.type = fn_decl @C.F [concrete = constants.%C.F] {} {}
|
||||
// CHECK:STDOUT: %C.G.decl: %C.G.type = fn_decl @C.G [concrete = constants.%C.G] {
|
||||
// CHECK:STDOUT: %self.param_patt: %pattern_type = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %self.patt: %pattern_type = at_binding_pattern self, %self.param_patt [concrete]
|
||||
// CHECK:STDOUT: %self.param_patt: %pattern_type = value_param_pattern [concrete = constants.%self.param_patt]
|
||||
// CHECK:STDOUT: %self.patt: %pattern_type = at_binding_pattern self, %self.param_patt [concrete = constants.%self.patt]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %self.param: %C = value_param call_param0
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C [concrete = constants.%C]
|
||||
|
||||
+12
-8
@@ -95,12 +95,16 @@ fn CallFAndGIncomplete() {
|
||||
// CHECK:STDOUT: %D: type = class_type @D [concrete]
|
||||
// CHECK:STDOUT: %.a44: Core.Form = init_form %C [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.98b: type = pattern_type %C [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt.89a: %pattern_type.98b = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt.e4a: %pattern_type.98b = return_slot_pattern %return.param_patt.89a, %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: %.592: Core.Form = init_form %D [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.d8d: type = pattern_type %D [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt.eae: %pattern_type.d8d = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt.e38: %pattern_type.d8d = return_slot_pattern %return.param_patt.eae, %D [concrete]
|
||||
// CHECK:STDOUT: %ReturnDUnused.type: type = fn_type @ReturnDUnused [concrete]
|
||||
// CHECK:STDOUT: %ReturnDUnused: %ReturnDUnused.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %ReturnDUsed.type: type = fn_type @ReturnDUsed [concrete]
|
||||
@@ -133,8 +137,8 @@ fn CallFAndGIncomplete() {
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {}
|
||||
// CHECK:STDOUT: %D.decl.loc5: type = class_decl @D [concrete = constants.%D] {} {}
|
||||
// CHECK:STDOUT: %ReturnCUnused.decl: %ReturnCUnused.type = fn_decl @ReturnCUnused [concrete = constants.%ReturnCUnused] {
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.98b = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.98b = return_slot_pattern %return.param_patt, %C.ref [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.98b = out_param_pattern [concrete = constants.%return.param_patt.89a]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.98b = return_slot_pattern %return.param_patt, %C.ref [concrete = constants.%return.patt.e4a]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %.loc7: Core.Form = init_form %C.ref [concrete = constants.%.a44]
|
||||
@@ -142,8 +146,8 @@ fn CallFAndGIncomplete() {
|
||||
// CHECK:STDOUT: %return: ref %C = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %ReturnCUsed.decl: %ReturnCUsed.type = fn_decl @ReturnCUsed [concrete = constants.%ReturnCUsed] {
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.98b = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.98b = return_slot_pattern %return.param_patt, %C.ref [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.98b = out_param_pattern [concrete = constants.%return.param_patt.89a]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.98b = return_slot_pattern %return.param_patt, %C.ref [concrete = constants.%return.patt.e4a]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %.loc8: Core.Form = init_form %C.ref [concrete = constants.%.a44]
|
||||
@@ -151,8 +155,8 @@ fn CallFAndGIncomplete() {
|
||||
// CHECK:STDOUT: %return: ref %C = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %ReturnDUnused.decl: %ReturnDUnused.type = fn_decl @ReturnDUnused [concrete = constants.%ReturnDUnused] {
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.d8d = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.d8d = return_slot_pattern %return.param_patt, %D.ref [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.d8d = out_param_pattern [concrete = constants.%return.param_patt.eae]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.d8d = return_slot_pattern %return.param_patt, %D.ref [concrete = constants.%return.patt.e38]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl.loc5 [concrete = constants.%D]
|
||||
// CHECK:STDOUT: %.loc9: Core.Form = init_form %D.ref [concrete = constants.%.592]
|
||||
@@ -160,8 +164,8 @@ fn CallFAndGIncomplete() {
|
||||
// CHECK:STDOUT: %return: ref %D = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %ReturnDUsed.decl: %ReturnDUsed.type = fn_decl @ReturnDUsed [concrete = constants.%ReturnDUsed] {
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.d8d = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.d8d = return_slot_pattern %return.param_patt, %D.ref [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.d8d = out_param_pattern [concrete = constants.%return.param_patt.eae]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.d8d = return_slot_pattern %return.param_patt, %D.ref [concrete = constants.%return.patt.e38]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl.loc5 [concrete = constants.%D]
|
||||
// CHECK:STDOUT: %.loc10: Core.Form = init_form %D.ref [concrete = constants.%.592]
|
||||
|
||||
@@ -26,6 +26,8 @@ fn F(n: i32, a: array(i32, n)*);
|
||||
// CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.6b6: type = pattern_type %i32 [concrete]
|
||||
// CHECK:STDOUT: %n.param_patt: %pattern_type.6b6 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %n.patt: %pattern_type.6b6 = at_binding_pattern n, %n.param_patt [concrete]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [concrete]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
@@ -46,10 +48,10 @@ fn F(n: i32, a: array(i32, n)*);
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {
|
||||
// CHECK:STDOUT: %n.param_patt: %pattern_type.6b6 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %n.patt: %pattern_type.6b6 = at_binding_pattern n, %n.param_patt [concrete]
|
||||
// CHECK:STDOUT: %a.param_patt: <error> = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %a.patt: <error> = at_binding_pattern a, %a.param_patt [concrete]
|
||||
// CHECK:STDOUT: %n.param_patt: %pattern_type.6b6 = value_param_pattern [concrete = constants.%n.param_patt]
|
||||
// CHECK:STDOUT: %n.patt: %pattern_type.6b6 = at_binding_pattern n, %n.param_patt [concrete = constants.%n.patt]
|
||||
// CHECK:STDOUT: %a.param_patt: <error> = value_param_pattern [concrete = <error>]
|
||||
// CHECK:STDOUT: %a.patt: <error> = at_binding_pattern a, %a.param_patt [concrete = <error>]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %n.param: %i32 = value_param call_param0
|
||||
// CHECK:STDOUT: %i32.loc19_9: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
|
||||
@@ -29,6 +29,8 @@ fn F(n: i32, n: 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.6b6: type = pattern_type %i32 [concrete]
|
||||
// CHECK:STDOUT: %n.param_patt: %pattern_type.6b6 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %n.patt: %pattern_type.6b6 = at_binding_pattern n, %n.param_patt [concrete]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [concrete]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
@@ -49,10 +51,10 @@ fn F(n: i32, n: i32);
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {
|
||||
// CHECK:STDOUT: %n.param_patt.loc22_7: %pattern_type.6b6 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %n.patt.loc22_7: %pattern_type.6b6 = at_binding_pattern n, %n.param_patt.loc22_7 [concrete]
|
||||
// CHECK:STDOUT: %n.param_patt.loc22_15: %pattern_type.6b6 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %n.patt.loc22_15: %pattern_type.6b6 = at_binding_pattern n, %n.param_patt.loc22_15 [concrete]
|
||||
// CHECK:STDOUT: %n.param_patt.loc22_7: %pattern_type.6b6 = value_param_pattern [concrete = constants.%n.param_patt]
|
||||
// CHECK:STDOUT: %n.patt.loc22_7: %pattern_type.6b6 = at_binding_pattern n, %n.param_patt.loc22_7 [concrete = constants.%n.patt]
|
||||
// CHECK:STDOUT: %n.param_patt.loc22_15: %pattern_type.6b6 = value_param_pattern [concrete = constants.%n.param_patt]
|
||||
// CHECK:STDOUT: %n.patt.loc22_15: %pattern_type.6b6 = at_binding_pattern n, %n.param_patt.loc22_15 [concrete = constants.%n.patt]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %n.param.loc22_7: %i32 = value_param call_param0
|
||||
// CHECK:STDOUT: %i32.loc22_9: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
|
||||
@@ -70,6 +70,8 @@ fn E() {}
|
||||
// CHECK:STDOUT: %A: %A.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete]
|
||||
// CHECK:STDOUT: %pattern_type: type = pattern_type %empty_tuple.type [concrete]
|
||||
// CHECK:STDOUT: %x.param_patt: %pattern_type = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %x.patt: %pattern_type = at_binding_pattern x, %x.param_patt [concrete]
|
||||
// CHECK:STDOUT: %B.type: type = fn_type @B [concrete]
|
||||
// CHECK:STDOUT: %B: %B.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %C.type.322e3b.1: type = fn_type @C.loc35 [concrete]
|
||||
@@ -95,8 +97,8 @@ fn E() {}
|
||||
// CHECK:STDOUT: %A.decl.loc15: %A.type = fn_decl @A [concrete = constants.%A] {} {}
|
||||
// CHECK:STDOUT: %A.decl.loc23: %A.type = fn_decl @A [concrete = constants.%A] {} {}
|
||||
// CHECK:STDOUT: %B.decl.loc25: %B.type = fn_decl @B [concrete = constants.%B] {
|
||||
// CHECK:STDOUT: %x.param_patt: %pattern_type = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %x.patt: %pattern_type = at_binding_pattern x, %x.param_patt [concrete]
|
||||
// CHECK:STDOUT: %x.param_patt: %pattern_type = value_param_pattern [concrete = constants.%x.param_patt]
|
||||
// CHECK:STDOUT: %x.patt: %pattern_type = at_binding_pattern x, %x.param_patt [concrete = constants.%x.patt]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %x.param.loc25: %empty_tuple.type = value_param call_param0
|
||||
// CHECK:STDOUT: %.loc25_10.1: type = splice_block %.loc25_10.3 [concrete = constants.%empty_tuple.type] {
|
||||
@@ -106,8 +108,8 @@ fn E() {}
|
||||
// CHECK:STDOUT: %x.loc25: %empty_tuple.type = value_binding x, %x.param.loc25
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %B.decl.loc33: %B.type = fn_decl @B [concrete = constants.%B] {
|
||||
// CHECK:STDOUT: %x.param_patt: %pattern_type = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %x.patt: %pattern_type = at_binding_pattern x, %x.param_patt [concrete]
|
||||
// CHECK:STDOUT: %x.param_patt: %pattern_type = value_param_pattern [concrete = constants.%x.param_patt]
|
||||
// CHECK:STDOUT: %x.patt: %pattern_type = at_binding_pattern x, %x.param_patt [concrete = constants.%x.patt]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %x.param.loc33: %empty_tuple.type = value_param call_param0
|
||||
// CHECK:STDOUT: %.loc33_10.1: type = splice_block %.loc33_10.3 [concrete = constants.%empty_tuple.type] {
|
||||
@@ -118,8 +120,8 @@ fn E() {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %C.decl.loc35: %C.type.322e3b.1 = fn_decl @C.loc35 [concrete = constants.%C.010386.1] {} {}
|
||||
// CHECK:STDOUT: %C.decl.loc43: %C.type.322e3b.2 = fn_decl @C.loc43 [concrete = constants.%C.010386.2] {
|
||||
// CHECK:STDOUT: %x.param_patt: %pattern_type = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %x.patt: %pattern_type = at_binding_pattern x, %x.param_patt [concrete]
|
||||
// CHECK:STDOUT: %x.param_patt: %pattern_type = value_param_pattern [concrete = constants.%x.param_patt]
|
||||
// CHECK:STDOUT: %x.patt: %pattern_type = at_binding_pattern x, %x.param_patt [concrete = constants.%x.patt]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %x.param: %empty_tuple.type = value_param call_param0
|
||||
// CHECK:STDOUT: %.loc43_10.1: type = splice_block %.loc43_10.3 [concrete = constants.%empty_tuple.type] {
|
||||
|
||||
@@ -123,6 +123,8 @@ fn A {
|
||||
// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete]
|
||||
// CHECK:STDOUT: %.262: Core.Form = init_form %empty_tuple.type [concrete]
|
||||
// CHECK:STDOUT: %pattern_type: type = pattern_type %empty_tuple.type [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type = return_slot_pattern %return.param_patt, %empty_tuple.type [concrete]
|
||||
// CHECK:STDOUT: %A.type: type = fn_type @A [concrete]
|
||||
// CHECK:STDOUT: %A: %A.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
@@ -132,8 +134,8 @@ fn A {
|
||||
// CHECK:STDOUT: .A = %A.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %A.decl: %A.type = fn_decl @A [concrete = constants.%A] {
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type = return_slot_pattern %return.param_patt, %.loc7_10.2 [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type = out_param_pattern [concrete = constants.%return.param_patt]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type = return_slot_pattern %return.param_patt, %.loc7_10.2 [concrete = constants.%return.patt]
|
||||
// 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]
|
||||
@@ -152,6 +154,8 @@ fn A {
|
||||
// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete]
|
||||
// CHECK:STDOUT: %.262: Core.Form = init_form %empty_tuple.type [concrete]
|
||||
// CHECK:STDOUT: %pattern_type: type = pattern_type %empty_tuple.type [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type = return_slot_pattern %return.param_patt, %empty_tuple.type [concrete]
|
||||
// CHECK:STDOUT: %A.type: type = fn_type @A [concrete]
|
||||
// CHECK:STDOUT: %A: %A.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
@@ -161,8 +165,8 @@ fn A {
|
||||
// CHECK:STDOUT: .A = %A.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %A.decl: %A.type = fn_decl @A [concrete = constants.%A] {
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type = return_slot_pattern %return.param_patt, %.loc7_12.2 [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type = out_param_pattern [concrete = constants.%return.param_patt]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type = return_slot_pattern %return.param_patt, %.loc7_12.2 [concrete = constants.%return.patt]
|
||||
// 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]
|
||||
|
||||
+132
-66
@@ -270,16 +270,24 @@ 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.6b6: type = pattern_type %i32 [concrete]
|
||||
// CHECK:STDOUT: %b.param_patt: %pattern_type.6b6 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %b.patt: %pattern_type.6b6 = at_binding_pattern b, %b.param_patt [concrete]
|
||||
// CHECK:STDOUT: %.795: Core.Form = init_form %i32 [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt.a9a: %pattern_type.6b6 = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt.e1b: %pattern_type.6b6 = return_slot_pattern %return.param_patt.a9a, %i32 [concrete]
|
||||
// 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: %tuple.type.85c = tuple_value (%i32) [concrete]
|
||||
// CHECK:STDOUT: %tuple.type.a8a: type = tuple_type (%i32) [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.e71: type = pattern_type %tuple.type.a8a [concrete]
|
||||
// CHECK:STDOUT: %c.param_patt: %pattern_type.e71 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %c.patt: %pattern_type.e71 = at_binding_pattern c, %c.param_patt [concrete]
|
||||
// CHECK:STDOUT: %struct_type.c: type = struct_type {.c: %i32} [concrete]
|
||||
// CHECK:STDOUT: %.510: Core.Form = init_form %struct_type.c [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.e1a: type = pattern_type %struct_type.c [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt.b6f: %pattern_type.e1a = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt.00b: %pattern_type.e1a = return_slot_pattern %return.param_patt.b6f, %struct_type.c [concrete]
|
||||
// CHECK:STDOUT: %C.type: type = fn_type @C [concrete]
|
||||
// CHECK:STDOUT: %C: %C.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %D.type: type = fn_type @D [concrete]
|
||||
@@ -309,10 +317,10 @@ import library "extern_api";
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %A.decl: %A.type = fn_decl @A [concrete = constants.%A] {} {}
|
||||
// CHECK:STDOUT: %B.decl: %B.type = fn_decl @B [concrete = constants.%B] {
|
||||
// CHECK:STDOUT: %b.param_patt: %pattern_type.6b6 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %b.patt: %pattern_type.6b6 = at_binding_pattern b, %b.param_patt [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.6b6 = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32.loc5_17 [concrete]
|
||||
// CHECK:STDOUT: %b.param_patt: %pattern_type.6b6 = value_param_pattern [concrete = constants.%b.param_patt]
|
||||
// CHECK:STDOUT: %b.patt: %pattern_type.6b6 = at_binding_pattern b, %b.param_patt [concrete = constants.%b.patt]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.6b6 = out_param_pattern [concrete = constants.%return.param_patt.a9a]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32.loc5_17 [concrete = constants.%return.patt.e1b]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %i32.loc5_17: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %.loc5: Core.Form = init_form %i32.loc5_17 [concrete = constants.%.795]
|
||||
@@ -323,10 +331,10 @@ import library "extern_api";
|
||||
// CHECK:STDOUT: %return: ref %i32 = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %C.decl: %C.type = fn_decl @C [concrete = constants.%C] {
|
||||
// CHECK:STDOUT: %c.param_patt: %pattern_type.e71 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %c.patt: %pattern_type.e71 = at_binding_pattern c, %c.param_patt [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.e1a = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.e1a = return_slot_pattern %return.param_patt, %struct_type.c [concrete]
|
||||
// CHECK:STDOUT: %c.param_patt: %pattern_type.e71 = value_param_pattern [concrete = constants.%c.param_patt]
|
||||
// CHECK:STDOUT: %c.patt: %pattern_type.e71 = at_binding_pattern c, %c.param_patt [concrete = constants.%c.patt]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.e1a = out_param_pattern [concrete = constants.%return.param_patt.b6f]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.e1a = return_slot_pattern %return.param_patt, %struct_type.c [concrete = constants.%return.patt.00b]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %i32.loc6_25: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %struct_type.c: type = struct_type {.c: %i32} [concrete = constants.%struct_type.c]
|
||||
@@ -368,16 +376,24 @@ 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.6b6: type = pattern_type %i32 [concrete]
|
||||
// CHECK:STDOUT: %b.param_patt: %pattern_type.6b6 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %b.patt: %pattern_type.6b6 = at_binding_pattern b, %b.param_patt [concrete]
|
||||
// CHECK:STDOUT: %.795: Core.Form = init_form %i32 [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt.a9a: %pattern_type.6b6 = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt.e1b: %pattern_type.6b6 = return_slot_pattern %return.param_patt.a9a, %i32 [concrete]
|
||||
// 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: %tuple.type.85c = tuple_value (%i32) [concrete]
|
||||
// CHECK:STDOUT: %tuple.type.a8a: type = tuple_type (%i32) [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.e71: type = pattern_type %tuple.type.a8a [concrete]
|
||||
// CHECK:STDOUT: %c.param_patt: %pattern_type.e71 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %c.patt: %pattern_type.e71 = at_binding_pattern c, %c.param_patt [concrete]
|
||||
// CHECK:STDOUT: %struct_type.c: type = struct_type {.c: %i32} [concrete]
|
||||
// CHECK:STDOUT: %.510: Core.Form = init_form %struct_type.c [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.e1a: type = pattern_type %struct_type.c [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt.b6f: %pattern_type.e1a = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt.00b: %pattern_type.e1a = return_slot_pattern %return.param_patt.b6f, %struct_type.c [concrete]
|
||||
// CHECK:STDOUT: %C.type: type = fn_type @C [concrete]
|
||||
// CHECK:STDOUT: %C: %C.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %D.type: type = fn_type @D [concrete]
|
||||
@@ -407,10 +423,10 @@ import library "extern_api";
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %A.decl: %A.type = fn_decl @A [concrete = constants.%A] {} {}
|
||||
// CHECK:STDOUT: %B.decl: %B.type = fn_decl @B [concrete = constants.%B] {
|
||||
// CHECK:STDOUT: %b.param_patt: %pattern_type.6b6 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %b.patt: %pattern_type.6b6 = at_binding_pattern b, %b.param_patt [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.6b6 = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32.loc5_52 [concrete]
|
||||
// CHECK:STDOUT: %b.param_patt: %pattern_type.6b6 = value_param_pattern [concrete = constants.%b.param_patt]
|
||||
// CHECK:STDOUT: %b.patt: %pattern_type.6b6 = at_binding_pattern b, %b.param_patt [concrete = constants.%b.patt]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.6b6 = out_param_pattern [concrete = constants.%return.param_patt.a9a]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32.loc5_52 [concrete = constants.%return.patt.e1b]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %i32.loc5_52: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %.loc5: Core.Form = init_form %i32.loc5_52 [concrete = constants.%.795]
|
||||
@@ -421,10 +437,10 @@ import library "extern_api";
|
||||
// CHECK:STDOUT: %return: ref %i32 = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %C.decl: %C.type = fn_decl @C [concrete = constants.%C] {
|
||||
// CHECK:STDOUT: %c.param_patt: %pattern_type.e71 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %c.patt: %pattern_type.e71 = at_binding_pattern c, %c.param_patt [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.e1a = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.e1a = return_slot_pattern %return.param_patt, %struct_type.c [concrete]
|
||||
// CHECK:STDOUT: %c.param_patt: %pattern_type.e71 = value_param_pattern [concrete = constants.%c.param_patt]
|
||||
// CHECK:STDOUT: %c.patt: %pattern_type.e71 = at_binding_pattern c, %c.param_patt [concrete = constants.%c.patt]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.e1a = out_param_pattern [concrete = constants.%return.param_patt.b6f]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.e1a = return_slot_pattern %return.param_patt, %struct_type.c [concrete = constants.%return.patt.00b]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %i32.loc6_60: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %struct_type.c: type = struct_type {.c: %i32} [concrete = constants.%struct_type.c]
|
||||
@@ -462,6 +478,8 @@ import library "extern_api";
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [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: %a.patt: %pattern_type.cb1 = ref_binding_pattern a [concrete]
|
||||
// CHECK:STDOUT: %a.var_patt: %pattern_type.cb1 = var_pattern %a.patt [concrete]
|
||||
// CHECK:STDOUT: %A.type: type = fn_type @A [concrete]
|
||||
// CHECK:STDOUT: %A: %A.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete]
|
||||
@@ -469,6 +487,8 @@ 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.6b6: type = pattern_type %i32 [concrete]
|
||||
// CHECK:STDOUT: %b.patt.b23: %pattern_type.6b6 = ref_binding_pattern b [concrete]
|
||||
// CHECK:STDOUT: %b.var_patt: %pattern_type.6b6 = var_pattern %b.patt.b23 [concrete]
|
||||
// CHECK:STDOUT: %B.type: type = fn_type @B [concrete]
|
||||
// CHECK:STDOUT: %B: %B.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete]
|
||||
@@ -490,14 +510,20 @@ import library "extern_api";
|
||||
// CHECK:STDOUT: %int_1.0c6: %i32 = int_value 1 [concrete]
|
||||
// CHECK:STDOUT: %struct_type.c: type = struct_type {.c: %i32} [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.e1a: type = pattern_type %struct_type.c [concrete]
|
||||
// CHECK:STDOUT: %c.patt.863: %pattern_type.e1a = ref_binding_pattern c [concrete]
|
||||
// CHECK:STDOUT: %c.var_patt: %pattern_type.e1a = var_pattern %c.patt.863 [concrete]
|
||||
// CHECK:STDOUT: %C.type: type = fn_type @C [concrete]
|
||||
// CHECK:STDOUT: %C: %C.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %tuple.type.a8a: type = tuple_type (%i32) [concrete]
|
||||
// CHECK:STDOUT: %tuple.type.985: type = tuple_type (Core.IntLiteral) [concrete]
|
||||
// CHECK:STDOUT: %tuple.378: %tuple.type.985 = tuple_value (%int_1.5b8) [concrete]
|
||||
// CHECK:STDOUT: %tuple.a1e: %tuple.type.a8a = tuple_value (%int_1.0c6) [concrete]
|
||||
// CHECK:STDOUT: %d.patt: %pattern_type.cb1 = ref_binding_pattern d [concrete]
|
||||
// CHECK:STDOUT: %d.var_patt: %pattern_type.cb1 = var_pattern %d.patt [concrete]
|
||||
// CHECK:STDOUT: %D.type: type = fn_type @D [concrete]
|
||||
// CHECK:STDOUT: %D: %D.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %e.patt: %pattern_type.cb1 = ref_binding_pattern e [concrete]
|
||||
// CHECK:STDOUT: %e.var_patt: %pattern_type.cb1 = var_pattern %e.patt [concrete]
|
||||
// CHECK:STDOUT: %E.type: type = fn_type @E [concrete]
|
||||
// CHECK:STDOUT: %E: %E.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
@@ -541,8 +567,8 @@ import library "extern_api";
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %default.import = import <none>
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.cb1 = ref_binding_pattern a [concrete]
|
||||
// CHECK:STDOUT: %a.var_patt: %pattern_type.cb1 = var_pattern %a.patt [concrete]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.cb1 = ref_binding_pattern a [concrete = constants.%a.patt]
|
||||
// CHECK:STDOUT: %a.var_patt: %pattern_type.cb1 = var_pattern %a.patt [concrete = constants.%a.var_patt]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %a.var: ref %empty_tuple.type = var %a.var_patt [concrete]
|
||||
// CHECK:STDOUT: %.loc6_9.1: type = splice_block %.loc6_9.3 [concrete = constants.%empty_tuple.type] {
|
||||
@@ -551,15 +577,15 @@ import library "extern_api";
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %a: ref %empty_tuple.type = ref_binding a, %a.var [concrete = %a.var]
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %b.patt: %pattern_type.6b6 = ref_binding_pattern b [concrete]
|
||||
// CHECK:STDOUT: %b.var_patt: %pattern_type.6b6 = var_pattern %b.patt [concrete]
|
||||
// CHECK:STDOUT: %b.patt: %pattern_type.6b6 = ref_binding_pattern b [concrete = constants.%b.patt.b23]
|
||||
// CHECK:STDOUT: %b.var_patt: %pattern_type.6b6 = var_pattern %b.patt [concrete = constants.%b.var_patt]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %b.var: ref %i32 = var %b.var_patt [concrete]
|
||||
// CHECK:STDOUT: %i32.loc7: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %b: ref %i32 = ref_binding b, %b.var [concrete = %b.var]
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %c.patt: %pattern_type.e1a = ref_binding_pattern c [concrete]
|
||||
// CHECK:STDOUT: %c.var_patt: %pattern_type.e1a = var_pattern %c.patt [concrete]
|
||||
// CHECK:STDOUT: %c.patt: %pattern_type.e1a = ref_binding_pattern c [concrete = constants.%c.patt.863]
|
||||
// CHECK:STDOUT: %c.var_patt: %pattern_type.e1a = var_pattern %c.patt [concrete = constants.%c.var_patt]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %c.var: ref %struct_type.c = var %c.var_patt [concrete]
|
||||
// CHECK:STDOUT: %.loc8: type = splice_block %struct_type.c [concrete = constants.%struct_type.c] {
|
||||
@@ -568,8 +594,8 @@ import library "extern_api";
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %c: ref %struct_type.c = ref_binding c, %c.var [concrete = %c.var]
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %d.patt: %pattern_type.cb1 = ref_binding_pattern d [concrete]
|
||||
// CHECK:STDOUT: %d.var_patt: %pattern_type.cb1 = var_pattern %d.patt [concrete]
|
||||
// CHECK:STDOUT: %d.patt: %pattern_type.cb1 = ref_binding_pattern d [concrete = constants.%d.patt]
|
||||
// CHECK:STDOUT: %d.var_patt: %pattern_type.cb1 = var_pattern %d.patt [concrete = constants.%d.var_patt]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %d.var: ref %empty_tuple.type = var %d.var_patt [concrete]
|
||||
// CHECK:STDOUT: %.loc9_9.1: type = splice_block %.loc9_9.3 [concrete = constants.%empty_tuple.type] {
|
||||
@@ -578,8 +604,8 @@ import library "extern_api";
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %d: ref %empty_tuple.type = ref_binding d, %d.var [concrete = %d.var]
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %e.patt: %pattern_type.cb1 = ref_binding_pattern e [concrete]
|
||||
// CHECK:STDOUT: %e.var_patt: %pattern_type.cb1 = var_pattern %e.patt [concrete]
|
||||
// CHECK:STDOUT: %e.patt: %pattern_type.cb1 = ref_binding_pattern e [concrete = constants.%e.patt]
|
||||
// CHECK:STDOUT: %e.var_patt: %pattern_type.cb1 = var_pattern %e.patt [concrete = constants.%e.var_patt]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %e.var: ref %empty_tuple.type = var %e.var_patt [concrete]
|
||||
// CHECK:STDOUT: %.loc10_9.1: type = splice_block %.loc10_9.3 [concrete = constants.%empty_tuple.type] {
|
||||
@@ -667,6 +693,10 @@ import library "extern_api";
|
||||
// CHECK:STDOUT: %E: %E.type = struct_value () [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: %a.patt: %pattern_type.cb1 = ref_binding_pattern a [concrete]
|
||||
// CHECK:STDOUT: %a.var_patt: %pattern_type.cb1 = var_pattern %a.patt [concrete]
|
||||
// CHECK:STDOUT: %b.patt.b23: %pattern_type.6b6 = ref_binding_pattern b [concrete]
|
||||
// CHECK:STDOUT: %b.var_patt: %pattern_type.6b6 = var_pattern %b.patt.b23 [concrete]
|
||||
// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete]
|
||||
// CHECK:STDOUT: %ImplicitAs.type.0ff: type = generic_interface_type @ImplicitAs [concrete]
|
||||
// CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.0ff = struct_value () [concrete]
|
||||
@@ -684,9 +714,15 @@ import library "extern_api";
|
||||
// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: <specific function> = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.e39, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %bound_method: <bound method> = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete]
|
||||
// CHECK:STDOUT: %int_1.0c6: %i32 = int_value 1 [concrete]
|
||||
// CHECK:STDOUT: %c.patt.863: %pattern_type.e1a = ref_binding_pattern c [concrete]
|
||||
// CHECK:STDOUT: %c.var_patt: %pattern_type.e1a = var_pattern %c.patt.863 [concrete]
|
||||
// CHECK:STDOUT: %tuple.type.985: type = tuple_type (Core.IntLiteral) [concrete]
|
||||
// CHECK:STDOUT: %tuple.378: %tuple.type.985 = tuple_value (%int_1.5b8) [concrete]
|
||||
// CHECK:STDOUT: %tuple.a1e: %tuple.type.a8a = tuple_value (%int_1.0c6) [concrete]
|
||||
// CHECK:STDOUT: %d.patt: %pattern_type.cb1 = ref_binding_pattern d [concrete]
|
||||
// CHECK:STDOUT: %d.var_patt: %pattern_type.cb1 = var_pattern %d.patt [concrete]
|
||||
// CHECK:STDOUT: %e.patt: %pattern_type.cb1 = ref_binding_pattern e [concrete]
|
||||
// CHECK:STDOUT: %e.var_patt: %pattern_type.cb1 = var_pattern %e.patt [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
@@ -749,8 +785,8 @@ import library "extern_api";
|
||||
// CHECK:STDOUT: %D.decl: %D.type = fn_decl @D [concrete = constants.%D] {} {}
|
||||
// CHECK:STDOUT: %E.decl: %E.type = fn_decl @E [concrete = constants.%E] {} {}
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.cb1 = ref_binding_pattern a [concrete]
|
||||
// CHECK:STDOUT: %a.var_patt: %pattern_type.cb1 = var_pattern %a.patt [concrete]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.cb1 = ref_binding_pattern a [concrete = constants.%a.patt]
|
||||
// CHECK:STDOUT: %a.var_patt: %pattern_type.cb1 = var_pattern %a.patt [concrete = constants.%a.var_patt]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %a.var: ref %empty_tuple.type = var %a.var_patt [concrete]
|
||||
// CHECK:STDOUT: %.loc52_9.1: type = splice_block %.loc52_9.3 [concrete = constants.%empty_tuple.type] {
|
||||
@@ -759,15 +795,15 @@ import library "extern_api";
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %a: ref %empty_tuple.type = ref_binding a, %a.var [concrete = %a.var]
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %b.patt: %pattern_type.6b6 = ref_binding_pattern b [concrete]
|
||||
// CHECK:STDOUT: %b.var_patt: %pattern_type.6b6 = var_pattern %b.patt [concrete]
|
||||
// CHECK:STDOUT: %b.patt: %pattern_type.6b6 = ref_binding_pattern b [concrete = constants.%b.patt.b23]
|
||||
// CHECK:STDOUT: %b.var_patt: %pattern_type.6b6 = var_pattern %b.patt [concrete = constants.%b.var_patt]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %b.var: ref %i32 = var %b.var_patt [concrete]
|
||||
// CHECK:STDOUT: %i32.loc53: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %b: ref %i32 = ref_binding b, %b.var [concrete = %b.var]
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %c.patt: %pattern_type.e1a = ref_binding_pattern c [concrete]
|
||||
// CHECK:STDOUT: %c.var_patt: %pattern_type.e1a = var_pattern %c.patt [concrete]
|
||||
// CHECK:STDOUT: %c.patt: %pattern_type.e1a = ref_binding_pattern c [concrete = constants.%c.patt.863]
|
||||
// CHECK:STDOUT: %c.var_patt: %pattern_type.e1a = var_pattern %c.patt [concrete = constants.%c.var_patt]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %c.var: ref %struct_type.c = var %c.var_patt [concrete]
|
||||
// CHECK:STDOUT: %.loc54: type = splice_block %struct_type.c [concrete = constants.%struct_type.c] {
|
||||
@@ -776,8 +812,8 @@ import library "extern_api";
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %c: ref %struct_type.c = ref_binding c, %c.var [concrete = %c.var]
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %d.patt: %pattern_type.cb1 = ref_binding_pattern d [concrete]
|
||||
// CHECK:STDOUT: %d.var_patt: %pattern_type.cb1 = var_pattern %d.patt [concrete]
|
||||
// CHECK:STDOUT: %d.patt: %pattern_type.cb1 = ref_binding_pattern d [concrete = constants.%d.patt]
|
||||
// CHECK:STDOUT: %d.var_patt: %pattern_type.cb1 = var_pattern %d.patt [concrete = constants.%d.var_patt]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %d.var: ref %empty_tuple.type = var %d.var_patt [concrete]
|
||||
// CHECK:STDOUT: %.loc55_9.1: type = splice_block %.loc55_9.3 [concrete = constants.%empty_tuple.type] {
|
||||
@@ -786,8 +822,8 @@ import library "extern_api";
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %d: ref %empty_tuple.type = ref_binding d, %d.var [concrete = %d.var]
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %e.patt: %pattern_type.cb1 = ref_binding_pattern e [concrete]
|
||||
// CHECK:STDOUT: %e.var_patt: %pattern_type.cb1 = var_pattern %e.patt [concrete]
|
||||
// CHECK:STDOUT: %e.patt: %pattern_type.cb1 = ref_binding_pattern e [concrete = constants.%e.patt]
|
||||
// CHECK:STDOUT: %e.var_patt: %pattern_type.cb1 = var_pattern %e.patt [concrete = constants.%e.var_patt]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %e.var: ref %empty_tuple.type = var %e.var_patt [concrete]
|
||||
// CHECK:STDOUT: %.loc56_9.1: type = splice_block %.loc56_9.3 [concrete = constants.%empty_tuple.type] {
|
||||
@@ -875,6 +911,10 @@ import library "extern_api";
|
||||
// CHECK:STDOUT: %tuple.19c: %tuple.type.85c = tuple_value (%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: %a.patt: %pattern_type.cb1 = ref_binding_pattern a [concrete]
|
||||
// CHECK:STDOUT: %a.var_patt: %pattern_type.cb1 = var_pattern %a.patt [concrete]
|
||||
// CHECK:STDOUT: %b.patt.b23: %pattern_type.6b6 = ref_binding_pattern b [concrete]
|
||||
// CHECK:STDOUT: %b.var_patt: %pattern_type.6b6 = var_pattern %b.patt.b23 [concrete]
|
||||
// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete]
|
||||
// CHECK:STDOUT: %ImplicitAs.type.0ff: type = generic_interface_type @ImplicitAs [concrete]
|
||||
// CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.0ff = struct_value () [concrete]
|
||||
@@ -892,9 +932,15 @@ import library "extern_api";
|
||||
// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: <specific function> = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.e39, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %bound_method: <bound method> = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete]
|
||||
// CHECK:STDOUT: %int_1.0c6: %i32 = int_value 1 [concrete]
|
||||
// CHECK:STDOUT: %c.patt.863: %pattern_type.e1a = ref_binding_pattern c [concrete]
|
||||
// CHECK:STDOUT: %c.var_patt: %pattern_type.e1a = var_pattern %c.patt.863 [concrete]
|
||||
// CHECK:STDOUT: %tuple.type.985: type = tuple_type (Core.IntLiteral) [concrete]
|
||||
// CHECK:STDOUT: %tuple.378: %tuple.type.985 = tuple_value (%int_1.5b8) [concrete]
|
||||
// CHECK:STDOUT: %tuple.a1e: %tuple.type.a8a = tuple_value (%int_1.0c6) [concrete]
|
||||
// CHECK:STDOUT: %d.patt: %pattern_type.cb1 = ref_binding_pattern d [concrete]
|
||||
// CHECK:STDOUT: %d.var_patt: %pattern_type.cb1 = var_pattern %d.patt [concrete]
|
||||
// CHECK:STDOUT: %e.patt: %pattern_type.cb1 = ref_binding_pattern e [concrete]
|
||||
// CHECK:STDOUT: %e.var_patt: %pattern_type.cb1 = var_pattern %e.patt [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
@@ -957,8 +1003,8 @@ import library "extern_api";
|
||||
// CHECK:STDOUT: %D.decl: %D.type = fn_decl @D [concrete = constants.%D] {} {}
|
||||
// CHECK:STDOUT: %E.decl: %E.type = fn_decl @E [concrete = constants.%E] {} {}
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.cb1 = ref_binding_pattern a [concrete]
|
||||
// CHECK:STDOUT: %a.var_patt: %pattern_type.cb1 = var_pattern %a.patt [concrete]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.cb1 = ref_binding_pattern a [concrete = constants.%a.patt]
|
||||
// CHECK:STDOUT: %a.var_patt: %pattern_type.cb1 = var_pattern %a.patt [concrete = constants.%a.var_patt]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %a.var: ref %empty_tuple.type = var %a.var_patt [concrete]
|
||||
// CHECK:STDOUT: %.loc12_9.1: type = splice_block %.loc12_9.3 [concrete = constants.%empty_tuple.type] {
|
||||
@@ -967,15 +1013,15 @@ import library "extern_api";
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %a: ref %empty_tuple.type = ref_binding a, %a.var [concrete = %a.var]
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %b.patt: %pattern_type.6b6 = ref_binding_pattern b [concrete]
|
||||
// CHECK:STDOUT: %b.var_patt: %pattern_type.6b6 = var_pattern %b.patt [concrete]
|
||||
// CHECK:STDOUT: %b.patt: %pattern_type.6b6 = ref_binding_pattern b [concrete = constants.%b.patt.b23]
|
||||
// CHECK:STDOUT: %b.var_patt: %pattern_type.6b6 = var_pattern %b.patt [concrete = constants.%b.var_patt]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %b.var: ref %i32 = var %b.var_patt [concrete]
|
||||
// CHECK:STDOUT: %i32.loc13: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %b: ref %i32 = ref_binding b, %b.var [concrete = %b.var]
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %c.patt: %pattern_type.e1a = ref_binding_pattern c [concrete]
|
||||
// CHECK:STDOUT: %c.var_patt: %pattern_type.e1a = var_pattern %c.patt [concrete]
|
||||
// CHECK:STDOUT: %c.patt: %pattern_type.e1a = ref_binding_pattern c [concrete = constants.%c.patt.863]
|
||||
// CHECK:STDOUT: %c.var_patt: %pattern_type.e1a = var_pattern %c.patt [concrete = constants.%c.var_patt]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %c.var: ref %struct_type.c = var %c.var_patt [concrete]
|
||||
// CHECK:STDOUT: %.loc14: type = splice_block %struct_type.c [concrete = constants.%struct_type.c] {
|
||||
@@ -984,8 +1030,8 @@ import library "extern_api";
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %c: ref %struct_type.c = ref_binding c, %c.var [concrete = %c.var]
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %d.patt: %pattern_type.cb1 = ref_binding_pattern d [concrete]
|
||||
// CHECK:STDOUT: %d.var_patt: %pattern_type.cb1 = var_pattern %d.patt [concrete]
|
||||
// CHECK:STDOUT: %d.patt: %pattern_type.cb1 = ref_binding_pattern d [concrete = constants.%d.patt]
|
||||
// CHECK:STDOUT: %d.var_patt: %pattern_type.cb1 = var_pattern %d.patt [concrete = constants.%d.var_patt]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %d.var: ref %empty_tuple.type = var %d.var_patt [concrete]
|
||||
// CHECK:STDOUT: %.loc15_9.1: type = splice_block %.loc15_9.3 [concrete = constants.%empty_tuple.type] {
|
||||
@@ -994,8 +1040,8 @@ import library "extern_api";
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %d: ref %empty_tuple.type = ref_binding d, %d.var [concrete = %d.var]
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %e.patt: %pattern_type.cb1 = ref_binding_pattern e [concrete]
|
||||
// CHECK:STDOUT: %e.var_patt: %pattern_type.cb1 = var_pattern %e.patt [concrete]
|
||||
// CHECK:STDOUT: %e.patt: %pattern_type.cb1 = ref_binding_pattern e [concrete = constants.%e.patt]
|
||||
// CHECK:STDOUT: %e.var_patt: %pattern_type.cb1 = var_pattern %e.patt [concrete = constants.%e.var_patt]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %e.var: ref %empty_tuple.type = var %e.var_patt [concrete]
|
||||
// CHECK:STDOUT: %.loc16_9.1: type = splice_block %.loc16_9.3 [concrete = constants.%empty_tuple.type] {
|
||||
@@ -1061,6 +1107,8 @@ import library "extern_api";
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [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: %a.patt: %pattern_type.cb1 = ref_binding_pattern a [concrete]
|
||||
// CHECK:STDOUT: %a.var_patt: %pattern_type.cb1 = var_pattern %a.patt [concrete]
|
||||
// CHECK:STDOUT: %A.type: type = fn_type @A [concrete]
|
||||
// CHECK:STDOUT: %A: %A.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete]
|
||||
@@ -1068,6 +1116,8 @@ 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.6b6: type = pattern_type %i32 [concrete]
|
||||
// CHECK:STDOUT: %b.patt.b23: %pattern_type.6b6 = ref_binding_pattern b [concrete]
|
||||
// CHECK:STDOUT: %b.var_patt: %pattern_type.6b6 = var_pattern %b.patt.b23 [concrete]
|
||||
// CHECK:STDOUT: %B.type: type = fn_type @B [concrete]
|
||||
// CHECK:STDOUT: %B: %B.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete]
|
||||
@@ -1089,14 +1139,20 @@ import library "extern_api";
|
||||
// CHECK:STDOUT: %int_1.0c6: %i32 = int_value 1 [concrete]
|
||||
// CHECK:STDOUT: %struct_type.c: type = struct_type {.c: %i32} [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.e1a: type = pattern_type %struct_type.c [concrete]
|
||||
// CHECK:STDOUT: %c.patt.863: %pattern_type.e1a = ref_binding_pattern c [concrete]
|
||||
// CHECK:STDOUT: %c.var_patt: %pattern_type.e1a = var_pattern %c.patt.863 [concrete]
|
||||
// CHECK:STDOUT: %C.type: type = fn_type @C [concrete]
|
||||
// CHECK:STDOUT: %C: %C.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %tuple.type.a8a: type = tuple_type (%i32) [concrete]
|
||||
// CHECK:STDOUT: %tuple.type.985: type = tuple_type (Core.IntLiteral) [concrete]
|
||||
// CHECK:STDOUT: %tuple.378: %tuple.type.985 = tuple_value (%int_1.5b8) [concrete]
|
||||
// CHECK:STDOUT: %tuple.a1e: %tuple.type.a8a = tuple_value (%int_1.0c6) [concrete]
|
||||
// CHECK:STDOUT: %d.patt: %pattern_type.cb1 = ref_binding_pattern d [concrete]
|
||||
// CHECK:STDOUT: %d.var_patt: %pattern_type.cb1 = var_pattern %d.patt [concrete]
|
||||
// CHECK:STDOUT: %D.type: type = fn_type @D [concrete]
|
||||
// CHECK:STDOUT: %D: %D.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %e.patt: %pattern_type.cb1 = ref_binding_pattern e [concrete]
|
||||
// CHECK:STDOUT: %e.var_patt: %pattern_type.cb1 = var_pattern %e.patt [concrete]
|
||||
// CHECK:STDOUT: %E.type: type = fn_type @E [concrete]
|
||||
// CHECK:STDOUT: %E: %E.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
@@ -1140,8 +1196,8 @@ import library "extern_api";
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %default.import = import <none>
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.cb1 = ref_binding_pattern a [concrete]
|
||||
// CHECK:STDOUT: %a.var_patt: %pattern_type.cb1 = var_pattern %a.patt [concrete]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.cb1 = ref_binding_pattern a [concrete = constants.%a.patt]
|
||||
// CHECK:STDOUT: %a.var_patt: %pattern_type.cb1 = var_pattern %a.patt [concrete = constants.%a.var_patt]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %a.var: ref %empty_tuple.type = var %a.var_patt [concrete]
|
||||
// CHECK:STDOUT: %.loc52_9.1: type = splice_block %.loc52_9.3 [concrete = constants.%empty_tuple.type] {
|
||||
@@ -1150,15 +1206,15 @@ import library "extern_api";
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %a: ref %empty_tuple.type = ref_binding a, %a.var [concrete = %a.var]
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %b.patt: %pattern_type.6b6 = ref_binding_pattern b [concrete]
|
||||
// CHECK:STDOUT: %b.var_patt: %pattern_type.6b6 = var_pattern %b.patt [concrete]
|
||||
// CHECK:STDOUT: %b.patt: %pattern_type.6b6 = ref_binding_pattern b [concrete = constants.%b.patt.b23]
|
||||
// CHECK:STDOUT: %b.var_patt: %pattern_type.6b6 = var_pattern %b.patt [concrete = constants.%b.var_patt]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %b.var: ref %i32 = var %b.var_patt [concrete]
|
||||
// CHECK:STDOUT: %i32.loc53: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %b: ref %i32 = ref_binding b, %b.var [concrete = %b.var]
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %c.patt: %pattern_type.e1a = ref_binding_pattern c [concrete]
|
||||
// CHECK:STDOUT: %c.var_patt: %pattern_type.e1a = var_pattern %c.patt [concrete]
|
||||
// CHECK:STDOUT: %c.patt: %pattern_type.e1a = ref_binding_pattern c [concrete = constants.%c.patt.863]
|
||||
// CHECK:STDOUT: %c.var_patt: %pattern_type.e1a = var_pattern %c.patt [concrete = constants.%c.var_patt]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %c.var: ref %struct_type.c = var %c.var_patt [concrete]
|
||||
// CHECK:STDOUT: %.loc54: type = splice_block %struct_type.c [concrete = constants.%struct_type.c] {
|
||||
@@ -1167,8 +1223,8 @@ import library "extern_api";
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %c: ref %struct_type.c = ref_binding c, %c.var [concrete = %c.var]
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %d.patt: %pattern_type.cb1 = ref_binding_pattern d [concrete]
|
||||
// CHECK:STDOUT: %d.var_patt: %pattern_type.cb1 = var_pattern %d.patt [concrete]
|
||||
// CHECK:STDOUT: %d.patt: %pattern_type.cb1 = ref_binding_pattern d [concrete = constants.%d.patt]
|
||||
// CHECK:STDOUT: %d.var_patt: %pattern_type.cb1 = var_pattern %d.patt [concrete = constants.%d.var_patt]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %d.var: ref %empty_tuple.type = var %d.var_patt [concrete]
|
||||
// CHECK:STDOUT: %.loc55_9.1: type = splice_block %.loc55_9.3 [concrete = constants.%empty_tuple.type] {
|
||||
@@ -1177,8 +1233,8 @@ import library "extern_api";
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %d: ref %empty_tuple.type = ref_binding d, %d.var [concrete = %d.var]
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %e.patt: %pattern_type.cb1 = ref_binding_pattern e [concrete]
|
||||
// CHECK:STDOUT: %e.var_patt: %pattern_type.cb1 = var_pattern %e.patt [concrete]
|
||||
// CHECK:STDOUT: %e.patt: %pattern_type.cb1 = ref_binding_pattern e [concrete = constants.%e.patt]
|
||||
// CHECK:STDOUT: %e.var_patt: %pattern_type.cb1 = var_pattern %e.patt [concrete = constants.%e.var_patt]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %e.var: ref %empty_tuple.type = var %e.var_patt [concrete]
|
||||
// CHECK:STDOUT: %.loc56_9.1: type = splice_block %.loc56_9.3 [concrete = constants.%empty_tuple.type] {
|
||||
@@ -1244,6 +1300,8 @@ import library "extern_api";
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [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: %a.patt: %pattern_type.cb1 = ref_binding_pattern a [concrete]
|
||||
// CHECK:STDOUT: %a.var_patt: %pattern_type.cb1 = var_pattern %a.patt [concrete]
|
||||
// CHECK:STDOUT: %A.type: type = fn_type @A [concrete]
|
||||
// CHECK:STDOUT: %A: %A.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete]
|
||||
@@ -1251,6 +1309,8 @@ 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.6b6: type = pattern_type %i32 [concrete]
|
||||
// CHECK:STDOUT: %b.patt.b23: %pattern_type.6b6 = ref_binding_pattern b [concrete]
|
||||
// CHECK:STDOUT: %b.var_patt: %pattern_type.6b6 = var_pattern %b.patt.b23 [concrete]
|
||||
// CHECK:STDOUT: %B.type: type = fn_type @B [concrete]
|
||||
// CHECK:STDOUT: %B: %B.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete]
|
||||
@@ -1272,14 +1332,20 @@ import library "extern_api";
|
||||
// CHECK:STDOUT: %int_1.0c6: %i32 = int_value 1 [concrete]
|
||||
// CHECK:STDOUT: %struct_type.c: type = struct_type {.c: %i32} [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.e1a: type = pattern_type %struct_type.c [concrete]
|
||||
// CHECK:STDOUT: %c.patt.863: %pattern_type.e1a = ref_binding_pattern c [concrete]
|
||||
// CHECK:STDOUT: %c.var_patt: %pattern_type.e1a = var_pattern %c.patt.863 [concrete]
|
||||
// CHECK:STDOUT: %C.type: type = fn_type @C [concrete]
|
||||
// CHECK:STDOUT: %C: %C.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %tuple.type.a8a: type = tuple_type (%i32) [concrete]
|
||||
// CHECK:STDOUT: %tuple.type.985: type = tuple_type (Core.IntLiteral) [concrete]
|
||||
// CHECK:STDOUT: %tuple.378: %tuple.type.985 = tuple_value (%int_1.5b8) [concrete]
|
||||
// CHECK:STDOUT: %tuple.a1e: %tuple.type.a8a = tuple_value (%int_1.0c6) [concrete]
|
||||
// CHECK:STDOUT: %d.patt: %pattern_type.cb1 = ref_binding_pattern d [concrete]
|
||||
// CHECK:STDOUT: %d.var_patt: %pattern_type.cb1 = var_pattern %d.patt [concrete]
|
||||
// CHECK:STDOUT: %D.type: type = fn_type @D [concrete]
|
||||
// CHECK:STDOUT: %D: %D.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %e.patt: %pattern_type.cb1 = ref_binding_pattern e [concrete]
|
||||
// CHECK:STDOUT: %e.var_patt: %pattern_type.cb1 = var_pattern %e.patt [concrete]
|
||||
// CHECK:STDOUT: %E.type: type = fn_type @E [concrete]
|
||||
// CHECK:STDOUT: %E: %E.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
@@ -1323,8 +1389,8 @@ import library "extern_api";
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %default.import = import <none>
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.cb1 = ref_binding_pattern a [concrete]
|
||||
// CHECK:STDOUT: %a.var_patt: %pattern_type.cb1 = var_pattern %a.patt [concrete]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.cb1 = ref_binding_pattern a [concrete = constants.%a.patt]
|
||||
// CHECK:STDOUT: %a.var_patt: %pattern_type.cb1 = var_pattern %a.patt [concrete = constants.%a.var_patt]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %a.var: ref %empty_tuple.type = var %a.var_patt [concrete]
|
||||
// CHECK:STDOUT: %.loc52_9.1: type = splice_block %.loc52_9.3 [concrete = constants.%empty_tuple.type] {
|
||||
@@ -1333,15 +1399,15 @@ import library "extern_api";
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %a: ref %empty_tuple.type = ref_binding a, %a.var [concrete = %a.var]
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %b.patt: %pattern_type.6b6 = ref_binding_pattern b [concrete]
|
||||
// CHECK:STDOUT: %b.var_patt: %pattern_type.6b6 = var_pattern %b.patt [concrete]
|
||||
// CHECK:STDOUT: %b.patt: %pattern_type.6b6 = ref_binding_pattern b [concrete = constants.%b.patt.b23]
|
||||
// CHECK:STDOUT: %b.var_patt: %pattern_type.6b6 = var_pattern %b.patt [concrete = constants.%b.var_patt]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %b.var: ref %i32 = var %b.var_patt [concrete]
|
||||
// CHECK:STDOUT: %i32.loc53: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %b: ref %i32 = ref_binding b, %b.var [concrete = %b.var]
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %c.patt: %pattern_type.e1a = ref_binding_pattern c [concrete]
|
||||
// CHECK:STDOUT: %c.var_patt: %pattern_type.e1a = var_pattern %c.patt [concrete]
|
||||
// CHECK:STDOUT: %c.patt: %pattern_type.e1a = ref_binding_pattern c [concrete = constants.%c.patt.863]
|
||||
// CHECK:STDOUT: %c.var_patt: %pattern_type.e1a = var_pattern %c.patt [concrete = constants.%c.var_patt]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %c.var: ref %struct_type.c = var %c.var_patt [concrete]
|
||||
// CHECK:STDOUT: %.loc54: type = splice_block %struct_type.c [concrete = constants.%struct_type.c] {
|
||||
@@ -1350,8 +1416,8 @@ import library "extern_api";
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %c: ref %struct_type.c = ref_binding c, %c.var [concrete = %c.var]
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %d.patt: %pattern_type.cb1 = ref_binding_pattern d [concrete]
|
||||
// CHECK:STDOUT: %d.var_patt: %pattern_type.cb1 = var_pattern %d.patt [concrete]
|
||||
// CHECK:STDOUT: %d.patt: %pattern_type.cb1 = ref_binding_pattern d [concrete = constants.%d.patt]
|
||||
// CHECK:STDOUT: %d.var_patt: %pattern_type.cb1 = var_pattern %d.patt [concrete = constants.%d.var_patt]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %d.var: ref %empty_tuple.type = var %d.var_patt [concrete]
|
||||
// CHECK:STDOUT: %.loc55_9.1: type = splice_block %.loc55_9.3 [concrete = constants.%empty_tuple.type] {
|
||||
@@ -1360,8 +1426,8 @@ import library "extern_api";
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %d: ref %empty_tuple.type = ref_binding d, %d.var [concrete = %d.var]
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %e.patt: %pattern_type.cb1 = ref_binding_pattern e [concrete]
|
||||
// CHECK:STDOUT: %e.var_patt: %pattern_type.cb1 = var_pattern %e.patt [concrete]
|
||||
// CHECK:STDOUT: %e.patt: %pattern_type.cb1 = ref_binding_pattern e [concrete = constants.%e.patt]
|
||||
// CHECK:STDOUT: %e.var_patt: %pattern_type.cb1 = var_pattern %e.patt [concrete = constants.%e.var_patt]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %e.var: ref %empty_tuple.type = var %e.var_patt [concrete]
|
||||
// CHECK:STDOUT: %.loc56_9.1: type = splice_block %.loc56_9.3 [concrete = constants.%empty_tuple.type] {
|
||||
|
||||
@@ -24,6 +24,8 @@ fn G(a: 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.6b6: type = pattern_type %i32 [concrete]
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type.6b6 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.6b6 = at_binding_pattern a, %a.param_patt [concrete]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [concrete]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %G.type: type = fn_type @G [concrete]
|
||||
@@ -47,16 +49,16 @@ fn G(a: i32);
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type.6b6 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.6b6 = at_binding_pattern a, %a.param_patt [concrete]
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type.6b6 = value_param_pattern [concrete = constants.%a.param_patt]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.6b6 = at_binding_pattern a, %a.param_patt [concrete = constants.%a.patt]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %a.param: %i32 = value_param call_param0
|
||||
// CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %a: %i32 = value_binding a, %a.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] {
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type.6b6 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.6b6 = at_binding_pattern a, %a.param_patt [concrete]
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type.6b6 = value_param_pattern [concrete = constants.%a.param_patt]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.6b6 = at_binding_pattern a, %a.param_patt [concrete = constants.%a.patt]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %a.param: %i32 = value_param call_param0
|
||||
// CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
|
||||
+21
-11
@@ -27,24 +27,34 @@ fn CallF(ab: ({}, {}), c: {}) {
|
||||
// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.a96: type = pattern_type %empty_struct_type [concrete]
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type.a96 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.a96 = at_binding_pattern a, %a.param_patt [concrete]
|
||||
// CHECK:STDOUT: %b.param_patt: %pattern_type.a96 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %b.patt: %pattern_type.a96 = at_binding_pattern b, %b.param_patt [concrete]
|
||||
// CHECK:STDOUT: %tuple.type.b6b: type = tuple_type (%empty_struct_type, %empty_struct_type) [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.de4: type = pattern_type %tuple.type.b6b [concrete]
|
||||
// CHECK:STDOUT: %.20f: %pattern_type.de4 = tuple_pattern (%a.patt, %b.patt) [concrete]
|
||||
// CHECK:STDOUT: %c.param_patt: %pattern_type.a96 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %c.patt.d53327.1: %pattern_type.a96 = at_binding_pattern c, %c.param_patt [concrete]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [concrete]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %tuple: %tuple.type.b6b = tuple_value (%empty_struct, %empty_struct) [concrete]
|
||||
// CHECK:STDOUT: %ab.param_patt: %pattern_type.de4 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %ab.patt: %pattern_type.de4 = at_binding_pattern ab, %ab.param_patt [concrete]
|
||||
// CHECK:STDOUT: %c.patt.d53327.2: %pattern_type.a96 = at_binding_pattern c, %c.param_patt [concrete]
|
||||
// CHECK:STDOUT: %CallF.type: type = fn_type @CallF [concrete]
|
||||
// CHECK:STDOUT: %CallF: %CallF.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type.a96 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.a96 = at_binding_pattern a, %a.param_patt [concrete]
|
||||
// CHECK:STDOUT: %b.param_patt: %pattern_type.a96 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %b.patt: %pattern_type.a96 = at_binding_pattern b, %b.param_patt [concrete]
|
||||
// CHECK:STDOUT: %.loc14_33: %pattern_type.de4 = tuple_pattern (%a.patt, %b.patt) [concrete]
|
||||
// CHECK:STDOUT: %c.param_patt: %pattern_type.a96 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %c.patt: %pattern_type.a96 = at_binding_pattern c, %c.param_patt [concrete]
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type.a96 = value_param_pattern [concrete = constants.%a.param_patt]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.a96 = at_binding_pattern a, %a.param_patt [concrete = constants.%a.patt]
|
||||
// CHECK:STDOUT: %b.param_patt: %pattern_type.a96 = value_param_pattern [concrete = constants.%b.param_patt]
|
||||
// CHECK:STDOUT: %b.patt: %pattern_type.a96 = at_binding_pattern b, %b.param_patt [concrete = constants.%b.patt]
|
||||
// CHECK:STDOUT: %.loc14_33: %pattern_type.de4 = tuple_pattern (%a.patt, %b.patt) [concrete = constants.%.20f]
|
||||
// CHECK:STDOUT: %c.param_patt: %pattern_type.a96 = value_param_pattern [concrete = constants.%c.param_patt]
|
||||
// CHECK:STDOUT: %c.patt: %pattern_type.a96 = at_binding_pattern c, %c.param_patt [concrete = constants.%c.patt.d53327.1]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %a.param: %empty_struct_type = value_param call_param0
|
||||
// CHECK:STDOUT: %.loc14_18.1: type = splice_block %.loc14_18.3 [concrete = constants.%empty_struct_type] {
|
||||
@@ -66,10 +76,10 @@ fn CallF(ab: ({}, {}), c: {}) {
|
||||
// CHECK:STDOUT: %c: %empty_struct_type = value_binding c, %c.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %CallF.decl: %CallF.type = fn_decl @CallF [concrete = constants.%CallF] {
|
||||
// CHECK:STDOUT: %ab.param_patt: %pattern_type.de4 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %ab.patt: %pattern_type.de4 = at_binding_pattern ab, %ab.param_patt [concrete]
|
||||
// CHECK:STDOUT: %c.param_patt: %pattern_type.a96 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %c.patt: %pattern_type.a96 = at_binding_pattern c, %c.param_patt [concrete]
|
||||
// CHECK:STDOUT: %ab.param_patt: %pattern_type.de4 = value_param_pattern [concrete = constants.%ab.param_patt]
|
||||
// CHECK:STDOUT: %ab.patt: %pattern_type.de4 = at_binding_pattern ab, %ab.param_patt [concrete = constants.%ab.patt]
|
||||
// CHECK:STDOUT: %c.param_patt: %pattern_type.a96 = value_param_pattern [concrete = constants.%c.param_patt]
|
||||
// CHECK:STDOUT: %c.patt: %pattern_type.a96 = at_binding_pattern c, %c.param_patt [concrete = constants.%c.patt.d53327.2]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %ab.param: %tuple.type.b6b = value_param call_param0
|
||||
// CHECK:STDOUT: %.loc18_21.1: type = splice_block %.loc18_21.5 [concrete = constants.%tuple.type.b6b] {
|
||||
|
||||
@@ -30,10 +30,13 @@ fn G() {
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %.512: Core.Form = ref_form %i32 [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.6b6: type = pattern_type %i32 [concrete]
|
||||
// CHECK:STDOUT: %.ae0: %pattern_type.6b6 = ref_return_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %.ae0, %i32 [concrete]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [concrete]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %G.type: type = fn_type @G [concrete]
|
||||
// CHECK:STDOUT: %G: %G.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %x.patt: %pattern_type.6b6 = ref_binding_pattern x [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
@@ -53,8 +56,8 @@ fn G() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {
|
||||
// CHECK:STDOUT: %.loc4_11.1: %pattern_type.6b6 = ref_return_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %.loc4_11.1, %i32 [concrete]
|
||||
// CHECK:STDOUT: %.loc4_11.1: %pattern_type.6b6 = ref_return_pattern [concrete = constants.%.ae0]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %.loc4_11.1, %i32 [concrete = constants.%return.patt]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %.loc4_11.2: type = ref_tag %i32
|
||||
@@ -70,7 +73,7 @@ fn G() {
|
||||
// CHECK:STDOUT: fn @G() {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %x.patt: %pattern_type.6b6 = ref_binding_pattern x [concrete]
|
||||
// CHECK:STDOUT: %x.patt: %pattern_type.6b6 = ref_binding_pattern x [concrete = constants.%x.patt]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %F.ref: %F.type = name_ref F, file.%F.decl [concrete = constants.%F]
|
||||
// CHECK:STDOUT: %F.call: ref %i32 = call %F.ref()
|
||||
|
||||
@@ -31,6 +31,8 @@ fn F(unused n: C) {}
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %C: type = class_type @C [concrete]
|
||||
// CHECK:STDOUT: %pattern_type: type = pattern_type %C [concrete]
|
||||
// CHECK:STDOUT: %n.param_patt: %pattern_type = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %n.patt: %pattern_type = at_binding_pattern n, %n.param_patt [concrete]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [concrete]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
@@ -42,8 +44,8 @@ fn F(unused n: C) {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {}
|
||||
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {
|
||||
// CHECK:STDOUT: %n.param_patt: %pattern_type = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %n.patt: %pattern_type = at_binding_pattern n, %n.param_patt [concrete]
|
||||
// CHECK:STDOUT: %n.param_patt: %pattern_type = value_param_pattern [concrete = constants.%n.param_patt]
|
||||
// CHECK:STDOUT: %n.patt: %pattern_type = at_binding_pattern n, %n.param_patt [concrete = constants.%n.patt]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %n.param: %C = value_param call_param0
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
|
||||
+23
-16
@@ -77,8 +77,11 @@ fn K() -> {} { return {}; }
|
||||
// CHECK:STDOUT: %F.7088cc.1: %F.type.eb3ec9.1 = struct_value () [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: %x.param_patt: %pattern_type.cb1 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %x.patt.7ba44d.1: %pattern_type.cb1 = at_binding_pattern x, %x.param_patt [concrete]
|
||||
// CHECK:STDOUT: %F.type.eb3ec9.2: type = fn_type @F.loc23 [concrete]
|
||||
// CHECK:STDOUT: %F.7088cc.2: %F.type.eb3ec9.2 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %x.patt.7ba44d.2: %pattern_type.cb1 = at_binding_pattern x, %x.param_patt [concrete]
|
||||
// CHECK:STDOUT: %G.type.f42045.1: type = fn_type @G.loc25 [concrete]
|
||||
// CHECK:STDOUT: %G.4228ed.1: %G.type.f42045.1 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %G.type.f42045.2: type = fn_type @G.loc33 [concrete]
|
||||
@@ -90,6 +93,8 @@ fn K() -> {} { return {}; }
|
||||
// CHECK:STDOUT: %I.type.4c8936.1: type = fn_type @I.loc42 [concrete]
|
||||
// CHECK:STDOUT: %I.8a67f5.1: %I.type.4c8936.1 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %.262: Core.Form = init_form %empty_tuple.type [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt.900: %pattern_type.cb1 = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt.427: %pattern_type.cb1 = return_slot_pattern %return.param_patt.900, %empty_tuple.type [concrete]
|
||||
// CHECK:STDOUT: %I.type.4c8936.2: type = fn_type @I.loc50 [concrete]
|
||||
// CHECK:STDOUT: %I.8a67f5.2: %I.type.4c8936.2 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %J.type.6304f1.1: type = fn_type @J.loc52 [concrete]
|
||||
@@ -102,6 +107,8 @@ fn K() -> {} { return {}; }
|
||||
// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %.469: Core.Form = init_form %empty_struct_type [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.a96: type = pattern_type %empty_struct_type [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt.296: %pattern_type.a96 = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt.c45: %pattern_type.a96 = return_slot_pattern %return.param_patt.296, %empty_struct_type [concrete]
|
||||
// CHECK:STDOUT: %K.type.b73f4f.2: type = fn_type @K.loc70 [concrete]
|
||||
// CHECK:STDOUT: %K.4fd1e7.2: %K.type.b73f4f.2 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
@@ -117,8 +124,8 @@ fn K() -> {} { return {}; }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %F.decl.loc15: %F.type.eb3ec9.1 = fn_decl @F.loc15 [concrete = constants.%F.7088cc.1] {} {}
|
||||
// CHECK:STDOUT: %F.decl.loc23: %F.type.eb3ec9.2 = fn_decl @F.loc23 [concrete = constants.%F.7088cc.2] {
|
||||
// CHECK:STDOUT: %x.param_patt: %pattern_type.cb1 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %x.patt: %pattern_type.cb1 = at_binding_pattern x, %x.param_patt [concrete]
|
||||
// CHECK:STDOUT: %x.param_patt: %pattern_type.cb1 = value_param_pattern [concrete = constants.%x.param_patt]
|
||||
// CHECK:STDOUT: %x.patt: %pattern_type.cb1 = at_binding_pattern x, %x.param_patt [concrete = constants.%x.patt.7ba44d.1]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %x.param: %empty_tuple.type = value_param call_param0
|
||||
// CHECK:STDOUT: %.loc23_17.1: type = splice_block %.loc23_17.3 [concrete = constants.%empty_tuple.type] {
|
||||
@@ -128,8 +135,8 @@ fn K() -> {} { return {}; }
|
||||
// CHECK:STDOUT: %x: %empty_tuple.type = value_binding x, %x.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %G.decl.loc25: %G.type.f42045.1 = fn_decl @G.loc25 [concrete = constants.%G.4228ed.1] {
|
||||
// CHECK:STDOUT: %x.param_patt: %pattern_type.cb1 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %x.patt: %pattern_type.cb1 = at_binding_pattern x, %x.param_patt [concrete]
|
||||
// CHECK:STDOUT: %x.param_patt: %pattern_type.cb1 = value_param_pattern [concrete = constants.%x.param_patt]
|
||||
// CHECK:STDOUT: %x.patt: %pattern_type.cb1 = at_binding_pattern x, %x.param_patt [concrete = constants.%x.patt.7ba44d.2]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %x.param: %empty_tuple.type = value_param call_param0
|
||||
// CHECK:STDOUT: %.loc25_10.1: type = splice_block %.loc25_10.3 [concrete = constants.%empty_tuple.type] {
|
||||
@@ -140,8 +147,8 @@ fn K() -> {} { return {}; }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %G.decl.loc33: %G.type.f42045.2 = fn_decl @G.loc33 [concrete = constants.%G.4228ed.2] {} {}
|
||||
// CHECK:STDOUT: %H.decl.loc35: %H.type.c0bf33.1 = fn_decl @H.loc35 [concrete = constants.%H.aacb46.1] {
|
||||
// CHECK:STDOUT: %x.param_patt: %pattern_type.cb1 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %x.patt: %pattern_type.cb1 = at_binding_pattern x, %x.param_patt [concrete]
|
||||
// CHECK:STDOUT: %x.param_patt: %pattern_type.cb1 = value_param_pattern [concrete = constants.%x.param_patt]
|
||||
// CHECK:STDOUT: %x.patt: %pattern_type.cb1 = at_binding_pattern x, %x.param_patt [concrete = constants.%x.patt.7ba44d.2]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %x.param: %empty_tuple.type = value_param call_param0
|
||||
// CHECK:STDOUT: %.loc35_10.1: type = splice_block %.loc35_10.3 [concrete = constants.%empty_tuple.type] {
|
||||
@@ -151,8 +158,8 @@ fn K() -> {} { return {}; }
|
||||
// CHECK:STDOUT: %x: %empty_tuple.type = value_binding x, %x.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %H.decl.loc40: %H.type.c0bf33.2 = fn_decl @H.loc40 [concrete = constants.%H.aacb46.2] {
|
||||
// CHECK:STDOUT: %x.param_patt: <error> = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %x.patt: <error> = at_binding_pattern x, %x.param_patt [concrete]
|
||||
// CHECK:STDOUT: %x.param_patt: <error> = value_param_pattern [concrete = <error>]
|
||||
// CHECK:STDOUT: %x.patt: <error> = at_binding_pattern x, %x.param_patt [concrete = <error>]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %x.param: <error> = value_param call_param0
|
||||
// CHECK:STDOUT: %.loc40: type = type_literal <error> [concrete = <error>]
|
||||
@@ -160,8 +167,8 @@ fn K() -> {} { return {}; }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %I.decl.loc42: %I.type.4c8936.1 = fn_decl @I.loc42 [concrete = constants.%I.8a67f5.1] {} {}
|
||||
// CHECK:STDOUT: %I.decl.loc50: %I.type.4c8936.2 = fn_decl @I.loc50 [concrete = constants.%I.8a67f5.2] {
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.cb1 = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.cb1 = return_slot_pattern %return.param_patt, %.loc50_12.2 [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.cb1 = out_param_pattern [concrete = constants.%return.param_patt.900]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.cb1 = return_slot_pattern %return.param_patt, %.loc50_12.2 [concrete = constants.%return.patt.427]
|
||||
// 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]
|
||||
@@ -170,8 +177,8 @@ fn K() -> {} { return {}; }
|
||||
// CHECK:STDOUT: %return: ref %empty_tuple.type = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %J.decl.loc52: %J.type.6304f1.1 = fn_decl @J.loc52 [concrete = constants.%J.64b370.1] {
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.cb1 = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.cb1 = return_slot_pattern %return.param_patt, %.loc52_12.2 [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.cb1 = out_param_pattern [concrete = constants.%return.param_patt.900]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.cb1 = return_slot_pattern %return.param_patt, %.loc52_12.2 [concrete = constants.%return.patt.427]
|
||||
// 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]
|
||||
@@ -181,8 +188,8 @@ fn K() -> {} { return {}; }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %J.decl.loc60: %J.type.6304f1.2 = fn_decl @J.loc60 [concrete = constants.%J.64b370.2] {} {}
|
||||
// CHECK:STDOUT: %K.decl.loc62: %K.type.b73f4f.1 = fn_decl @K.loc62 [concrete = constants.%K.4fd1e7.1] {
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.cb1 = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.cb1 = return_slot_pattern %return.param_patt, %.loc62_12.2 [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.cb1 = out_param_pattern [concrete = constants.%return.param_patt.900]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.cb1 = return_slot_pattern %return.param_patt, %.loc62_12.2 [concrete = constants.%return.patt.427]
|
||||
// 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]
|
||||
@@ -191,8 +198,8 @@ fn K() -> {} { return {}; }
|
||||
// CHECK:STDOUT: %return: ref %empty_tuple.type = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %K.decl.loc70: %K.type.b73f4f.2 = fn_decl @K.loc70 [concrete = constants.%K.4fd1e7.2] {
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.a96 = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.a96 = return_slot_pattern %return.param_patt, %.loc70_12.2 [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.a96 = out_param_pattern [concrete = constants.%return.param_patt.296]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.a96 = return_slot_pattern %return.param_patt, %.loc70_12.2 [concrete = constants.%return.patt.c45]
|
||||
// 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]
|
||||
|
||||
+28
-14
@@ -125,7 +125,11 @@ 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.6b6: type = pattern_type %i32 [concrete]
|
||||
// CHECK:STDOUT: %b.param_patt: %pattern_type.6b6 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %b.patt: %pattern_type.6b6 = at_binding_pattern b, %b.param_patt [concrete]
|
||||
// CHECK:STDOUT: %.795: Core.Form = init_form %i32 [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt.a9a: %pattern_type.6b6 = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt.e1b: %pattern_type.6b6 = return_slot_pattern %return.param_patt.a9a, %i32 [concrete]
|
||||
// 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,9 +146,13 @@ fn D() {}
|
||||
// CHECK:STDOUT: %tuple.19c: %tuple.type.85c = tuple_value (%i32) [concrete]
|
||||
// CHECK:STDOUT: %tuple.type.a8a: type = tuple_type (%i32) [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.e71: type = pattern_type %tuple.type.a8a [concrete]
|
||||
// CHECK:STDOUT: %c.param_patt: %pattern_type.e71 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %c.patt: %pattern_type.e71 = at_binding_pattern c, %c.param_patt [concrete]
|
||||
// CHECK:STDOUT: %struct_type.c: type = struct_type {.c: %i32} [concrete]
|
||||
// CHECK:STDOUT: %.510: Core.Form = init_form %struct_type.c [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.e1a: type = pattern_type %struct_type.c [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt.b6f: %pattern_type.e1a = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt.00b: %pattern_type.e1a = return_slot_pattern %return.param_patt.b6f, %struct_type.c [concrete]
|
||||
// CHECK:STDOUT: %C.type: type = fn_type @C [concrete]
|
||||
// CHECK:STDOUT: %C: %C.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete]
|
||||
@@ -176,10 +184,10 @@ fn D() {}
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %A.decl: %A.type = fn_decl @A [concrete = constants.%A] {} {}
|
||||
// CHECK:STDOUT: %B.decl: %B.type = fn_decl @B [concrete = constants.%B] {
|
||||
// CHECK:STDOUT: %b.param_patt: %pattern_type.6b6 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %b.patt: %pattern_type.6b6 = at_binding_pattern b, %b.param_patt [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.6b6 = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32.loc5_17 [concrete]
|
||||
// CHECK:STDOUT: %b.param_patt: %pattern_type.6b6 = value_param_pattern [concrete = constants.%b.param_patt]
|
||||
// CHECK:STDOUT: %b.patt: %pattern_type.6b6 = at_binding_pattern b, %b.param_patt [concrete = constants.%b.patt]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.6b6 = out_param_pattern [concrete = constants.%return.param_patt.a9a]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.6b6 = return_slot_pattern %return.param_patt, %i32.loc5_17 [concrete = constants.%return.patt.e1b]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %i32.loc5_17: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %.loc5: Core.Form = init_form %i32.loc5_17 [concrete = constants.%.795]
|
||||
@@ -190,10 +198,10 @@ fn D() {}
|
||||
// CHECK:STDOUT: %return: ref %i32 = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %C.decl: %C.type = fn_decl @C [concrete = constants.%C] {
|
||||
// CHECK:STDOUT: %c.param_patt: %pattern_type.e71 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %c.patt: %pattern_type.e71 = at_binding_pattern c, %c.param_patt [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.e1a = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.e1a = return_slot_pattern %return.param_patt, %struct_type.c [concrete]
|
||||
// CHECK:STDOUT: %c.param_patt: %pattern_type.e71 = value_param_pattern [concrete = constants.%c.param_patt]
|
||||
// CHECK:STDOUT: %c.patt: %pattern_type.e71 = at_binding_pattern c, %c.param_patt [concrete = constants.%c.patt]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.e1a = out_param_pattern [concrete = constants.%return.param_patt.b6f]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.e1a = return_slot_pattern %return.param_patt, %struct_type.c [concrete = constants.%return.patt.00b]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %i32.loc6_25: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %struct_type.c: type = struct_type {.c: %i32} [concrete = constants.%struct_type.c]
|
||||
@@ -276,6 +284,8 @@ fn D() {}
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [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: %a.patt: %pattern_type.cb1 = ref_binding_pattern a [concrete]
|
||||
// CHECK:STDOUT: %a.var_patt: %pattern_type.cb1 = var_pattern %a.patt [concrete]
|
||||
// CHECK:STDOUT: %A.type: type = fn_type @A [concrete]
|
||||
// CHECK:STDOUT: %A: %A.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete]
|
||||
@@ -283,6 +293,8 @@ fn D() {}
|
||||
// CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.6b6: type = pattern_type %i32 [concrete]
|
||||
// CHECK:STDOUT: %b.patt.b23: %pattern_type.6b6 = ref_binding_pattern b [concrete]
|
||||
// CHECK:STDOUT: %b.var_patt: %pattern_type.6b6 = var_pattern %b.patt.b23 [concrete]
|
||||
// CHECK:STDOUT: %B.type: type = fn_type @B [concrete]
|
||||
// CHECK:STDOUT: %B: %B.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete]
|
||||
@@ -304,6 +316,8 @@ fn D() {}
|
||||
// CHECK:STDOUT: %int_1.0c6: %i32 = int_value 1 [concrete]
|
||||
// CHECK:STDOUT: %struct_type.c: type = struct_type {.c: %i32} [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.e1a: type = pattern_type %struct_type.c [concrete]
|
||||
// CHECK:STDOUT: %c.patt.863: %pattern_type.e1a = ref_binding_pattern c [concrete]
|
||||
// CHECK:STDOUT: %c.var_patt: %pattern_type.e1a = var_pattern %c.patt.863 [concrete]
|
||||
// CHECK:STDOUT: %C.type: type = fn_type @C [concrete]
|
||||
// CHECK:STDOUT: %C: %C.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %tuple.type.a8a: type = tuple_type (%i32) [concrete]
|
||||
@@ -343,8 +357,8 @@ fn D() {}
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %default.import = import <none>
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.cb1 = ref_binding_pattern a [concrete]
|
||||
// CHECK:STDOUT: %a.var_patt: %pattern_type.cb1 = var_pattern %a.patt [concrete]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.cb1 = ref_binding_pattern a [concrete = constants.%a.patt]
|
||||
// CHECK:STDOUT: %a.var_patt: %pattern_type.cb1 = var_pattern %a.patt [concrete = constants.%a.var_patt]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %a.var: ref %empty_tuple.type = var %a.var_patt [concrete]
|
||||
// CHECK:STDOUT: %.loc6_9.1: type = splice_block %.loc6_9.3 [concrete = constants.%empty_tuple.type] {
|
||||
@@ -353,15 +367,15 @@ fn D() {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %a: ref %empty_tuple.type = ref_binding a, %a.var [concrete = %a.var]
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %b.patt: %pattern_type.6b6 = ref_binding_pattern b [concrete]
|
||||
// CHECK:STDOUT: %b.var_patt: %pattern_type.6b6 = var_pattern %b.patt [concrete]
|
||||
// CHECK:STDOUT: %b.patt: %pattern_type.6b6 = ref_binding_pattern b [concrete = constants.%b.patt.b23]
|
||||
// CHECK:STDOUT: %b.var_patt: %pattern_type.6b6 = var_pattern %b.patt [concrete = constants.%b.var_patt]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %b.var: ref %i32 = var %b.var_patt [concrete]
|
||||
// CHECK:STDOUT: %i32.loc7: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %b: ref %i32 = ref_binding b, %b.var [concrete = %b.var]
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %c.patt: %pattern_type.e1a = ref_binding_pattern c [concrete]
|
||||
// CHECK:STDOUT: %c.var_patt: %pattern_type.e1a = var_pattern %c.patt [concrete]
|
||||
// CHECK:STDOUT: %c.patt: %pattern_type.e1a = ref_binding_pattern c [concrete = constants.%c.patt.863]
|
||||
// CHECK:STDOUT: %c.var_patt: %pattern_type.e1a = var_pattern %c.patt [concrete = constants.%c.var_patt]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %c.var: ref %struct_type.c = var %c.var_patt [concrete]
|
||||
// CHECK:STDOUT: %.loc8: type = splice_block %struct_type.c [concrete = constants.%struct_type.c] {
|
||||
|
||||
@@ -201,6 +201,8 @@ private fn Redecl() {}
|
||||
// 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: %f.patt: %pattern_type = ref_binding_pattern f [concrete]
|
||||
// CHECK:STDOUT: %f.var_patt: %pattern_type = var_pattern %f.patt [concrete]
|
||||
// CHECK:STDOUT: %Def.type: type = fn_type @Def [concrete]
|
||||
// CHECK:STDOUT: %Def: %Def.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
@@ -217,8 +219,8 @@ private fn Redecl() {}
|
||||
// CHECK:STDOUT: %Test.import = import Test
|
||||
// CHECK:STDOUT: %default.import = import <none>
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %f.patt: %pattern_type = ref_binding_pattern f [concrete]
|
||||
// CHECK:STDOUT: %f.var_patt: %pattern_type = var_pattern %f.patt [concrete]
|
||||
// CHECK:STDOUT: %f.patt: %pattern_type = ref_binding_pattern f [concrete = constants.%f.patt]
|
||||
// CHECK:STDOUT: %f.var_patt: %pattern_type = var_pattern %f.patt [concrete = constants.%f.var_patt]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %f.var: ref %empty_tuple.type = var %f.var_patt [concrete]
|
||||
// CHECK:STDOUT: %.loc4_9.1: type = splice_block %.loc4_9.3 [concrete = constants.%empty_tuple.type] {
|
||||
@@ -244,6 +246,8 @@ private fn Redecl() {}
|
||||
// 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: %f.patt: %pattern_type = ref_binding_pattern f [concrete]
|
||||
// CHECK:STDOUT: %f.var_patt: %pattern_type = var_pattern %f.patt [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -253,8 +257,8 @@ private fn Redecl() {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %default.import = import <none>
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %f.patt: %pattern_type = ref_binding_pattern f [concrete]
|
||||
// CHECK:STDOUT: %f.var_patt: %pattern_type = var_pattern %f.patt [concrete]
|
||||
// CHECK:STDOUT: %f.patt: %pattern_type = ref_binding_pattern f [concrete = constants.%f.patt]
|
||||
// CHECK:STDOUT: %f.var_patt: %pattern_type = var_pattern %f.patt [concrete = constants.%f.var_patt]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %f.var: ref %empty_tuple.type = var %f.var_patt [concrete]
|
||||
// CHECK:STDOUT: %.loc10_9.1: type = splice_block %.loc10_9.3 [concrete = constants.%empty_tuple.type] {
|
||||
@@ -277,6 +281,8 @@ private fn Redecl() {}
|
||||
// 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: %f.patt: %pattern_type = ref_binding_pattern f [concrete]
|
||||
// CHECK:STDOUT: %f.var_patt: %pattern_type = var_pattern %f.patt [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
@@ -293,8 +299,8 @@ private fn Redecl() {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Test.import = import Test
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %f.patt: %pattern_type = ref_binding_pattern f [concrete]
|
||||
// CHECK:STDOUT: %f.var_patt: %pattern_type = var_pattern %f.patt [concrete]
|
||||
// CHECK:STDOUT: %f.patt: %pattern_type = ref_binding_pattern f [concrete = constants.%f.patt]
|
||||
// CHECK:STDOUT: %f.var_patt: %pattern_type = var_pattern %f.patt [concrete = constants.%f.var_patt]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %f.var: ref %empty_tuple.type = var %f.var_patt [concrete]
|
||||
// CHECK:STDOUT: %.loc10_9.1: type = splice_block %.loc10_9.3 [concrete = constants.%empty_tuple.type] {
|
||||
@@ -318,6 +324,8 @@ private fn Redecl() {}
|
||||
// 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: %f.patt: %pattern_type = ref_binding_pattern f [concrete]
|
||||
// CHECK:STDOUT: %f.var_patt: %pattern_type = var_pattern %f.patt [concrete]
|
||||
// CHECK:STDOUT: %ForwardWithDef.type: type = fn_type @ForwardWithDef [concrete]
|
||||
// CHECK:STDOUT: %ForwardWithDef: %ForwardWithDef.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
@@ -334,8 +342,8 @@ private fn Redecl() {}
|
||||
// CHECK:STDOUT: %Test.import = import Test
|
||||
// CHECK:STDOUT: %default.import = import <none>
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %f.patt: %pattern_type = ref_binding_pattern f [concrete]
|
||||
// CHECK:STDOUT: %f.var_patt: %pattern_type = var_pattern %f.patt [concrete]
|
||||
// CHECK:STDOUT: %f.patt: %pattern_type = ref_binding_pattern f [concrete = constants.%f.patt]
|
||||
// CHECK:STDOUT: %f.var_patt: %pattern_type = var_pattern %f.patt [concrete = constants.%f.var_patt]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %f.var: ref %empty_tuple.type = var %f.var_patt [concrete]
|
||||
// CHECK:STDOUT: %.loc4_9.1: type = splice_block %.loc4_9.3 [concrete = constants.%empty_tuple.type] {
|
||||
@@ -361,6 +369,8 @@ private fn Redecl() {}
|
||||
// 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: %f.patt: %pattern_type = ref_binding_pattern f [concrete]
|
||||
// CHECK:STDOUT: %f.var_patt: %pattern_type = var_pattern %f.patt [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -370,8 +380,8 @@ private fn Redecl() {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %default.import = import <none>
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %f.patt: %pattern_type = ref_binding_pattern f [concrete]
|
||||
// CHECK:STDOUT: %f.var_patt: %pattern_type = var_pattern %f.patt [concrete]
|
||||
// CHECK:STDOUT: %f.patt: %pattern_type = ref_binding_pattern f [concrete = constants.%f.patt]
|
||||
// CHECK:STDOUT: %f.var_patt: %pattern_type = var_pattern %f.patt [concrete = constants.%f.var_patt]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %f.var: ref %empty_tuple.type = var %f.var_patt [concrete]
|
||||
// CHECK:STDOUT: %.loc10_9.1: type = splice_block %.loc10_9.3 [concrete = constants.%empty_tuple.type] {
|
||||
@@ -394,6 +404,8 @@ private fn Redecl() {}
|
||||
// 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: %f.patt: %pattern_type = ref_binding_pattern f [concrete]
|
||||
// CHECK:STDOUT: %f.var_patt: %pattern_type = var_pattern %f.patt [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
@@ -410,8 +422,8 @@ private fn Redecl() {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Test.import = import Test
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %f.patt: %pattern_type = ref_binding_pattern f [concrete]
|
||||
// CHECK:STDOUT: %f.var_patt: %pattern_type = var_pattern %f.patt [concrete]
|
||||
// CHECK:STDOUT: %f.patt: %pattern_type = ref_binding_pattern f [concrete = constants.%f.patt]
|
||||
// CHECK:STDOUT: %f.var_patt: %pattern_type = var_pattern %f.patt [concrete = constants.%f.var_patt]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %f.var: ref %empty_tuple.type = var %f.var_patt [concrete]
|
||||
// CHECK:STDOUT: %.loc10_9.1: type = splice_block %.loc10_9.3 [concrete = constants.%empty_tuple.type] {
|
||||
@@ -435,6 +447,8 @@ private fn Redecl() {}
|
||||
// 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: %f.patt: %pattern_type = ref_binding_pattern f [concrete]
|
||||
// CHECK:STDOUT: %f.var_patt: %pattern_type = var_pattern %f.patt [concrete]
|
||||
// CHECK:STDOUT: %Forward.type: type = fn_type @Forward [concrete]
|
||||
// CHECK:STDOUT: %Forward: %Forward.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
@@ -451,8 +465,8 @@ private fn Redecl() {}
|
||||
// CHECK:STDOUT: %Test.import = import Test
|
||||
// CHECK:STDOUT: %default.import = import <none>
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %f.patt: %pattern_type = ref_binding_pattern f [concrete]
|
||||
// CHECK:STDOUT: %f.var_patt: %pattern_type = var_pattern %f.patt [concrete]
|
||||
// CHECK:STDOUT: %f.patt: %pattern_type = ref_binding_pattern f [concrete = constants.%f.patt]
|
||||
// CHECK:STDOUT: %f.var_patt: %pattern_type = var_pattern %f.patt [concrete = constants.%f.var_patt]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %f.var: ref %empty_tuple.type = var %f.var_patt [concrete]
|
||||
// CHECK:STDOUT: %.loc4_9.1: type = splice_block %.loc4_9.3 [concrete = constants.%empty_tuple.type] {
|
||||
@@ -482,6 +496,8 @@ private fn Redecl() {}
|
||||
// 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: %f.patt: %pattern_type = ref_binding_pattern f [concrete]
|
||||
// CHECK:STDOUT: %f.var_patt: %pattern_type = var_pattern %f.patt [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -491,8 +507,8 @@ private fn Redecl() {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %default.import = import <none>
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %f.patt: %pattern_type = ref_binding_pattern f [concrete]
|
||||
// CHECK:STDOUT: %f.var_patt: %pattern_type = var_pattern %f.patt [concrete]
|
||||
// CHECK:STDOUT: %f.patt: %pattern_type = ref_binding_pattern f [concrete = constants.%f.patt]
|
||||
// CHECK:STDOUT: %f.var_patt: %pattern_type = var_pattern %f.patt [concrete = constants.%f.var_patt]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %f.var: ref %empty_tuple.type = var %f.var_patt [concrete]
|
||||
// CHECK:STDOUT: %.loc10_9.1: type = splice_block %.loc10_9.3 [concrete = constants.%empty_tuple.type] {
|
||||
@@ -515,6 +531,8 @@ private fn Redecl() {}
|
||||
// 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: %f.patt: %pattern_type = ref_binding_pattern f [concrete]
|
||||
// CHECK:STDOUT: %f.var_patt: %pattern_type = var_pattern %f.patt [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
@@ -531,8 +549,8 @@ private fn Redecl() {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Test.import = import Test
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %f.patt: %pattern_type = ref_binding_pattern f [concrete]
|
||||
// CHECK:STDOUT: %f.var_patt: %pattern_type = var_pattern %f.patt [concrete]
|
||||
// CHECK:STDOUT: %f.patt: %pattern_type = ref_binding_pattern f [concrete = constants.%f.patt]
|
||||
// CHECK:STDOUT: %f.var_patt: %pattern_type = var_pattern %f.patt [concrete = constants.%f.var_patt]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %f.var: ref %empty_tuple.type = var %f.var_patt [concrete]
|
||||
// CHECK:STDOUT: %.loc10_9.1: type = splice_block %.loc10_9.3 [concrete = constants.%empty_tuple.type] {
|
||||
|
||||
@@ -22,6 +22,8 @@ fn Foo(unused a: 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.6b6: type = pattern_type %i32 [concrete]
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type.6b6 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.6b6 = at_binding_pattern a, %a.param_patt [concrete]
|
||||
// CHECK:STDOUT: %Foo.type: type = fn_type @Foo [concrete]
|
||||
// CHECK:STDOUT: %Foo: %Foo.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
@@ -42,8 +44,8 @@ fn Foo(unused a: i32) {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %Foo.decl: %Foo.type = fn_decl @Foo [concrete = constants.%Foo] {
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type.6b6 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.6b6 = at_binding_pattern a, %a.param_patt [concrete]
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type.6b6 = value_param_pattern [concrete = constants.%a.param_patt]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.6b6 = at_binding_pattern a, %a.param_patt [concrete = constants.%a.patt]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %a.param: %i32 = value_param call_param0
|
||||
// CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
|
||||
@@ -22,6 +22,8 @@ fn Foo(unused a: 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.6b6: type = pattern_type %i32 [concrete]
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type.6b6 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.6b6 = at_binding_pattern a, %a.param_patt [concrete]
|
||||
// CHECK:STDOUT: %Foo.type: type = fn_type @Foo [concrete]
|
||||
// CHECK:STDOUT: %Foo: %Foo.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
@@ -42,8 +44,8 @@ fn Foo(unused a: i32,) {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %Foo.decl: %Foo.type = fn_decl @Foo [concrete = constants.%Foo] {
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type.6b6 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.6b6 = at_binding_pattern a, %a.param_patt [concrete]
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type.6b6 = value_param_pattern [concrete = constants.%a.param_patt]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.6b6 = at_binding_pattern a, %a.param_patt [concrete = constants.%a.patt]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %a.param: %i32 = value_param call_param0
|
||||
// CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
|
||||
@@ -22,6 +22,10 @@ fn Foo(unused a: i32, unused b: 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.6b6: type = pattern_type %i32 [concrete]
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type.6b6 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.6b6 = at_binding_pattern a, %a.param_patt [concrete]
|
||||
// CHECK:STDOUT: %b.param_patt: %pattern_type.6b6 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %b.patt: %pattern_type.6b6 = at_binding_pattern b, %b.param_patt [concrete]
|
||||
// CHECK:STDOUT: %Foo.type: type = fn_type @Foo [concrete]
|
||||
// CHECK:STDOUT: %Foo: %Foo.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
@@ -42,10 +46,10 @@ fn Foo(unused a: i32, unused b: i32) {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %Foo.decl: %Foo.type = fn_decl @Foo [concrete = constants.%Foo] {
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type.6b6 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.6b6 = at_binding_pattern a, %a.param_patt [concrete]
|
||||
// CHECK:STDOUT: %b.param_patt: %pattern_type.6b6 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %b.patt: %pattern_type.6b6 = at_binding_pattern b, %b.param_patt [concrete]
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type.6b6 = value_param_pattern [concrete = constants.%a.param_patt]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.6b6 = at_binding_pattern a, %a.param_patt [concrete = constants.%a.patt]
|
||||
// CHECK:STDOUT: %b.param_patt: %pattern_type.6b6 = value_param_pattern [concrete = constants.%b.param_patt]
|
||||
// CHECK:STDOUT: %b.patt: %pattern_type.6b6 = at_binding_pattern b, %b.param_patt [concrete = constants.%b.patt]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %a.param: %i32 = value_param call_param0
|
||||
// CHECK:STDOUT: %i32.loc15_18: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
|
||||
@@ -22,6 +22,10 @@ fn Foo(unused a: i32, unused b: 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.6b6: type = pattern_type %i32 [concrete]
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type.6b6 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.6b6 = at_binding_pattern a, %a.param_patt [concrete]
|
||||
// CHECK:STDOUT: %b.param_patt: %pattern_type.6b6 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %b.patt: %pattern_type.6b6 = at_binding_pattern b, %b.param_patt [concrete]
|
||||
// CHECK:STDOUT: %Foo.type: type = fn_type @Foo [concrete]
|
||||
// CHECK:STDOUT: %Foo: %Foo.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
@@ -42,10 +46,10 @@ fn Foo(unused a: i32, unused b: i32,) {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %Foo.decl: %Foo.type = fn_decl @Foo [concrete = constants.%Foo] {
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type.6b6 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.6b6 = at_binding_pattern a, %a.param_patt [concrete]
|
||||
// CHECK:STDOUT: %b.param_patt: %pattern_type.6b6 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %b.patt: %pattern_type.6b6 = at_binding_pattern b, %b.param_patt [concrete]
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type.6b6 = value_param_pattern [concrete = constants.%a.param_patt]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.6b6 = at_binding_pattern a, %a.param_patt [concrete = constants.%a.patt]
|
||||
// CHECK:STDOUT: %b.param_patt: %pattern_type.6b6 = value_param_pattern [concrete = constants.%b.param_patt]
|
||||
// CHECK:STDOUT: %b.patt: %pattern_type.6b6 = at_binding_pattern b, %b.param_patt [concrete = constants.%b.patt]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %a.param: %i32 = value_param call_param0
|
||||
// CHECK:STDOUT: %i32.loc15_18: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
|
||||
@@ -212,6 +212,8 @@ fn Foo(unused a: const (const C)) {}
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete]
|
||||
// CHECK:STDOUT: %pattern_type: type = pattern_type %C [concrete]
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type = at_binding_pattern a, %a.param_patt [concrete]
|
||||
// CHECK:STDOUT: %Foo.type: type = fn_type @Foo [concrete]
|
||||
// CHECK:STDOUT: %Foo: %Foo.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Bar.type: type = fn_type @Bar [concrete]
|
||||
@@ -229,32 +231,32 @@ fn Foo(unused a: const (const C)) {}
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, %C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %D: type = alias_binding D, %C.ref [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %Foo.decl.loc7: %Foo.type = fn_decl @Foo [concrete = constants.%Foo] {
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type = at_binding_pattern a, %a.param_patt [concrete]
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type = value_param_pattern [concrete = constants.%a.param_patt]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type = at_binding_pattern a, %a.param_patt [concrete = constants.%a.patt]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %a.param.loc7: %C = value_param call_param0
|
||||
// CHECK:STDOUT: %C.ref.loc7: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %a.loc7: %C = value_binding a, %a.param.loc7
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Foo.decl.loc8: %Foo.type = fn_decl @Foo [concrete = constants.%Foo] {
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type = at_binding_pattern a, %a.param_patt [concrete]
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type = value_param_pattern [concrete = constants.%a.param_patt]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type = at_binding_pattern a, %a.param_patt [concrete = constants.%a.patt]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %a.param.loc8: %C = value_param call_param0
|
||||
// CHECK:STDOUT: %C.ref.loc8: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %a.loc8: %C = value_binding a, %a.param.loc8
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Bar.decl.loc10: %Bar.type = fn_decl @Bar [concrete = constants.%Bar] {
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type = at_binding_pattern a, %a.param_patt [concrete]
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type = value_param_pattern [concrete = constants.%a.param_patt]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type = at_binding_pattern a, %a.param_patt [concrete = constants.%a.patt]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %a.param.loc10: %C = value_param call_param0
|
||||
// CHECK:STDOUT: %D.ref.loc10: type = name_ref D, file.%D [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %a.loc10: %C = value_binding a, %a.param.loc10
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Bar.decl.loc11: %Bar.type = fn_decl @Bar [concrete = constants.%Bar] {
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type = at_binding_pattern a, %a.param_patt [concrete]
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type = value_param_pattern [concrete = constants.%a.param_patt]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type = at_binding_pattern a, %a.param_patt [concrete = constants.%a.patt]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %a.param.loc11: %C = value_param call_param0
|
||||
// CHECK:STDOUT: %D.ref.loc11: type = name_ref D, file.%D [concrete = constants.%C]
|
||||
@@ -287,6 +289,8 @@ fn Foo(unused a: const (const C)) {}
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete]
|
||||
// CHECK:STDOUT: %pattern_type: type = pattern_type %C [concrete]
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type = at_binding_pattern a, %a.param_patt [concrete]
|
||||
// CHECK:STDOUT: %Foo.type: type = fn_type @Foo [concrete]
|
||||
// CHECK:STDOUT: %Foo: %Foo.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
@@ -298,16 +302,16 @@ fn Foo(unused a: const (const C)) {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {}
|
||||
// CHECK:STDOUT: %Foo.decl.loc6: %Foo.type = fn_decl @Foo [concrete = constants.%Foo] {
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type = at_binding_pattern a, %a.param_patt [concrete]
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type = value_param_pattern [concrete = constants.%a.param_patt]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type = at_binding_pattern a, %a.param_patt [concrete = constants.%a.patt]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %a.param.loc6: %C = value_param call_param0
|
||||
// CHECK:STDOUT: %C.ref.loc6: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %a.loc6: %C = value_binding a, %a.param.loc6
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Foo.decl.loc7: %Foo.type = fn_decl @Foo [concrete = constants.%Foo] {
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type = at_binding_pattern a, %a.param_patt [concrete]
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type = value_param_pattern [concrete = constants.%a.param_patt]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type = at_binding_pattern a, %a.param_patt [concrete = constants.%a.patt]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %a.param.loc7: %C = value_param call_param0
|
||||
// CHECK:STDOUT: %C.ref.loc7: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
@@ -335,6 +339,8 @@ fn Foo(unused a: const (const C)) {}
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete]
|
||||
// CHECK:STDOUT: %pattern_type: type = pattern_type %C [concrete]
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type = at_binding_pattern a, %a.param_patt [concrete]
|
||||
// CHECK:STDOUT: %Foo.type.11c674.1: type = fn_type @Foo.loc6 [concrete]
|
||||
// CHECK:STDOUT: %Foo.12ccef.1: %Foo.type.11c674.1 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Foo.type.11c674.2: type = fn_type @Foo.loc14 [concrete]
|
||||
@@ -348,16 +354,16 @@ fn Foo(unused a: const (const C)) {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {}
|
||||
// CHECK:STDOUT: %Foo.decl.loc6: %Foo.type.11c674.1 = fn_decl @Foo.loc6 [concrete = constants.%Foo.12ccef.1] {
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type = at_binding_pattern a, %a.param_patt [concrete]
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type = value_param_pattern [concrete = constants.%a.param_patt]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type = at_binding_pattern a, %a.param_patt [concrete = constants.%a.patt]
|
||||
// CHECK:STDOUT: } {
|
||||
// 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
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Foo.decl.loc14: %Foo.type.11c674.2 = fn_decl @Foo.loc14 [concrete = constants.%Foo.12ccef.2] {
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type = at_binding_pattern a, %a.param_patt [concrete]
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type = value_param_pattern [concrete = constants.%a.param_patt]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type = at_binding_pattern a, %a.param_patt [concrete = constants.%a.patt]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %a.param: %C = value_param call_param0
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
@@ -424,6 +430,8 @@ fn Foo(unused a: const (const C)) {}
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete]
|
||||
// CHECK:STDOUT: %pattern_type: type = pattern_type %C [concrete]
|
||||
// CHECK:STDOUT: %_.param_patt: %pattern_type = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %_.patt: %pattern_type = at_binding_pattern _, %_.param_patt [concrete]
|
||||
// CHECK:STDOUT: %Foo.type.11c674.1: type = fn_type @Foo.loc6 [concrete]
|
||||
// CHECK:STDOUT: %Foo.12ccef.1: %Foo.type.11c674.1 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Foo.type.11c674.2: type = fn_type @Foo.loc14 [concrete]
|
||||
@@ -437,16 +445,16 @@ fn Foo(unused a: const (const C)) {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {}
|
||||
// CHECK:STDOUT: %Foo.decl.loc6: %Foo.type.11c674.1 = fn_decl @Foo.loc6 [concrete = constants.%Foo.12ccef.1] {
|
||||
// CHECK:STDOUT: %_.param_patt: %pattern_type = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %_.patt: %pattern_type = at_binding_pattern _, %_.param_patt [concrete]
|
||||
// CHECK:STDOUT: %_.param_patt: %pattern_type = value_param_pattern [concrete = constants.%_.param_patt]
|
||||
// CHECK:STDOUT: %_.patt: %pattern_type = at_binding_pattern _, %_.param_patt [concrete = constants.%_.patt]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %_.param: %C = value_param call_param0
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %_: %C = value_binding _, %_.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Foo.decl.loc14: %Foo.type.11c674.2 = fn_decl @Foo.loc14 [concrete = constants.%Foo.12ccef.2] {
|
||||
// CHECK:STDOUT: %_.param_patt: %pattern_type = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %_.patt: %pattern_type = at_binding_pattern _, %_.param_patt [concrete]
|
||||
// CHECK:STDOUT: %_.param_patt: %pattern_type = value_param_pattern [concrete = constants.%_.param_patt]
|
||||
// CHECK:STDOUT: %_.patt: %pattern_type = at_binding_pattern _, %_.param_patt [concrete = constants.%_.patt]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %_.param: %C = value_param call_param0
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
@@ -476,6 +484,8 @@ fn Foo(unused a: const (const C)) {}
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete]
|
||||
// CHECK:STDOUT: %pattern_type: type = pattern_type %C [concrete]
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type = at_binding_pattern a, %a.param_patt [concrete]
|
||||
// CHECK:STDOUT: %Foo.type: type = fn_type @Foo [concrete]
|
||||
// CHECK:STDOUT: %Foo: %Foo.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Bar.type: type = fn_type @Bar [concrete]
|
||||
@@ -493,16 +503,16 @@ fn Foo(unused a: const (const C)) {}
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, %C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %D: type = alias_binding D, %C.ref [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %Foo.decl: %Foo.type = fn_decl @Foo [concrete = constants.%Foo] {
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type = at_binding_pattern a, %a.param_patt [concrete]
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type = value_param_pattern [concrete = constants.%a.param_patt]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type = at_binding_pattern a, %a.param_patt [concrete = constants.%a.patt]
|
||||
// CHECK:STDOUT: } {
|
||||
// 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
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Bar.decl: %Bar.type = fn_decl @Bar [concrete = constants.%Bar] {
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type = at_binding_pattern a, %a.param_patt [concrete]
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type = value_param_pattern [concrete = constants.%a.param_patt]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type = at_binding_pattern a, %a.param_patt [concrete = constants.%a.patt]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %a.param: %C = value_param call_param0
|
||||
// CHECK:STDOUT: %D.ref: type = name_ref D, file.%D [concrete = constants.%C]
|
||||
@@ -529,8 +539,11 @@ fn Foo(unused a: const (const C)) {}
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete]
|
||||
// CHECK:STDOUT: %pattern_type: type = pattern_type %C [concrete]
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %a.patt.159dab.1: %pattern_type = at_binding_pattern a, %a.param_patt [concrete]
|
||||
// CHECK:STDOUT: %Foo.type: type = fn_type @Foo [concrete]
|
||||
// CHECK:STDOUT: %Foo: %Foo.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %a.patt.159dab.2: %pattern_type = at_binding_pattern a, %a.param_patt [concrete]
|
||||
// CHECK:STDOUT: %Bar.type: type = fn_type @Bar [concrete]
|
||||
// CHECK:STDOUT: %Bar: %Bar.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
@@ -552,16 +565,16 @@ fn Foo(unused a: const (const C)) {}
|
||||
// CHECK:STDOUT: %default.import.loc2_24.1 = import <none>
|
||||
// CHECK:STDOUT: %default.import.loc2_24.2 = import <none>
|
||||
// CHECK:STDOUT: %Foo.decl: %Foo.type = fn_decl @Foo [concrete = constants.%Foo] {
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type = at_binding_pattern a, %a.param_patt [concrete]
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type = value_param_pattern [concrete = constants.%a.param_patt]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type = at_binding_pattern a, %a.param_patt [concrete = constants.%a.patt.159dab.1]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %a.param: %C = value_param call_param0
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, imports.%Main.C [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %a: %C = value_binding a, %a.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Bar.decl: %Bar.type = fn_decl @Bar [concrete = constants.%Bar] {
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type = at_binding_pattern a, %a.param_patt [concrete]
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type = value_param_pattern [concrete = constants.%a.param_patt]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type = at_binding_pattern a, %a.param_patt [concrete = constants.%a.patt.159dab.2]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %a.param: %C = value_param call_param0
|
||||
// CHECK:STDOUT: %D.ref: type = name_ref D, imports.%Main.D [concrete = constants.%C]
|
||||
@@ -593,8 +606,12 @@ fn Foo(unused a: const (const C)) {}
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete]
|
||||
// CHECK:STDOUT: %pattern_type: type = pattern_type %C [concrete]
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type = at_binding_pattern a, %a.param_patt [concrete]
|
||||
// CHECK:STDOUT: %Foo.type.11c674.1: type = fn_type @Foo.loc7 [concrete]
|
||||
// CHECK:STDOUT: %Foo.12ccef.1: %Foo.type.11c674.1 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %b.param_patt: %pattern_type = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %b.patt: %pattern_type = at_binding_pattern b, %b.param_patt [concrete]
|
||||
// CHECK:STDOUT: %Foo.type.11c674.2: type = fn_type @Foo.loc15 [concrete]
|
||||
// CHECK:STDOUT: %Foo.12ccef.2: %Foo.type.11c674.2 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
@@ -609,16 +626,16 @@ fn Foo(unused a: const (const C)) {}
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, %C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %D: type = alias_binding D, %C.ref [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %Foo.decl.loc7: %Foo.type.11c674.1 = fn_decl @Foo.loc7 [concrete = constants.%Foo.12ccef.1] {
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type = at_binding_pattern a, %a.param_patt [concrete]
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type = value_param_pattern [concrete = constants.%a.param_patt]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type = at_binding_pattern a, %a.param_patt [concrete = constants.%a.patt]
|
||||
// CHECK:STDOUT: } {
|
||||
// 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
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Foo.decl.loc15: %Foo.type.11c674.2 = fn_decl @Foo.loc15 [concrete = constants.%Foo.12ccef.2] {
|
||||
// CHECK:STDOUT: %b.param_patt: %pattern_type = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %b.patt: %pattern_type = at_binding_pattern b, %b.param_patt [concrete]
|
||||
// CHECK:STDOUT: %b.param_patt: %pattern_type = value_param_pattern [concrete = constants.%b.param_patt]
|
||||
// CHECK:STDOUT: %b.patt: %pattern_type = at_binding_pattern b, %b.param_patt [concrete = constants.%b.patt]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %b.param: %C = value_param call_param0
|
||||
// CHECK:STDOUT: %D.ref: type = name_ref D, file.%D [concrete = constants.%C]
|
||||
@@ -648,6 +665,8 @@ fn Foo(unused a: const (const C)) {}
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete]
|
||||
// CHECK:STDOUT: %pattern_type: type = pattern_type %C [concrete]
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type = at_binding_pattern a, %a.param_patt [concrete]
|
||||
// CHECK:STDOUT: %Foo.type.11c674.1: type = fn_type @Foo.loc7 [concrete]
|
||||
// CHECK:STDOUT: %Foo.12ccef.1: %Foo.type.11c674.1 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Foo.type.11c674.2: type = fn_type @Foo.loc15 [concrete]
|
||||
@@ -664,16 +683,16 @@ fn Foo(unused a: const (const C)) {}
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, %C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %D: type = alias_binding D, %C.ref [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %Foo.decl.loc7: %Foo.type.11c674.1 = fn_decl @Foo.loc7 [concrete = constants.%Foo.12ccef.1] {
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type = at_binding_pattern a, %a.param_patt [concrete]
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type = value_param_pattern [concrete = constants.%a.param_patt]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type = at_binding_pattern a, %a.param_patt [concrete = constants.%a.patt]
|
||||
// CHECK:STDOUT: } {
|
||||
// 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
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Foo.decl.loc15: %Foo.type.11c674.2 = fn_decl @Foo.loc15 [concrete = constants.%Foo.12ccef.2] {
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type = at_binding_pattern a, %a.param_patt [concrete]
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type = value_param_pattern [concrete = constants.%a.param_patt]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type = at_binding_pattern a, %a.param_patt [concrete = constants.%a.patt]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %a.param: %C = value_param call_param0
|
||||
// CHECK:STDOUT: %D.ref: type = name_ref D, file.%D [concrete = constants.%C]
|
||||
@@ -705,6 +724,7 @@ fn Foo(unused a: const (const C)) {}
|
||||
// CHECK:STDOUT: %type: type = facet_type <type> [concrete]
|
||||
// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self]
|
||||
// CHECK:STDOUT: %pattern_type: type = pattern_type %C [concrete]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type = symbolic_binding_pattern a, 0 [symbolic]
|
||||
// CHECK:STDOUT: %a.1bf9e8.1: %C = symbolic_binding a, 0 [symbolic]
|
||||
// CHECK:STDOUT: %Foo.type.11c674.1: type = fn_type @Foo.loc7 [concrete]
|
||||
// CHECK:STDOUT: %Foo.12ccef.1: %Foo.type.11c674.1 = struct_value () [concrete]
|
||||
@@ -723,7 +743,7 @@ fn Foo(unused a: const (const C)) {}
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, %C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %D: type = alias_binding D, %C.ref [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %Foo.decl.loc7: %Foo.type.11c674.1 = fn_decl @Foo.loc7 [concrete = constants.%Foo.12ccef.1] {
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type = symbolic_binding_pattern a, 0 [concrete]
|
||||
// CHECK:STDOUT: %a.patt.loc7_9.1: %pattern_type = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc7_9.2 (constants.%a.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %.loc7: type = splice_block %C.ref [concrete = constants.%C] {
|
||||
// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self]
|
||||
@@ -732,7 +752,7 @@ fn Foo(unused a: const (const C)) {}
|
||||
// CHECK:STDOUT: %a.loc7_9.2: %C = symbolic_binding a, 0 [symbolic = %a.loc7_9.1 (constants.%a.1bf9e8.1)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Foo.decl.loc15: %Foo.type.11c674.2 = fn_decl @Foo.loc15 [concrete = constants.%Foo.12ccef.2] {
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type = symbolic_binding_pattern a, 0 [concrete]
|
||||
// CHECK:STDOUT: %a.patt.loc15_16.1: %pattern_type = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc15_16.2 (constants.%a.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %.loc15: type = splice_block %D.ref [concrete = constants.%C] {
|
||||
// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self]
|
||||
@@ -751,12 +771,14 @@ fn Foo(unused a: const (const C)) {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: generic fn @Foo.loc7(%a.loc7_9.2: %C) {
|
||||
// CHECK:STDOUT: %a.patt.loc7_9.2: %pattern_type = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc7_9.2 (constants.%a.patt)]
|
||||
// CHECK:STDOUT: %a.loc7_9.1: %C = symbolic_binding a, 0 [symbolic = %a.loc7_9.1 (constants.%a.1bf9e8.1)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn();
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: generic fn @Foo.loc15(%a.loc15_16.3: %C) {
|
||||
// CHECK:STDOUT: %a.patt.loc15_16.2: %pattern_type = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc15_16.2 (constants.%a.patt)]
|
||||
// CHECK:STDOUT: %a.loc15_16.1: %C = symbolic_binding a, 0 [symbolic = %a.loc15_16.1 (constants.%a.1bf9e8.1)]
|
||||
// CHECK:STDOUT: %a.loc15_16.2: %C = symbolic_binding a, 0 [symbolic = %a.loc15_16.2 (constants.%a.1bf9e8.2)]
|
||||
// CHECK:STDOUT:
|
||||
@@ -769,10 +791,12 @@ fn Foo(unused a: const (const C)) {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @Foo.loc7(constants.%a.1bf9e8.1) {
|
||||
// CHECK:STDOUT: %a.patt.loc7_9.2 => constants.%a.patt
|
||||
// CHECK:STDOUT: %a.loc7_9.1 => constants.%a.1bf9e8.1
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @Foo.loc15(constants.%a.1bf9e8.2) {
|
||||
// CHECK:STDOUT: %a.patt.loc15_16.2 => constants.%a.patt
|
||||
// CHECK:STDOUT: %a.loc15_16.1 => constants.%a.1bf9e8.2
|
||||
// CHECK:STDOUT: %a.loc15_16.2 => constants.%a.1bf9e8.2
|
||||
// CHECK:STDOUT: }
|
||||
@@ -785,6 +809,8 @@ fn Foo(unused a: const (const C)) {}
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete]
|
||||
// CHECK:STDOUT: %.a44: Core.Form = init_form %C [concrete]
|
||||
// CHECK:STDOUT: %pattern_type: type = pattern_type %C [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type = return_slot_pattern %return.param_patt, %C [concrete]
|
||||
// CHECK:STDOUT: %Foo.type: type = fn_type @Foo [concrete]
|
||||
// CHECK:STDOUT: %Foo: %Foo.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete]
|
||||
@@ -801,8 +827,8 @@ fn Foo(unused a: const (const C)) {}
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, %C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %D: type = alias_binding D, %C.ref [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %Foo.decl.loc7: %Foo.type = fn_decl @Foo [concrete = constants.%Foo] {
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type = return_slot_pattern %return.param_patt, %D.ref [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type = out_param_pattern [concrete = constants.%return.param_patt]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type = return_slot_pattern %return.param_patt, %D.ref [concrete = constants.%return.patt]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %.loc7: Core.Form = init_form %C.ref [concrete = constants.%.a44]
|
||||
@@ -810,8 +836,8 @@ fn Foo(unused a: const (const C)) {}
|
||||
// CHECK:STDOUT: %return.loc7: ref %C = return_slot %return.param.loc7
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Foo.decl.loc8: %Foo.type = fn_decl @Foo [concrete = constants.%Foo] {
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type = return_slot_pattern %return.param_patt, %D.ref [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type = out_param_pattern [concrete = constants.%return.param_patt]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type = return_slot_pattern %return.param_patt, %D.ref [concrete = constants.%return.patt]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %D.ref: type = name_ref D, file.%D [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %.loc8_13: Core.Form = init_form %D.ref [concrete = constants.%.a44]
|
||||
@@ -843,6 +869,8 @@ fn Foo(unused a: const (const C)) {}
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete]
|
||||
// CHECK:STDOUT: %pattern_type: type = pattern_type %C [concrete]
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type = at_binding_pattern a, %a.param_patt [concrete]
|
||||
// CHECK:STDOUT: %Foo.type: type = fn_type @Foo [concrete]
|
||||
// CHECK:STDOUT: %Foo: %Foo.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
@@ -854,8 +882,8 @@ fn Foo(unused a: const (const C)) {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {}
|
||||
// CHECK:STDOUT: %Foo.decl: %Foo.type = fn_decl @Foo [concrete = constants.%Foo] {
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type = at_binding_pattern a, %a.param_patt [concrete]
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type = value_param_pattern [concrete = constants.%a.param_patt]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type = at_binding_pattern a, %a.param_patt [concrete = constants.%a.patt]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %a.param: %C = value_param call_param0
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
@@ -880,6 +908,8 @@ fn Foo(unused a: const (const C)) {}
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete]
|
||||
// CHECK:STDOUT: %pattern_type: type = pattern_type %C [concrete]
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %a.patt.159dab.1: %pattern_type = at_binding_pattern a, %a.param_patt [concrete]
|
||||
// CHECK:STDOUT: %Foo.type: type = fn_type @Foo [concrete]
|
||||
// CHECK:STDOUT: %Foo: %Foo.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
@@ -901,8 +931,8 @@ fn Foo(unused a: const (const C)) {}
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, imports.%Main.C [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %D: type = alias_binding D, %C.ref [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %Foo.decl: %Foo.type = fn_decl @Foo [concrete = constants.%Foo] {
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type = at_binding_pattern a, %a.param_patt [concrete]
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type = value_param_pattern [concrete = constants.%a.param_patt]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type = at_binding_pattern a, %a.param_patt [concrete = constants.%a.patt.159dab.1]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %a.param: %C = value_param call_param0
|
||||
// CHECK:STDOUT: %D.ref: type = name_ref D, file.%D [concrete = constants.%C]
|
||||
@@ -930,6 +960,8 @@ fn Foo(unused a: const (const C)) {}
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete]
|
||||
// CHECK:STDOUT: %const: type = const_type %C [concrete]
|
||||
// CHECK:STDOUT: %pattern_type: type = pattern_type %const [concrete]
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type = at_binding_pattern a, %a.param_patt [concrete]
|
||||
// CHECK:STDOUT: %Foo.type.11c674.1: type = fn_type @Foo.loc6 [concrete]
|
||||
// CHECK:STDOUT: %Foo.12ccef.1: %Foo.type.11c674.1 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Foo.type.11c674.2: type = fn_type @Foo.loc18 [concrete]
|
||||
@@ -943,8 +975,8 @@ fn Foo(unused a: const (const C)) {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {}
|
||||
// CHECK:STDOUT: %Foo.decl.loc6: %Foo.type.11c674.1 = fn_decl @Foo.loc6 [concrete = constants.%Foo.12ccef.1] {
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type = at_binding_pattern a, %a.param_patt [concrete]
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type = value_param_pattern [concrete = constants.%a.param_patt]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type = at_binding_pattern a, %a.param_patt [concrete = constants.%a.patt]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %a.param: %const = value_param call_param0
|
||||
// CHECK:STDOUT: %.loc6: type = splice_block %const [concrete = constants.%const] {
|
||||
@@ -954,8 +986,8 @@ fn Foo(unused a: const (const C)) {}
|
||||
// CHECK:STDOUT: %a: %const = value_binding a, %a.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Foo.decl.loc18: %Foo.type.11c674.2 = fn_decl @Foo.loc18 [concrete = constants.%Foo.12ccef.2] {
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type = at_binding_pattern a, %a.param_patt [concrete]
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type = value_param_pattern [concrete = constants.%a.param_patt]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type = at_binding_pattern a, %a.param_patt [concrete = constants.%a.patt]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %a.param: %const = value_param call_param0
|
||||
// CHECK:STDOUT: %.loc18: type = splice_block %const.loc18_18 [concrete = constants.%const] {
|
||||
|
||||
+140
-38
@@ -78,10 +78,15 @@ fn CallSpecific(x: C*) -> C* {
|
||||
// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self]
|
||||
// CHECK:STDOUT: %Copy.type: type = facet_type <@Copy> [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.e81: type = pattern_type %Copy.type [concrete]
|
||||
// CHECK:STDOUT: %T.patt.fe6: %pattern_type.e81 = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %T.f84: %Copy.type = symbolic_binding T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %T.as_type: type = facet_access_type %T.f84 [symbolic]
|
||||
// CHECK:STDOUT: %pattern_type.2c66b4.2: type = pattern_type %T.as_type [symbolic]
|
||||
// CHECK:STDOUT: %x.param_patt.1f4: %pattern_type.2c66b4.2 = value_param_pattern [symbolic]
|
||||
// CHECK:STDOUT: %x.patt.f93: %pattern_type.2c66b4.2 = at_binding_pattern x, %x.param_patt.1f4 [symbolic]
|
||||
// CHECK:STDOUT: %.1ce700.2: Core.Form = init_form %T.as_type [symbolic]
|
||||
// CHECK:STDOUT: %return.param_patt.bf4475.2: %pattern_type.2c66b4.2 = out_param_pattern [symbolic]
|
||||
// CHECK:STDOUT: %return.patt.f44: %pattern_type.2c66b4.2 = return_slot_pattern %return.param_patt.bf4475.2, %T.as_type [symbolic]
|
||||
// CHECK:STDOUT: %Function.type: type = fn_type @Function [concrete]
|
||||
// CHECK:STDOUT: %Function: %Function.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %require_complete.d83: <witness> = require_complete_type %T.as_type [symbolic]
|
||||
@@ -92,12 +97,18 @@ fn CallSpecific(x: C*) -> C* {
|
||||
// CHECK:STDOUT: %specific_impl_fn.e2a: <specific function> = specific_impl_function %impl.elem0.bd2, @Copy.WithSelf.Op(%T.f84) [symbolic]
|
||||
// CHECK:STDOUT: %T.67d: type = symbolic_binding T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %ptr.e8f: type = ptr_type %T.67d [symbolic]
|
||||
// CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete]
|
||||
// CHECK:STDOUT: %T.patt.d47: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.ef1: <witness> = require_complete_type %ptr.e8f [symbolic]
|
||||
// CHECK:STDOUT: %ptr.as.Copy.impl.Op.type.ff5: type = fn_type @ptr.as.Copy.impl.Op, @ptr.as.Copy.impl(%T.67d) [symbolic]
|
||||
// CHECK:STDOUT: %ptr.as.Copy.impl.Op.ce9: %ptr.as.Copy.impl.Op.type.ff5 = struct_value () [symbolic]
|
||||
// CHECK:STDOUT: %pattern_type.4f4: type = pattern_type %ptr.e8f [symbolic]
|
||||
// CHECK:STDOUT: %return.param_patt.27f: %pattern_type.4f4 = out_param_pattern [symbolic]
|
||||
// CHECK:STDOUT: %.cb6: Core.Form = init_form %ptr.e8f [symbolic]
|
||||
// CHECK:STDOUT: %Function.specific_fn.4db: <specific function> = specific_function %Function, @Function(%T.f84) [symbolic]
|
||||
// CHECK:STDOUT: %x.param_patt.b5c: %pattern_type.4f4 = value_param_pattern [symbolic]
|
||||
// CHECK:STDOUT: %x.patt.b28: %pattern_type.4f4 = at_binding_pattern x, %x.param_patt.b5c [symbolic]
|
||||
// CHECK:STDOUT: %return.patt.d67: %pattern_type.4f4 = return_slot_pattern %return.param_patt.27f, %ptr.e8f [symbolic]
|
||||
// CHECK:STDOUT: %Copy.lookup_impl_witness.1da: <witness> = lookup_impl_witness %ptr.e8f, @Copy [symbolic]
|
||||
// CHECK:STDOUT: %.0e9: require_specific_def_type = require_specific_def @ptr.as.Copy.impl(%T.67d) [symbolic]
|
||||
// CHECK:STDOUT: %Copy.facet.302: %Copy.type = facet_value %ptr.e8f, (%Copy.lookup_impl_witness.1da) [symbolic]
|
||||
@@ -105,7 +116,11 @@ fn CallSpecific(x: C*) -> C* {
|
||||
// CHECK:STDOUT: %C: type = class_type @C [concrete]
|
||||
// CHECK:STDOUT: %ptr.6b6: type = ptr_type %C [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.fcb: type = pattern_type %ptr.6b6 [concrete]
|
||||
// CHECK:STDOUT: %x.param_patt.503: %pattern_type.fcb = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %x.patt.eca: %pattern_type.fcb = at_binding_pattern x, %x.param_patt.503 [concrete]
|
||||
// CHECK:STDOUT: %.8fa: Core.Form = init_form %ptr.6b6 [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt.ada: %pattern_type.fcb = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt.783: %pattern_type.fcb = return_slot_pattern %return.param_patt.ada, %ptr.6b6 [concrete]
|
||||
// CHECK:STDOUT: %Copy.impl_witness.65f: <witness> = impl_witness imports.%Copy.impl_witness_table.4f1, @ptr.as.Copy.impl(%C) [concrete]
|
||||
// CHECK:STDOUT: %ptr.as.Copy.impl.Op.type.b22: type = fn_type @ptr.as.Copy.impl.Op, @ptr.as.Copy.impl(%C) [concrete]
|
||||
// CHECK:STDOUT: %ptr.as.Copy.impl.Op.c19: %ptr.as.Copy.impl.Op.type.b22 = struct_value () [concrete]
|
||||
@@ -134,11 +149,11 @@ fn CallSpecific(x: C*) -> C* {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: %Function.decl: %Function.type = fn_decl @Function [concrete = constants.%Function] {
|
||||
// CHECK:STDOUT: %T.patt: %pattern_type.e81 = symbolic_binding_pattern T, 0 [concrete]
|
||||
// CHECK:STDOUT: %x.param_patt: @Function.%pattern_type (%pattern_type.2c66b4.2) = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %x.patt: @Function.%pattern_type (%pattern_type.2c66b4.2) = at_binding_pattern x, %x.param_patt [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt: @Function.%pattern_type (%pattern_type.2c66b4.2) = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt: @Function.%pattern_type (%pattern_type.2c66b4.2) = return_slot_pattern %return.param_patt, %.loc5_37.3 [concrete]
|
||||
// CHECK:STDOUT: %T.patt.loc5_14.1: %pattern_type.e81 = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc5_14.2 (constants.%T.patt.fe6)]
|
||||
// CHECK:STDOUT: %x.param_patt.loc5_29.1: @Function.%pattern_type (%pattern_type.2c66b4.2) = value_param_pattern [symbolic = %x.param_patt.loc5_29.2 (constants.%x.param_patt.1f4)]
|
||||
// CHECK:STDOUT: %x.patt.loc5_29.1: @Function.%pattern_type (%pattern_type.2c66b4.2) = at_binding_pattern x, %x.param_patt.loc5_29.1 [symbolic = %x.patt.loc5_29.2 (constants.%x.patt.f93)]
|
||||
// CHECK:STDOUT: %return.param_patt.loc5_37.1: @Function.%pattern_type (%pattern_type.2c66b4.2) = out_param_pattern [symbolic = %return.param_patt.loc5_37.2 (constants.%return.param_patt.bf4475.2)]
|
||||
// CHECK:STDOUT: %return.patt.loc5_34.1: @Function.%pattern_type (%pattern_type.2c66b4.2) = return_slot_pattern %return.param_patt.loc5_37.1, %.loc5_37.3 [symbolic = %return.patt.loc5_34.2 (constants.%return.patt.f44)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.ref.loc5_37: %Copy.type = name_ref T, %T.loc5_14.2 [symbolic = %T.loc5_14.1 (constants.%T.f84)]
|
||||
// CHECK:STDOUT: %T.as_type.loc5_37: type = facet_access_type %T.ref.loc5_37 [symbolic = %T.as_type.loc5_31.1 (constants.%T.as_type)]
|
||||
@@ -163,25 +178,31 @@ fn CallSpecific(x: C*) -> C* {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: generic fn @Function(%T.loc5_14.2: %Copy.type) {
|
||||
// CHECK:STDOUT: %T.patt.loc5_14.2: %pattern_type.e81 = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc5_14.2 (constants.%T.patt.fe6)]
|
||||
// CHECK:STDOUT: %T.loc5_14.1: %Copy.type = symbolic_binding T, 0 [symbolic = %T.loc5_14.1 (constants.%T.f84)]
|
||||
// CHECK:STDOUT: %T.as_type.loc5_31.1: type = facet_access_type %T.loc5_14.1 [symbolic = %T.as_type.loc5_31.1 (constants.%T.as_type)]
|
||||
// CHECK:STDOUT: %pattern_type: type = pattern_type %T.as_type.loc5_31.1 [symbolic = %pattern_type (constants.%pattern_type.2c66b4.2)]
|
||||
// CHECK:STDOUT: %x.param_patt.loc5_29.2: @Function.%pattern_type (%pattern_type.2c66b4.2) = value_param_pattern [symbolic = %x.param_patt.loc5_29.2 (constants.%x.param_patt.1f4)]
|
||||
// CHECK:STDOUT: %x.patt.loc5_29.2: @Function.%pattern_type (%pattern_type.2c66b4.2) = at_binding_pattern x, %x.param_patt.loc5_29.2 [symbolic = %x.patt.loc5_29.2 (constants.%x.patt.f93)]
|
||||
// CHECK:STDOUT: %.loc5_37.2: Core.Form = init_form %T.as_type.loc5_31.1 [symbolic = %.loc5_37.2 (constants.%.1ce700.2)]
|
||||
// CHECK:STDOUT: %return.param_patt.loc5_37.2: @Function.%pattern_type (%pattern_type.2c66b4.2) = out_param_pattern [symbolic = %return.param_patt.loc5_37.2 (constants.%return.param_patt.bf4475.2)]
|
||||
// CHECK:STDOUT: %return.patt.loc5_34.2: @Function.%pattern_type (%pattern_type.2c66b4.2) = return_slot_pattern %return.param_patt.loc5_37.2, %T.as_type.loc5_31.1 [symbolic = %return.patt.loc5_34.2 (constants.%return.patt.f44)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete: <witness> = require_complete_type %T.as_type.loc5_31.1 [symbolic = %require_complete (constants.%require_complete.d83)]
|
||||
// CHECK:STDOUT: %Copy.WithSelf.Op.type: type = fn_type @Copy.WithSelf.Op, @Copy.WithSelf(%T.loc5_14.1) [symbolic = %Copy.WithSelf.Op.type (constants.%Copy.WithSelf.Op.type.c85f21.2)]
|
||||
// CHECK:STDOUT: %.loc6_10.2: type = fn_type_with_self_type %Copy.WithSelf.Op.type, %T.loc5_14.1 [symbolic = %.loc6_10.2 (constants.%.c29)]
|
||||
// CHECK:STDOUT: %.loc6_10.3: type = fn_type_with_self_type %Copy.WithSelf.Op.type, %T.loc5_14.1 [symbolic = %.loc6_10.3 (constants.%.c29)]
|
||||
// CHECK:STDOUT: %Copy.lookup_impl_witness: <witness> = lookup_impl_witness %T.loc5_14.1, @Copy [symbolic = %Copy.lookup_impl_witness (constants.%Copy.lookup_impl_witness.d9c)]
|
||||
// CHECK:STDOUT: %impl.elem0.loc6_10.2: @Function.%.loc6_10.2 (%.c29) = impl_witness_access %Copy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc6_10.2 (constants.%impl.elem0.bd2)]
|
||||
// CHECK:STDOUT: %impl.elem0.loc6_10.2: @Function.%.loc6_10.3 (%.c29) = impl_witness_access %Copy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc6_10.2 (constants.%impl.elem0.bd2)]
|
||||
// CHECK:STDOUT: %specific_impl_fn.loc6_10.2: <specific function> = specific_impl_function %impl.elem0.loc6_10.2, @Copy.WithSelf.Op(%T.loc5_14.1) [symbolic = %specific_impl_fn.loc6_10.2 (constants.%specific_impl_fn.e2a)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn(%x.param: @Function.%T.as_type.loc5_31.1 (%T.as_type)) -> out %return.param: @Function.%T.as_type.loc5_31.1 (%T.as_type) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %x.ref: @Function.%T.as_type.loc5_31.1 (%T.as_type) = name_ref x, %x
|
||||
// CHECK:STDOUT: %impl.elem0.loc6_10.1: @Function.%.loc6_10.2 (%.c29) = impl_witness_access constants.%Copy.lookup_impl_witness.d9c, element0 [symbolic = %impl.elem0.loc6_10.2 (constants.%impl.elem0.bd2)]
|
||||
// CHECK:STDOUT: %impl.elem0.loc6_10.1: @Function.%.loc6_10.3 (%.c29) = impl_witness_access constants.%Copy.lookup_impl_witness.d9c, element0 [symbolic = %impl.elem0.loc6_10.2 (constants.%impl.elem0.bd2)]
|
||||
// CHECK:STDOUT: %bound_method.loc6_10.1: <bound method> = bound_method %x.ref, %impl.elem0.loc6_10.1
|
||||
// CHECK:STDOUT: %.loc6_10.1: %Copy.type = converted constants.%T.as_type, constants.%T.f84 [symbolic = %T.loc5_14.1 (constants.%T.f84)]
|
||||
// CHECK:STDOUT: %.loc6_10.2: %Copy.type = converted constants.%T.as_type, constants.%T.f84 [symbolic = %T.loc5_14.1 (constants.%T.f84)]
|
||||
// CHECK:STDOUT: %specific_impl_fn.loc6_10.1: <specific function> = specific_impl_function %impl.elem0.loc6_10.1, @Copy.WithSelf.Op(constants.%T.f84) [symbolic = %specific_impl_fn.loc6_10.2 (constants.%specific_impl_fn.e2a)]
|
||||
// CHECK:STDOUT: %bound_method.loc6_10.2: <bound method> = bound_method %x.ref, %specific_impl_fn.loc6_10.1
|
||||
// CHECK:STDOUT: %.loc5_37.1: ref @Function.%T.as_type.loc5_31.1 (%T.as_type) = splice_block %return.param {}
|
||||
@@ -202,7 +223,8 @@ fn CallSpecific(x: C*) -> C* {
|
||||
// CHECK:STDOUT: %Function.ref: %Function.type = name_ref Function, file.%Function.decl [concrete = constants.%Function]
|
||||
// CHECK:STDOUT: %T.ref.loc12: %Copy.type = name_ref T, %T.loc10_17.2 [symbolic = %T.loc10_17.1 (constants.%T.f84)]
|
||||
// CHECK:STDOUT: %x.ref: @CallGeneric.%T.as_type.loc10_34.1 (%T.as_type) = name_ref x, %x
|
||||
// CHECK:STDOUT: %.loc12: %Copy.type = converted constants.%T.as_type, constants.%T.f84 [symbolic = %T.loc10_17.1 (constants.%T.f84)]
|
||||
// CHECK:STDOUT: %.loc12_23.1: %Copy.type = converted constants.%T.as_type, constants.%T.f84 [symbolic = %T.loc10_17.1 (constants.%T.f84)]
|
||||
// CHECK:STDOUT: %.loc12_23.2: %Copy.type = converted constants.%T.as_type, constants.%T.f84 [symbolic = %T.loc10_17.1 (constants.%T.f84)]
|
||||
// CHECK:STDOUT: %Function.specific_fn.loc12_10.1: <specific function> = specific_function %Function.ref, @Function(constants.%T.f84) [symbolic = %Function.specific_fn.loc12_10.2 (constants.%Function.specific_fn.4db)]
|
||||
// CHECK:STDOUT: <elided>
|
||||
// CHECK:STDOUT: %Function.call: init @CallGeneric.%T.as_type.loc10_34.1 (%T.as_type) to %.loc10_40.1 = call %Function.specific_fn.loc12_10.1(%x.ref)
|
||||
@@ -215,10 +237,10 @@ fn CallSpecific(x: C*) -> C* {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: <elided>
|
||||
// CHECK:STDOUT: %.loc18_24.3: require_specific_def_type = require_specific_def @ptr.as.Copy.impl(%T.loc16_20.1) [symbolic = %.loc18_24.3 (constants.%.0e9)]
|
||||
// CHECK:STDOUT: %.loc18_24.4: require_specific_def_type = require_specific_def @ptr.as.Copy.impl(%T.loc16_20.1) [symbolic = %.loc18_24.4 (constants.%.0e9)]
|
||||
// CHECK:STDOUT: %Copy.lookup_impl_witness: <witness> = lookup_impl_witness %ptr.loc16_33.1, @Copy [symbolic = %Copy.lookup_impl_witness (constants.%Copy.lookup_impl_witness.1da)]
|
||||
// CHECK:STDOUT: %Copy.facet.loc18_24.3: %Copy.type = facet_value %ptr.loc16_33.1, (%Copy.lookup_impl_witness) [symbolic = %Copy.facet.loc18_24.3 (constants.%Copy.facet.302)]
|
||||
// CHECK:STDOUT: %Function.specific_fn.loc18_10.2: <specific function> = specific_function constants.%Function, @Function(%Copy.facet.loc18_24.3) [symbolic = %Function.specific_fn.loc18_10.2 (constants.%Function.specific_fn.162)]
|
||||
// CHECK:STDOUT: %Copy.facet.loc18_24.4: %Copy.type = facet_value %ptr.loc16_33.1, (%Copy.lookup_impl_witness) [symbolic = %Copy.facet.loc18_24.4 (constants.%Copy.facet.302)]
|
||||
// CHECK:STDOUT: %Function.specific_fn.loc18_10.2: <specific function> = specific_function constants.%Function, @Function(%Copy.facet.loc18_24.4) [symbolic = %Function.specific_fn.loc18_10.2 (constants.%Function.specific_fn.162)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn(%x.param: @CallGenericPtr.%ptr.loc16_33.1 (%ptr.e8f)) -> out %return.param: @CallGenericPtr.%ptr.loc16_33.1 (%ptr.e8f) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
@@ -226,10 +248,12 @@ fn CallSpecific(x: C*) -> C* {
|
||||
// CHECK:STDOUT: %T.ref.loc18: type = name_ref T, %T.loc16_20.2 [symbolic = %T.loc16_20.1 (constants.%T.67d)]
|
||||
// CHECK:STDOUT: %ptr.loc18: type = ptr_type %T.ref.loc18 [symbolic = %ptr.loc16_33.1 (constants.%ptr.e8f)]
|
||||
// CHECK:STDOUT: %x.ref: @CallGenericPtr.%ptr.loc16_33.1 (%ptr.e8f) = name_ref x, %x
|
||||
// CHECK:STDOUT: %Copy.facet.loc18_24.1: %Copy.type = facet_value %ptr.loc18, (constants.%Copy.lookup_impl_witness.1da) [symbolic = %Copy.facet.loc18_24.3 (constants.%Copy.facet.302)]
|
||||
// CHECK:STDOUT: %.loc18_24.1: %Copy.type = converted %ptr.loc18, %Copy.facet.loc18_24.1 [symbolic = %Copy.facet.loc18_24.3 (constants.%Copy.facet.302)]
|
||||
// CHECK:STDOUT: %Copy.facet.loc18_24.2: %Copy.type = facet_value constants.%ptr.e8f, (constants.%Copy.lookup_impl_witness.1da) [symbolic = %Copy.facet.loc18_24.3 (constants.%Copy.facet.302)]
|
||||
// CHECK:STDOUT: %.loc18_24.2: %Copy.type = converted constants.%ptr.e8f, %Copy.facet.loc18_24.2 [symbolic = %Copy.facet.loc18_24.3 (constants.%Copy.facet.302)]
|
||||
// CHECK:STDOUT: %Copy.facet.loc18_24.1: %Copy.type = facet_value %ptr.loc18, (constants.%Copy.lookup_impl_witness.1da) [symbolic = %Copy.facet.loc18_24.4 (constants.%Copy.facet.302)]
|
||||
// CHECK:STDOUT: %.loc18_24.1: %Copy.type = converted %ptr.loc18, %Copy.facet.loc18_24.1 [symbolic = %Copy.facet.loc18_24.4 (constants.%Copy.facet.302)]
|
||||
// CHECK:STDOUT: %Copy.facet.loc18_24.2: %Copy.type = facet_value constants.%ptr.e8f, (constants.%Copy.lookup_impl_witness.1da) [symbolic = %Copy.facet.loc18_24.4 (constants.%Copy.facet.302)]
|
||||
// CHECK:STDOUT: %.loc18_24.2: %Copy.type = converted constants.%ptr.e8f, %Copy.facet.loc18_24.2 [symbolic = %Copy.facet.loc18_24.4 (constants.%Copy.facet.302)]
|
||||
// CHECK:STDOUT: %Copy.facet.loc18_24.3: %Copy.type = facet_value constants.%ptr.e8f, (constants.%Copy.lookup_impl_witness.1da) [symbolic = %Copy.facet.loc18_24.4 (constants.%Copy.facet.302)]
|
||||
// CHECK:STDOUT: %.loc18_24.3: %Copy.type = converted constants.%ptr.e8f, %Copy.facet.loc18_24.3 [symbolic = %Copy.facet.loc18_24.4 (constants.%Copy.facet.302)]
|
||||
// CHECK:STDOUT: %Function.specific_fn.loc18_10.1: <specific function> = specific_function %Function.ref, @Function(constants.%Copy.facet.302) [symbolic = %Function.specific_fn.loc18_10.2 (constants.%Function.specific_fn.162)]
|
||||
// CHECK:STDOUT: %Function.call: init @CallGenericPtr.%ptr.loc16_33.1 (%ptr.e8f) = call %Function.specific_fn.loc18_10.1(%x.ref)
|
||||
// CHECK:STDOUT: return %Function.call
|
||||
@@ -246,65 +270,92 @@ fn CallSpecific(x: C*) -> C* {
|
||||
// CHECK:STDOUT: %.loc26_24.1: %Copy.type = converted %ptr.loc26, %Copy.facet.loc26_24.1 [concrete = constants.%Copy.facet.3f0]
|
||||
// CHECK:STDOUT: %Copy.facet.loc26_24.2: %Copy.type = facet_value constants.%ptr.6b6, (constants.%Copy.impl_witness.65f) [concrete = constants.%Copy.facet.3f0]
|
||||
// CHECK:STDOUT: %.loc26_24.2: %Copy.type = converted constants.%ptr.6b6, %Copy.facet.loc26_24.2 [concrete = constants.%Copy.facet.3f0]
|
||||
// CHECK:STDOUT: %Copy.facet.loc26_24.3: %Copy.type = facet_value constants.%ptr.6b6, (constants.%Copy.impl_witness.65f) [concrete = constants.%Copy.facet.3f0]
|
||||
// CHECK:STDOUT: %.loc26_24.3: %Copy.type = converted constants.%ptr.6b6, %Copy.facet.loc26_24.3 [concrete = constants.%Copy.facet.3f0]
|
||||
// CHECK:STDOUT: %Function.specific_fn: <specific function> = specific_function %Function.ref, @Function(constants.%Copy.facet.3f0) [concrete = constants.%Function.specific_fn.710]
|
||||
// CHECK:STDOUT: %Function.call: init %ptr.6b6 = call %Function.specific_fn(%x.ref)
|
||||
// CHECK:STDOUT: return %Function.call
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @Function(constants.%T.f84) {
|
||||
// CHECK:STDOUT: %T.patt.loc5_14.2 => constants.%T.patt.fe6
|
||||
// CHECK:STDOUT: %T.loc5_14.1 => constants.%T.f84
|
||||
// CHECK:STDOUT: %T.as_type.loc5_31.1 => constants.%T.as_type
|
||||
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.2c66b4.2
|
||||
// CHECK:STDOUT: %x.param_patt.loc5_29.2 => constants.%x.param_patt.1f4
|
||||
// CHECK:STDOUT: %x.patt.loc5_29.2 => constants.%x.patt.f93
|
||||
// CHECK:STDOUT: %.loc5_37.2 => constants.%.1ce700.2
|
||||
// CHECK:STDOUT: %return.param_patt.loc5_37.2 => constants.%return.param_patt.bf4475.2
|
||||
// CHECK:STDOUT: %return.patt.loc5_34.2 => constants.%return.patt.f44
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete => constants.%require_complete.d83
|
||||
// CHECK:STDOUT: %Copy.WithSelf.Op.type => constants.%Copy.WithSelf.Op.type.c85f21.2
|
||||
// CHECK:STDOUT: %.loc6_10.2 => constants.%.c29
|
||||
// CHECK:STDOUT: %.loc6_10.3 => constants.%.c29
|
||||
// CHECK:STDOUT: %Copy.lookup_impl_witness => constants.%Copy.lookup_impl_witness.d9c
|
||||
// CHECK:STDOUT: %impl.elem0.loc6_10.2 => constants.%impl.elem0.bd2
|
||||
// CHECK:STDOUT: %specific_impl_fn.loc6_10.2 => constants.%specific_impl_fn.e2a
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @CallGeneric(constants.%T.f84) {
|
||||
// CHECK:STDOUT: %T.patt.loc10_17.2 => constants.%T.patt.fe6
|
||||
// CHECK:STDOUT: %T.loc10_17.1 => constants.%T.f84
|
||||
// CHECK:STDOUT: %T.as_type.loc10_34.1 => constants.%T.as_type
|
||||
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.2c66b4.2
|
||||
// CHECK:STDOUT: %x.param_patt.loc10_32.2 => constants.%x.param_patt.1f4
|
||||
// CHECK:STDOUT: %x.patt.loc10_32.2 => constants.%x.patt.f93
|
||||
// CHECK:STDOUT: %.loc10_40.2 => constants.%.1ce700.2
|
||||
// CHECK:STDOUT: %return.param_patt.loc10_40.2 => constants.%return.param_patt.bf4475.2
|
||||
// CHECK:STDOUT: %return.patt.loc10_37.2 => constants.%return.patt.f44
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @CallGenericPtr(constants.%T.67d) {
|
||||
// CHECK:STDOUT: %T.patt.loc16_20.2 => constants.%T.patt.d47
|
||||
// CHECK:STDOUT: %T.loc16_20.1 => constants.%T.67d
|
||||
// CHECK:STDOUT: %ptr.loc16_33.1 => constants.%ptr.e8f
|
||||
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.4f4
|
||||
// CHECK:STDOUT: %x.param_patt.loc16_30.2 => constants.%x.param_patt.b5c
|
||||
// CHECK:STDOUT: %x.patt.loc16_30.2 => constants.%x.patt.b28
|
||||
// CHECK:STDOUT: %.loc16_40.1 => constants.%.cb6
|
||||
// CHECK:STDOUT: %return.param_patt.loc16_40.2 => constants.%return.param_patt.27f
|
||||
// CHECK:STDOUT: %return.patt.loc16_36.2 => constants.%return.patt.d67
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @Function(constants.%Copy.facet.302) {
|
||||
// CHECK:STDOUT: %T.patt.loc5_14.2 => constants.%T.patt.fe6
|
||||
// CHECK:STDOUT: %T.loc5_14.1 => constants.%Copy.facet.302
|
||||
// CHECK:STDOUT: %T.as_type.loc5_31.1 => constants.%ptr.e8f
|
||||
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.4f4
|
||||
// CHECK:STDOUT: %x.param_patt.loc5_29.2 => constants.%x.param_patt.b5c
|
||||
// CHECK:STDOUT: %x.patt.loc5_29.2 => constants.%x.patt.b28
|
||||
// CHECK:STDOUT: %.loc5_37.2 => constants.%.cb6
|
||||
// CHECK:STDOUT: %return.param_patt.loc5_37.2 => constants.%return.param_patt.27f
|
||||
// CHECK:STDOUT: %return.patt.loc5_34.2 => constants.%return.patt.d67
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete => constants.%require_complete.ef1
|
||||
// CHECK:STDOUT: %Copy.WithSelf.Op.type => constants.%Copy.WithSelf.Op.type.884
|
||||
// CHECK:STDOUT: %.loc6_10.2 => constants.%.be5
|
||||
// CHECK:STDOUT: %.loc6_10.3 => constants.%.be5
|
||||
// CHECK:STDOUT: %Copy.lookup_impl_witness => constants.%Copy.lookup_impl_witness.1da
|
||||
// CHECK:STDOUT: %impl.elem0.loc6_10.2 => constants.%impl.elem0.484
|
||||
// CHECK:STDOUT: %specific_impl_fn.loc6_10.2 => constants.%specific_impl_fn.a76
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @Function(constants.%Copy.facet.3f0) {
|
||||
// CHECK:STDOUT: %T.patt.loc5_14.2 => constants.%T.patt.fe6
|
||||
// CHECK:STDOUT: %T.loc5_14.1 => constants.%Copy.facet.3f0
|
||||
// CHECK:STDOUT: %T.as_type.loc5_31.1 => constants.%ptr.6b6
|
||||
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.fcb
|
||||
// CHECK:STDOUT: %x.param_patt.loc5_29.2 => constants.%x.param_patt.503
|
||||
// CHECK:STDOUT: %x.patt.loc5_29.2 => constants.%x.patt.eca
|
||||
// CHECK:STDOUT: %.loc5_37.2 => constants.%.8fa
|
||||
// CHECK:STDOUT: %return.param_patt.loc5_37.2 => constants.%return.param_patt.ada
|
||||
// CHECK:STDOUT: %return.patt.loc5_34.2 => constants.%return.patt.783
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete => constants.%complete_type.bf9
|
||||
// CHECK:STDOUT: %Copy.WithSelf.Op.type => constants.%Copy.WithSelf.Op.type.c6a
|
||||
// CHECK:STDOUT: %.loc6_10.2 => constants.%.a68
|
||||
// CHECK:STDOUT: %.loc6_10.3 => constants.%.a68
|
||||
// CHECK:STDOUT: %Copy.lookup_impl_witness => constants.%Copy.impl_witness.65f
|
||||
// CHECK:STDOUT: %impl.elem0.loc6_10.2 => constants.%ptr.as.Copy.impl.Op.c19
|
||||
// CHECK:STDOUT: %specific_impl_fn.loc6_10.2 => constants.%ptr.as.Copy.impl.Op.specific_fn
|
||||
@@ -317,10 +368,15 @@ fn CallSpecific(x: C*) -> C* {
|
||||
// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self]
|
||||
// CHECK:STDOUT: %Copy.type: type = facet_type <@Copy> [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.e81: type = pattern_type %Copy.type [concrete]
|
||||
// CHECK:STDOUT: %T.patt.fe6: %pattern_type.e81 = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %T.f84: %Copy.type = symbolic_binding T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %T.as_type: type = facet_access_type %T.f84 [symbolic]
|
||||
// CHECK:STDOUT: %pattern_type.2c66b4.2: type = pattern_type %T.as_type [symbolic]
|
||||
// CHECK:STDOUT: %x.param_patt.1f4: %pattern_type.2c66b4.2 = value_param_pattern [symbolic]
|
||||
// CHECK:STDOUT: %x.patt.f93: %pattern_type.2c66b4.2 = at_binding_pattern x, %x.param_patt.1f4 [symbolic]
|
||||
// CHECK:STDOUT: %.1ce700.2: Core.Form = init_form %T.as_type [symbolic]
|
||||
// CHECK:STDOUT: %return.param_patt.bf4475.2: %pattern_type.2c66b4.2 = out_param_pattern [symbolic]
|
||||
// CHECK:STDOUT: %return.patt.f44: %pattern_type.2c66b4.2 = return_slot_pattern %return.param_patt.bf4475.2, %T.as_type [symbolic]
|
||||
// CHECK:STDOUT: %Function.type: type = fn_type @Function [concrete]
|
||||
// CHECK:STDOUT: %Function: %Function.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %require_complete.d83: <witness> = require_complete_type %T.as_type [symbolic]
|
||||
@@ -331,12 +387,18 @@ fn CallSpecific(x: C*) -> C* {
|
||||
// CHECK:STDOUT: %specific_impl_fn.e2a: <specific function> = specific_impl_function %impl.elem0.bd2, @Copy.WithSelf.Op(%T.f84) [symbolic]
|
||||
// CHECK:STDOUT: %T.67d: type = symbolic_binding T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %ptr.e8f: type = ptr_type %T.67d [symbolic]
|
||||
// CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete]
|
||||
// CHECK:STDOUT: %T.patt.d47: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.ef1: <witness> = require_complete_type %ptr.e8f [symbolic]
|
||||
// CHECK:STDOUT: %ptr.as.Copy.impl.Op.type.ff5: type = fn_type @ptr.as.Copy.impl.Op, @ptr.as.Copy.impl(%T.67d) [symbolic]
|
||||
// CHECK:STDOUT: %ptr.as.Copy.impl.Op.ce9: %ptr.as.Copy.impl.Op.type.ff5 = struct_value () [symbolic]
|
||||
// CHECK:STDOUT: %pattern_type.4f4: type = pattern_type %ptr.e8f [symbolic]
|
||||
// CHECK:STDOUT: %return.param_patt.27f: %pattern_type.4f4 = out_param_pattern [symbolic]
|
||||
// CHECK:STDOUT: %.cb6: Core.Form = init_form %ptr.e8f [symbolic]
|
||||
// CHECK:STDOUT: %Function.specific_fn.4db: <specific function> = specific_function %Function, @Function(%T.f84) [symbolic]
|
||||
// CHECK:STDOUT: %x.param_patt.b5c: %pattern_type.4f4 = value_param_pattern [symbolic]
|
||||
// CHECK:STDOUT: %x.patt.b28: %pattern_type.4f4 = at_binding_pattern x, %x.param_patt.b5c [symbolic]
|
||||
// CHECK:STDOUT: %return.patt.d67: %pattern_type.4f4 = return_slot_pattern %return.param_patt.27f, %ptr.e8f [symbolic]
|
||||
// CHECK:STDOUT: %Copy.lookup_impl_witness.1da: <witness> = lookup_impl_witness %ptr.e8f, @Copy [symbolic]
|
||||
// CHECK:STDOUT: %.0e9: require_specific_def_type = require_specific_def @ptr.as.Copy.impl(%T.67d) [symbolic]
|
||||
// CHECK:STDOUT: %Copy.facet.302: %Copy.type = facet_value %ptr.e8f, (%Copy.lookup_impl_witness.1da) [symbolic]
|
||||
@@ -344,7 +406,11 @@ fn CallSpecific(x: C*) -> C* {
|
||||
// CHECK:STDOUT: %C: type = class_type @C [concrete]
|
||||
// CHECK:STDOUT: %ptr.6b6: type = ptr_type %C [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.fcb: type = pattern_type %ptr.6b6 [concrete]
|
||||
// CHECK:STDOUT: %x.param_patt.503: %pattern_type.fcb = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %x.patt.eca: %pattern_type.fcb = at_binding_pattern x, %x.param_patt.503 [concrete]
|
||||
// CHECK:STDOUT: %.8fa: Core.Form = init_form %ptr.6b6 [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt.ada: %pattern_type.fcb = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt.783: %pattern_type.fcb = return_slot_pattern %return.param_patt.ada, %ptr.6b6 [concrete]
|
||||
// CHECK:STDOUT: %Copy.impl_witness.65f: <witness> = impl_witness imports.%Copy.impl_witness_table.4f1, @ptr.as.Copy.impl(%C) [concrete]
|
||||
// CHECK:STDOUT: %ptr.as.Copy.impl.Op.type.b22: type = fn_type @ptr.as.Copy.impl.Op, @ptr.as.Copy.impl(%C) [concrete]
|
||||
// CHECK:STDOUT: %ptr.as.Copy.impl.Op.c19: %ptr.as.Copy.impl.Op.type.b22 = struct_value () [concrete]
|
||||
@@ -373,11 +439,11 @@ fn CallSpecific(x: C*) -> C* {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: %Function.decl: %Function.type = fn_decl @Function [concrete = constants.%Function] {
|
||||
// CHECK:STDOUT: %T.patt: %pattern_type.e81 = symbolic_binding_pattern T, 0 [concrete]
|
||||
// CHECK:STDOUT: %x.param_patt: @Function.%pattern_type (%pattern_type.2c66b4.2) = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %x.patt: @Function.%pattern_type (%pattern_type.2c66b4.2) = at_binding_pattern x, %x.param_patt [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt: @Function.%pattern_type (%pattern_type.2c66b4.2) = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt: @Function.%pattern_type (%pattern_type.2c66b4.2) = return_slot_pattern %return.param_patt, %.loc5_37.3 [concrete]
|
||||
// CHECK:STDOUT: %T.patt.loc5_14.1: %pattern_type.e81 = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc5_14.2 (constants.%T.patt.fe6)]
|
||||
// CHECK:STDOUT: %x.param_patt.loc5_29.1: @Function.%pattern_type (%pattern_type.2c66b4.2) = value_param_pattern [symbolic = %x.param_patt.loc5_29.2 (constants.%x.param_patt.1f4)]
|
||||
// CHECK:STDOUT: %x.patt.loc5_29.1: @Function.%pattern_type (%pattern_type.2c66b4.2) = at_binding_pattern x, %x.param_patt.loc5_29.1 [symbolic = %x.patt.loc5_29.2 (constants.%x.patt.f93)]
|
||||
// CHECK:STDOUT: %return.param_patt.loc5_37.1: @Function.%pattern_type (%pattern_type.2c66b4.2) = out_param_pattern [symbolic = %return.param_patt.loc5_37.2 (constants.%return.param_patt.bf4475.2)]
|
||||
// CHECK:STDOUT: %return.patt.loc5_34.1: @Function.%pattern_type (%pattern_type.2c66b4.2) = return_slot_pattern %return.param_patt.loc5_37.1, %.loc5_37.3 [symbolic = %return.patt.loc5_34.2 (constants.%return.patt.f44)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.ref.loc5_37: %Copy.type = name_ref T, %T.loc5_14.2 [symbolic = %T.loc5_14.1 (constants.%T.f84)]
|
||||
// CHECK:STDOUT: %T.as_type.loc5_37: type = facet_access_type %T.ref.loc5_37 [symbolic = %T.as_type.loc5_31.1 (constants.%T.as_type)]
|
||||
@@ -402,25 +468,31 @@ fn CallSpecific(x: C*) -> C* {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: generic fn @Function(%T.loc5_14.2: %Copy.type) {
|
||||
// CHECK:STDOUT: %T.patt.loc5_14.2: %pattern_type.e81 = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc5_14.2 (constants.%T.patt.fe6)]
|
||||
// CHECK:STDOUT: %T.loc5_14.1: %Copy.type = symbolic_binding T, 0 [symbolic = %T.loc5_14.1 (constants.%T.f84)]
|
||||
// CHECK:STDOUT: %T.as_type.loc5_31.1: type = facet_access_type %T.loc5_14.1 [symbolic = %T.as_type.loc5_31.1 (constants.%T.as_type)]
|
||||
// CHECK:STDOUT: %pattern_type: type = pattern_type %T.as_type.loc5_31.1 [symbolic = %pattern_type (constants.%pattern_type.2c66b4.2)]
|
||||
// CHECK:STDOUT: %x.param_patt.loc5_29.2: @Function.%pattern_type (%pattern_type.2c66b4.2) = value_param_pattern [symbolic = %x.param_patt.loc5_29.2 (constants.%x.param_patt.1f4)]
|
||||
// CHECK:STDOUT: %x.patt.loc5_29.2: @Function.%pattern_type (%pattern_type.2c66b4.2) = at_binding_pattern x, %x.param_patt.loc5_29.2 [symbolic = %x.patt.loc5_29.2 (constants.%x.patt.f93)]
|
||||
// CHECK:STDOUT: %.loc5_37.2: Core.Form = init_form %T.as_type.loc5_31.1 [symbolic = %.loc5_37.2 (constants.%.1ce700.2)]
|
||||
// CHECK:STDOUT: %return.param_patt.loc5_37.2: @Function.%pattern_type (%pattern_type.2c66b4.2) = out_param_pattern [symbolic = %return.param_patt.loc5_37.2 (constants.%return.param_patt.bf4475.2)]
|
||||
// CHECK:STDOUT: %return.patt.loc5_34.2: @Function.%pattern_type (%pattern_type.2c66b4.2) = return_slot_pattern %return.param_patt.loc5_37.2, %T.as_type.loc5_31.1 [symbolic = %return.patt.loc5_34.2 (constants.%return.patt.f44)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete: <witness> = require_complete_type %T.as_type.loc5_31.1 [symbolic = %require_complete (constants.%require_complete.d83)]
|
||||
// CHECK:STDOUT: %Copy.WithSelf.Op.type: type = fn_type @Copy.WithSelf.Op, @Copy.WithSelf(%T.loc5_14.1) [symbolic = %Copy.WithSelf.Op.type (constants.%Copy.WithSelf.Op.type.c85f21.2)]
|
||||
// CHECK:STDOUT: %.loc6_10.2: type = fn_type_with_self_type %Copy.WithSelf.Op.type, %T.loc5_14.1 [symbolic = %.loc6_10.2 (constants.%.c29)]
|
||||
// CHECK:STDOUT: %.loc6_10.3: type = fn_type_with_self_type %Copy.WithSelf.Op.type, %T.loc5_14.1 [symbolic = %.loc6_10.3 (constants.%.c29)]
|
||||
// CHECK:STDOUT: %Copy.lookup_impl_witness: <witness> = lookup_impl_witness %T.loc5_14.1, @Copy [symbolic = %Copy.lookup_impl_witness (constants.%Copy.lookup_impl_witness.d9c)]
|
||||
// CHECK:STDOUT: %impl.elem0.loc6_10.2: @Function.%.loc6_10.2 (%.c29) = impl_witness_access %Copy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc6_10.2 (constants.%impl.elem0.bd2)]
|
||||
// CHECK:STDOUT: %impl.elem0.loc6_10.2: @Function.%.loc6_10.3 (%.c29) = impl_witness_access %Copy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc6_10.2 (constants.%impl.elem0.bd2)]
|
||||
// CHECK:STDOUT: %specific_impl_fn.loc6_10.2: <specific function> = specific_impl_function %impl.elem0.loc6_10.2, @Copy.WithSelf.Op(%T.loc5_14.1) [symbolic = %specific_impl_fn.loc6_10.2 (constants.%specific_impl_fn.e2a)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn(%x.param: @Function.%T.as_type.loc5_31.1 (%T.as_type)) -> out %return.param: @Function.%T.as_type.loc5_31.1 (%T.as_type) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %x.ref: @Function.%T.as_type.loc5_31.1 (%T.as_type) = name_ref x, %x
|
||||
// CHECK:STDOUT: %impl.elem0.loc6_10.1: @Function.%.loc6_10.2 (%.c29) = impl_witness_access constants.%Copy.lookup_impl_witness.d9c, element0 [symbolic = %impl.elem0.loc6_10.2 (constants.%impl.elem0.bd2)]
|
||||
// CHECK:STDOUT: %impl.elem0.loc6_10.1: @Function.%.loc6_10.3 (%.c29) = impl_witness_access constants.%Copy.lookup_impl_witness.d9c, element0 [symbolic = %impl.elem0.loc6_10.2 (constants.%impl.elem0.bd2)]
|
||||
// CHECK:STDOUT: %bound_method.loc6_10.1: <bound method> = bound_method %x.ref, %impl.elem0.loc6_10.1
|
||||
// CHECK:STDOUT: %.loc6_10.1: %Copy.type = converted constants.%T.as_type, constants.%T.f84 [symbolic = %T.loc5_14.1 (constants.%T.f84)]
|
||||
// CHECK:STDOUT: %.loc6_10.2: %Copy.type = converted constants.%T.as_type, constants.%T.f84 [symbolic = %T.loc5_14.1 (constants.%T.f84)]
|
||||
// CHECK:STDOUT: %specific_impl_fn.loc6_10.1: <specific function> = specific_impl_function %impl.elem0.loc6_10.1, @Copy.WithSelf.Op(constants.%T.f84) [symbolic = %specific_impl_fn.loc6_10.2 (constants.%specific_impl_fn.e2a)]
|
||||
// CHECK:STDOUT: %bound_method.loc6_10.2: <bound method> = bound_method %x.ref, %specific_impl_fn.loc6_10.1
|
||||
// CHECK:STDOUT: %.loc5_37.1: ref @Function.%T.as_type.loc5_31.1 (%T.as_type) = splice_block %return.param {}
|
||||
@@ -440,7 +512,8 @@ fn CallSpecific(x: C*) -> C* {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %Function.ref: %Function.type = name_ref Function, file.%Function.decl [concrete = constants.%Function]
|
||||
// CHECK:STDOUT: %x.ref: @CallGeneric.%T.as_type.loc10_34.1 (%T.as_type) = name_ref x, %x
|
||||
// CHECK:STDOUT: %.loc12: %Copy.type = converted constants.%T.as_type, constants.%T.f84 [symbolic = %T.loc10_17.1 (constants.%T.f84)]
|
||||
// CHECK:STDOUT: %.loc12_20.1: %Copy.type = converted constants.%T.as_type, constants.%T.f84 [symbolic = %T.loc10_17.1 (constants.%T.f84)]
|
||||
// CHECK:STDOUT: %.loc12_20.2: %Copy.type = converted constants.%T.as_type, constants.%T.f84 [symbolic = %T.loc10_17.1 (constants.%T.f84)]
|
||||
// CHECK:STDOUT: %Function.specific_fn.loc12_10.1: <specific function> = specific_function %Function.ref, @Function(constants.%T.f84) [symbolic = %Function.specific_fn.loc12_10.2 (constants.%Function.specific_fn.4db)]
|
||||
// CHECK:STDOUT: <elided>
|
||||
// CHECK:STDOUT: %Function.call: init @CallGeneric.%T.as_type.loc10_34.1 (%T.as_type) to %.loc10_40.1 = call %Function.specific_fn.loc12_10.1(%x.ref)
|
||||
@@ -453,17 +526,19 @@ fn CallSpecific(x: C*) -> C* {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: <elided>
|
||||
// CHECK:STDOUT: %.loc18_20.2: require_specific_def_type = require_specific_def @ptr.as.Copy.impl(%T.loc16_20.1) [symbolic = %.loc18_20.2 (constants.%.0e9)]
|
||||
// CHECK:STDOUT: %.loc18_20.3: require_specific_def_type = require_specific_def @ptr.as.Copy.impl(%T.loc16_20.1) [symbolic = %.loc18_20.3 (constants.%.0e9)]
|
||||
// CHECK:STDOUT: %Copy.lookup_impl_witness: <witness> = lookup_impl_witness %ptr.loc16_33.1, @Copy [symbolic = %Copy.lookup_impl_witness (constants.%Copy.lookup_impl_witness.1da)]
|
||||
// CHECK:STDOUT: %Copy.facet.loc18_20.2: %Copy.type = facet_value %ptr.loc16_33.1, (%Copy.lookup_impl_witness) [symbolic = %Copy.facet.loc18_20.2 (constants.%Copy.facet.302)]
|
||||
// CHECK:STDOUT: %Function.specific_fn.loc18_10.2: <specific function> = specific_function constants.%Function, @Function(%Copy.facet.loc18_20.2) [symbolic = %Function.specific_fn.loc18_10.2 (constants.%Function.specific_fn.162)]
|
||||
// CHECK:STDOUT: %Copy.facet.loc18_20.3: %Copy.type = facet_value %ptr.loc16_33.1, (%Copy.lookup_impl_witness) [symbolic = %Copy.facet.loc18_20.3 (constants.%Copy.facet.302)]
|
||||
// CHECK:STDOUT: %Function.specific_fn.loc18_10.2: <specific function> = specific_function constants.%Function, @Function(%Copy.facet.loc18_20.3) [symbolic = %Function.specific_fn.loc18_10.2 (constants.%Function.specific_fn.162)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn(%x.param: @CallGenericPtr.%ptr.loc16_33.1 (%ptr.e8f)) -> out %return.param: @CallGenericPtr.%ptr.loc16_33.1 (%ptr.e8f) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %Function.ref: %Function.type = name_ref Function, file.%Function.decl [concrete = constants.%Function]
|
||||
// CHECK:STDOUT: %x.ref: @CallGenericPtr.%ptr.loc16_33.1 (%ptr.e8f) = name_ref x, %x
|
||||
// CHECK:STDOUT: %Copy.facet.loc18_20.1: %Copy.type = facet_value constants.%ptr.e8f, (constants.%Copy.lookup_impl_witness.1da) [symbolic = %Copy.facet.loc18_20.2 (constants.%Copy.facet.302)]
|
||||
// CHECK:STDOUT: %.loc18_20.1: %Copy.type = converted constants.%ptr.e8f, %Copy.facet.loc18_20.1 [symbolic = %Copy.facet.loc18_20.2 (constants.%Copy.facet.302)]
|
||||
// CHECK:STDOUT: %Copy.facet.loc18_20.1: %Copy.type = facet_value constants.%ptr.e8f, (constants.%Copy.lookup_impl_witness.1da) [symbolic = %Copy.facet.loc18_20.3 (constants.%Copy.facet.302)]
|
||||
// CHECK:STDOUT: %.loc18_20.1: %Copy.type = converted constants.%ptr.e8f, %Copy.facet.loc18_20.1 [symbolic = %Copy.facet.loc18_20.3 (constants.%Copy.facet.302)]
|
||||
// CHECK:STDOUT: %Copy.facet.loc18_20.2: %Copy.type = facet_value constants.%ptr.e8f, (constants.%Copy.lookup_impl_witness.1da) [symbolic = %Copy.facet.loc18_20.3 (constants.%Copy.facet.302)]
|
||||
// CHECK:STDOUT: %.loc18_20.2: %Copy.type = converted constants.%ptr.e8f, %Copy.facet.loc18_20.2 [symbolic = %Copy.facet.loc18_20.3 (constants.%Copy.facet.302)]
|
||||
// CHECK:STDOUT: %Function.specific_fn.loc18_10.1: <specific function> = specific_function %Function.ref, @Function(constants.%Copy.facet.302) [symbolic = %Function.specific_fn.loc18_10.2 (constants.%Function.specific_fn.162)]
|
||||
// CHECK:STDOUT: %Function.call: init @CallGenericPtr.%ptr.loc16_33.1 (%ptr.e8f) = call %Function.specific_fn.loc18_10.1(%x.ref)
|
||||
// CHECK:STDOUT: return %Function.call
|
||||
@@ -474,67 +549,94 @@ fn CallSpecific(x: C*) -> C* {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %Function.ref: %Function.type = name_ref Function, file.%Function.decl [concrete = constants.%Function]
|
||||
// CHECK:STDOUT: %x.ref: %ptr.6b6 = name_ref x, %x
|
||||
// CHECK:STDOUT: %Copy.facet: %Copy.type = facet_value constants.%ptr.6b6, (constants.%Copy.impl_witness.65f) [concrete = constants.%Copy.facet.3f0]
|
||||
// CHECK:STDOUT: %.loc26: %Copy.type = converted constants.%ptr.6b6, %Copy.facet [concrete = constants.%Copy.facet.3f0]
|
||||
// CHECK:STDOUT: %Copy.facet.loc26_20.1: %Copy.type = facet_value constants.%ptr.6b6, (constants.%Copy.impl_witness.65f) [concrete = constants.%Copy.facet.3f0]
|
||||
// CHECK:STDOUT: %.loc26_20.1: %Copy.type = converted constants.%ptr.6b6, %Copy.facet.loc26_20.1 [concrete = constants.%Copy.facet.3f0]
|
||||
// CHECK:STDOUT: %Copy.facet.loc26_20.2: %Copy.type = facet_value constants.%ptr.6b6, (constants.%Copy.impl_witness.65f) [concrete = constants.%Copy.facet.3f0]
|
||||
// CHECK:STDOUT: %.loc26_20.2: %Copy.type = converted constants.%ptr.6b6, %Copy.facet.loc26_20.2 [concrete = constants.%Copy.facet.3f0]
|
||||
// CHECK:STDOUT: %Function.specific_fn: <specific function> = specific_function %Function.ref, @Function(constants.%Copy.facet.3f0) [concrete = constants.%Function.specific_fn.710]
|
||||
// CHECK:STDOUT: %Function.call: init %ptr.6b6 = call %Function.specific_fn(%x.ref)
|
||||
// CHECK:STDOUT: return %Function.call
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @Function(constants.%T.f84) {
|
||||
// CHECK:STDOUT: %T.patt.loc5_14.2 => constants.%T.patt.fe6
|
||||
// CHECK:STDOUT: %T.loc5_14.1 => constants.%T.f84
|
||||
// CHECK:STDOUT: %T.as_type.loc5_31.1 => constants.%T.as_type
|
||||
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.2c66b4.2
|
||||
// CHECK:STDOUT: %x.param_patt.loc5_29.2 => constants.%x.param_patt.1f4
|
||||
// CHECK:STDOUT: %x.patt.loc5_29.2 => constants.%x.patt.f93
|
||||
// CHECK:STDOUT: %.loc5_37.2 => constants.%.1ce700.2
|
||||
// CHECK:STDOUT: %return.param_patt.loc5_37.2 => constants.%return.param_patt.bf4475.2
|
||||
// CHECK:STDOUT: %return.patt.loc5_34.2 => constants.%return.patt.f44
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete => constants.%require_complete.d83
|
||||
// CHECK:STDOUT: %Copy.WithSelf.Op.type => constants.%Copy.WithSelf.Op.type.c85f21.2
|
||||
// CHECK:STDOUT: %.loc6_10.2 => constants.%.c29
|
||||
// CHECK:STDOUT: %.loc6_10.3 => constants.%.c29
|
||||
// CHECK:STDOUT: %Copy.lookup_impl_witness => constants.%Copy.lookup_impl_witness.d9c
|
||||
// CHECK:STDOUT: %impl.elem0.loc6_10.2 => constants.%impl.elem0.bd2
|
||||
// CHECK:STDOUT: %specific_impl_fn.loc6_10.2 => constants.%specific_impl_fn.e2a
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @CallGeneric(constants.%T.f84) {
|
||||
// CHECK:STDOUT: %T.patt.loc10_17.2 => constants.%T.patt.fe6
|
||||
// CHECK:STDOUT: %T.loc10_17.1 => constants.%T.f84
|
||||
// CHECK:STDOUT: %T.as_type.loc10_34.1 => constants.%T.as_type
|
||||
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.2c66b4.2
|
||||
// CHECK:STDOUT: %x.param_patt.loc10_32.2 => constants.%x.param_patt.1f4
|
||||
// CHECK:STDOUT: %x.patt.loc10_32.2 => constants.%x.patt.f93
|
||||
// CHECK:STDOUT: %.loc10_40.2 => constants.%.1ce700.2
|
||||
// CHECK:STDOUT: %return.param_patt.loc10_40.2 => constants.%return.param_patt.bf4475.2
|
||||
// CHECK:STDOUT: %return.patt.loc10_37.2 => constants.%return.patt.f44
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @CallGenericPtr(constants.%T.67d) {
|
||||
// CHECK:STDOUT: %T.patt.loc16_20.2 => constants.%T.patt.d47
|
||||
// CHECK:STDOUT: %T.loc16_20.1 => constants.%T.67d
|
||||
// CHECK:STDOUT: %ptr.loc16_33.1 => constants.%ptr.e8f
|
||||
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.4f4
|
||||
// CHECK:STDOUT: %x.param_patt.loc16_30.2 => constants.%x.param_patt.b5c
|
||||
// CHECK:STDOUT: %x.patt.loc16_30.2 => constants.%x.patt.b28
|
||||
// CHECK:STDOUT: %.loc16_40.1 => constants.%.cb6
|
||||
// CHECK:STDOUT: %return.param_patt.loc16_40.2 => constants.%return.param_patt.27f
|
||||
// CHECK:STDOUT: %return.patt.loc16_36.2 => constants.%return.patt.d67
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @Function(constants.%Copy.facet.302) {
|
||||
// CHECK:STDOUT: %T.patt.loc5_14.2 => constants.%T.patt.fe6
|
||||
// CHECK:STDOUT: %T.loc5_14.1 => constants.%Copy.facet.302
|
||||
// CHECK:STDOUT: %T.as_type.loc5_31.1 => constants.%ptr.e8f
|
||||
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.4f4
|
||||
// CHECK:STDOUT: %x.param_patt.loc5_29.2 => constants.%x.param_patt.b5c
|
||||
// CHECK:STDOUT: %x.patt.loc5_29.2 => constants.%x.patt.b28
|
||||
// CHECK:STDOUT: %.loc5_37.2 => constants.%.cb6
|
||||
// CHECK:STDOUT: %return.param_patt.loc5_37.2 => constants.%return.param_patt.27f
|
||||
// CHECK:STDOUT: %return.patt.loc5_34.2 => constants.%return.patt.d67
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete => constants.%require_complete.ef1
|
||||
// CHECK:STDOUT: %Copy.WithSelf.Op.type => constants.%Copy.WithSelf.Op.type.884
|
||||
// CHECK:STDOUT: %.loc6_10.2 => constants.%.be5
|
||||
// CHECK:STDOUT: %.loc6_10.3 => constants.%.be5
|
||||
// CHECK:STDOUT: %Copy.lookup_impl_witness => constants.%Copy.lookup_impl_witness.1da
|
||||
// CHECK:STDOUT: %impl.elem0.loc6_10.2 => constants.%impl.elem0.484
|
||||
// CHECK:STDOUT: %specific_impl_fn.loc6_10.2 => constants.%specific_impl_fn.a76
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @Function(constants.%Copy.facet.3f0) {
|
||||
// CHECK:STDOUT: %T.patt.loc5_14.2 => constants.%T.patt.fe6
|
||||
// CHECK:STDOUT: %T.loc5_14.1 => constants.%Copy.facet.3f0
|
||||
// CHECK:STDOUT: %T.as_type.loc5_31.1 => constants.%ptr.6b6
|
||||
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.fcb
|
||||
// CHECK:STDOUT: %x.param_patt.loc5_29.2 => constants.%x.param_patt.503
|
||||
// CHECK:STDOUT: %x.patt.loc5_29.2 => constants.%x.patt.eca
|
||||
// CHECK:STDOUT: %.loc5_37.2 => constants.%.8fa
|
||||
// CHECK:STDOUT: %return.param_patt.loc5_37.2 => constants.%return.param_patt.ada
|
||||
// CHECK:STDOUT: %return.patt.loc5_34.2 => constants.%return.patt.783
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete => constants.%complete_type.bf9
|
||||
// CHECK:STDOUT: %Copy.WithSelf.Op.type => constants.%Copy.WithSelf.Op.type.c6a
|
||||
// CHECK:STDOUT: %.loc6_10.2 => constants.%.a68
|
||||
// CHECK:STDOUT: %.loc6_10.3 => constants.%.a68
|
||||
// CHECK:STDOUT: %Copy.lookup_impl_witness => constants.%Copy.impl_witness.65f
|
||||
// CHECK:STDOUT: %impl.elem0.loc6_10.2 => constants.%ptr.as.Copy.impl.Op.c19
|
||||
// CHECK:STDOUT: %specific_impl_fn.loc6_10.2 => constants.%ptr.as.Copy.impl.Op.specific_fn
|
||||
|
||||
+20
-6
@@ -44,6 +44,7 @@ fn G() {
|
||||
// CHECK:STDOUT: %type: type = facet_type <type> [concrete]
|
||||
// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self]
|
||||
// CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete]
|
||||
// CHECK:STDOUT: %Scalar.patt: %pattern_type.98f = symbolic_binding_pattern Scalar, 0 [symbolic]
|
||||
// CHECK:STDOUT: %Scalar: type = symbolic_binding Scalar, 0 [symbolic]
|
||||
// CHECK:STDOUT: %Generic.type.30d: type = generic_interface_type @Generic [concrete]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete]
|
||||
@@ -82,9 +83,11 @@ fn G() {
|
||||
// CHECK:STDOUT: %Other.facet: %Other.type = facet_value %ImplsGeneric, (%Other.impl_witness) [concrete]
|
||||
// CHECK:STDOUT: %Other.WithSelf.G.type.933: type = fn_type @Other.WithSelf.G, @Other.WithSelf(%Other.facet) [concrete]
|
||||
// CHECK:STDOUT: %Other.WithSelf.G.4ce: %Other.WithSelf.G.type.933 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %T.patt: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %T: type = symbolic_binding T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %Generic.type.ee14e9.2: type = facet_type <@Generic, @Generic(%T)> [symbolic]
|
||||
// CHECK:STDOUT: %pattern_type.4e0: type = pattern_type %Generic.type.ee14e9.2 [symbolic]
|
||||
// CHECK:STDOUT: %U.patt.8a6: %pattern_type.4e0 = symbolic_binding_pattern U, 1 [symbolic]
|
||||
// CHECK:STDOUT: %U: %Generic.type.ee14e9.2 = symbolic_binding U, 1 [symbolic]
|
||||
// CHECK:STDOUT: %CallGenericMethod.type: type = fn_type @CallGenericMethod [concrete]
|
||||
// CHECK:STDOUT: %CallGenericMethod: %CallGenericMethod.type = struct_value () [concrete]
|
||||
@@ -104,6 +107,7 @@ fn G() {
|
||||
// CHECK:STDOUT: %G.type: type = fn_type @G [concrete]
|
||||
// CHECK:STDOUT: %G: %G.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.de1: type = pattern_type %Generic.type.b40 [concrete]
|
||||
// CHECK:STDOUT: %U.patt.e09: %pattern_type.de1 = symbolic_binding_pattern U, 1 [symbolic]
|
||||
// CHECK:STDOUT: %CallGenericMethod.specific_fn: <specific function> = specific_function %CallGenericMethod, @CallGenericMethod(%GenericParam, %Generic.facet) [concrete]
|
||||
// CHECK:STDOUT: %complete_type.35b: <witness> = complete_type_witness %Generic.type.b40 [concrete]
|
||||
// CHECK:STDOUT: %.1fa: type = fn_type_with_self_type %Generic.WithSelf.F.type.c45, %Generic.facet [concrete]
|
||||
@@ -128,7 +132,7 @@ fn G() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %Generic.decl: %Generic.type.30d = interface_decl @Generic [concrete = constants.%Generic.generic] {
|
||||
// CHECK:STDOUT: %Scalar.patt: %pattern_type.98f = symbolic_binding_pattern Scalar, 0 [concrete]
|
||||
// CHECK:STDOUT: %Scalar.patt.loc15_25.1: %pattern_type.98f = symbolic_binding_pattern Scalar, 0 [symbolic = %Scalar.patt.loc15_25.2 (constants.%Scalar.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %.loc15_28.1: type = splice_block %.loc15_28.2 [concrete = type] {
|
||||
// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self]
|
||||
@@ -150,8 +154,8 @@ fn G() {
|
||||
// CHECK:STDOUT: %Other.ref: type = name_ref Other, file.%Other.decl [concrete = constants.%Other.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %CallGenericMethod.decl: %CallGenericMethod.type = fn_decl @CallGenericMethod [concrete = constants.%CallGenericMethod] {
|
||||
// CHECK:STDOUT: %T.patt: %pattern_type.98f = symbolic_binding_pattern T, 0 [concrete]
|
||||
// CHECK:STDOUT: %U.patt: @CallGenericMethod.%pattern_type (%pattern_type.4e0) = symbolic_binding_pattern U, 1 [concrete]
|
||||
// CHECK:STDOUT: %T.patt.loc33_23.1: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc33_23.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %U.patt.loc33_33.1: @CallGenericMethod.%pattern_type (%pattern_type.4e0) = symbolic_binding_pattern U, 1 [symbolic = %U.patt.loc33_33.2 (constants.%U.patt.8a6)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %.loc33_26.1: type = splice_block %.loc33_26.2 [concrete = type] {
|
||||
// CHECK:STDOUT: %.Self.loc33_23: %type = symbolic_binding .Self [symbolic_self = constants.%.Self]
|
||||
@@ -170,6 +174,7 @@ fn G() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: generic interface @Generic(%Scalar.loc15_25.2: type) {
|
||||
// CHECK:STDOUT: %Scalar.patt.loc15_25.2: %pattern_type.98f = symbolic_binding_pattern Scalar, 0 [symbolic = %Scalar.patt.loc15_25.2 (constants.%Scalar.patt)]
|
||||
// CHECK:STDOUT: %Scalar.loc15_25.1: type = symbolic_binding Scalar, 0 [symbolic = %Scalar.loc15_25.1 (constants.%Scalar)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
@@ -263,10 +268,12 @@ fn G() {
|
||||
// CHECK:STDOUT: fn @ImplsGeneric.as.Other.impl.G();
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: generic fn @CallGenericMethod(%T.loc33_23.2: type, %U.loc33_33.2: @CallGenericMethod.%Generic.type.loc33_45.1 (%Generic.type.ee14e9.2)) {
|
||||
// CHECK:STDOUT: %T.patt.loc33_23.2: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc33_23.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %T.loc33_23.1: type = symbolic_binding T, 0 [symbolic = %T.loc33_23.1 (constants.%T)]
|
||||
// CHECK:STDOUT: %Generic.type.loc33_45.1: type = facet_type <@Generic, @Generic(%T.loc33_23.1)> [symbolic = %Generic.type.loc33_45.1 (constants.%Generic.type.ee14e9.2)]
|
||||
// CHECK:STDOUT: %U.loc33_33.1: @CallGenericMethod.%Generic.type.loc33_45.1 (%Generic.type.ee14e9.2) = symbolic_binding U, 1 [symbolic = %U.loc33_33.1 (constants.%U)]
|
||||
// CHECK:STDOUT: %pattern_type: type = pattern_type %Generic.type.loc33_45.1 [symbolic = %pattern_type (constants.%pattern_type.4e0)]
|
||||
// CHECK:STDOUT: %U.patt.loc33_33.2: @CallGenericMethod.%pattern_type (%pattern_type.4e0) = symbolic_binding_pattern U, 1 [symbolic = %U.patt.loc33_33.2 (constants.%U.patt.8a6)]
|
||||
// CHECK:STDOUT: %U.loc33_33.1: @CallGenericMethod.%Generic.type.loc33_45.1 (%Generic.type.ee14e9.2) = symbolic_binding U, 1 [symbolic = %U.loc33_33.1 (constants.%U)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete: <witness> = require_complete_type %Generic.type.loc33_45.1 [symbolic = %require_complete (constants.%require_complete)]
|
||||
@@ -306,6 +313,7 @@ fn G() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @Generic(constants.%Scalar) {
|
||||
// CHECK:STDOUT: %Scalar.patt.loc15_25.2 => constants.%Scalar.patt
|
||||
// CHECK:STDOUT: %Scalar.loc15_25.1 => constants.%Scalar
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -314,6 +322,7 @@ fn G() {
|
||||
// CHECK:STDOUT: specific @Generic.WithSelf.F(constants.%Scalar, constants.%Self.8ea1ea.1) {}
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @Generic(constants.%GenericParam) {
|
||||
// CHECK:STDOUT: %Scalar.patt.loc15_25.2 => constants.%Scalar.patt
|
||||
// CHECK:STDOUT: %Scalar.loc15_25.1 => constants.%GenericParam
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
@@ -364,6 +373,7 @@ fn G() {
|
||||
// CHECK:STDOUT: specific @Other.WithSelf.G(constants.%Other.facet) {}
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @Generic(constants.%T) {
|
||||
// CHECK:STDOUT: %Scalar.patt.loc15_25.2 => constants.%Scalar.patt
|
||||
// CHECK:STDOUT: %Scalar.loc15_25.1 => constants.%T
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
@@ -372,10 +382,12 @@ fn G() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @CallGenericMethod(constants.%T, constants.%U) {
|
||||
// CHECK:STDOUT: %T.patt.loc33_23.2 => constants.%T.patt
|
||||
// CHECK:STDOUT: %T.loc33_23.1 => constants.%T
|
||||
// CHECK:STDOUT: %Generic.type.loc33_45.1 => constants.%Generic.type.ee14e9.2
|
||||
// CHECK:STDOUT: %U.loc33_33.1 => constants.%U
|
||||
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.4e0
|
||||
// CHECK:STDOUT: %U.patt.loc33_33.2 => constants.%U.patt.8a6
|
||||
// CHECK:STDOUT: %U.loc33_33.1 => constants.%U
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @Generic.WithSelf(constants.%T, constants.%Self.8ea1ea.1) {
|
||||
@@ -403,10 +415,12 @@ fn G() {
|
||||
// CHECK:STDOUT: specific @Generic.WithSelf.F(constants.%T, constants.%U) {}
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @CallGenericMethod(constants.%GenericParam, constants.%Generic.facet) {
|
||||
// CHECK:STDOUT: %T.patt.loc33_23.2 => constants.%T.patt
|
||||
// CHECK:STDOUT: %T.loc33_23.1 => constants.%GenericParam
|
||||
// CHECK:STDOUT: %Generic.type.loc33_45.1 => constants.%Generic.type.b40
|
||||
// CHECK:STDOUT: %U.loc33_33.1 => constants.%Generic.facet
|
||||
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.de1
|
||||
// CHECK:STDOUT: %U.patt.loc33_33.2 => constants.%U.patt.e09
|
||||
// CHECK:STDOUT: %U.loc33_33.1 => constants.%Generic.facet
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete => constants.%complete_type.35b
|
||||
|
||||
+271
-65
File diff suppressed because it is too large
Load Diff
+11
-2
@@ -54,6 +54,7 @@ fn F() {
|
||||
// CHECK:STDOUT: %type: type = facet_type <type> [concrete]
|
||||
// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self]
|
||||
// CHECK:STDOUT: %pattern_type.cfb: type = pattern_type %Y.type [concrete]
|
||||
// CHECK:STDOUT: %D.patt: %pattern_type.cfb = symbolic_binding_pattern D, 0 [symbolic]
|
||||
// CHECK:STDOUT: %D: %Y.type = symbolic_binding D, 0 [symbolic]
|
||||
// CHECK:STDOUT: %CC.type: type = generic_class_type @CC [concrete]
|
||||
// CHECK:STDOUT: %CC.generic: %CC.type = struct_value () [concrete]
|
||||
@@ -72,6 +73,7 @@ fn F() {
|
||||
// CHECK:STDOUT: %type.as.BitAndWith.impl.Op.bound: <bound method> = bound_method %Y.type, %type.as.BitAndWith.impl.Op [concrete]
|
||||
// CHECK:STDOUT: %facet_type: type = facet_type <@Y & @W> [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.bd4: type = pattern_type %facet_type [concrete]
|
||||
// CHECK:STDOUT: %E.patt: %pattern_type.bd4 = symbolic_binding_pattern E, 0 [symbolic]
|
||||
// CHECK:STDOUT: %E: %facet_type = symbolic_binding E, 0 [symbolic]
|
||||
// CHECK:STDOUT: %E.as_type: type = facet_access_type %E [symbolic]
|
||||
// CHECK:STDOUT: %Y.lookup_impl_witness: <witness> = lookup_impl_witness %E, @Y [symbolic]
|
||||
@@ -121,7 +123,7 @@ fn F() {
|
||||
// CHECK:STDOUT: %W.ref: type = name_ref W, file.%W.decl [concrete = constants.%W.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %CC.decl: %CC.type = class_decl @CC [concrete = constants.%CC.generic] {
|
||||
// CHECK:STDOUT: %D.patt: %pattern_type.cfb = symbolic_binding_pattern D, 0 [concrete]
|
||||
// CHECK:STDOUT: %D.patt.loc12_11.1: %pattern_type.cfb = symbolic_binding_pattern D, 0 [symbolic = %D.patt.loc12_11.2 (constants.%D.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %.loc12: type = splice_block %Y.ref [concrete = constants.%Y.type] {
|
||||
// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self]
|
||||
@@ -131,7 +133,7 @@ fn F() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Z.decl: type = interface_decl @Z [concrete = constants.%Z.type] {} {}
|
||||
// CHECK:STDOUT: impl_decl @CC.as.Z.impl [concrete] {
|
||||
// CHECK:STDOUT: %E.patt: %pattern_type.bd4 = symbolic_binding_pattern E, 0 [concrete]
|
||||
// CHECK:STDOUT: %E.patt.loc19_15.1: %pattern_type.bd4 = symbolic_binding_pattern E, 0 [symbolic = %E.patt.loc19_15.2 (constants.%E.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %CC.ref: %CC.type = name_ref CC, file.%CC.decl [concrete = constants.%CC.generic]
|
||||
// CHECK:STDOUT: %E.ref: %facet_type = name_ref E, %E.loc19_15.1 [symbolic = %E.loc19_15.2 (constants.%E)]
|
||||
@@ -207,6 +209,7 @@ fn F() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: generic impl @CC.as.Z.impl(%E.loc19_15.1: %facet_type) {
|
||||
// CHECK:STDOUT: %E.patt.loc19_15.2: %pattern_type.bd4 = symbolic_binding_pattern E, 0 [symbolic = %E.patt.loc19_15.2 (constants.%E.patt)]
|
||||
// CHECK:STDOUT: %E.loc19_15.2: %facet_type = symbolic_binding E, 0 [symbolic = %E.loc19_15.2 (constants.%E)]
|
||||
// CHECK:STDOUT: %E.as_type.loc19_29.2: type = facet_access_type %E.loc19_15.2 [symbolic = %E.as_type.loc19_29.2 (constants.%E.as_type)]
|
||||
// CHECK:STDOUT: %Y.lookup_impl_witness: <witness> = lookup_impl_witness %E.loc19_15.2, @Y [symbolic = %Y.lookup_impl_witness (constants.%Y.lookup_impl_witness)]
|
||||
@@ -235,6 +238,7 @@ fn F() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: generic class @CC(%D.loc12_11.2: %Y.type) {
|
||||
// CHECK:STDOUT: %D.patt.loc12_11.2: %pattern_type.cfb = symbolic_binding_pattern D, 0 [symbolic = %D.patt.loc12_11.2 (constants.%D.patt)]
|
||||
// CHECK:STDOUT: %D.loc12_11.1: %Y.type = symbolic_binding D, 0 [symbolic = %D.loc12_11.1 (constants.%D)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
@@ -278,6 +282,7 @@ fn F() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @CC(constants.%D) {
|
||||
// CHECK:STDOUT: %D.patt.loc12_11.2 => constants.%D.patt
|
||||
// CHECK:STDOUT: %D.loc12_11.1 => constants.%D
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -286,10 +291,12 @@ fn F() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @CC(constants.%Y.facet.18f) {
|
||||
// CHECK:STDOUT: %D.patt.loc12_11.2 => constants.%D.patt
|
||||
// CHECK:STDOUT: %D.loc12_11.1 => constants.%Y.facet.18f
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @CC.as.Z.impl(constants.%E) {
|
||||
// CHECK:STDOUT: %E.patt.loc19_15.2 => constants.%E.patt
|
||||
// CHECK:STDOUT: %E.loc19_15.2 => constants.%E
|
||||
// CHECK:STDOUT: %E.as_type.loc19_29.2 => constants.%E.as_type
|
||||
// CHECK:STDOUT: %Y.lookup_impl_witness => constants.%Y.lookup_impl_witness
|
||||
@@ -303,10 +310,12 @@ fn F() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @CC(constants.%Y.facet.2a4) {
|
||||
// CHECK:STDOUT: %D.patt.loc12_11.2 => constants.%D.patt
|
||||
// CHECK:STDOUT: %D.loc12_11.1 => constants.%Y.facet.2a4
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @CC.as.Z.impl(constants.%facet_value) {
|
||||
// CHECK:STDOUT: %E.patt.loc19_15.2 => constants.%E.patt
|
||||
// CHECK:STDOUT: %E.loc19_15.2 => constants.%facet_value
|
||||
// CHECK:STDOUT: %E.as_type.loc19_29.2 => constants.%DD
|
||||
// CHECK:STDOUT: %Y.lookup_impl_witness => constants.%Y.impl_witness
|
||||
|
||||
+31
-6
@@ -53,10 +53,13 @@ fn B() {
|
||||
// CHECK:STDOUT: %type: type = facet_type <type> [concrete]
|
||||
// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self]
|
||||
// CHECK:STDOUT: %pattern_type.1d1: type = pattern_type %Z.type [concrete]
|
||||
// CHECK:STDOUT: %T.patt: %pattern_type.1d1 = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %T: %Z.type = symbolic_binding T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %T.as_type: type = facet_access_type %T [symbolic]
|
||||
// CHECK:STDOUT: %struct_type.a: type = struct_type {.a: %T.as_type} [symbolic]
|
||||
// CHECK:STDOUT: %pattern_type.662: type = pattern_type %struct_type.a [symbolic]
|
||||
// CHECK:STDOUT: %x.param_patt: %pattern_type.662 = value_param_pattern [symbolic]
|
||||
// CHECK:STDOUT: %x.patt: %pattern_type.662 = at_binding_pattern x, %x.param_patt [symbolic]
|
||||
// CHECK:STDOUT: %A.type: type = fn_type @A [concrete]
|
||||
// CHECK:STDOUT: %A: %A.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %require_complete: <witness> = require_complete_type %struct_type.a [symbolic]
|
||||
@@ -69,9 +72,9 @@ fn B() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Z.decl: type = interface_decl @Z [concrete = constants.%Z.type] {} {}
|
||||
// CHECK:STDOUT: %A.decl: %A.type = fn_decl @A [concrete = constants.%A] {
|
||||
// CHECK:STDOUT: %T.patt: %pattern_type.1d1 = symbolic_binding_pattern T, 0 [concrete]
|
||||
// CHECK:STDOUT: %x.param_patt: @A.%pattern_type (%pattern_type.662) = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %x.patt: @A.%pattern_type (%pattern_type.662) = at_binding_pattern x, %x.param_patt [concrete]
|
||||
// CHECK:STDOUT: %T.patt.loc4_7.1: %pattern_type.1d1 = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_7.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %x.param_patt.loc4_21.1: @A.%pattern_type (%pattern_type.662) = value_param_pattern [symbolic = %x.param_patt.loc4_21.2 (constants.%x.param_patt)]
|
||||
// CHECK:STDOUT: %x.patt.loc4_21.1: @A.%pattern_type (%pattern_type.662) = at_binding_pattern x, %x.param_patt.loc4_21.1 [symbolic = %x.patt.loc4_21.2 (constants.%x.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %.loc4_10: type = splice_block %Z.ref [concrete = constants.%Z.type] {
|
||||
// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self]
|
||||
@@ -101,10 +104,13 @@ fn B() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: generic fn @A(%T.loc4_7.2: %Z.type) {
|
||||
// CHECK:STDOUT: %T.patt.loc4_7.2: %pattern_type.1d1 = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_7.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %T.loc4_7.1: %Z.type = symbolic_binding T, 0 [symbolic = %T.loc4_7.1 (constants.%T)]
|
||||
// CHECK:STDOUT: %T.as_type.loc4_28.1: type = facet_access_type %T.loc4_7.1 [symbolic = %T.as_type.loc4_28.1 (constants.%T.as_type)]
|
||||
// CHECK:STDOUT: %struct_type.a.loc4_29.1: type = struct_type {.a: @A.%T.as_type.loc4_28.1 (%T.as_type)} [symbolic = %struct_type.a.loc4_29.1 (constants.%struct_type.a)]
|
||||
// CHECK:STDOUT: %pattern_type: type = pattern_type %struct_type.a.loc4_29.1 [symbolic = %pattern_type (constants.%pattern_type.662)]
|
||||
// CHECK:STDOUT: %x.param_patt.loc4_21.2: @A.%pattern_type (%pattern_type.662) = value_param_pattern [symbolic = %x.param_patt.loc4_21.2 (constants.%x.param_patt)]
|
||||
// CHECK:STDOUT: %x.patt.loc4_21.2: @A.%pattern_type (%pattern_type.662) = at_binding_pattern x, %x.param_patt.loc4_21.2 [symbolic = %x.patt.loc4_21.2 (constants.%x.patt)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete: <witness> = require_complete_type %struct_type.a.loc4_29.1 [symbolic = %require_complete (constants.%require_complete)]
|
||||
@@ -120,10 +126,13 @@ fn B() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @A(constants.%T) {
|
||||
// CHECK:STDOUT: %T.patt.loc4_7.2 => constants.%T.patt
|
||||
// CHECK:STDOUT: %T.loc4_7.1 => constants.%T
|
||||
// CHECK:STDOUT: %T.as_type.loc4_28.1 => constants.%T.as_type
|
||||
// CHECK:STDOUT: %struct_type.a.loc4_29.1 => constants.%struct_type.a
|
||||
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.662
|
||||
// CHECK:STDOUT: %x.param_patt.loc4_21.2 => constants.%x.param_patt
|
||||
// CHECK:STDOUT: %x.patt.loc4_21.2 => constants.%x.patt
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: --- fail_deduce_imported_function.carbon
|
||||
@@ -134,10 +143,13 @@ fn B() {
|
||||
// CHECK:STDOUT: %Z.type: type = facet_type <@Z> [concrete]
|
||||
// CHECK:STDOUT: %Self: %Z.type = symbolic_binding Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %pattern_type.1d1: type = pattern_type %Z.type [concrete]
|
||||
// CHECK:STDOUT: %T.patt: %pattern_type.1d1 = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %T: %Z.type = symbolic_binding T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %T.as_type: type = facet_access_type %T [symbolic]
|
||||
// CHECK:STDOUT: %struct_type.a: type = struct_type {.a: %T.as_type} [symbolic]
|
||||
// CHECK:STDOUT: %pattern_type.662: type = pattern_type %struct_type.a [symbolic]
|
||||
// CHECK:STDOUT: %x.param_patt: %pattern_type.662 = value_param_pattern [symbolic]
|
||||
// CHECK:STDOUT: %x.patt.fcf7db.1: %pattern_type.662 = at_binding_pattern x, %x.param_patt [symbolic]
|
||||
// CHECK:STDOUT: %A.type.9f4: type = fn_type @A.loc4 [concrete]
|
||||
// CHECK:STDOUT: %A.921: %A.type.9f4 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %require_complete: <witness> = require_complete_type %struct_type.a [symbolic]
|
||||
@@ -149,6 +161,7 @@ fn B() {
|
||||
// CHECK:STDOUT: %struct: %struct_type.b = struct_value (%empty_struct) [concrete]
|
||||
// CHECK:STDOUT: %A.type.42a: type = fn_type @A.1 [concrete]
|
||||
// CHECK:STDOUT: %A.b9a: %A.type.42a = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %x.patt.fcf7db.2: %pattern_type.662 = at_binding_pattern x, %x.param_patt [symbolic]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
@@ -171,9 +184,9 @@ fn B() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Lib.import = import Lib
|
||||
// CHECK:STDOUT: %A.decl: %A.type.9f4 = fn_decl @A.loc4 [concrete = constants.%A.921] {
|
||||
// CHECK:STDOUT: %T.patt: %pattern_type.1d1 = symbolic_binding_pattern T, 0 [concrete]
|
||||
// CHECK:STDOUT: %x.param_patt: @A.loc4.%pattern_type (%pattern_type.662) = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %x.patt: @A.loc4.%pattern_type (%pattern_type.662) = at_binding_pattern x, %x.param_patt [concrete]
|
||||
// CHECK:STDOUT: %T.patt.loc4_7.1: %pattern_type.1d1 = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_7.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %x.param_patt.loc4_25.1: @A.loc4.%pattern_type (%pattern_type.662) = value_param_pattern [symbolic = %x.param_patt.loc4_25.2 (constants.%x.param_patt)]
|
||||
// CHECK:STDOUT: %x.patt.loc4_25.1: @A.loc4.%pattern_type (%pattern_type.662) = at_binding_pattern x, %x.param_patt.loc4_25.1 [symbolic = %x.patt.loc4_25.2 (constants.%x.patt.fcf7db.1)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %.loc4_13: type = splice_block %Z.ref [concrete = constants.%Z.type] {
|
||||
// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self]
|
||||
@@ -202,10 +215,13 @@ fn B() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: generic fn @A.loc4(%T.loc4_7.2: %Z.type) {
|
||||
// CHECK:STDOUT: %T.patt.loc4_7.2: %pattern_type.1d1 = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_7.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %T.loc4_7.1: %Z.type = symbolic_binding T, 0 [symbolic = %T.loc4_7.1 (constants.%T)]
|
||||
// CHECK:STDOUT: %T.as_type.loc4_32.1: type = facet_access_type %T.loc4_7.1 [symbolic = %T.as_type.loc4_32.1 (constants.%T.as_type)]
|
||||
// CHECK:STDOUT: %struct_type.a.loc4_33.1: type = struct_type {.a: @A.loc4.%T.as_type.loc4_32.1 (%T.as_type)} [symbolic = %struct_type.a.loc4_33.1 (constants.%struct_type.a)]
|
||||
// CHECK:STDOUT: %pattern_type: type = pattern_type %struct_type.a.loc4_33.1 [symbolic = %pattern_type (constants.%pattern_type.662)]
|
||||
// CHECK:STDOUT: %x.param_patt.loc4_25.2: @A.loc4.%pattern_type (%pattern_type.662) = value_param_pattern [symbolic = %x.param_patt.loc4_25.2 (constants.%x.param_patt)]
|
||||
// CHECK:STDOUT: %x.patt.loc4_25.2: @A.loc4.%pattern_type (%pattern_type.662) = at_binding_pattern x, %x.param_patt.loc4_25.2 [symbolic = %x.patt.loc4_25.2 (constants.%x.patt.fcf7db.1)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete: <witness> = require_complete_type %struct_type.a.loc4_33.1 [symbolic = %require_complete (constants.%require_complete)]
|
||||
@@ -229,10 +245,13 @@ fn B() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: generic fn @A.1(imports.%Lib.import_ref.78f: %Z.type) [from "lib.carbon"] {
|
||||
// CHECK:STDOUT: %T.patt: %pattern_type.1d1 = symbolic_binding_pattern T, 0 [symbolic = %T.patt (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %T: %Z.type = symbolic_binding T, 0 [symbolic = %T (constants.%T)]
|
||||
// CHECK:STDOUT: %T.as_type: type = facet_access_type %T [symbolic = %T.as_type (constants.%T.as_type)]
|
||||
// CHECK:STDOUT: %struct_type.a: type = struct_type {.a: @A.1.%T.as_type (%T.as_type)} [symbolic = %struct_type.a (constants.%struct_type.a)]
|
||||
// CHECK:STDOUT: %pattern_type: type = pattern_type %struct_type.a [symbolic = %pattern_type (constants.%pattern_type.662)]
|
||||
// CHECK:STDOUT: %x.param_patt: @A.1.%pattern_type (%pattern_type.662) = value_param_pattern [symbolic = %x.param_patt (constants.%x.param_patt)]
|
||||
// CHECK:STDOUT: %x.patt: @A.1.%pattern_type (%pattern_type.662) = at_binding_pattern x, %x.param_patt [symbolic = %x.patt (constants.%x.patt.fcf7db.2)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete: <witness> = require_complete_type %struct_type.a [symbolic = %require_complete (constants.%require_complete)]
|
||||
@@ -245,16 +264,22 @@ fn B() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @A.loc4(constants.%T) {
|
||||
// CHECK:STDOUT: %T.patt.loc4_7.2 => constants.%T.patt
|
||||
// CHECK:STDOUT: %T.loc4_7.1 => constants.%T
|
||||
// CHECK:STDOUT: %T.as_type.loc4_32.1 => constants.%T.as_type
|
||||
// CHECK:STDOUT: %struct_type.a.loc4_33.1 => constants.%struct_type.a
|
||||
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.662
|
||||
// CHECK:STDOUT: %x.param_patt.loc4_25.2 => constants.%x.param_patt
|
||||
// CHECK:STDOUT: %x.patt.loc4_25.2 => constants.%x.patt.fcf7db.1
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @A.1(constants.%T) {
|
||||
// CHECK:STDOUT: %T.patt => constants.%T.patt
|
||||
// CHECK:STDOUT: %T => constants.%T
|
||||
// CHECK:STDOUT: %T.as_type => constants.%T.as_type
|
||||
// CHECK:STDOUT: %struct_type.a => constants.%struct_type.a
|
||||
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.662
|
||||
// CHECK:STDOUT: %x.param_patt => constants.%x.param_patt
|
||||
// CHECK:STDOUT: %x.patt => constants.%x.patt.fcf7db.2
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
@@ -20,6 +20,7 @@ fn F(T:! type);
|
||||
// CHECK:STDOUT: %type: type = facet_type <type> [concrete]
|
||||
// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self]
|
||||
// CHECK:STDOUT: %pattern_type: type = pattern_type type [concrete]
|
||||
// CHECK:STDOUT: %T.patt: %pattern_type = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %T: type = symbolic_binding T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [concrete]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [concrete]
|
||||
@@ -30,7 +31,7 @@ fn F(T:! type);
|
||||
// CHECK:STDOUT: .F = %F.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {
|
||||
// CHECK:STDOUT: %T.patt: %pattern_type = symbolic_binding_pattern T, 0 [concrete]
|
||||
// CHECK:STDOUT: %T.patt.loc15_7.1: %pattern_type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc15_7.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %.loc15_10.1: type = splice_block %.loc15_10.2 [concrete = type] {
|
||||
// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self]
|
||||
@@ -41,12 +42,14 @@ fn F(T:! type);
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: generic fn @F(%T.loc15_7.2: type) {
|
||||
// CHECK:STDOUT: %T.patt.loc15_7.2: %pattern_type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc15_7.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %T.loc15_7.1: type = symbolic_binding T, 0 [symbolic = %T.loc15_7.1 (constants.%T)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn();
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @F(constants.%T) {
|
||||
// CHECK:STDOUT: %T.patt.loc15_7.2 => constants.%T.patt
|
||||
// CHECK:STDOUT: %T.loc15_7.1 => constants.%T
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
@@ -44,10 +44,12 @@ fn H() {
|
||||
// CHECK:STDOUT: %type: type = facet_type <type> [concrete]
|
||||
// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self]
|
||||
// CHECK:STDOUT: %pattern_type: type = pattern_type type [concrete]
|
||||
// CHECK:STDOUT: %T.patt.d47011.1: %pattern_type = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %T.67db0b.1: type = symbolic_binding T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [concrete]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %T.patt.d47011.2: %pattern_type = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %T.67db0b.2: type = symbolic_binding T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %G.type: type = fn_type @G [concrete]
|
||||
// CHECK:STDOUT: %G: %G.type = struct_value () [concrete]
|
||||
@@ -60,7 +62,7 @@ fn H() {
|
||||
// CHECK:STDOUT: .G = %G.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {
|
||||
// CHECK:STDOUT: %T.patt: %pattern_type = symbolic_binding_pattern T, 0 [concrete]
|
||||
// CHECK:STDOUT: %T.patt.loc4_14.1: %pattern_type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_14.2 (constants.%T.patt.d47011.1)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %.loc4_17.1: type = splice_block %.loc4_17.2 [concrete = type] {
|
||||
// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self]
|
||||
@@ -69,7 +71,7 @@ fn H() {
|
||||
// CHECK:STDOUT: %T.loc4_14.2: type = symbolic_binding T, 0 [symbolic = %T.loc4_14.1 (constants.%T.67db0b.1)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] {
|
||||
// CHECK:STDOUT: %T.patt: %pattern_type = symbolic_binding_pattern T, 0 [concrete]
|
||||
// CHECK:STDOUT: %T.patt.loc7_7.1: %pattern_type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc7_7.2 (constants.%T.patt.d47011.2)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %.loc7_10.1: type = splice_block %.loc7_10.2 [concrete = type] {
|
||||
// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self]
|
||||
@@ -80,6 +82,7 @@ fn H() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: generic fn @F(%T.loc4_14.2: type) {
|
||||
// CHECK:STDOUT: %T.patt.loc4_14.2: %pattern_type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_14.2 (constants.%T.patt.d47011.1)]
|
||||
// CHECK:STDOUT: %T.loc4_14.1: type = symbolic_binding T, 0 [symbolic = %T.loc4_14.1 (constants.%T.67db0b.1)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
@@ -91,6 +94,7 @@ fn H() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: generic fn @G(%T.loc7_7.2: type) {
|
||||
// CHECK:STDOUT: %T.patt.loc7_7.2: %pattern_type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc7_7.2 (constants.%T.patt.d47011.2)]
|
||||
// CHECK:STDOUT: %T.loc7_7.1: type = symbolic_binding T, 0 [symbolic = %T.loc7_7.1 (constants.%T.67db0b.2)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
@@ -107,14 +111,17 @@ fn H() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @F(constants.%T.67db0b.1) {
|
||||
// CHECK:STDOUT: %T.patt.loc4_14.2 => constants.%T.patt.d47011.1
|
||||
// CHECK:STDOUT: %T.loc4_14.1 => constants.%T.67db0b.1
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @G(constants.%T.67db0b.2) {
|
||||
// CHECK:STDOUT: %T.patt.loc7_7.2 => constants.%T.patt.d47011.2
|
||||
// CHECK:STDOUT: %T.loc7_7.1 => constants.%T.67db0b.2
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @F(constants.%T.67db0b.2) {
|
||||
// CHECK:STDOUT: %T.patt.loc4_14.2 => constants.%T.patt.d47011.1
|
||||
// CHECK:STDOUT: %T.loc4_14.1 => constants.%T.67db0b.2
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
@@ -132,6 +139,8 @@ fn H() {
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [concrete]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %T.67db0b.1: type = symbolic_binding T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %pattern_type: type = pattern_type type [concrete]
|
||||
// CHECK:STDOUT: %T.patt: %pattern_type = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %F.specific_fn.e0d: <specific function> = specific_function %F, @F(%C) [concrete]
|
||||
// CHECK:STDOUT: %G.type: type = fn_type @G [concrete]
|
||||
// CHECK:STDOUT: %G: %G.type = struct_value () [concrete]
|
||||
@@ -181,6 +190,7 @@ fn H() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: generic fn @F(imports.%Main.import_ref.b3bc94.1: type) [from "library.carbon"] {
|
||||
// CHECK:STDOUT: %T.patt: %pattern_type = symbolic_binding_pattern T, 0 [symbolic = %T.patt (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %T: type = symbolic_binding T, 0 [symbolic = %T (constants.%T.67db0b.1)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
@@ -189,6 +199,7 @@ fn H() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: generic fn @G(imports.%Main.import_ref.b3bc94.2: type) [from "library.carbon"] {
|
||||
// CHECK:STDOUT: %T.patt: %pattern_type = symbolic_binding_pattern T, 0 [symbolic = %T.patt (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %T: type = symbolic_binding T, 0 [symbolic = %T (constants.%T.67db0b.2)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
@@ -198,26 +209,31 @@ fn H() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @F(constants.%T.67db0b.1) {
|
||||
// CHECK:STDOUT: %T.patt => constants.%T.patt
|
||||
// CHECK:STDOUT: %T => constants.%T.67db0b.1
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @F(constants.%C) {
|
||||
// CHECK:STDOUT: %T.patt => constants.%T.patt
|
||||
// CHECK:STDOUT: %T => constants.%C
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @F(constants.%T.67db0b.2) {
|
||||
// CHECK:STDOUT: %T.patt => constants.%T.patt
|
||||
// CHECK:STDOUT: %T => constants.%T.67db0b.2
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @G(constants.%T.67db0b.2) {
|
||||
// CHECK:STDOUT: %T.patt => constants.%T.patt
|
||||
// CHECK:STDOUT: %T => constants.%T.67db0b.2
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @G(constants.%C) {
|
||||
// CHECK:STDOUT: %T.patt => constants.%T.patt
|
||||
// CHECK:STDOUT: %T => constants.%C
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
|
||||
@@ -24,12 +24,18 @@ fn F(T:! type, p: T**) -> T* {
|
||||
// CHECK:STDOUT: --- pointer_to_pointer.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete]
|
||||
// CHECK:STDOUT: %T.patt.d47: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %T.67d: type = symbolic_binding T, 0 [symbolic]
|
||||
// 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: %p.param_patt: %pattern_type.8bb = value_param_pattern [symbolic]
|
||||
// CHECK:STDOUT: %p.patt: %pattern_type.8bb = at_binding_pattern p, %p.param_patt [symbolic]
|
||||
// CHECK:STDOUT: %.cb6: Core.Form = init_form %ptr.e8f [symbolic]
|
||||
// CHECK:STDOUT: %pattern_type.4f4: type = pattern_type %ptr.e8f [symbolic]
|
||||
// CHECK:STDOUT: %return.param_patt.27f: %pattern_type.4f4 = out_param_pattern [symbolic]
|
||||
// CHECK:STDOUT: %return.patt.d67: %pattern_type.4f4 = return_slot_pattern %return.param_patt.27f, %ptr.e8f [symbolic]
|
||||
// CHECK:STDOUT: %Copy.type: type = facet_type <@Copy> [concrete]
|
||||
// CHECK:STDOUT: %Copy.lookup_impl_witness.1da: <witness> = lookup_impl_witness %ptr.e8f, @Copy [symbolic]
|
||||
// CHECK:STDOUT: %.0e9: require_specific_def_type = require_specific_def @ptr.as.Copy.impl(%T.67d) [symbolic]
|
||||
@@ -45,23 +51,25 @@ fn F(T:! type, p: T**) -> T* {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: <elided>
|
||||
// CHECK:STDOUT: %.loc6_10.4: require_specific_def_type = require_specific_def @ptr.as.Copy.impl(%T.loc4_7.1) [symbolic = %.loc6_10.4 (constants.%.0e9)]
|
||||
// CHECK:STDOUT: %.loc6_10.5: require_specific_def_type = require_specific_def @ptr.as.Copy.impl(%T.loc4_7.1) [symbolic = %.loc6_10.5 (constants.%.0e9)]
|
||||
// CHECK:STDOUT: %Copy.lookup_impl_witness: <witness> = lookup_impl_witness %ptr.loc4_20.1, @Copy [symbolic = %Copy.lookup_impl_witness (constants.%Copy.lookup_impl_witness.1da)]
|
||||
// CHECK:STDOUT: %Copy.facet.loc6_10.2: %Copy.type = facet_value %ptr.loc4_20.1, (%Copy.lookup_impl_witness) [symbolic = %Copy.facet.loc6_10.2 (constants.%Copy.facet)]
|
||||
// CHECK:STDOUT: %Copy.WithSelf.Op.type: type = fn_type @Copy.WithSelf.Op, @Copy.WithSelf(%Copy.facet.loc6_10.2) [symbolic = %Copy.WithSelf.Op.type (constants.%Copy.WithSelf.Op.type.884)]
|
||||
// CHECK:STDOUT: %.loc6_10.5: type = fn_type_with_self_type %Copy.WithSelf.Op.type, %Copy.facet.loc6_10.2 [symbolic = %.loc6_10.5 (constants.%.be5)]
|
||||
// CHECK:STDOUT: %impl.elem0.loc6_10.2: @F.%.loc6_10.5 (%.be5) = impl_witness_access %Copy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc6_10.2 (constants.%impl.elem0.484)]
|
||||
// CHECK:STDOUT: %specific_impl_fn.loc6_10.2: <specific function> = specific_impl_function %impl.elem0.loc6_10.2, @Copy.WithSelf.Op(%Copy.facet.loc6_10.2) [symbolic = %specific_impl_fn.loc6_10.2 (constants.%specific_impl_fn.a76)]
|
||||
// CHECK:STDOUT: %Copy.facet.loc6_10.3: %Copy.type = facet_value %ptr.loc4_20.1, (%Copy.lookup_impl_witness) [symbolic = %Copy.facet.loc6_10.3 (constants.%Copy.facet)]
|
||||
// CHECK:STDOUT: %Copy.WithSelf.Op.type: type = fn_type @Copy.WithSelf.Op, @Copy.WithSelf(%Copy.facet.loc6_10.3) [symbolic = %Copy.WithSelf.Op.type (constants.%Copy.WithSelf.Op.type.884)]
|
||||
// CHECK:STDOUT: %.loc6_10.6: type = fn_type_with_self_type %Copy.WithSelf.Op.type, %Copy.facet.loc6_10.3 [symbolic = %.loc6_10.6 (constants.%.be5)]
|
||||
// CHECK:STDOUT: %impl.elem0.loc6_10.2: @F.%.loc6_10.6 (%.be5) = impl_witness_access %Copy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc6_10.2 (constants.%impl.elem0.484)]
|
||||
// CHECK:STDOUT: %specific_impl_fn.loc6_10.2: <specific function> = specific_impl_function %impl.elem0.loc6_10.2, @Copy.WithSelf.Op(%Copy.facet.loc6_10.3) [symbolic = %specific_impl_fn.loc6_10.2 (constants.%specific_impl_fn.a76)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn(%p.param: @F.%ptr.loc4_21.1 (%ptr.125)) -> out %return.param: @F.%ptr.loc4_20.1 (%ptr.e8f) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %p.ref: @F.%ptr.loc4_21.1 (%ptr.125) = name_ref p, %p
|
||||
// CHECK:STDOUT: %.loc6_10.1: ref @F.%ptr.loc4_20.1 (%ptr.e8f) = deref %p.ref
|
||||
// CHECK:STDOUT: %.loc6_10.2: @F.%ptr.loc4_20.1 (%ptr.e8f) = acquire_value %.loc6_10.1
|
||||
// CHECK:STDOUT: %impl.elem0.loc6_10.1: @F.%.loc6_10.5 (%.be5) = impl_witness_access constants.%Copy.lookup_impl_witness.1da, element0 [symbolic = %impl.elem0.loc6_10.2 (constants.%impl.elem0.484)]
|
||||
// CHECK:STDOUT: %impl.elem0.loc6_10.1: @F.%.loc6_10.6 (%.be5) = impl_witness_access constants.%Copy.lookup_impl_witness.1da, element0 [symbolic = %impl.elem0.loc6_10.2 (constants.%impl.elem0.484)]
|
||||
// CHECK:STDOUT: %bound_method.loc6_10.1: <bound method> = bound_method %.loc6_10.2, %impl.elem0.loc6_10.1
|
||||
// CHECK:STDOUT: %Copy.facet.loc6_10.1: %Copy.type = facet_value constants.%ptr.e8f, (constants.%Copy.lookup_impl_witness.1da) [symbolic = %Copy.facet.loc6_10.2 (constants.%Copy.facet)]
|
||||
// CHECK:STDOUT: %.loc6_10.3: %Copy.type = converted constants.%ptr.e8f, %Copy.facet.loc6_10.1 [symbolic = %Copy.facet.loc6_10.2 (constants.%Copy.facet)]
|
||||
// CHECK:STDOUT: %Copy.facet.loc6_10.1: %Copy.type = facet_value constants.%ptr.e8f, (constants.%Copy.lookup_impl_witness.1da) [symbolic = %Copy.facet.loc6_10.3 (constants.%Copy.facet)]
|
||||
// CHECK:STDOUT: %.loc6_10.3: %Copy.type = converted constants.%ptr.e8f, %Copy.facet.loc6_10.1 [symbolic = %Copy.facet.loc6_10.3 (constants.%Copy.facet)]
|
||||
// CHECK:STDOUT: %Copy.facet.loc6_10.2: %Copy.type = facet_value constants.%ptr.e8f, (constants.%Copy.lookup_impl_witness.1da) [symbolic = %Copy.facet.loc6_10.3 (constants.%Copy.facet)]
|
||||
// CHECK:STDOUT: %.loc6_10.4: %Copy.type = converted constants.%ptr.e8f, %Copy.facet.loc6_10.2 [symbolic = %Copy.facet.loc6_10.3 (constants.%Copy.facet)]
|
||||
// CHECK:STDOUT: %specific_impl_fn.loc6_10.1: <specific function> = specific_impl_function %impl.elem0.loc6_10.1, @Copy.WithSelf.Op(constants.%Copy.facet) [symbolic = %specific_impl_fn.loc6_10.2 (constants.%specific_impl_fn.a76)]
|
||||
// CHECK:STDOUT: %bound_method.loc6_10.2: <bound method> = bound_method %.loc6_10.2, %specific_impl_fn.loc6_10.1
|
||||
// CHECK:STDOUT: %Copy.WithSelf.Op.call: init @F.%ptr.loc4_20.1 (%ptr.e8f) = call %bound_method.loc6_10.2(%.loc6_10.2)
|
||||
@@ -70,11 +78,16 @@ fn F(T:! type, p: T**) -> T* {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @F(constants.%T.67d) {
|
||||
// CHECK:STDOUT: %T.patt.loc4_7.2 => constants.%T.patt.d47
|
||||
// CHECK:STDOUT: %T.loc4_7.1 => constants.%T.67d
|
||||
// CHECK:STDOUT: %ptr.loc4_20.1 => constants.%ptr.e8f
|
||||
// CHECK:STDOUT: %ptr.loc4_21.1 => constants.%ptr.125
|
||||
// CHECK:STDOUT: %pattern_type.loc4_17 => constants.%pattern_type.8bb
|
||||
// CHECK:STDOUT: %p.param_patt.loc4_17.2 => constants.%p.param_patt
|
||||
// CHECK:STDOUT: %p.patt.loc4_17.2 => constants.%p.patt
|
||||
// CHECK:STDOUT: %.loc4_28.1 => constants.%.cb6
|
||||
// CHECK:STDOUT: %pattern_type.loc4_28 => constants.%pattern_type.4f4
|
||||
// CHECK:STDOUT: %return.param_patt.loc4_28.2 => constants.%return.param_patt.27f
|
||||
// CHECK:STDOUT: %return.patt.loc4_24.2 => constants.%return.patt.d67
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
@@ -24,6 +24,7 @@ fn F(N:! i32, a: array(i32, N)*);
|
||||
// CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.6b6: type = pattern_type %i32 [concrete]
|
||||
// CHECK:STDOUT: %N.patt.38a: %pattern_type.6b6 = symbolic_binding_pattern N, 0 [symbolic]
|
||||
// CHECK:STDOUT: %N.37f: %i32 = symbolic_binding N, 0 [symbolic]
|
||||
// CHECK:STDOUT: %ImplicitAs.type.0ff: type = generic_interface_type @ImplicitAs [concrete]
|
||||
// CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.0ff = struct_value () [concrete]
|
||||
@@ -44,6 +45,8 @@ fn F(N:! i32, a: array(i32, N)*);
|
||||
// CHECK:STDOUT: %array_type: type = array_type %Int.as.ImplicitAs.impl.Convert.call, %i32 [symbolic]
|
||||
// CHECK:STDOUT: %ptr: type = ptr_type %array_type [symbolic]
|
||||
// CHECK:STDOUT: %pattern_type.5a4: type = pattern_type %ptr [symbolic]
|
||||
// CHECK:STDOUT: %a.param_patt: %pattern_type.5a4 = value_param_pattern [symbolic]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.5a4 = at_binding_pattern a, %a.param_patt [symbolic]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [concrete]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
@@ -68,9 +71,9 @@ fn F(N:! i32, a: array(i32, N)*);
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {
|
||||
// CHECK:STDOUT: %N.patt: %pattern_type.6b6 = symbolic_binding_pattern N, 0 [concrete]
|
||||
// CHECK:STDOUT: %a.param_patt: @F.%pattern_type (%pattern_type.5a4) = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %a.patt: @F.%pattern_type (%pattern_type.5a4) = at_binding_pattern a, %a.param_patt [concrete]
|
||||
// CHECK:STDOUT: %N.patt.loc15_7.1: %pattern_type.6b6 = symbolic_binding_pattern N, 0 [symbolic = %N.patt.loc15_7.2 (constants.%N.patt.38a)]
|
||||
// CHECK:STDOUT: %a.param_patt.loc15_16.1: @F.%pattern_type (%pattern_type.5a4) = value_param_pattern [symbolic = %a.param_patt.loc15_16.2 (constants.%a.param_patt)]
|
||||
// CHECK:STDOUT: %a.patt.loc15_16.1: @F.%pattern_type (%pattern_type.5a4) = at_binding_pattern a, %a.param_patt.loc15_16.1 [symbolic = %a.patt.loc15_16.2 (constants.%a.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %.loc15_10: type = splice_block %i32.loc15_10 [concrete = constants.%i32] {
|
||||
// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self]
|
||||
@@ -96,6 +99,7 @@ fn F(N:! i32, a: array(i32, N)*);
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: generic fn @F(%N.loc15_7.2: %i32) {
|
||||
// CHECK:STDOUT: %N.patt.loc15_7.2: %pattern_type.6b6 = symbolic_binding_pattern N, 0 [symbolic = %N.patt.loc15_7.2 (constants.%N.patt.38a)]
|
||||
// CHECK:STDOUT: %N.loc15_7.1: %i32 = symbolic_binding N, 0 [symbolic = %N.loc15_7.1 (constants.%N.37f)]
|
||||
// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.bound: <bound method> = bound_method %N.loc15_7.1, constants.%Int.as.ImplicitAs.impl.Convert.69e [symbolic = %Int.as.ImplicitAs.impl.Convert.bound (constants.%Int.as.ImplicitAs.impl.Convert.bound)]
|
||||
// CHECK:STDOUT: %bound_method.loc15_29.1: <bound method> = bound_method %N.loc15_7.1, constants.%Int.as.ImplicitAs.impl.Convert.specific_fn [symbolic = %bound_method.loc15_29.1 (constants.%bound_method)]
|
||||
@@ -103,11 +107,14 @@ fn F(N:! i32, a: array(i32, N)*);
|
||||
// CHECK:STDOUT: %array_type.loc15_30.1: type = array_type %Int.as.ImplicitAs.impl.Convert.call.loc15_29.1, constants.%i32 [symbolic = %array_type.loc15_30.1 (constants.%array_type)]
|
||||
// CHECK:STDOUT: %ptr.loc15_31.1: type = ptr_type %array_type.loc15_30.1 [symbolic = %ptr.loc15_31.1 (constants.%ptr)]
|
||||
// CHECK:STDOUT: %pattern_type: type = pattern_type %ptr.loc15_31.1 [symbolic = %pattern_type (constants.%pattern_type.5a4)]
|
||||
// CHECK:STDOUT: %a.param_patt.loc15_16.2: @F.%pattern_type (%pattern_type.5a4) = value_param_pattern [symbolic = %a.param_patt.loc15_16.2 (constants.%a.param_patt)]
|
||||
// CHECK:STDOUT: %a.patt.loc15_16.2: @F.%pattern_type (%pattern_type.5a4) = at_binding_pattern a, %a.param_patt.loc15_16.2 [symbolic = %a.patt.loc15_16.2 (constants.%a.patt)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn(%a.param: @F.%ptr.loc15_31.1 (%ptr));
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @F(constants.%N.37f) {
|
||||
// CHECK:STDOUT: %N.patt.loc15_7.2 => constants.%N.patt.38a
|
||||
// CHECK:STDOUT: %N.loc15_7.1 => constants.%N.37f
|
||||
// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.bound => constants.%Int.as.ImplicitAs.impl.Convert.bound
|
||||
// CHECK:STDOUT: %bound_method.loc15_29.1 => constants.%bound_method
|
||||
@@ -115,5 +122,7 @@ fn F(N:! i32, a: array(i32, N)*);
|
||||
// CHECK:STDOUT: %array_type.loc15_30.1 => constants.%array_type
|
||||
// CHECK:STDOUT: %ptr.loc15_31.1 => constants.%ptr
|
||||
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.5a4
|
||||
// CHECK:STDOUT: %a.param_patt.loc15_16.2 => constants.%a.param_patt
|
||||
// CHECK:STDOUT: %a.patt.loc15_16.2 => constants.%a.patt
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
+109
-30
@@ -100,10 +100,13 @@ fn F(U:! type, T:! type) -> U* {
|
||||
// CHECK:STDOUT: %type: type = facet_type <type> [concrete]
|
||||
// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self]
|
||||
// CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete]
|
||||
// CHECK:STDOUT: %T.patt: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %T: type = symbolic_binding T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %ptr: type = ptr_type %T [symbolic]
|
||||
// CHECK:STDOUT: %.cb6: Core.Form = init_form %ptr [symbolic]
|
||||
// CHECK:STDOUT: %pattern_type.4f4: type = pattern_type %ptr [symbolic]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.4f4 = out_param_pattern [symbolic]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.4f4 = return_slot_pattern %return.param_patt, %ptr [symbolic]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [concrete]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %require_complete: <witness> = require_complete_type %ptr [symbolic]
|
||||
@@ -124,9 +127,9 @@ fn F(U:! type, T:! type) -> U* {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %F.decl.loc4: %F.type = fn_decl @F [concrete = constants.%F] {
|
||||
// CHECK:STDOUT: %T.patt: %pattern_type.98f = symbolic_binding_pattern T, 0 [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt: @F.%pattern_type (%pattern_type.4f4) = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt: @F.%pattern_type (%pattern_type.4f4) = return_slot_pattern %return.param_patt, %ptr.loc6 [concrete]
|
||||
// CHECK:STDOUT: %T.patt.loc6: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %return.param_patt.loc6: @F.%pattern_type (%pattern_type.4f4) = out_param_pattern [symbolic = %return.param_patt.loc4 (constants.%return.param_patt)]
|
||||
// CHECK:STDOUT: %return.patt.loc6: @F.%pattern_type (%pattern_type.4f4) = return_slot_pattern %return.param_patt.loc6, %ptr.loc6 [symbolic = %return.patt.loc4 (constants.%return.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.ref.loc4: type = name_ref T, %T.loc4_7.2 [symbolic = %T.loc4_7.1 (constants.%T)]
|
||||
// CHECK:STDOUT: %ptr.loc4_20.2: type = ptr_type %T.ref.loc4 [symbolic = %ptr.loc4_20.1 (constants.%ptr)]
|
||||
@@ -140,9 +143,9 @@ fn F(U:! type, T:! type) -> U* {
|
||||
// CHECK:STDOUT: %return.loc4: ref @F.%ptr.loc4_20.1 (%ptr) = return_slot %return.param.loc4
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %F.decl.loc6: %F.type = fn_decl @F [concrete = constants.%F] {
|
||||
// CHECK:STDOUT: %T.patt: %pattern_type.98f = symbolic_binding_pattern T, 0 [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt: @F.%pattern_type (%pattern_type.4f4) = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt: @F.%pattern_type (%pattern_type.4f4) = return_slot_pattern %return.param_patt, %ptr.loc6 [concrete]
|
||||
// CHECK:STDOUT: %T.patt.loc6: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %return.param_patt.loc6: @F.%pattern_type (%pattern_type.4f4) = out_param_pattern [symbolic = %return.param_patt.loc4 (constants.%return.param_patt)]
|
||||
// CHECK:STDOUT: %return.patt.loc6: @F.%pattern_type (%pattern_type.4f4) = return_slot_pattern %return.param_patt.loc6, %ptr.loc6 [symbolic = %return.patt.loc4 (constants.%return.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.ref.loc6: type = name_ref T, %T.loc6 [symbolic = %T.loc4_7.1 (constants.%T)]
|
||||
// CHECK:STDOUT: %ptr.loc6: type = ptr_type %T.ref.loc6 [symbolic = %ptr.loc4_20.1 (constants.%ptr)]
|
||||
@@ -158,10 +161,13 @@ fn F(U:! type, T:! type) -> U* {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: generic fn @F(%T.loc4_7.2: type) {
|
||||
// CHECK:STDOUT: %T.patt.loc4: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %T.loc4_7.1: type = symbolic_binding T, 0 [symbolic = %T.loc4_7.1 (constants.%T)]
|
||||
// CHECK:STDOUT: %ptr.loc4_20.1: type = ptr_type %T.loc4_7.1 [symbolic = %ptr.loc4_20.1 (constants.%ptr)]
|
||||
// CHECK:STDOUT: %.loc4_20.1: Core.Form = init_form %ptr.loc4_20.1 [symbolic = %.loc4_20.1 (constants.%.cb6)]
|
||||
// CHECK:STDOUT: %pattern_type: type = pattern_type %ptr.loc4_20.1 [symbolic = %pattern_type (constants.%pattern_type.4f4)]
|
||||
// CHECK:STDOUT: %return.param_patt.loc4: @F.%pattern_type (%pattern_type.4f4) = out_param_pattern [symbolic = %return.param_patt.loc4 (constants.%return.param_patt)]
|
||||
// CHECK:STDOUT: %return.patt.loc4: @F.%pattern_type (%pattern_type.4f4) = return_slot_pattern %return.param_patt.loc4, %ptr.loc4_20.1 [symbolic = %return.patt.loc4 (constants.%return.patt)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete: <witness> = require_complete_type %ptr.loc4_20.1 [symbolic = %require_complete (constants.%require_complete)]
|
||||
@@ -178,10 +184,13 @@ fn F(U:! type, T:! type) -> U* {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @F(constants.%T) {
|
||||
// CHECK:STDOUT: %T.patt.loc4 => constants.%T.patt
|
||||
// CHECK:STDOUT: %T.loc4_7.1 => constants.%T
|
||||
// CHECK:STDOUT: %ptr.loc4_20.1 => constants.%ptr
|
||||
// CHECK:STDOUT: %.loc4_20.1 => constants.%.cb6
|
||||
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.4f4
|
||||
// CHECK:STDOUT: %return.param_patt.loc4 => constants.%return.param_patt
|
||||
// CHECK:STDOUT: %return.patt.loc4 => constants.%return.patt
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete => constants.%require_complete
|
||||
@@ -194,16 +203,22 @@ fn F(U:! type, T:! type) -> U* {
|
||||
// CHECK:STDOUT: %type: type = facet_type <type> [concrete]
|
||||
// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self]
|
||||
// CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete]
|
||||
// CHECK:STDOUT: %T.patt: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %T: type = symbolic_binding T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %U.patt: %pattern_type.98f = symbolic_binding_pattern U, 1 [symbolic]
|
||||
// CHECK:STDOUT: %U: type = symbolic_binding U, 1 [symbolic]
|
||||
// CHECK:STDOUT: %ptr.e8f: type = ptr_type %T [symbolic]
|
||||
// CHECK:STDOUT: %.cb6: Core.Form = init_form %ptr.e8f [symbolic]
|
||||
// CHECK:STDOUT: %pattern_type.4f4: type = pattern_type %ptr.e8f [symbolic]
|
||||
// CHECK:STDOUT: %return.param_patt.27f: %pattern_type.4f4 = out_param_pattern [symbolic]
|
||||
// CHECK:STDOUT: %return.patt.d67: %pattern_type.4f4 = return_slot_pattern %return.param_patt.27f, %ptr.e8f [symbolic]
|
||||
// CHECK:STDOUT: %F.type.eb3ec9.1: type = fn_type @F.loc4 [concrete]
|
||||
// CHECK:STDOUT: %F.7088cc.1: %F.type.eb3ec9.1 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %ptr.18e: type = ptr_type %U [symbolic]
|
||||
// CHECK:STDOUT: %.6d8: Core.Form = init_form %ptr.18e [symbolic]
|
||||
// CHECK:STDOUT: %pattern_type.423: type = pattern_type %ptr.18e [symbolic]
|
||||
// CHECK:STDOUT: %return.param_patt.534: %pattern_type.423 = out_param_pattern [symbolic]
|
||||
// CHECK:STDOUT: %return.patt.669: %pattern_type.423 = return_slot_pattern %return.param_patt.534, %ptr.18e [symbolic]
|
||||
// CHECK:STDOUT: %F.type.eb3ec9.2: type = fn_type @F.loc13 [concrete]
|
||||
// CHECK:STDOUT: %F.7088cc.2: %F.type.eb3ec9.2 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %require_complete: <witness> = require_complete_type %ptr.18e [symbolic]
|
||||
@@ -223,10 +238,10 @@ fn F(U:! type, T:! type) -> U* {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %F.decl.loc4: %F.type.eb3ec9.1 = fn_decl @F.loc4 [concrete = constants.%F.7088cc.1] {
|
||||
// CHECK:STDOUT: %T.patt: %pattern_type.98f = symbolic_binding_pattern T, 0 [concrete]
|
||||
// CHECK:STDOUT: %U.patt: %pattern_type.98f = symbolic_binding_pattern U, 1 [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt: @F.loc4.%pattern_type (%pattern_type.4f4) = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt: @F.loc4.%pattern_type (%pattern_type.4f4) = return_slot_pattern %return.param_patt, %ptr.loc4_30.2 [concrete]
|
||||
// CHECK:STDOUT: %T.patt.loc4_7.1: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_7.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %U.patt.loc4_17.1: %pattern_type.98f = symbolic_binding_pattern U, 1 [symbolic = %U.patt.loc4_17.2 (constants.%U.patt)]
|
||||
// CHECK:STDOUT: %return.param_patt.loc4_30.1: @F.loc4.%pattern_type (%pattern_type.4f4) = out_param_pattern [symbolic = %return.param_patt.loc4_30.2 (constants.%return.param_patt.27f)]
|
||||
// CHECK:STDOUT: %return.patt.loc4_26.1: @F.loc4.%pattern_type (%pattern_type.4f4) = return_slot_pattern %return.param_patt.loc4_30.1, %ptr.loc4_30.2 [symbolic = %return.patt.loc4_26.2 (constants.%return.patt.d67)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc4_7.2 [symbolic = %T.loc4_7.1 (constants.%T)]
|
||||
// CHECK:STDOUT: %ptr.loc4_30.2: type = ptr_type %T.ref [symbolic = %ptr.loc4_30.1 (constants.%ptr.e8f)]
|
||||
@@ -245,10 +260,10 @@ fn F(U:! type, T:! type) -> U* {
|
||||
// CHECK:STDOUT: %return: ref @F.loc4.%ptr.loc4_30.1 (%ptr.e8f) = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %F.decl.loc13: %F.type.eb3ec9.2 = fn_decl @F.loc13 [concrete = constants.%F.7088cc.2] {
|
||||
// CHECK:STDOUT: %T.patt: %pattern_type.98f = symbolic_binding_pattern T, 0 [concrete]
|
||||
// CHECK:STDOUT: %U.patt: %pattern_type.98f = symbolic_binding_pattern U, 1 [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt: @F.loc13.%pattern_type (%pattern_type.423) = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt: @F.loc13.%pattern_type (%pattern_type.423) = return_slot_pattern %return.param_patt, %ptr.loc13_30.2 [concrete]
|
||||
// CHECK:STDOUT: %T.patt.loc13_7.1: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc13_7.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %U.patt.loc13_17.1: %pattern_type.98f = symbolic_binding_pattern U, 1 [symbolic = %U.patt.loc13_17.2 (constants.%U.patt)]
|
||||
// CHECK:STDOUT: %return.param_patt.loc13_30.1: @F.loc13.%pattern_type (%pattern_type.423) = out_param_pattern [symbolic = %return.param_patt.loc13_30.2 (constants.%return.param_patt.534)]
|
||||
// CHECK:STDOUT: %return.patt.loc13_26.1: @F.loc13.%pattern_type (%pattern_type.423) = return_slot_pattern %return.param_patt.loc13_30.1, %ptr.loc13_30.2 [symbolic = %return.patt.loc13_26.2 (constants.%return.patt.669)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %U.ref: type = name_ref U, %U.loc13_17.2 [symbolic = %U.loc13_17.1 (constants.%U)]
|
||||
// CHECK:STDOUT: %ptr.loc13_30.2: type = ptr_type %U.ref [symbolic = %ptr.loc13_30.1 (constants.%ptr.18e)]
|
||||
@@ -269,21 +284,29 @@ fn F(U:! type, T:! type) -> U* {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: generic fn @F.loc4(%T.loc4_7.2: type, %U.loc4_17.2: type) {
|
||||
// CHECK:STDOUT: %T.patt.loc4_7.2: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_7.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %T.loc4_7.1: type = symbolic_binding T, 0 [symbolic = %T.loc4_7.1 (constants.%T)]
|
||||
// CHECK:STDOUT: %U.patt.loc4_17.2: %pattern_type.98f = symbolic_binding_pattern U, 1 [symbolic = %U.patt.loc4_17.2 (constants.%U.patt)]
|
||||
// CHECK:STDOUT: %U.loc4_17.1: type = symbolic_binding U, 1 [symbolic = %U.loc4_17.1 (constants.%U)]
|
||||
// CHECK:STDOUT: %ptr.loc4_30.1: type = ptr_type %T.loc4_7.1 [symbolic = %ptr.loc4_30.1 (constants.%ptr.e8f)]
|
||||
// CHECK:STDOUT: %.loc4_30.1: Core.Form = init_form %ptr.loc4_30.1 [symbolic = %.loc4_30.1 (constants.%.cb6)]
|
||||
// CHECK:STDOUT: %pattern_type: type = pattern_type %ptr.loc4_30.1 [symbolic = %pattern_type (constants.%pattern_type.4f4)]
|
||||
// CHECK:STDOUT: %return.param_patt.loc4_30.2: @F.loc4.%pattern_type (%pattern_type.4f4) = out_param_pattern [symbolic = %return.param_patt.loc4_30.2 (constants.%return.param_patt.27f)]
|
||||
// CHECK:STDOUT: %return.patt.loc4_26.2: @F.loc4.%pattern_type (%pattern_type.4f4) = return_slot_pattern %return.param_patt.loc4_30.2, %ptr.loc4_30.1 [symbolic = %return.patt.loc4_26.2 (constants.%return.patt.d67)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn() -> out %return.param: @F.loc4.%ptr.loc4_30.1 (%ptr.e8f);
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: generic fn @F.loc13(%T.loc13_7.2: type, %U.loc13_17.2: type) {
|
||||
// CHECK:STDOUT: %T.patt.loc13_7.2: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc13_7.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %T.loc13_7.1: type = symbolic_binding T, 0 [symbolic = %T.loc13_7.1 (constants.%T)]
|
||||
// CHECK:STDOUT: %U.patt.loc13_17.2: %pattern_type.98f = symbolic_binding_pattern U, 1 [symbolic = %U.patt.loc13_17.2 (constants.%U.patt)]
|
||||
// CHECK:STDOUT: %U.loc13_17.1: type = symbolic_binding U, 1 [symbolic = %U.loc13_17.1 (constants.%U)]
|
||||
// CHECK:STDOUT: %ptr.loc13_30.1: type = ptr_type %U.loc13_17.1 [symbolic = %ptr.loc13_30.1 (constants.%ptr.18e)]
|
||||
// CHECK:STDOUT: %.loc13_30.1: Core.Form = init_form %ptr.loc13_30.1 [symbolic = %.loc13_30.1 (constants.%.6d8)]
|
||||
// CHECK:STDOUT: %pattern_type: type = pattern_type %ptr.loc13_30.1 [symbolic = %pattern_type (constants.%pattern_type.423)]
|
||||
// CHECK:STDOUT: %return.param_patt.loc13_30.2: @F.loc13.%pattern_type (%pattern_type.423) = out_param_pattern [symbolic = %return.param_patt.loc13_30.2 (constants.%return.param_patt.534)]
|
||||
// CHECK:STDOUT: %return.patt.loc13_26.2: @F.loc13.%pattern_type (%pattern_type.423) = return_slot_pattern %return.param_patt.loc13_30.2, %ptr.loc13_30.1 [symbolic = %return.patt.loc13_26.2 (constants.%return.patt.669)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete: <witness> = require_complete_type %ptr.loc13_30.1 [symbolic = %require_complete (constants.%require_complete)]
|
||||
@@ -297,19 +320,27 @@ fn F(U:! type, T:! type) -> U* {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @F.loc4(constants.%T, constants.%U) {
|
||||
// CHECK:STDOUT: %T.patt.loc4_7.2 => constants.%T.patt
|
||||
// CHECK:STDOUT: %T.loc4_7.1 => constants.%T
|
||||
// CHECK:STDOUT: %U.patt.loc4_17.2 => constants.%U.patt
|
||||
// CHECK:STDOUT: %U.loc4_17.1 => constants.%U
|
||||
// CHECK:STDOUT: %ptr.loc4_30.1 => constants.%ptr.e8f
|
||||
// CHECK:STDOUT: %.loc4_30.1 => constants.%.cb6
|
||||
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.4f4
|
||||
// CHECK:STDOUT: %return.param_patt.loc4_30.2 => constants.%return.param_patt.27f
|
||||
// CHECK:STDOUT: %return.patt.loc4_26.2 => constants.%return.patt.d67
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @F.loc13(constants.%T, constants.%U) {
|
||||
// CHECK:STDOUT: %T.patt.loc13_7.2 => constants.%T.patt
|
||||
// CHECK:STDOUT: %T.loc13_7.1 => constants.%T
|
||||
// CHECK:STDOUT: %U.patt.loc13_17.2 => constants.%U.patt
|
||||
// CHECK:STDOUT: %U.loc13_17.1 => constants.%U
|
||||
// CHECK:STDOUT: %ptr.loc13_30.1 => constants.%ptr.18e
|
||||
// CHECK:STDOUT: %.loc13_30.1 => constants.%.6d8
|
||||
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.423
|
||||
// CHECK:STDOUT: %return.param_patt.loc13_30.2 => constants.%return.param_patt.534
|
||||
// CHECK:STDOUT: %return.patt.loc13_26.2 => constants.%return.patt.669
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: --- fail_reorder.carbon
|
||||
@@ -318,18 +349,26 @@ fn F(U:! type, T:! type) -> U* {
|
||||
// CHECK:STDOUT: %type: type = facet_type <type> [concrete]
|
||||
// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self]
|
||||
// CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete]
|
||||
// CHECK:STDOUT: %T.patt.d47: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %T.67d: type = symbolic_binding T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %U.patt.014: %pattern_type.98f = symbolic_binding_pattern U, 1 [symbolic]
|
||||
// CHECK:STDOUT: %U.091: type = symbolic_binding U, 1 [symbolic]
|
||||
// CHECK:STDOUT: %ptr.e8f: type = ptr_type %T.67d [symbolic]
|
||||
// CHECK:STDOUT: %.cb6: Core.Form = init_form %ptr.e8f [symbolic]
|
||||
// CHECK:STDOUT: %pattern_type.4f4: type = pattern_type %ptr.e8f [symbolic]
|
||||
// CHECK:STDOUT: %return.param_patt.27f: %pattern_type.4f4 = out_param_pattern [symbolic]
|
||||
// CHECK:STDOUT: %return.patt.d67: %pattern_type.4f4 = return_slot_pattern %return.param_patt.27f, %ptr.e8f [symbolic]
|
||||
// CHECK:STDOUT: %F.type.eb3ec9.1: type = fn_type @F.loc4 [concrete]
|
||||
// CHECK:STDOUT: %F.7088cc.1: %F.type.eb3ec9.1 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %U.patt.d47: %pattern_type.98f = symbolic_binding_pattern U, 0 [symbolic]
|
||||
// CHECK:STDOUT: %U.67d: type = symbolic_binding U, 0 [symbolic]
|
||||
// CHECK:STDOUT: %T.patt.014: %pattern_type.98f = symbolic_binding_pattern T, 1 [symbolic]
|
||||
// CHECK:STDOUT: %T.091: type = symbolic_binding T, 1 [symbolic]
|
||||
// CHECK:STDOUT: %ptr.18e: type = ptr_type %T.091 [symbolic]
|
||||
// CHECK:STDOUT: %.6d8: Core.Form = init_form %ptr.18e [symbolic]
|
||||
// CHECK:STDOUT: %pattern_type.423: type = pattern_type %ptr.18e [symbolic]
|
||||
// CHECK:STDOUT: %return.param_patt.534: %pattern_type.423 = out_param_pattern [symbolic]
|
||||
// CHECK:STDOUT: %return.patt.669: %pattern_type.423 = return_slot_pattern %return.param_patt.534, %ptr.18e [symbolic]
|
||||
// CHECK:STDOUT: %F.type.eb3ec9.2: type = fn_type @F.loc13 [concrete]
|
||||
// CHECK:STDOUT: %F.7088cc.2: %F.type.eb3ec9.2 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %require_complete: <witness> = require_complete_type %ptr.18e [symbolic]
|
||||
@@ -349,10 +388,10 @@ fn F(U:! type, T:! type) -> U* {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %F.decl.loc4: %F.type.eb3ec9.1 = fn_decl @F.loc4 [concrete = constants.%F.7088cc.1] {
|
||||
// CHECK:STDOUT: %T.patt: %pattern_type.98f = symbolic_binding_pattern T, 0 [concrete]
|
||||
// CHECK:STDOUT: %U.patt: %pattern_type.98f = symbolic_binding_pattern U, 1 [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt: @F.loc4.%pattern_type (%pattern_type.4f4) = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt: @F.loc4.%pattern_type (%pattern_type.4f4) = return_slot_pattern %return.param_patt, %ptr.loc4_30.2 [concrete]
|
||||
// CHECK:STDOUT: %T.patt.loc4_7.1: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_7.2 (constants.%T.patt.d47)]
|
||||
// CHECK:STDOUT: %U.patt.loc4_17.1: %pattern_type.98f = symbolic_binding_pattern U, 1 [symbolic = %U.patt.loc4_17.2 (constants.%U.patt.014)]
|
||||
// CHECK:STDOUT: %return.param_patt.loc4_30.1: @F.loc4.%pattern_type (%pattern_type.4f4) = out_param_pattern [symbolic = %return.param_patt.loc4_30.2 (constants.%return.param_patt.27f)]
|
||||
// CHECK:STDOUT: %return.patt.loc4_26.1: @F.loc4.%pattern_type (%pattern_type.4f4) = return_slot_pattern %return.param_patt.loc4_30.1, %ptr.loc4_30.2 [symbolic = %return.patt.loc4_26.2 (constants.%return.patt.d67)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc4_7.2 [symbolic = %T.loc4_7.1 (constants.%T.67d)]
|
||||
// CHECK:STDOUT: %ptr.loc4_30.2: type = ptr_type %T.ref [symbolic = %ptr.loc4_30.1 (constants.%ptr.e8f)]
|
||||
@@ -371,10 +410,10 @@ fn F(U:! type, T:! type) -> U* {
|
||||
// CHECK:STDOUT: %return: ref @F.loc4.%ptr.loc4_30.1 (%ptr.e8f) = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %F.decl.loc13: %F.type.eb3ec9.2 = fn_decl @F.loc13 [concrete = constants.%F.7088cc.2] {
|
||||
// CHECK:STDOUT: %U.patt: %pattern_type.98f = symbolic_binding_pattern U, 0 [concrete]
|
||||
// CHECK:STDOUT: %T.patt: %pattern_type.98f = symbolic_binding_pattern T, 1 [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt: @F.loc13.%pattern_type (%pattern_type.423) = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt: @F.loc13.%pattern_type (%pattern_type.423) = return_slot_pattern %return.param_patt, %ptr.loc13_37.2 [concrete]
|
||||
// CHECK:STDOUT: %U.patt.loc13_14.1: %pattern_type.98f = symbolic_binding_pattern U, 0 [symbolic = %U.patt.loc13_14.2 (constants.%U.patt.d47)]
|
||||
// CHECK:STDOUT: %T.patt.loc13_24.1: %pattern_type.98f = symbolic_binding_pattern T, 1 [symbolic = %T.patt.loc13_24.2 (constants.%T.patt.014)]
|
||||
// CHECK:STDOUT: %return.param_patt.loc13_37.1: @F.loc13.%pattern_type (%pattern_type.423) = out_param_pattern [symbolic = %return.param_patt.loc13_37.2 (constants.%return.param_patt.534)]
|
||||
// CHECK:STDOUT: %return.patt.loc13_33.1: @F.loc13.%pattern_type (%pattern_type.423) = return_slot_pattern %return.param_patt.loc13_37.1, %ptr.loc13_37.2 [symbolic = %return.patt.loc13_33.2 (constants.%return.patt.669)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.ref.loc13: type = name_ref T, %T.loc13_24.2 [symbolic = %T.loc13_24.1 (constants.%T.091)]
|
||||
// CHECK:STDOUT: %ptr.loc13_37.2: type = ptr_type %T.ref.loc13 [symbolic = %ptr.loc13_37.1 (constants.%ptr.18e)]
|
||||
@@ -395,21 +434,29 @@ fn F(U:! type, T:! type) -> U* {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: generic fn @F.loc4(%T.loc4_7.2: type, %U.loc4_17.2: type) {
|
||||
// CHECK:STDOUT: %T.patt.loc4_7.2: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_7.2 (constants.%T.patt.d47)]
|
||||
// CHECK:STDOUT: %T.loc4_7.1: type = symbolic_binding T, 0 [symbolic = %T.loc4_7.1 (constants.%T.67d)]
|
||||
// CHECK:STDOUT: %U.patt.loc4_17.2: %pattern_type.98f = symbolic_binding_pattern U, 1 [symbolic = %U.patt.loc4_17.2 (constants.%U.patt.014)]
|
||||
// CHECK:STDOUT: %U.loc4_17.1: type = symbolic_binding U, 1 [symbolic = %U.loc4_17.1 (constants.%U.091)]
|
||||
// CHECK:STDOUT: %ptr.loc4_30.1: type = ptr_type %T.loc4_7.1 [symbolic = %ptr.loc4_30.1 (constants.%ptr.e8f)]
|
||||
// CHECK:STDOUT: %.loc4_30.1: Core.Form = init_form %ptr.loc4_30.1 [symbolic = %.loc4_30.1 (constants.%.cb6)]
|
||||
// CHECK:STDOUT: %pattern_type: type = pattern_type %ptr.loc4_30.1 [symbolic = %pattern_type (constants.%pattern_type.4f4)]
|
||||
// CHECK:STDOUT: %return.param_patt.loc4_30.2: @F.loc4.%pattern_type (%pattern_type.4f4) = out_param_pattern [symbolic = %return.param_patt.loc4_30.2 (constants.%return.param_patt.27f)]
|
||||
// CHECK:STDOUT: %return.patt.loc4_26.2: @F.loc4.%pattern_type (%pattern_type.4f4) = return_slot_pattern %return.param_patt.loc4_30.2, %ptr.loc4_30.1 [symbolic = %return.patt.loc4_26.2 (constants.%return.patt.d67)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn() -> out %return.param: @F.loc4.%ptr.loc4_30.1 (%ptr.e8f);
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: generic fn @F.loc13(%U.loc13_14.2: type, %T.loc13_24.2: type) {
|
||||
// CHECK:STDOUT: %U.patt.loc13_14.2: %pattern_type.98f = symbolic_binding_pattern U, 0 [symbolic = %U.patt.loc13_14.2 (constants.%U.patt.d47)]
|
||||
// CHECK:STDOUT: %U.loc13_14.1: type = symbolic_binding U, 0 [symbolic = %U.loc13_14.1 (constants.%U.67d)]
|
||||
// CHECK:STDOUT: %T.patt.loc13_24.2: %pattern_type.98f = symbolic_binding_pattern T, 1 [symbolic = %T.patt.loc13_24.2 (constants.%T.patt.014)]
|
||||
// CHECK:STDOUT: %T.loc13_24.1: type = symbolic_binding T, 1 [symbolic = %T.loc13_24.1 (constants.%T.091)]
|
||||
// CHECK:STDOUT: %ptr.loc13_37.1: type = ptr_type %T.loc13_24.1 [symbolic = %ptr.loc13_37.1 (constants.%ptr.18e)]
|
||||
// CHECK:STDOUT: %.loc13_37.1: Core.Form = init_form %ptr.loc13_37.1 [symbolic = %.loc13_37.1 (constants.%.6d8)]
|
||||
// CHECK:STDOUT: %pattern_type: type = pattern_type %ptr.loc13_37.1 [symbolic = %pattern_type (constants.%pattern_type.423)]
|
||||
// CHECK:STDOUT: %return.param_patt.loc13_37.2: @F.loc13.%pattern_type (%pattern_type.423) = out_param_pattern [symbolic = %return.param_patt.loc13_37.2 (constants.%return.param_patt.534)]
|
||||
// CHECK:STDOUT: %return.patt.loc13_33.2: @F.loc13.%pattern_type (%pattern_type.423) = return_slot_pattern %return.param_patt.loc13_37.2, %ptr.loc13_37.1 [symbolic = %return.patt.loc13_33.2 (constants.%return.patt.669)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete: <witness> = require_complete_type %ptr.loc13_37.1 [symbolic = %require_complete (constants.%require_complete)]
|
||||
@@ -423,19 +470,27 @@ fn F(U:! type, T:! type) -> U* {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @F.loc4(constants.%T.67d, constants.%U.091) {
|
||||
// CHECK:STDOUT: %T.patt.loc4_7.2 => constants.%T.patt.d47
|
||||
// CHECK:STDOUT: %T.loc4_7.1 => constants.%T.67d
|
||||
// CHECK:STDOUT: %U.patt.loc4_17.2 => constants.%U.patt.014
|
||||
// CHECK:STDOUT: %U.loc4_17.1 => constants.%U.091
|
||||
// CHECK:STDOUT: %ptr.loc4_30.1 => constants.%ptr.e8f
|
||||
// CHECK:STDOUT: %.loc4_30.1 => constants.%.cb6
|
||||
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.4f4
|
||||
// CHECK:STDOUT: %return.param_patt.loc4_30.2 => constants.%return.param_patt.27f
|
||||
// CHECK:STDOUT: %return.patt.loc4_26.2 => constants.%return.patt.d67
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @F.loc13(constants.%U.67d, constants.%T.091) {
|
||||
// CHECK:STDOUT: %U.patt.loc13_14.2 => constants.%U.patt.d47
|
||||
// CHECK:STDOUT: %U.loc13_14.1 => constants.%U.67d
|
||||
// CHECK:STDOUT: %T.patt.loc13_24.2 => constants.%T.patt.014
|
||||
// CHECK:STDOUT: %T.loc13_24.1 => constants.%T.091
|
||||
// CHECK:STDOUT: %ptr.loc13_37.1 => constants.%ptr.18e
|
||||
// CHECK:STDOUT: %.loc13_37.1 => constants.%.6d8
|
||||
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.423
|
||||
// CHECK:STDOUT: %return.param_patt.loc13_37.2 => constants.%return.param_patt.534
|
||||
// CHECK:STDOUT: %return.patt.loc13_33.2 => constants.%return.patt.669
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: --- fail_rename.carbon
|
||||
@@ -444,18 +499,26 @@ fn F(U:! type, T:! type) -> U* {
|
||||
// CHECK:STDOUT: %type: type = facet_type <type> [concrete]
|
||||
// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self]
|
||||
// CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete]
|
||||
// CHECK:STDOUT: %T.patt.d47: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %T.67d: type = symbolic_binding T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %U.patt.014: %pattern_type.98f = symbolic_binding_pattern U, 1 [symbolic]
|
||||
// CHECK:STDOUT: %U.091: type = symbolic_binding U, 1 [symbolic]
|
||||
// CHECK:STDOUT: %ptr.e8f8f9.1: type = ptr_type %T.67d [symbolic]
|
||||
// CHECK:STDOUT: %.cb6cb9.1: Core.Form = init_form %ptr.e8f8f9.1 [symbolic]
|
||||
// CHECK:STDOUT: %pattern_type.4f4b84.1: type = pattern_type %ptr.e8f8f9.1 [symbolic]
|
||||
// CHECK:STDOUT: %return.param_patt.27f587.1: %pattern_type.4f4b84.1 = out_param_pattern [symbolic]
|
||||
// CHECK:STDOUT: %return.patt.d67681.1: %pattern_type.4f4b84.1 = return_slot_pattern %return.param_patt.27f587.1, %ptr.e8f8f9.1 [symbolic]
|
||||
// CHECK:STDOUT: %F.type.eb3ec9.1: type = fn_type @F.loc4 [concrete]
|
||||
// CHECK:STDOUT: %F.7088cc.1: %F.type.eb3ec9.1 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %U.patt.d47: %pattern_type.98f = symbolic_binding_pattern U, 0 [symbolic]
|
||||
// CHECK:STDOUT: %U.67d: type = symbolic_binding U, 0 [symbolic]
|
||||
// CHECK:STDOUT: %T.patt.014: %pattern_type.98f = symbolic_binding_pattern T, 1 [symbolic]
|
||||
// CHECK:STDOUT: %T.091: type = symbolic_binding T, 1 [symbolic]
|
||||
// CHECK:STDOUT: %ptr.e8f8f9.2: type = ptr_type %U.67d [symbolic]
|
||||
// CHECK:STDOUT: %.cb6cb9.2: Core.Form = init_form %ptr.e8f8f9.2 [symbolic]
|
||||
// CHECK:STDOUT: %pattern_type.4f4b84.2: type = pattern_type %ptr.e8f8f9.2 [symbolic]
|
||||
// CHECK:STDOUT: %return.param_patt.27f587.2: %pattern_type.4f4b84.2 = out_param_pattern [symbolic]
|
||||
// CHECK:STDOUT: %return.patt.d67681.2: %pattern_type.4f4b84.2 = return_slot_pattern %return.param_patt.27f587.2, %ptr.e8f8f9.2 [symbolic]
|
||||
// CHECK:STDOUT: %F.type.eb3ec9.2: type = fn_type @F.loc13 [concrete]
|
||||
// CHECK:STDOUT: %F.7088cc.2: %F.type.eb3ec9.2 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %require_complete: <witness> = require_complete_type %ptr.e8f8f9.2 [symbolic]
|
||||
@@ -475,10 +538,10 @@ fn F(U:! type, T:! type) -> U* {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %F.decl.loc4: %F.type.eb3ec9.1 = fn_decl @F.loc4 [concrete = constants.%F.7088cc.1] {
|
||||
// CHECK:STDOUT: %T.patt: %pattern_type.98f = symbolic_binding_pattern T, 0 [concrete]
|
||||
// CHECK:STDOUT: %U.patt: %pattern_type.98f = symbolic_binding_pattern U, 1 [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt: @F.loc4.%pattern_type (%pattern_type.4f4b84.1) = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt: @F.loc4.%pattern_type (%pattern_type.4f4b84.1) = return_slot_pattern %return.param_patt, %ptr.loc4_30.2 [concrete]
|
||||
// CHECK:STDOUT: %T.patt.loc4_7.1: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_7.2 (constants.%T.patt.d47)]
|
||||
// CHECK:STDOUT: %U.patt.loc4_17.1: %pattern_type.98f = symbolic_binding_pattern U, 1 [symbolic = %U.patt.loc4_17.2 (constants.%U.patt.014)]
|
||||
// CHECK:STDOUT: %return.param_patt.loc4_30.1: @F.loc4.%pattern_type (%pattern_type.4f4b84.1) = out_param_pattern [symbolic = %return.param_patt.loc4_30.2 (constants.%return.param_patt.27f587.1)]
|
||||
// CHECK:STDOUT: %return.patt.loc4_26.1: @F.loc4.%pattern_type (%pattern_type.4f4b84.1) = return_slot_pattern %return.param_patt.loc4_30.1, %ptr.loc4_30.2 [symbolic = %return.patt.loc4_26.2 (constants.%return.patt.d67681.1)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc4_7.2 [symbolic = %T.loc4_7.1 (constants.%T.67d)]
|
||||
// CHECK:STDOUT: %ptr.loc4_30.2: type = ptr_type %T.ref [symbolic = %ptr.loc4_30.1 (constants.%ptr.e8f8f9.1)]
|
||||
@@ -497,10 +560,10 @@ fn F(U:! type, T:! type) -> U* {
|
||||
// CHECK:STDOUT: %return: ref @F.loc4.%ptr.loc4_30.1 (%ptr.e8f8f9.1) = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %F.decl.loc13: %F.type.eb3ec9.2 = fn_decl @F.loc13 [concrete = constants.%F.7088cc.2] {
|
||||
// CHECK:STDOUT: %U.patt: %pattern_type.98f = symbolic_binding_pattern U, 0 [concrete]
|
||||
// CHECK:STDOUT: %T.patt: %pattern_type.98f = symbolic_binding_pattern T, 1 [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt: @F.loc13.%pattern_type (%pattern_type.4f4b84.2) = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt: @F.loc13.%pattern_type (%pattern_type.4f4b84.2) = return_slot_pattern %return.param_patt, %ptr.loc13_30.2 [concrete]
|
||||
// CHECK:STDOUT: %U.patt.loc13_7.1: %pattern_type.98f = symbolic_binding_pattern U, 0 [symbolic = %U.patt.loc13_7.2 (constants.%U.patt.d47)]
|
||||
// CHECK:STDOUT: %T.patt.loc13_17.1: %pattern_type.98f = symbolic_binding_pattern T, 1 [symbolic = %T.patt.loc13_17.2 (constants.%T.patt.014)]
|
||||
// CHECK:STDOUT: %return.param_patt.loc13_30.1: @F.loc13.%pattern_type (%pattern_type.4f4b84.2) = out_param_pattern [symbolic = %return.param_patt.loc13_30.2 (constants.%return.param_patt.27f587.2)]
|
||||
// CHECK:STDOUT: %return.patt.loc13_26.1: @F.loc13.%pattern_type (%pattern_type.4f4b84.2) = return_slot_pattern %return.param_patt.loc13_30.1, %ptr.loc13_30.2 [symbolic = %return.patt.loc13_26.2 (constants.%return.patt.d67681.2)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %U.ref: type = name_ref U, %U.loc13_7.2 [symbolic = %U.loc13_7.1 (constants.%U.67d)]
|
||||
// CHECK:STDOUT: %ptr.loc13_30.2: type = ptr_type %U.ref [symbolic = %ptr.loc13_30.1 (constants.%ptr.e8f8f9.2)]
|
||||
@@ -521,21 +584,29 @@ fn F(U:! type, T:! type) -> U* {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: generic fn @F.loc4(%T.loc4_7.2: type, %U.loc4_17.2: type) {
|
||||
// CHECK:STDOUT: %T.patt.loc4_7.2: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_7.2 (constants.%T.patt.d47)]
|
||||
// CHECK:STDOUT: %T.loc4_7.1: type = symbolic_binding T, 0 [symbolic = %T.loc4_7.1 (constants.%T.67d)]
|
||||
// CHECK:STDOUT: %U.patt.loc4_17.2: %pattern_type.98f = symbolic_binding_pattern U, 1 [symbolic = %U.patt.loc4_17.2 (constants.%U.patt.014)]
|
||||
// CHECK:STDOUT: %U.loc4_17.1: type = symbolic_binding U, 1 [symbolic = %U.loc4_17.1 (constants.%U.091)]
|
||||
// CHECK:STDOUT: %ptr.loc4_30.1: type = ptr_type %T.loc4_7.1 [symbolic = %ptr.loc4_30.1 (constants.%ptr.e8f8f9.1)]
|
||||
// CHECK:STDOUT: %.loc4_30.1: Core.Form = init_form %ptr.loc4_30.1 [symbolic = %.loc4_30.1 (constants.%.cb6cb9.1)]
|
||||
// CHECK:STDOUT: %pattern_type: type = pattern_type %ptr.loc4_30.1 [symbolic = %pattern_type (constants.%pattern_type.4f4b84.1)]
|
||||
// CHECK:STDOUT: %return.param_patt.loc4_30.2: @F.loc4.%pattern_type (%pattern_type.4f4b84.1) = out_param_pattern [symbolic = %return.param_patt.loc4_30.2 (constants.%return.param_patt.27f587.1)]
|
||||
// CHECK:STDOUT: %return.patt.loc4_26.2: @F.loc4.%pattern_type (%pattern_type.4f4b84.1) = return_slot_pattern %return.param_patt.loc4_30.2, %ptr.loc4_30.1 [symbolic = %return.patt.loc4_26.2 (constants.%return.patt.d67681.1)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn() -> out %return.param: @F.loc4.%ptr.loc4_30.1 (%ptr.e8f8f9.1);
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: generic fn @F.loc13(%U.loc13_7.2: type, %T.loc13_17.2: type) {
|
||||
// CHECK:STDOUT: %U.patt.loc13_7.2: %pattern_type.98f = symbolic_binding_pattern U, 0 [symbolic = %U.patt.loc13_7.2 (constants.%U.patt.d47)]
|
||||
// CHECK:STDOUT: %U.loc13_7.1: type = symbolic_binding U, 0 [symbolic = %U.loc13_7.1 (constants.%U.67d)]
|
||||
// CHECK:STDOUT: %T.patt.loc13_17.2: %pattern_type.98f = symbolic_binding_pattern T, 1 [symbolic = %T.patt.loc13_17.2 (constants.%T.patt.014)]
|
||||
// CHECK:STDOUT: %T.loc13_17.1: type = symbolic_binding T, 1 [symbolic = %T.loc13_17.1 (constants.%T.091)]
|
||||
// CHECK:STDOUT: %ptr.loc13_30.1: type = ptr_type %U.loc13_7.1 [symbolic = %ptr.loc13_30.1 (constants.%ptr.e8f8f9.2)]
|
||||
// CHECK:STDOUT: %.loc13_30.1: Core.Form = init_form %ptr.loc13_30.1 [symbolic = %.loc13_30.1 (constants.%.cb6cb9.2)]
|
||||
// CHECK:STDOUT: %pattern_type: type = pattern_type %ptr.loc13_30.1 [symbolic = %pattern_type (constants.%pattern_type.4f4b84.2)]
|
||||
// CHECK:STDOUT: %return.param_patt.loc13_30.2: @F.loc13.%pattern_type (%pattern_type.4f4b84.2) = out_param_pattern [symbolic = %return.param_patt.loc13_30.2 (constants.%return.param_patt.27f587.2)]
|
||||
// CHECK:STDOUT: %return.patt.loc13_26.2: @F.loc13.%pattern_type (%pattern_type.4f4b84.2) = return_slot_pattern %return.param_patt.loc13_30.2, %ptr.loc13_30.1 [symbolic = %return.patt.loc13_26.2 (constants.%return.patt.d67681.2)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete: <witness> = require_complete_type %ptr.loc13_30.1 [symbolic = %require_complete (constants.%require_complete)]
|
||||
@@ -549,18 +620,26 @@ fn F(U:! type, T:! type) -> U* {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @F.loc4(constants.%T.67d, constants.%U.091) {
|
||||
// CHECK:STDOUT: %T.patt.loc4_7.2 => constants.%T.patt.d47
|
||||
// CHECK:STDOUT: %T.loc4_7.1 => constants.%T.67d
|
||||
// CHECK:STDOUT: %U.patt.loc4_17.2 => constants.%U.patt.014
|
||||
// CHECK:STDOUT: %U.loc4_17.1 => constants.%U.091
|
||||
// CHECK:STDOUT: %ptr.loc4_30.1 => constants.%ptr.e8f8f9.1
|
||||
// CHECK:STDOUT: %.loc4_30.1 => constants.%.cb6cb9.1
|
||||
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.4f4b84.1
|
||||
// CHECK:STDOUT: %return.param_patt.loc4_30.2 => constants.%return.param_patt.27f587.1
|
||||
// CHECK:STDOUT: %return.patt.loc4_26.2 => constants.%return.patt.d67681.1
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @F.loc13(constants.%U.67d, constants.%T.091) {
|
||||
// CHECK:STDOUT: %U.patt.loc13_7.2 => constants.%U.patt.d47
|
||||
// CHECK:STDOUT: %U.loc13_7.1 => constants.%U.67d
|
||||
// CHECK:STDOUT: %T.patt.loc13_17.2 => constants.%T.patt.014
|
||||
// CHECK:STDOUT: %T.loc13_17.1 => constants.%T.091
|
||||
// CHECK:STDOUT: %ptr.loc13_30.1 => constants.%ptr.e8f8f9.2
|
||||
// CHECK:STDOUT: %.loc13_30.1 => constants.%.cb6cb9.2
|
||||
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.4f4b84.2
|
||||
// CHECK:STDOUT: %return.param_patt.loc13_30.2 => constants.%return.param_patt.27f587.2
|
||||
// CHECK:STDOUT: %return.patt.loc13_26.2 => constants.%return.patt.d67681.2
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
+28
-14
@@ -45,6 +45,7 @@ fn CallNegative() {
|
||||
// CHECK:STDOUT: %type: type = facet_type <type> [concrete]
|
||||
// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self]
|
||||
// CHECK:STDOUT: %pattern_type.dc0: type = pattern_type Core.IntLiteral [concrete]
|
||||
// CHECK:STDOUT: %N.patt: %pattern_type.dc0 = symbolic_binding_pattern N, 0 [symbolic]
|
||||
// CHECK:STDOUT: %N: Core.IntLiteral = symbolic_binding N, 0 [symbolic]
|
||||
// CHECK:STDOUT: %ErrorIfNIsZero.type: type = fn_type @ErrorIfNIsZero [concrete]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete]
|
||||
@@ -54,6 +55,8 @@ fn CallNegative() {
|
||||
// CHECK:STDOUT: %Int: type = class_type @Int, @Int(%N) [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.4df: <witness> = require_complete_type %Int [symbolic]
|
||||
// CHECK:STDOUT: %pattern_type.142: type = pattern_type %Int [symbolic]
|
||||
// CHECK:STDOUT: %v.patt.834: %pattern_type.142 = ref_binding_pattern v [symbolic]
|
||||
// CHECK:STDOUT: %v.var_patt.cd4: %pattern_type.142 = var_pattern %v.patt.834 [symbolic]
|
||||
// CHECK:STDOUT: %DefaultOrUnformed.type: type = facet_type <@DefaultOrUnformed> [concrete]
|
||||
// CHECK:STDOUT: %T.67d: type = symbolic_binding T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %T.as.DefaultOrUnformed.impl.Op.type.150: type = fn_type @T.as.DefaultOrUnformed.impl.Op, @T.as.DefaultOrUnformed.impl(%T.67d) [symbolic]
|
||||
@@ -78,6 +81,8 @@ fn CallNegative() {
|
||||
// CHECK:STDOUT: %ErrorIfNIsZero.specific_fn: <specific function> = specific_function %ErrorIfNIsZero, @ErrorIfNIsZero(%int_0) [concrete]
|
||||
// CHECK:STDOUT: %i0: type = class_type @Int, @Int(%int_0) [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.d0e: type = pattern_type %i0 [concrete]
|
||||
// CHECK:STDOUT: %v.patt.53c: %pattern_type.d0e = ref_binding_pattern v [concrete]
|
||||
// CHECK:STDOUT: %v.var_patt.0d0: %pattern_type.d0e = var_pattern %v.patt.53c [concrete]
|
||||
// CHECK:STDOUT: %DefaultOrUnformed.impl_witness.8d2: <witness> = impl_witness imports.%DefaultOrUnformed.impl_witness_table.374, @T.as.DefaultOrUnformed.impl(%i0) [concrete]
|
||||
// CHECK:STDOUT: %T.as.DefaultOrUnformed.impl.Op.type.baf: type = fn_type @T.as.DefaultOrUnformed.impl.Op, @T.as.DefaultOrUnformed.impl(%i0) [concrete]
|
||||
// CHECK:STDOUT: %T.as.DefaultOrUnformed.impl.Op.38a: %T.as.DefaultOrUnformed.impl.Op.type.baf = struct_value () [concrete]
|
||||
@@ -119,7 +124,7 @@ fn CallNegative() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %ErrorIfNIsZero.decl: %ErrorIfNIsZero.type = fn_decl @ErrorIfNIsZero [concrete = constants.%ErrorIfNIsZero] {
|
||||
// CHECK:STDOUT: %N.patt: %pattern_type.dc0 = symbolic_binding_pattern N, 0 [concrete]
|
||||
// CHECK:STDOUT: %N.patt.loc4_20.1: %pattern_type.dc0 = symbolic_binding_pattern N, 0 [symbolic = %N.patt.loc4_20.2 (constants.%N.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %.loc4: type = splice_block %IntLiteral.ref [concrete = Core.IntLiteral] {
|
||||
// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self]
|
||||
@@ -132,12 +137,15 @@ fn CallNegative() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: generic fn @ErrorIfNIsZero(%N.loc4_20.2: Core.IntLiteral) {
|
||||
// CHECK:STDOUT: %N.patt.loc4_20.2: %pattern_type.dc0 = symbolic_binding_pattern N, 0 [symbolic = %N.patt.loc4_20.2 (constants.%N.patt)]
|
||||
// CHECK:STDOUT: %N.loc4_20.1: Core.IntLiteral = symbolic_binding N, 0 [symbolic = %N.loc4_20.1 (constants.%N)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %Int.loc9_27.2: type = class_type @Int, @Int(%N.loc4_20.1) [symbolic = %Int.loc9_27.2 (constants.%Int)]
|
||||
// CHECK:STDOUT: %require_complete: <witness> = require_complete_type %Int.loc9_27.2 [symbolic = %require_complete (constants.%require_complete.4df)]
|
||||
// CHECK:STDOUT: %pattern_type: type = pattern_type %Int.loc9_27.2 [symbolic = %pattern_type (constants.%pattern_type.142)]
|
||||
// CHECK:STDOUT: %v.patt.loc9_15.2: @ErrorIfNIsZero.%pattern_type (%pattern_type.142) = ref_binding_pattern v [symbolic = %v.patt.loc9_15.2 (constants.%v.patt.834)]
|
||||
// CHECK:STDOUT: %v.var_patt.loc9_3.2: @ErrorIfNIsZero.%pattern_type (%pattern_type.142) = var_pattern %v.patt.loc9_15.2 [symbolic = %v.var_patt.loc9_3.2 (constants.%v.var_patt.cd4)]
|
||||
// CHECK:STDOUT: %.loc9_28.3: require_specific_def_type = require_specific_def @T.as.DefaultOrUnformed.impl(%Int.loc9_27.2) [symbolic = %.loc9_28.3 (constants.%.386)]
|
||||
// CHECK:STDOUT: %DefaultOrUnformed.lookup_impl_witness: <witness> = lookup_impl_witness %Int.loc9_27.2, @DefaultOrUnformed [symbolic = %DefaultOrUnformed.lookup_impl_witness (constants.%DefaultOrUnformed.lookup_impl_witness)]
|
||||
// CHECK:STDOUT: %DefaultOrUnformed.facet.loc9_28.2: %DefaultOrUnformed.type = facet_value %Int.loc9_27.2, (%DefaultOrUnformed.lookup_impl_witness) [symbolic = %DefaultOrUnformed.facet.loc9_28.2 (constants.%DefaultOrUnformed.facet.e73)]
|
||||
@@ -146,19 +154,19 @@ fn CallNegative() {
|
||||
// CHECK:STDOUT: %impl.elem0.loc9_28.2: @ErrorIfNIsZero.%.loc9_28.4 (%.b74) = impl_witness_access %DefaultOrUnformed.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc9_28.2 (constants.%impl.elem0.b17)]
|
||||
// CHECK:STDOUT: %specific_impl_fn.loc9_28.2: <specific function> = specific_impl_function %impl.elem0.loc9_28.2, @DefaultOrUnformed.WithSelf.Op(%DefaultOrUnformed.facet.loc9_28.2) [symbolic = %specific_impl_fn.loc9_28.2 (constants.%specific_impl_fn.cf5)]
|
||||
// CHECK:STDOUT: %Destroy.lookup_impl_witness: <witness> = lookup_impl_witness %Int.loc9_27.2, @Destroy [symbolic = %Destroy.lookup_impl_witness (constants.%Destroy.lookup_impl_witness.173)]
|
||||
// CHECK:STDOUT: %Destroy.facet.loc9_3.2: %Destroy.type = facet_value %Int.loc9_27.2, (%Destroy.lookup_impl_witness) [symbolic = %Destroy.facet.loc9_3.2 (constants.%Destroy.facet.7bb)]
|
||||
// CHECK:STDOUT: %Destroy.WithSelf.Op.type: type = fn_type @Destroy.WithSelf.Op, @Destroy.WithSelf(%Destroy.facet.loc9_3.2) [symbolic = %Destroy.WithSelf.Op.type (constants.%Destroy.WithSelf.Op.type.8f1)]
|
||||
// CHECK:STDOUT: %.loc9_3.2: type = fn_type_with_self_type %Destroy.WithSelf.Op.type, %Destroy.facet.loc9_3.2 [symbolic = %.loc9_3.2 (constants.%.2c6)]
|
||||
// CHECK:STDOUT: %impl.elem0.loc9_3.2: @ErrorIfNIsZero.%.loc9_3.2 (%.2c6) = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc9_3.2 (constants.%impl.elem0.604)]
|
||||
// CHECK:STDOUT: %specific_impl_fn.loc9_3.2: <specific function> = specific_impl_function %impl.elem0.loc9_3.2, @Destroy.WithSelf.Op(%Destroy.facet.loc9_3.2) [symbolic = %specific_impl_fn.loc9_3.2 (constants.%specific_impl_fn.693)]
|
||||
// CHECK:STDOUT: %Destroy.facet.loc9_3.3: %Destroy.type = facet_value %Int.loc9_27.2, (%Destroy.lookup_impl_witness) [symbolic = %Destroy.facet.loc9_3.3 (constants.%Destroy.facet.7bb)]
|
||||
// CHECK:STDOUT: %Destroy.WithSelf.Op.type: type = fn_type @Destroy.WithSelf.Op, @Destroy.WithSelf(%Destroy.facet.loc9_3.3) [symbolic = %Destroy.WithSelf.Op.type (constants.%Destroy.WithSelf.Op.type.8f1)]
|
||||
// CHECK:STDOUT: %.loc9_3.3: type = fn_type_with_self_type %Destroy.WithSelf.Op.type, %Destroy.facet.loc9_3.3 [symbolic = %.loc9_3.3 (constants.%.2c6)]
|
||||
// CHECK:STDOUT: %impl.elem0.loc9_3.2: @ErrorIfNIsZero.%.loc9_3.3 (%.2c6) = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc9_3.2 (constants.%impl.elem0.604)]
|
||||
// CHECK:STDOUT: %specific_impl_fn.loc9_3.2: <specific function> = specific_impl_function %impl.elem0.loc9_3.2, @Destroy.WithSelf.Op(%Destroy.facet.loc9_3.3) [symbolic = %specific_impl_fn.loc9_3.2 (constants.%specific_impl_fn.693)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn() {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %v.patt: @ErrorIfNIsZero.%pattern_type (%pattern_type.142) = ref_binding_pattern v [concrete]
|
||||
// CHECK:STDOUT: %v.var_patt: @ErrorIfNIsZero.%pattern_type (%pattern_type.142) = var_pattern %v.patt [concrete]
|
||||
// CHECK:STDOUT: %v.patt.loc9_15.1: @ErrorIfNIsZero.%pattern_type (%pattern_type.142) = ref_binding_pattern v [symbolic = %v.patt.loc9_15.2 (constants.%v.patt.834)]
|
||||
// CHECK:STDOUT: %v.var_patt.loc9_3.1: @ErrorIfNIsZero.%pattern_type (%pattern_type.142) = var_pattern %v.patt.loc9_15.1 [symbolic = %v.var_patt.loc9_3.2 (constants.%v.var_patt.cd4)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %v.var: ref @ErrorIfNIsZero.%Int.loc9_27.2 (%Int) = var %v.var_patt
|
||||
// CHECK:STDOUT: %v.var: ref @ErrorIfNIsZero.%Int.loc9_27.2 (%Int) = var %v.var_patt.loc9_3.1
|
||||
// CHECK:STDOUT: %DefaultOrUnformed.facet.loc9_28.1: %DefaultOrUnformed.type = facet_value constants.%Int, (constants.%DefaultOrUnformed.lookup_impl_witness) [symbolic = %DefaultOrUnformed.facet.loc9_28.2 (constants.%DefaultOrUnformed.facet.e73)]
|
||||
// CHECK:STDOUT: %.loc9_28.1: %DefaultOrUnformed.type = converted constants.%Int, %DefaultOrUnformed.facet.loc9_28.1 [symbolic = %DefaultOrUnformed.facet.loc9_28.2 (constants.%DefaultOrUnformed.facet.e73)]
|
||||
// CHECK:STDOUT: %as_type: type = facet_access_type %.loc9_28.1 [symbolic = %Int.loc9_27.2 (constants.%Int)]
|
||||
@@ -174,10 +182,12 @@ fn CallNegative() {
|
||||
// CHECK:STDOUT: %Int.loc9_27.1: type = class_type @Int, @Int(constants.%N) [symbolic = %Int.loc9_27.2 (constants.%Int)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %v: ref @ErrorIfNIsZero.%Int.loc9_27.2 (%Int) = ref_binding v, %v.var
|
||||
// CHECK:STDOUT: %impl.elem0.loc9_3.1: @ErrorIfNIsZero.%.loc9_3.2 (%.2c6) = impl_witness_access constants.%Destroy.lookup_impl_witness.173, element0 [symbolic = %impl.elem0.loc9_3.2 (constants.%impl.elem0.604)]
|
||||
// CHECK:STDOUT: %impl.elem0.loc9_3.1: @ErrorIfNIsZero.%.loc9_3.3 (%.2c6) = impl_witness_access constants.%Destroy.lookup_impl_witness.173, element0 [symbolic = %impl.elem0.loc9_3.2 (constants.%impl.elem0.604)]
|
||||
// CHECK:STDOUT: %bound_method.loc9_3.1: <bound method> = bound_method %v.var, %impl.elem0.loc9_3.1
|
||||
// CHECK:STDOUT: %Destroy.facet.loc9_3.1: %Destroy.type = facet_value constants.%Int, (constants.%Destroy.lookup_impl_witness.173) [symbolic = %Destroy.facet.loc9_3.2 (constants.%Destroy.facet.7bb)]
|
||||
// CHECK:STDOUT: %.loc9_3.1: %Destroy.type = converted constants.%Int, %Destroy.facet.loc9_3.1 [symbolic = %Destroy.facet.loc9_3.2 (constants.%Destroy.facet.7bb)]
|
||||
// CHECK:STDOUT: %Destroy.facet.loc9_3.1: %Destroy.type = facet_value constants.%Int, (constants.%Destroy.lookup_impl_witness.173) [symbolic = %Destroy.facet.loc9_3.3 (constants.%Destroy.facet.7bb)]
|
||||
// CHECK:STDOUT: %.loc9_3.1: %Destroy.type = converted constants.%Int, %Destroy.facet.loc9_3.1 [symbolic = %Destroy.facet.loc9_3.3 (constants.%Destroy.facet.7bb)]
|
||||
// CHECK:STDOUT: %Destroy.facet.loc9_3.2: %Destroy.type = facet_value constants.%Int, (constants.%Destroy.lookup_impl_witness.173) [symbolic = %Destroy.facet.loc9_3.3 (constants.%Destroy.facet.7bb)]
|
||||
// CHECK:STDOUT: %.loc9_3.2: %Destroy.type = converted constants.%Int, %Destroy.facet.loc9_3.2 [symbolic = %Destroy.facet.loc9_3.3 (constants.%Destroy.facet.7bb)]
|
||||
// CHECK:STDOUT: %specific_impl_fn.loc9_3.1: <specific function> = specific_impl_function %impl.elem0.loc9_3.1, @Destroy.WithSelf.Op(constants.%Destroy.facet.7bb) [symbolic = %specific_impl_fn.loc9_3.2 (constants.%specific_impl_fn.693)]
|
||||
// CHECK:STDOUT: %bound_method.loc9_3.2: <bound method> = bound_method %v.var, %specific_impl_fn.loc9_3.1
|
||||
// CHECK:STDOUT: %Destroy.WithSelf.Op.call: init %empty_tuple.type = call %bound_method.loc9_3.2(%v.var)
|
||||
@@ -200,16 +210,20 @@ fn CallNegative() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @ErrorIfNIsZero(constants.%N) {
|
||||
// CHECK:STDOUT: %N.patt.loc4_20.2 => constants.%N.patt
|
||||
// CHECK:STDOUT: %N.loc4_20.1 => constants.%N
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @ErrorIfNIsZero(constants.%int_0) {
|
||||
// CHECK:STDOUT: %N.patt.loc4_20.2 => constants.%N.patt
|
||||
// CHECK:STDOUT: %N.loc4_20.1 => constants.%int_0
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %Int.loc9_27.2 => constants.%i0
|
||||
// CHECK:STDOUT: %require_complete => <error>
|
||||
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.d0e
|
||||
// CHECK:STDOUT: %v.patt.loc9_15.2 => constants.%v.patt.53c
|
||||
// CHECK:STDOUT: %v.var_patt.loc9_3.2 => constants.%v.var_patt.0d0
|
||||
// CHECK:STDOUT: %.loc9_28.3 => constants.%.060
|
||||
// CHECK:STDOUT: %DefaultOrUnformed.lookup_impl_witness => constants.%DefaultOrUnformed.impl_witness.8d2
|
||||
// CHECK:STDOUT: %DefaultOrUnformed.facet.loc9_28.2 => constants.%DefaultOrUnformed.facet.4e3
|
||||
@@ -218,9 +232,9 @@ fn CallNegative() {
|
||||
// CHECK:STDOUT: %impl.elem0.loc9_28.2 => constants.%T.as.DefaultOrUnformed.impl.Op.38a
|
||||
// CHECK:STDOUT: %specific_impl_fn.loc9_28.2 => constants.%T.as.DefaultOrUnformed.impl.Op.specific_fn
|
||||
// CHECK:STDOUT: %Destroy.lookup_impl_witness => constants.%custom_witness.df9
|
||||
// CHECK:STDOUT: %Destroy.facet.loc9_3.2 => constants.%Destroy.facet.85b
|
||||
// CHECK:STDOUT: %Destroy.facet.loc9_3.3 => constants.%Destroy.facet.85b
|
||||
// CHECK:STDOUT: %Destroy.WithSelf.Op.type => constants.%Destroy.WithSelf.Op.type.b7e
|
||||
// CHECK:STDOUT: %.loc9_3.2 => constants.%.338
|
||||
// CHECK:STDOUT: %.loc9_3.3 => constants.%.338
|
||||
// CHECK:STDOUT: %impl.elem0.loc9_3.2 => constants.%Destroy.Op
|
||||
// CHECK:STDOUT: %specific_impl_fn.loc9_3.2 => constants.%Destroy.Op
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
@@ -30,6 +30,7 @@ fn G() {
|
||||
// CHECK:STDOUT: %type: type = facet_type <type> [concrete]
|
||||
// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self]
|
||||
// CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete]
|
||||
// CHECK:STDOUT: %T.patt: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %T: type = symbolic_binding T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %Wrap.type: type = generic_class_type @Wrap [concrete]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete]
|
||||
@@ -37,6 +38,8 @@ fn G() {
|
||||
// CHECK:STDOUT: %Wrap.8a2: type = class_type @Wrap, @Wrap(%T) [symbolic]
|
||||
// CHECK:STDOUT: %.184: Core.Form = init_form %T [symbolic]
|
||||
// CHECK:STDOUT: %pattern_type.51d: type = pattern_type %T [symbolic]
|
||||
// CHECK:STDOUT: %return.param_patt.41d: %pattern_type.51d = out_param_pattern [symbolic]
|
||||
// CHECK:STDOUT: %return.patt.b39: %pattern_type.51d = return_slot_pattern %return.param_patt.41d, %T [symbolic]
|
||||
// CHECK:STDOUT: %Wrap.Make.type.8e1: type = fn_type @Wrap.Make, @Wrap(%T) [symbolic]
|
||||
// CHECK:STDOUT: %Wrap.Make.813: %Wrap.Make.type.8e1 = struct_value () [symbolic]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
||||
@@ -58,23 +61,35 @@ fn G() {
|
||||
// CHECK:STDOUT: %G.type: type = fn_type @G [concrete]
|
||||
// CHECK:STDOUT: %G: %G.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.6b6: type = pattern_type %i32 [concrete]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.6b6 = ref_binding_pattern a [concrete]
|
||||
// CHECK:STDOUT: %a.var_patt: %pattern_type.6b6 = var_pattern %a.patt [concrete]
|
||||
// CHECK:STDOUT: %Wrap.aab: type = class_type @Wrap, @Wrap(%i32) [concrete]
|
||||
// CHECK:STDOUT: %Wrap.Make.type.096: type = fn_type @Wrap.Make, @Wrap(%i32) [concrete]
|
||||
// CHECK:STDOUT: %Wrap.Make.4b7: %Wrap.Make.type.096 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %.795: Core.Form = init_form %i32 [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt.a9a: %pattern_type.6b6 = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt.e1b: %pattern_type.6b6 = return_slot_pattern %return.param_patt.a9a, %i32 [concrete]
|
||||
// CHECK:STDOUT: %Wrap.Make.specific_fn.cb0: <specific function> = specific_function %Wrap.Make.4b7, @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: %b.patt: %pattern_type.cb1 = ref_binding_pattern b [concrete]
|
||||
// CHECK:STDOUT: %b.var_patt: %pattern_type.cb1 = var_pattern %b.patt [concrete]
|
||||
// CHECK:STDOUT: %Wrap.7ad: type = class_type @Wrap, @Wrap(%empty_tuple.type) [concrete]
|
||||
// CHECK:STDOUT: %Wrap.Make.type.318: type = fn_type @Wrap.Make, @Wrap(%empty_tuple.type) [concrete]
|
||||
// CHECK:STDOUT: %Wrap.Make.26a: %Wrap.Make.type.318 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %.262: Core.Form = init_form %empty_tuple.type [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt.900: %pattern_type.cb1 = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt.427: %pattern_type.cb1 = return_slot_pattern %return.param_patt.900, %empty_tuple.type [concrete]
|
||||
// CHECK:STDOUT: %Wrap.Make.specific_fn.cc3: <specific function> = specific_function %Wrap.Make.26a, @Wrap.Make(%empty_tuple.type) [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.98b: type = pattern_type %C [concrete]
|
||||
// CHECK:STDOUT: %c.patt: %pattern_type.98b = ref_binding_pattern c [concrete]
|
||||
// CHECK:STDOUT: %c.var_patt: %pattern_type.98b = var_pattern %c.patt [concrete]
|
||||
// CHECK:STDOUT: %Wrap.fad: type = class_type @Wrap, @Wrap(%C) [concrete]
|
||||
// CHECK:STDOUT: %Wrap.Make.type.bd1: type = fn_type @Wrap.Make, @Wrap(%C) [concrete]
|
||||
// CHECK:STDOUT: %Wrap.Make.83f: %Wrap.Make.type.bd1 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %.a44: Core.Form = init_form %C [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt.89a: %pattern_type.98b = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt.e4a: %pattern_type.98b = return_slot_pattern %return.param_patt.89a, %C [concrete]
|
||||
// CHECK:STDOUT: %Wrap.Make.specific_fn.c96: <specific function> = specific_function %Wrap.Make.83f, @Wrap.Make(%C) [concrete]
|
||||
// CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete]
|
||||
// CHECK:STDOUT: %Destroy.Op.type.1d8f74.2: type = fn_type @Destroy.Op.loc24_3.2 [concrete]
|
||||
@@ -106,7 +121,7 @@ fn G() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %Wrap.decl: %Wrap.type = class_decl @Wrap [concrete = constants.%Wrap.generic] {
|
||||
// CHECK:STDOUT: %T.patt: %pattern_type.98f = symbolic_binding_pattern T, 0 [concrete]
|
||||
// CHECK:STDOUT: %T.patt.loc15_13.1: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc15_13.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %.loc15_16.1: type = splice_block %.loc15_16.2 [concrete = type] {
|
||||
// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self]
|
||||
@@ -119,6 +134,7 @@ fn G() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: generic class @Wrap(%T.loc15_13.2: type) {
|
||||
// CHECK:STDOUT: %T.patt.loc15_13.2: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc15_13.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %T.loc15_13.1: type = symbolic_binding T, 0 [symbolic = %T.loc15_13.1 (constants.%T)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
@@ -127,8 +143,8 @@ fn G() {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class {
|
||||
// CHECK:STDOUT: %Wrap.Make.decl: @Wrap.%Wrap.Make.type (%Wrap.Make.type.8e1) = fn_decl @Wrap.Make [symbolic = @Wrap.%Wrap.Make (constants.%Wrap.Make.813)] {
|
||||
// CHECK:STDOUT: %return.param_patt: @Wrap.Make.%pattern_type (%pattern_type.51d) = out_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.patt: @Wrap.Make.%pattern_type (%pattern_type.51d) = return_slot_pattern %return.param_patt, %T.ref [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt.loc16_16.1: @Wrap.Make.%pattern_type (%pattern_type.51d) = out_param_pattern [symbolic = %return.param_patt.loc16_16.2 (constants.%return.param_patt.41d)]
|
||||
// CHECK:STDOUT: %return.patt.loc16_13.1: @Wrap.Make.%pattern_type (%pattern_type.51d) = return_slot_pattern %return.param_patt.loc16_16.1, %T.ref [symbolic = %return.patt.loc16_13.2 (constants.%return.patt.b39)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.ref: type = name_ref T, @Wrap.%T.loc15_13.2 [symbolic = %T (constants.%T)]
|
||||
// CHECK:STDOUT: %.loc16_16.3: Core.Form = init_form %T.ref [symbolic = %.loc16_16.2 (constants.%.184)]
|
||||
@@ -159,6 +175,8 @@ fn G() {
|
||||
// CHECK:STDOUT: %T: type = symbolic_binding T, 0 [symbolic = %T (constants.%T)]
|
||||
// CHECK:STDOUT: %.loc16_16.2: Core.Form = init_form %T [symbolic = %.loc16_16.2 (constants.%.184)]
|
||||
// CHECK:STDOUT: %pattern_type: type = pattern_type %T [symbolic = %pattern_type (constants.%pattern_type.51d)]
|
||||
// CHECK:STDOUT: %return.param_patt.loc16_16.2: @Wrap.Make.%pattern_type (%pattern_type.51d) = out_param_pattern [symbolic = %return.param_patt.loc16_16.2 (constants.%return.param_patt.41d)]
|
||||
// CHECK:STDOUT: %return.patt.loc16_13.2: @Wrap.Make.%pattern_type (%pattern_type.51d) = return_slot_pattern %return.param_patt.loc16_16.2, %T [symbolic = %return.patt.loc16_13.2 (constants.%return.patt.b39)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete: <witness> = require_complete_type %T [symbolic = %require_complete (constants.%require_complete.944)]
|
||||
@@ -180,8 +198,8 @@ fn G() {
|
||||
// CHECK:STDOUT: fn @G() {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.6b6 = ref_binding_pattern a [concrete]
|
||||
// CHECK:STDOUT: %a.var_patt: %pattern_type.6b6 = var_pattern %a.patt [concrete]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.6b6 = ref_binding_pattern a [concrete = constants.%a.patt]
|
||||
// CHECK:STDOUT: %a.var_patt: %pattern_type.6b6 = var_pattern %a.patt [concrete = constants.%a.var_patt]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %a.var: ref %i32 = var %a.var_patt
|
||||
// CHECK:STDOUT: %Wrap.ref.loc22: %Wrap.type = name_ref Wrap, file.%Wrap.decl [concrete = constants.%Wrap.generic]
|
||||
@@ -195,8 +213,8 @@ fn G() {
|
||||
// CHECK:STDOUT: %i32.loc22_17: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %a: ref %i32 = ref_binding a, %a.var
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %b.patt: %pattern_type.cb1 = ref_binding_pattern b [concrete]
|
||||
// CHECK:STDOUT: %b.var_patt: %pattern_type.cb1 = var_pattern %b.patt [concrete]
|
||||
// CHECK:STDOUT: %b.patt: %pattern_type.cb1 = ref_binding_pattern b [concrete = constants.%b.patt]
|
||||
// CHECK:STDOUT: %b.var_patt: %pattern_type.cb1 = var_pattern %b.patt [concrete = constants.%b.var_patt]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %b.var: ref %empty_tuple.type = var %b.var_patt
|
||||
// CHECK:STDOUT: %Wrap.ref.loc23: %Wrap.type = name_ref Wrap, file.%Wrap.decl [concrete = constants.%Wrap.generic]
|
||||
@@ -214,8 +232,8 @@ fn G() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %b: ref %empty_tuple.type = ref_binding b, %b.var
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %c.patt: %pattern_type.98b = ref_binding_pattern c [concrete]
|
||||
// CHECK:STDOUT: %c.var_patt: %pattern_type.98b = var_pattern %c.patt [concrete]
|
||||
// CHECK:STDOUT: %c.patt: %pattern_type.98b = ref_binding_pattern c [concrete = constants.%c.patt]
|
||||
// CHECK:STDOUT: %c.var_patt: %pattern_type.98b = var_pattern %c.patt [concrete = constants.%c.var_patt]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %c.var: ref %C = var %c.var_patt
|
||||
// CHECK:STDOUT: %Wrap.ref.loc24: %Wrap.type = name_ref Wrap, file.%Wrap.decl [concrete = constants.%Wrap.generic]
|
||||
@@ -263,6 +281,7 @@ fn G() {
|
||||
// CHECK:STDOUT: fn @Destroy.Op.loc23(%self.param: ref %empty_tuple.type) = "no_op";
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @Wrap(constants.%T) {
|
||||
// CHECK:STDOUT: %T.patt.loc15_13.2 => constants.%T.patt
|
||||
// CHECK:STDOUT: %T.loc15_13.1 => constants.%T
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
@@ -274,6 +293,8 @@ fn G() {
|
||||
// CHECK:STDOUT: %T => constants.%T
|
||||
// CHECK:STDOUT: %.loc16_16.2 => constants.%.184
|
||||
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.51d
|
||||
// CHECK:STDOUT: %return.param_patt.loc16_16.2 => constants.%return.param_patt.41d
|
||||
// CHECK:STDOUT: %return.patt.loc16_13.2 => constants.%return.patt.b39
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete => constants.%require_complete.944
|
||||
@@ -283,6 +304,7 @@ fn G() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @Wrap(constants.%i32) {
|
||||
// CHECK:STDOUT: %T.patt.loc15_13.2 => constants.%T.patt
|
||||
// CHECK:STDOUT: %T.loc15_13.1 => constants.%i32
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
@@ -294,6 +316,8 @@ fn G() {
|
||||
// CHECK:STDOUT: %T => constants.%i32
|
||||
// CHECK:STDOUT: %.loc16_16.2 => constants.%.795
|
||||
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.6b6
|
||||
// CHECK:STDOUT: %return.param_patt.loc16_16.2 => constants.%return.param_patt.a9a
|
||||
// CHECK:STDOUT: %return.patt.loc16_13.2 => constants.%return.patt.e1b
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete => constants.%complete_type.f8a
|
||||
@@ -303,6 +327,7 @@ fn G() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @Wrap(constants.%empty_tuple.type) {
|
||||
// CHECK:STDOUT: %T.patt.loc15_13.2 => constants.%T.patt
|
||||
// CHECK:STDOUT: %T.loc15_13.1 => constants.%empty_tuple.type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
@@ -314,6 +339,8 @@ fn G() {
|
||||
// CHECK:STDOUT: %T => constants.%empty_tuple.type
|
||||
// CHECK:STDOUT: %.loc16_16.2 => constants.%.262
|
||||
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.cb1
|
||||
// CHECK:STDOUT: %return.param_patt.loc16_16.2 => constants.%return.param_patt.900
|
||||
// CHECK:STDOUT: %return.patt.loc16_13.2 => constants.%return.patt.427
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete => constants.%complete_type.782
|
||||
@@ -323,6 +350,7 @@ fn G() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @Wrap(constants.%C) {
|
||||
// CHECK:STDOUT: %T.patt.loc15_13.2 => constants.%T.patt
|
||||
// CHECK:STDOUT: %T.loc15_13.1 => constants.%C
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
@@ -334,6 +362,8 @@ fn G() {
|
||||
// CHECK:STDOUT: %T => constants.%C
|
||||
// CHECK:STDOUT: %.loc16_16.2 => constants.%.a44
|
||||
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.98b
|
||||
// CHECK:STDOUT: %return.param_patt.loc16_16.2 => constants.%return.param_patt.89a
|
||||
// CHECK:STDOUT: %return.patt.loc16_13.2 => constants.%return.patt.e4a
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete => constants.%complete_type.18e
|
||||
|
||||
@@ -29,6 +29,7 @@ fn G() {
|
||||
// CHECK:STDOUT: %type: type = facet_type <type> [concrete]
|
||||
// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self]
|
||||
// CHECK:STDOUT: %pattern_type: type = pattern_type type [concrete]
|
||||
// CHECK:STDOUT: %T.patt: %pattern_type = symbolic_binding_pattern T, 0, template [template]
|
||||
// CHECK:STDOUT: %T: type = symbolic_binding T, 0, template [template]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [concrete]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete]
|
||||
@@ -46,7 +47,7 @@ fn G() {
|
||||
// CHECK:STDOUT: .G = %G.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {
|
||||
// CHECK:STDOUT: %T.patt: %pattern_type = symbolic_binding_pattern T, 0, template [concrete]
|
||||
// CHECK:STDOUT: %T.patt.loc4_23.1: %pattern_type = symbolic_binding_pattern T, 0, template [template = %T.patt.loc4_23.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %.loc4_26.1: type = splice_block %.loc4_26.2 [concrete = type] {
|
||||
// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self]
|
||||
@@ -58,6 +59,7 @@ fn G() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: generic fn @F(%T.loc4_23.2: type) {
|
||||
// CHECK:STDOUT: %T.patt.loc4_23.2: %pattern_type = symbolic_binding_pattern T, 0, template [template = %T.patt.loc4_23.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %T.loc4_23.1: type = symbolic_binding T, 0, template [template = %T.loc4_23.1 (constants.%T)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
@@ -79,10 +81,12 @@ fn G() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @F(constants.%T) {
|
||||
// CHECK:STDOUT: %T.patt.loc4_23.2 => constants.%T.patt
|
||||
// CHECK:STDOUT: %T.loc4_23.1 => constants.%T
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @F(constants.%empty_struct_type) {
|
||||
// CHECK:STDOUT: %T.patt.loc4_23.2 => constants.%T.patt
|
||||
// CHECK:STDOUT: %T.loc4_23.1 => constants.%empty_struct_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
|
||||
+25
-14
@@ -24,6 +24,7 @@ fn F(T:! type) {
|
||||
// CHECK:STDOUT: %type: type = facet_type <type> [concrete]
|
||||
// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self]
|
||||
// CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete]
|
||||
// CHECK:STDOUT: %T.patt.d47: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %T.67d: type = symbolic_binding T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [concrete]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete]
|
||||
@@ -31,6 +32,8 @@ fn F(T:! type) {
|
||||
// CHECK:STDOUT: %ptr: type = ptr_type %T.67d [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.ef1: <witness> = require_complete_type %ptr [symbolic]
|
||||
// CHECK:STDOUT: %pattern_type.4f4: type = pattern_type %ptr [symbolic]
|
||||
// CHECK:STDOUT: %p.patt: %pattern_type.4f4 = ref_binding_pattern p [symbolic]
|
||||
// CHECK:STDOUT: %p.var_patt: %pattern_type.4f4 = var_pattern %p.patt [symbolic]
|
||||
// CHECK:STDOUT: %DefaultOrUnformed.type: type = facet_type <@DefaultOrUnformed> [concrete]
|
||||
// CHECK:STDOUT: %require_complete.944: <witness> = require_complete_type %T.67d [symbolic]
|
||||
// CHECK:STDOUT: %pattern_type.51d: type = pattern_type %T.67d [symbolic]
|
||||
@@ -41,6 +44,7 @@ fn F(T:! type) {
|
||||
// CHECK:STDOUT: %.2e6: type = fn_type_with_self_type %DefaultOrUnformed.WithSelf.Op.type.291, %DefaultOrUnformed.facet [symbolic]
|
||||
// CHECK:STDOUT: %impl.elem0.66d: %.2e6 = impl_witness_access %DefaultOrUnformed.lookup_impl_witness, element0 [symbolic]
|
||||
// CHECK:STDOUT: %specific_impl_fn.53b: <specific function> = specific_impl_function %impl.elem0.66d, @DefaultOrUnformed.WithSelf.Op(%DefaultOrUnformed.facet) [symbolic]
|
||||
// CHECK:STDOUT: %n.patt: %pattern_type.51d = value_binding_pattern n [symbolic]
|
||||
// CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete]
|
||||
// CHECK:STDOUT: %Destroy.lookup_impl_witness: <witness> = lookup_impl_witness %ptr, @Destroy [symbolic]
|
||||
// CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %ptr, (%Destroy.lookup_impl_witness) [symbolic]
|
||||
@@ -68,7 +72,7 @@ fn F(T:! type) {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {
|
||||
// CHECK:STDOUT: %T.patt: %pattern_type.98f = symbolic_binding_pattern T, 0 [concrete]
|
||||
// CHECK:STDOUT: %T.patt.loc15_7.1: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc15_7.2 (constants.%T.patt.d47)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %.loc15_10.1: type = splice_block %.loc15_10.2 [concrete = type] {
|
||||
// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self]
|
||||
@@ -79,12 +83,15 @@ fn F(T:! type) {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: generic fn @F(%T.loc15_7.2: type) {
|
||||
// CHECK:STDOUT: %T.patt.loc15_7.2: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc15_7.2 (constants.%T.patt.d47)]
|
||||
// CHECK:STDOUT: %T.loc15_7.1: type = symbolic_binding T, 0 [symbolic = %T.loc15_7.1 (constants.%T.67d)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %ptr.loc16_11.2: type = ptr_type %T.loc15_7.1 [symbolic = %ptr.loc16_11.2 (constants.%ptr)]
|
||||
// CHECK:STDOUT: %require_complete.loc16: <witness> = require_complete_type %ptr.loc16_11.2 [symbolic = %require_complete.loc16 (constants.%require_complete.ef1)]
|
||||
// CHECK:STDOUT: %pattern_type.loc16: type = pattern_type %ptr.loc16_11.2 [symbolic = %pattern_type.loc16 (constants.%pattern_type.4f4)]
|
||||
// CHECK:STDOUT: %p.patt.loc16_8.2: @F.%pattern_type.loc16 (%pattern_type.4f4) = ref_binding_pattern p [symbolic = %p.patt.loc16_8.2 (constants.%p.patt)]
|
||||
// CHECK:STDOUT: %p.var_patt.loc16_3.2: @F.%pattern_type.loc16 (%pattern_type.4f4) = var_pattern %p.patt.loc16_8.2 [symbolic = %p.var_patt.loc16_3.2 (constants.%p.var_patt)]
|
||||
// CHECK:STDOUT: %.loc16_12.3: require_specific_def_type = require_specific_def @T.as.DefaultOrUnformed.impl(%ptr.loc16_11.2) [symbolic = %.loc16_12.3 (constants.%.d74)]
|
||||
// CHECK:STDOUT: %DefaultOrUnformed.lookup_impl_witness: <witness> = lookup_impl_witness %ptr.loc16_11.2, @DefaultOrUnformed [symbolic = %DefaultOrUnformed.lookup_impl_witness (constants.%DefaultOrUnformed.lookup_impl_witness)]
|
||||
// CHECK:STDOUT: %DefaultOrUnformed.facet.loc16_12.2: %DefaultOrUnformed.type = facet_value %ptr.loc16_11.2, (%DefaultOrUnformed.lookup_impl_witness) [symbolic = %DefaultOrUnformed.facet.loc16_12.2 (constants.%DefaultOrUnformed.facet)]
|
||||
@@ -94,20 +101,21 @@ fn F(T:! type) {
|
||||
// CHECK:STDOUT: %specific_impl_fn.loc16_12.2: <specific function> = specific_impl_function %impl.elem0.loc16_12.2, @DefaultOrUnformed.WithSelf.Op(%DefaultOrUnformed.facet.loc16_12.2) [symbolic = %specific_impl_fn.loc16_12.2 (constants.%specific_impl_fn.53b)]
|
||||
// CHECK:STDOUT: %require_complete.loc17: <witness> = require_complete_type %T.loc15_7.1 [symbolic = %require_complete.loc17 (constants.%require_complete.944)]
|
||||
// CHECK:STDOUT: %pattern_type.loc17: type = pattern_type %T.loc15_7.1 [symbolic = %pattern_type.loc17 (constants.%pattern_type.51d)]
|
||||
// CHECK:STDOUT: %n.patt.loc17_15.2: @F.%pattern_type.loc17 (%pattern_type.51d) = value_binding_pattern n [symbolic = %n.patt.loc17_15.2 (constants.%n.patt)]
|
||||
// CHECK:STDOUT: %Destroy.lookup_impl_witness: <witness> = lookup_impl_witness %ptr.loc16_11.2, @Destroy [symbolic = %Destroy.lookup_impl_witness (constants.%Destroy.lookup_impl_witness)]
|
||||
// CHECK:STDOUT: %Destroy.facet.loc16_3.2: %Destroy.type = facet_value %ptr.loc16_11.2, (%Destroy.lookup_impl_witness) [symbolic = %Destroy.facet.loc16_3.2 (constants.%Destroy.facet)]
|
||||
// CHECK:STDOUT: %Destroy.WithSelf.Op.type: type = fn_type @Destroy.WithSelf.Op, @Destroy.WithSelf(%Destroy.facet.loc16_3.2) [symbolic = %Destroy.WithSelf.Op.type (constants.%Destroy.WithSelf.Op.type.8a4)]
|
||||
// CHECK:STDOUT: %.loc16_3.2: type = fn_type_with_self_type %Destroy.WithSelf.Op.type, %Destroy.facet.loc16_3.2 [symbolic = %.loc16_3.2 (constants.%.9f8)]
|
||||
// CHECK:STDOUT: %impl.elem0.loc16_3.2: @F.%.loc16_3.2 (%.9f8) = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc16_3.2 (constants.%impl.elem0.258)]
|
||||
// CHECK:STDOUT: %specific_impl_fn.loc16_3.2: <specific function> = specific_impl_function %impl.elem0.loc16_3.2, @Destroy.WithSelf.Op(%Destroy.facet.loc16_3.2) [symbolic = %specific_impl_fn.loc16_3.2 (constants.%specific_impl_fn.192)]
|
||||
// CHECK:STDOUT: %Destroy.facet.loc16_3.3: %Destroy.type = facet_value %ptr.loc16_11.2, (%Destroy.lookup_impl_witness) [symbolic = %Destroy.facet.loc16_3.3 (constants.%Destroy.facet)]
|
||||
// CHECK:STDOUT: %Destroy.WithSelf.Op.type: type = fn_type @Destroy.WithSelf.Op, @Destroy.WithSelf(%Destroy.facet.loc16_3.3) [symbolic = %Destroy.WithSelf.Op.type (constants.%Destroy.WithSelf.Op.type.8a4)]
|
||||
// CHECK:STDOUT: %.loc16_3.3: type = fn_type_with_self_type %Destroy.WithSelf.Op.type, %Destroy.facet.loc16_3.3 [symbolic = %.loc16_3.3 (constants.%.9f8)]
|
||||
// CHECK:STDOUT: %impl.elem0.loc16_3.2: @F.%.loc16_3.3 (%.9f8) = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc16_3.2 (constants.%impl.elem0.258)]
|
||||
// CHECK:STDOUT: %specific_impl_fn.loc16_3.2: <specific function> = specific_impl_function %impl.elem0.loc16_3.2, @Destroy.WithSelf.Op(%Destroy.facet.loc16_3.3) [symbolic = %specific_impl_fn.loc16_3.2 (constants.%specific_impl_fn.192)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn() {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %p.patt: @F.%pattern_type.loc16 (%pattern_type.4f4) = ref_binding_pattern p [concrete]
|
||||
// CHECK:STDOUT: %p.var_patt: @F.%pattern_type.loc16 (%pattern_type.4f4) = var_pattern %p.patt [concrete]
|
||||
// CHECK:STDOUT: %p.patt.loc16_8.1: @F.%pattern_type.loc16 (%pattern_type.4f4) = ref_binding_pattern p [symbolic = %p.patt.loc16_8.2 (constants.%p.patt)]
|
||||
// CHECK:STDOUT: %p.var_patt.loc16_3.1: @F.%pattern_type.loc16 (%pattern_type.4f4) = var_pattern %p.patt.loc16_8.1 [symbolic = %p.var_patt.loc16_3.2 (constants.%p.var_patt)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %p.var: ref @F.%ptr.loc16_11.2 (%ptr) = var %p.var_patt
|
||||
// CHECK:STDOUT: %p.var: ref @F.%ptr.loc16_11.2 (%ptr) = var %p.var_patt.loc16_3.1
|
||||
// CHECK:STDOUT: %DefaultOrUnformed.facet.loc16_12.1: %DefaultOrUnformed.type = facet_value constants.%ptr, (constants.%DefaultOrUnformed.lookup_impl_witness) [symbolic = %DefaultOrUnformed.facet.loc16_12.2 (constants.%DefaultOrUnformed.facet)]
|
||||
// CHECK:STDOUT: %.loc16_12.1: %DefaultOrUnformed.type = converted constants.%ptr, %DefaultOrUnformed.facet.loc16_12.1 [symbolic = %DefaultOrUnformed.facet.loc16_12.2 (constants.%DefaultOrUnformed.facet)]
|
||||
// CHECK:STDOUT: %as_type: type = facet_access_type %.loc16_12.1 [symbolic = %ptr.loc16_11.2 (constants.%ptr)]
|
||||
@@ -122,18 +130,20 @@ fn F(T:! type) {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %p: ref @F.%ptr.loc16_11.2 (%ptr) = ref_binding p, %p.var
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %n.patt: @F.%pattern_type.loc17 (%pattern_type.51d) = value_binding_pattern n [concrete]
|
||||
// CHECK:STDOUT: %n.patt.loc17_15.1: @F.%pattern_type.loc17 (%pattern_type.51d) = value_binding_pattern n [symbolic = %n.patt.loc17_15.2 (constants.%n.patt)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %p.ref: ref @F.%ptr.loc16_11.2 (%ptr) = name_ref p, %p
|
||||
// CHECK:STDOUT: %.loc17_22: @F.%ptr.loc16_11.2 (%ptr) = acquire_value %p.ref
|
||||
// CHECK:STDOUT: %.loc17_21.1: ref @F.%T.loc15_7.1 (%T.67d) = deref %.loc17_22
|
||||
// CHECK:STDOUT: %T.ref.loc17: type = name_ref T, %T.loc15_7.2 [symbolic = %T.loc15_7.1 (constants.%T.67d)]
|
||||
// CHECK:STDOUT: %.loc17_21.2: @F.%T.loc15_7.1 (%T.67d) = acquire_value %.loc17_21.1
|
||||
// CHECK:STDOUT: %T.ref.loc17: type = name_ref T, %T.loc15_7.2 [symbolic = %T.loc15_7.1 (constants.%T.67d)]
|
||||
// CHECK:STDOUT: %n: @F.%T.loc15_7.1 (%T.67d) = value_binding n, %.loc17_21.2
|
||||
// CHECK:STDOUT: %impl.elem0.loc16_3.1: @F.%.loc16_3.2 (%.9f8) = impl_witness_access constants.%Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc16_3.2 (constants.%impl.elem0.258)]
|
||||
// CHECK:STDOUT: %impl.elem0.loc16_3.1: @F.%.loc16_3.3 (%.9f8) = impl_witness_access constants.%Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc16_3.2 (constants.%impl.elem0.258)]
|
||||
// CHECK:STDOUT: %bound_method.loc16_3.1: <bound method> = bound_method %p.var, %impl.elem0.loc16_3.1
|
||||
// CHECK:STDOUT: %Destroy.facet.loc16_3.1: %Destroy.type = facet_value constants.%ptr, (constants.%Destroy.lookup_impl_witness) [symbolic = %Destroy.facet.loc16_3.2 (constants.%Destroy.facet)]
|
||||
// CHECK:STDOUT: %.loc16_3.1: %Destroy.type = converted constants.%ptr, %Destroy.facet.loc16_3.1 [symbolic = %Destroy.facet.loc16_3.2 (constants.%Destroy.facet)]
|
||||
// CHECK:STDOUT: %Destroy.facet.loc16_3.1: %Destroy.type = facet_value constants.%ptr, (constants.%Destroy.lookup_impl_witness) [symbolic = %Destroy.facet.loc16_3.3 (constants.%Destroy.facet)]
|
||||
// CHECK:STDOUT: %.loc16_3.1: %Destroy.type = converted constants.%ptr, %Destroy.facet.loc16_3.1 [symbolic = %Destroy.facet.loc16_3.3 (constants.%Destroy.facet)]
|
||||
// CHECK:STDOUT: %Destroy.facet.loc16_3.2: %Destroy.type = facet_value constants.%ptr, (constants.%Destroy.lookup_impl_witness) [symbolic = %Destroy.facet.loc16_3.3 (constants.%Destroy.facet)]
|
||||
// CHECK:STDOUT: %.loc16_3.2: %Destroy.type = converted constants.%ptr, %Destroy.facet.loc16_3.2 [symbolic = %Destroy.facet.loc16_3.3 (constants.%Destroy.facet)]
|
||||
// CHECK:STDOUT: %specific_impl_fn.loc16_3.1: <specific function> = specific_impl_function %impl.elem0.loc16_3.1, @Destroy.WithSelf.Op(constants.%Destroy.facet) [symbolic = %specific_impl_fn.loc16_3.2 (constants.%specific_impl_fn.192)]
|
||||
// CHECK:STDOUT: %bound_method.loc16_3.2: <bound method> = bound_method %p.var, %specific_impl_fn.loc16_3.1
|
||||
// CHECK:STDOUT: %Destroy.WithSelf.Op.call: init %empty_tuple.type = call %bound_method.loc16_3.2(%p.var)
|
||||
@@ -142,6 +152,7 @@ fn F(T:! type) {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @F(constants.%T.67d) {
|
||||
// CHECK:STDOUT: %T.patt.loc15_7.2 => constants.%T.patt.d47
|
||||
// CHECK:STDOUT: %T.loc15_7.1 => constants.%T.67d
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
@@ -25,10 +25,17 @@ fn F(T:! type, n: T*) -> T* {
|
||||
// CHECK:STDOUT: --- local_let.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete]
|
||||
// CHECK:STDOUT: %T.patt.d47: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %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: %n.param_patt: %pattern_type.4f4 = value_param_pattern [symbolic]
|
||||
// CHECK:STDOUT: %n.patt: %pattern_type.4f4 = at_binding_pattern n, %n.param_patt [symbolic]
|
||||
// CHECK:STDOUT: %.cb6: Core.Form = init_form %ptr [symbolic]
|
||||
// CHECK:STDOUT: %return.param_patt.27f: %pattern_type.4f4 = out_param_pattern [symbolic]
|
||||
// CHECK:STDOUT: %return.patt.d67: %pattern_type.4f4 = return_slot_pattern %return.param_patt.27f, %ptr [symbolic]
|
||||
// CHECK:STDOUT: %m.patt: %pattern_type.4f4 = value_binding_pattern m [symbolic]
|
||||
// CHECK:STDOUT: %Copy.type: type = facet_type <@Copy> [concrete]
|
||||
// CHECK:STDOUT: %Copy.lookup_impl_witness.1da: <witness> = lookup_impl_witness %ptr, @Copy [symbolic]
|
||||
// CHECK:STDOUT: %.0e9: require_specific_def_type = require_specific_def @ptr.as.Copy.impl(%T.67d) [symbolic]
|
||||
@@ -44,18 +51,19 @@ fn F(T:! type, n: T*) -> T* {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: <elided>
|
||||
// CHECK:STDOUT: %.loc7_10.2: require_specific_def_type = require_specific_def @ptr.as.Copy.impl(%T.loc4_7.1) [symbolic = %.loc7_10.2 (constants.%.0e9)]
|
||||
// CHECK:STDOUT: %m.patt.loc6_8.2: @F.%pattern_type (%pattern_type.4f4) = value_binding_pattern m [symbolic = %m.patt.loc6_8.2 (constants.%m.patt)]
|
||||
// CHECK:STDOUT: %.loc7_10.3: require_specific_def_type = require_specific_def @ptr.as.Copy.impl(%T.loc4_7.1) [symbolic = %.loc7_10.3 (constants.%.0e9)]
|
||||
// CHECK:STDOUT: %Copy.lookup_impl_witness: <witness> = lookup_impl_witness %ptr.loc4_20.1, @Copy [symbolic = %Copy.lookup_impl_witness (constants.%Copy.lookup_impl_witness.1da)]
|
||||
// CHECK:STDOUT: %Copy.facet.loc7_10.2: %Copy.type = facet_value %ptr.loc4_20.1, (%Copy.lookup_impl_witness) [symbolic = %Copy.facet.loc7_10.2 (constants.%Copy.facet)]
|
||||
// CHECK:STDOUT: %Copy.WithSelf.Op.type: type = fn_type @Copy.WithSelf.Op, @Copy.WithSelf(%Copy.facet.loc7_10.2) [symbolic = %Copy.WithSelf.Op.type (constants.%Copy.WithSelf.Op.type.884)]
|
||||
// CHECK:STDOUT: %.loc7_10.3: type = fn_type_with_self_type %Copy.WithSelf.Op.type, %Copy.facet.loc7_10.2 [symbolic = %.loc7_10.3 (constants.%.be5)]
|
||||
// CHECK:STDOUT: %impl.elem0.loc7_10.2: @F.%.loc7_10.3 (%.be5) = impl_witness_access %Copy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc7_10.2 (constants.%impl.elem0.484)]
|
||||
// CHECK:STDOUT: %specific_impl_fn.loc7_10.2: <specific function> = specific_impl_function %impl.elem0.loc7_10.2, @Copy.WithSelf.Op(%Copy.facet.loc7_10.2) [symbolic = %specific_impl_fn.loc7_10.2 (constants.%specific_impl_fn.a76)]
|
||||
// CHECK:STDOUT: %Copy.facet.loc7_10.3: %Copy.type = facet_value %ptr.loc4_20.1, (%Copy.lookup_impl_witness) [symbolic = %Copy.facet.loc7_10.3 (constants.%Copy.facet)]
|
||||
// CHECK:STDOUT: %Copy.WithSelf.Op.type: type = fn_type @Copy.WithSelf.Op, @Copy.WithSelf(%Copy.facet.loc7_10.3) [symbolic = %Copy.WithSelf.Op.type (constants.%Copy.WithSelf.Op.type.884)]
|
||||
// CHECK:STDOUT: %.loc7_10.4: type = fn_type_with_self_type %Copy.WithSelf.Op.type, %Copy.facet.loc7_10.3 [symbolic = %.loc7_10.4 (constants.%.be5)]
|
||||
// CHECK:STDOUT: %impl.elem0.loc7_10.2: @F.%.loc7_10.4 (%.be5) = impl_witness_access %Copy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc7_10.2 (constants.%impl.elem0.484)]
|
||||
// CHECK:STDOUT: %specific_impl_fn.loc7_10.2: <specific function> = specific_impl_function %impl.elem0.loc7_10.2, @Copy.WithSelf.Op(%Copy.facet.loc7_10.3) [symbolic = %specific_impl_fn.loc7_10.2 (constants.%specific_impl_fn.a76)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn(%n.param: @F.%ptr.loc4_20.1 (%ptr)) -> out %return.param: @F.%ptr.loc4_20.1 (%ptr) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %m.patt: @F.%pattern_type (%pattern_type.4f4) = value_binding_pattern m [concrete]
|
||||
// CHECK:STDOUT: %m.patt.loc6_8.1: @F.%pattern_type (%pattern_type.4f4) = value_binding_pattern m [symbolic = %m.patt.loc6_8.2 (constants.%m.patt)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %n.ref: @F.%ptr.loc4_20.1 (%ptr) = name_ref n, %n
|
||||
// CHECK:STDOUT: %.loc6: type = splice_block %ptr.loc6 [symbolic = %ptr.loc4_20.1 (constants.%ptr)] {
|
||||
@@ -64,10 +72,12 @@ fn F(T:! type, n: T*) -> T* {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %m: @F.%ptr.loc4_20.1 (%ptr) = value_binding m, %n.ref
|
||||
// CHECK:STDOUT: %m.ref: @F.%ptr.loc4_20.1 (%ptr) = name_ref m, %m
|
||||
// CHECK:STDOUT: %impl.elem0.loc7_10.1: @F.%.loc7_10.3 (%.be5) = impl_witness_access constants.%Copy.lookup_impl_witness.1da, element0 [symbolic = %impl.elem0.loc7_10.2 (constants.%impl.elem0.484)]
|
||||
// CHECK:STDOUT: %impl.elem0.loc7_10.1: @F.%.loc7_10.4 (%.be5) = impl_witness_access constants.%Copy.lookup_impl_witness.1da, element0 [symbolic = %impl.elem0.loc7_10.2 (constants.%impl.elem0.484)]
|
||||
// CHECK:STDOUT: %bound_method.loc7_10.1: <bound method> = bound_method %m.ref, %impl.elem0.loc7_10.1
|
||||
// CHECK:STDOUT: %Copy.facet.loc7_10.1: %Copy.type = facet_value constants.%ptr, (constants.%Copy.lookup_impl_witness.1da) [symbolic = %Copy.facet.loc7_10.2 (constants.%Copy.facet)]
|
||||
// CHECK:STDOUT: %.loc7_10.1: %Copy.type = converted constants.%ptr, %Copy.facet.loc7_10.1 [symbolic = %Copy.facet.loc7_10.2 (constants.%Copy.facet)]
|
||||
// CHECK:STDOUT: %Copy.facet.loc7_10.1: %Copy.type = facet_value constants.%ptr, (constants.%Copy.lookup_impl_witness.1da) [symbolic = %Copy.facet.loc7_10.3 (constants.%Copy.facet)]
|
||||
// CHECK:STDOUT: %.loc7_10.1: %Copy.type = converted constants.%ptr, %Copy.facet.loc7_10.1 [symbolic = %Copy.facet.loc7_10.3 (constants.%Copy.facet)]
|
||||
// CHECK:STDOUT: %Copy.facet.loc7_10.2: %Copy.type = facet_value constants.%ptr, (constants.%Copy.lookup_impl_witness.1da) [symbolic = %Copy.facet.loc7_10.3 (constants.%Copy.facet)]
|
||||
// CHECK:STDOUT: %.loc7_10.2: %Copy.type = converted constants.%ptr, %Copy.facet.loc7_10.2 [symbolic = %Copy.facet.loc7_10.3 (constants.%Copy.facet)]
|
||||
// CHECK:STDOUT: %specific_impl_fn.loc7_10.1: <specific function> = specific_impl_function %impl.elem0.loc7_10.1, @Copy.WithSelf.Op(constants.%Copy.facet) [symbolic = %specific_impl_fn.loc7_10.2 (constants.%specific_impl_fn.a76)]
|
||||
// CHECK:STDOUT: %bound_method.loc7_10.2: <bound method> = bound_method %m.ref, %specific_impl_fn.loc7_10.1
|
||||
// CHECK:STDOUT: %Copy.WithSelf.Op.call: init @F.%ptr.loc4_20.1 (%ptr) = call %bound_method.loc7_10.2(%m.ref)
|
||||
@@ -76,9 +86,14 @@ fn F(T:! type, n: T*) -> T* {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @F(constants.%T.67d) {
|
||||
// CHECK:STDOUT: %T.patt.loc4_7.2 => constants.%T.patt.d47
|
||||
// CHECK:STDOUT: %T.loc4_7.1 => constants.%T.67d
|
||||
// CHECK:STDOUT: %ptr.loc4_20.1 => constants.%ptr
|
||||
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.4f4
|
||||
// CHECK:STDOUT: %n.param_patt.loc4_17.2 => constants.%n.param_patt
|
||||
// CHECK:STDOUT: %n.patt.loc4_17.2 => constants.%n.patt
|
||||
// CHECK:STDOUT: %.loc4_27.1 => constants.%.cb6
|
||||
// CHECK:STDOUT: %return.param_patt.loc4_27.2 => constants.%return.param_patt.27f
|
||||
// CHECK:STDOUT: %return.patt.loc4_23.2 => constants.%return.patt.d67
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
Reference in New Issue
Block a user