mirror of
https://github.com/carbon-language/carbon-lang.git
synced 2026-10-05 22:02:55 +01:00
Implement unused pattern bindings, continued (#6518)
Implementation of unused pattern bindings #2022, continued. Whereas previous PR #6460 took care of parsing, and PR #6479 prepared the stage by using _ in some test cases, this PR has the the actual implementation, using a simple dataflow analysis. --------- Co-authored-by: Burak Emir <bqe@google.com> Co-authored-by: jonmeow <jperkins@google.com>
This commit is contained in:
co-authored by
Burak Emir
jonmeow
parent
bea24a8bee
commit
fdb188ccfd
@@ -12,7 +12,7 @@
|
||||
// TIP: To dump output, run:
|
||||
// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/return/code_after_return_value.carbon
|
||||
|
||||
fn F(b: bool) -> i32 {
|
||||
fn F(unused b: bool) -> i32 {
|
||||
return 0;
|
||||
|
||||
// Exercise various forms of control flow to check that we still consider the
|
||||
@@ -89,12 +89,12 @@ fn F(b: bool) -> i32 {
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %.loc15_18: Core.Form = init_form %i32, call_param1 [concrete = constants.%.e54]
|
||||
// CHECK:STDOUT: %.loc15_25: Core.Form = init_form %i32, call_param1 [concrete = constants.%.e54]
|
||||
// CHECK:STDOUT: %b.param: bool = value_param call_param0
|
||||
// CHECK:STDOUT: %.loc15_9.1: type = splice_block %.loc15_9.3 [concrete = bool] {
|
||||
// CHECK:STDOUT: %.loc15_16.1: type = splice_block %.loc15_16.3 [concrete = bool] {
|
||||
// CHECK:STDOUT: %Bool.call: init type = call constants.%Bool() [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc15_9.2: type = value_of_initializer %Bool.call [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc15_9.3: type = converted %Bool.call, %.loc15_9.2 [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc15_16.2: type = value_of_initializer %Bool.call [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc15_16.3: type = converted %Bool.call, %.loc15_16.2 [concrete = bool]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %b: bool = value_binding b, %b.param
|
||||
// CHECK:STDOUT: %return.param: ref %i32 = out_param call_param1
|
||||
|
||||
@@ -18,13 +18,13 @@ library "[[@TEST_NAME]]";
|
||||
|
||||
fn Procedure() {
|
||||
// CHECK:STDERR: fail_procedure_with_returned_var.carbon:[[@LINE+7]]:3: error: cannot declare a `returned var` in this function [ReturnedVarWithNoReturnType]
|
||||
// CHECK:STDERR: returned var v: () = ();
|
||||
// CHECK:STDERR: returned var unused v: () = ();
|
||||
// CHECK:STDERR: ^~~~~~~~
|
||||
// CHECK:STDERR: fail_procedure_with_returned_var.carbon:[[@LINE-4]]:1: note: there was no return type provided [ReturnTypeOmittedNote]
|
||||
// CHECK:STDERR: fn Procedure() {
|
||||
// CHECK:STDERR: ^~~~~~~~~~~~~~~~
|
||||
// CHECK:STDERR:
|
||||
returned var v: () = ();
|
||||
returned var unused v: () = ();
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -34,13 +34,13 @@ library "[[@TEST_NAME]]";
|
||||
|
||||
fn ForgotReturnType() {
|
||||
// CHECK:STDERR: fail_forgot_return_type.carbon:[[@LINE+7]]:3: error: cannot declare a `returned var` in this function [ReturnedVarWithNoReturnType]
|
||||
// CHECK:STDERR: returned var v: () = ();
|
||||
// CHECK:STDERR: returned var unused v: () = ();
|
||||
// CHECK:STDERR: ^~~~~~~~
|
||||
// CHECK:STDERR: fail_forgot_return_type.carbon:[[@LINE-4]]:1: note: there was no return type provided [ReturnTypeOmittedNote]
|
||||
// CHECK:STDERR: fn ForgotReturnType() {
|
||||
// CHECK:STDERR: ^~~~~~~~~~~~~~~~~~~~~~~
|
||||
// CHECK:STDERR:
|
||||
returned var v: () = ();
|
||||
returned var unused v: () = ();
|
||||
// CHECK:STDERR: fail_forgot_return_type.carbon:[[@LINE+4]]:3: error: `return var;` with no `returned var` in scope [ReturnVarWithNoReturnedVar]
|
||||
// CHECK:STDERR: return var;
|
||||
// CHECK:STDERR: ^~~~~~~~~~~
|
||||
@@ -86,13 +86,13 @@ fn ForgotReturnType() {
|
||||
// CHECK:STDOUT: %v.var_patt: %pattern_type.cb1 = var_pattern %v.patt [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %v.var: ref %empty_tuple.type = var %v.var_patt
|
||||
// CHECK:STDOUT: %.loc12_25.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple]
|
||||
// CHECK:STDOUT: %.loc12_25.2: init %empty_tuple.type = tuple_init () [concrete = constants.%empty_tuple]
|
||||
// CHECK:STDOUT: %.loc12_12: init %empty_tuple.type = converted %.loc12_25.1, %.loc12_25.2 [concrete = constants.%empty_tuple]
|
||||
// CHECK:STDOUT: %.loc12_32.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple]
|
||||
// CHECK:STDOUT: %.loc12_32.2: init %empty_tuple.type = tuple_init () [concrete = constants.%empty_tuple]
|
||||
// CHECK:STDOUT: %.loc12_12: init %empty_tuple.type = converted %.loc12_32.1, %.loc12_32.2 [concrete = constants.%empty_tuple]
|
||||
// CHECK:STDOUT: assign %v.var, %.loc12_12
|
||||
// CHECK:STDOUT: %.loc12_20.1: type = splice_block %.loc12_20.3 [concrete = constants.%empty_tuple.type] {
|
||||
// CHECK:STDOUT: %.loc12_20.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple]
|
||||
// CHECK:STDOUT: %.loc12_20.3: type = converted %.loc12_20.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %.loc12_27.1: type = splice_block %.loc12_27.3 [concrete = constants.%empty_tuple.type] {
|
||||
// CHECK:STDOUT: %.loc12_27.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple]
|
||||
// CHECK:STDOUT: %.loc12_27.3: type = converted %.loc12_27.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %v: ref %empty_tuple.type = ref_binding v, %v.var
|
||||
// CHECK:STDOUT: %DestroyOp.bound: <bound method> = bound_method %v.var, constants.%DestroyOp
|
||||
@@ -140,13 +140,13 @@ fn ForgotReturnType() {
|
||||
// CHECK:STDOUT: %v.var_patt: %pattern_type.cb1 = var_pattern %v.patt [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %v.var: ref %empty_tuple.type = var %v.var_patt
|
||||
// CHECK:STDOUT: %.loc12_25.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple]
|
||||
// CHECK:STDOUT: %.loc12_25.2: init %empty_tuple.type = tuple_init () [concrete = constants.%empty_tuple]
|
||||
// CHECK:STDOUT: %.loc12_12: init %empty_tuple.type = converted %.loc12_25.1, %.loc12_25.2 [concrete = constants.%empty_tuple]
|
||||
// CHECK:STDOUT: %.loc12_32.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple]
|
||||
// CHECK:STDOUT: %.loc12_32.2: init %empty_tuple.type = tuple_init () [concrete = constants.%empty_tuple]
|
||||
// CHECK:STDOUT: %.loc12_12: init %empty_tuple.type = converted %.loc12_32.1, %.loc12_32.2 [concrete = constants.%empty_tuple]
|
||||
// CHECK:STDOUT: assign %v.var, %.loc12_12
|
||||
// CHECK:STDOUT: %.loc12_20.1: type = splice_block %.loc12_20.3 [concrete = constants.%empty_tuple.type] {
|
||||
// CHECK:STDOUT: %.loc12_20.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple]
|
||||
// CHECK:STDOUT: %.loc12_20.3: type = converted %.loc12_20.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %.loc12_27.1: type = splice_block %.loc12_27.3 [concrete = constants.%empty_tuple.type] {
|
||||
// CHECK:STDOUT: %.loc12_27.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple]
|
||||
// CHECK:STDOUT: %.loc12_27.3: type = converted %.loc12_27.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %v: ref %empty_tuple.type = ref_binding v, %v.var
|
||||
// CHECK:STDOUT: %DestroyOp.bound: <bound method> = bound_method %v.var, constants.%DestroyOp
|
||||
|
||||
+10
-10
@@ -15,14 +15,14 @@
|
||||
fn SameScope() -> i32 {
|
||||
if (true) {
|
||||
returned var v: i32 = 0;
|
||||
// CHECK:STDERR: fail_returned_var_shadow.carbon:[[@LINE+7]]:18: error: cannot declare a `returned var` in the scope of another `returned var` [ReturnedVarShadowed]
|
||||
// CHECK:STDERR: returned var w: i32 = 1;
|
||||
// CHECK:STDERR: ^
|
||||
// CHECK:STDERR: fail_returned_var_shadow.carbon:[[@LINE+7]]:25: error: cannot declare a `returned var` in the scope of another `returned var` [ReturnedVarShadowed]
|
||||
// CHECK:STDERR: returned var unused w: i32 = 1;
|
||||
// CHECK:STDERR: ^
|
||||
// CHECK:STDERR: fail_returned_var_shadow.carbon:[[@LINE-4]]:18: note: `returned var` was declared here [ReturnedVarHere]
|
||||
// CHECK:STDERR: returned var v: i32 = 0;
|
||||
// CHECK:STDERR: ^
|
||||
// CHECK:STDERR:
|
||||
returned var w: i32 = 1;
|
||||
returned var unused w: i32 = 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
@@ -31,14 +31,14 @@ fn DifferentScopes() -> i32 {
|
||||
if (true) {
|
||||
returned var v: i32 = 0;
|
||||
if (true) {
|
||||
// CHECK:STDERR: fail_returned_var_shadow.carbon:[[@LINE+7]]:20: error: cannot declare a `returned var` in the scope of another `returned var` [ReturnedVarShadowed]
|
||||
// CHECK:STDERR: returned var w: i32 = 1;
|
||||
// CHECK:STDERR: ^
|
||||
// CHECK:STDERR: fail_returned_var_shadow.carbon:[[@LINE+7]]:27: error: cannot declare a `returned var` in the scope of another `returned var` [ReturnedVarShadowed]
|
||||
// CHECK:STDERR: returned var unused w: i32 = 1;
|
||||
// CHECK:STDERR: ^
|
||||
// CHECK:STDERR: fail_returned_var_shadow.carbon:[[@LINE-5]]:18: note: `returned var` was declared here [ReturnedVarHere]
|
||||
// CHECK:STDERR: returned var v: i32 = 0;
|
||||
// CHECK:STDERR: ^
|
||||
// CHECK:STDERR:
|
||||
returned var w: i32 = 1;
|
||||
returned var unused w: i32 = 1;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
@@ -166,7 +166,7 @@ fn DifferentScopes() -> i32 {
|
||||
// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc25: init %i32 = call %bound_method.loc25_14.2(%int_1) [concrete = constants.%int_1.5d2]
|
||||
// CHECK:STDOUT: %.loc25_14: init %i32 = converted %int_1, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc25 [concrete = constants.%int_1.5d2]
|
||||
// CHECK:STDOUT: assign %w.var, %.loc25_14
|
||||
// CHECK:STDOUT: %.loc25_21: type = splice_block %i32.loc25 [concrete = constants.%i32] {
|
||||
// CHECK:STDOUT: %.loc25_28: type = splice_block %i32.loc25 [concrete = constants.%i32] {
|
||||
// CHECK:STDOUT: %int_32.loc25: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32.loc25: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
@@ -231,7 +231,7 @@ fn DifferentScopes() -> i32 {
|
||||
// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc41: init %i32 = call %bound_method.loc41_16.2(%int_1) [concrete = constants.%int_1.5d2]
|
||||
// CHECK:STDOUT: %.loc41_16: init %i32 = converted %int_1, %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc41 [concrete = constants.%int_1.5d2]
|
||||
// CHECK:STDOUT: assign %w.var, %.loc41_16
|
||||
// CHECK:STDOUT: %.loc41_23: type = splice_block %i32.loc41 [concrete = constants.%i32] {
|
||||
// CHECK:STDOUT: %.loc41_30: type = splice_block %i32.loc41 [concrete = constants.%i32] {
|
||||
// CHECK:STDOUT: %int_32.loc41: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32.loc41: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
+61
-61
@@ -20,14 +20,14 @@ class C(N:! i32) {}
|
||||
class D { var n: i32; var m: i32; }
|
||||
fn Make() -> D { return {.n = 0, .m = 0}; }
|
||||
|
||||
impl C(0) as Core.ImplicitAs(D) { fn Convert[self: Self]() -> D { return Make(); } }
|
||||
impl C(1) as Core.ImplicitAs(D) { fn Convert[self: Self]() -> D { return Make(); } }
|
||||
impl C(2) as Core.ImplicitAs(D) { fn Convert[self: Self]() -> D { return Make(); } }
|
||||
impl C(3) as Core.ImplicitAs(D) { fn Convert[self: Self]() -> D { return Make(); } }
|
||||
impl C(4) as Core.ImplicitAs(D) { fn Convert[self: Self]() -> D { return Make(); } }
|
||||
impl C(5) as Core.ImplicitAs(D) { fn Convert[self: Self]() -> D { return Make(); } }
|
||||
impl C(6) as Core.ImplicitAs(D) { fn Convert[self: Self]() -> D { return Make(); } }
|
||||
impl C(7) as Core.ImplicitAs(D) { fn Convert[self: Self]() -> D { return Make(); } }
|
||||
impl C(0) as Core.ImplicitAs(D) { fn Convert[unused self: Self]() -> D { return Make(); } }
|
||||
impl C(1) as Core.ImplicitAs(D) { fn Convert[unused self: Self]() -> D { return Make(); } }
|
||||
impl C(2) as Core.ImplicitAs(D) { fn Convert[unused self: Self]() -> D { return Make(); } }
|
||||
impl C(3) as Core.ImplicitAs(D) { fn Convert[unused self: Self]() -> D { return Make(); } }
|
||||
impl C(4) as Core.ImplicitAs(D) { fn Convert[unused self: Self]() -> D { return Make(); } }
|
||||
impl C(5) as Core.ImplicitAs(D) { fn Convert[unused self: Self]() -> D { return Make(); } }
|
||||
impl C(6) as Core.ImplicitAs(D) { fn Convert[unused self: Self]() -> D { return Make(); } }
|
||||
impl C(7) as Core.ImplicitAs(D) { fn Convert[unused self: Self]() -> D { return Make(); } }
|
||||
|
||||
// --- user.carbon
|
||||
|
||||
@@ -35,7 +35,7 @@ import P library "library";
|
||||
|
||||
// Check that we don't crash if we import functions and reallocate the function
|
||||
// value store while handling a `return` statement.
|
||||
fn F0(n: i32) -> P.D {
|
||||
fn F0(unused n: i32) -> P.D {
|
||||
if (false) { return {} as P.C(0); }
|
||||
if (false) { return {} as P.C(1); }
|
||||
if (false) { return {} as P.C(2); }
|
||||
@@ -342,7 +342,7 @@ fn F0(n: i32) -> P.D {
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.c49 = out_param_pattern %return.patt, call_param1 [concrete]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [concrete = constants.%D]
|
||||
// CHECK:STDOUT: %.loc8_63.2: Core.Form = init_form %D.ref, call_param1 [concrete = constants.%.b61]
|
||||
// CHECK:STDOUT: %.loc8_70.2: Core.Form = init_form %D.ref, call_param1 [concrete = constants.%.b61]
|
||||
// CHECK:STDOUT: %self.param: %C.4f5 = value_param call_param0
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, @C.as.ImplicitAs.impl.c43.%C [concrete = constants.%C.4f5]
|
||||
// CHECK:STDOUT: %self: %C.4f5 = value_binding self, %self.param
|
||||
@@ -367,7 +367,7 @@ fn F0(n: i32) -> P.D {
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.c49 = out_param_pattern %return.patt, call_param1 [concrete]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [concrete = constants.%D]
|
||||
// CHECK:STDOUT: %.loc9_63.2: Core.Form = init_form %D.ref, call_param1 [concrete = constants.%.b61]
|
||||
// CHECK:STDOUT: %.loc9_70.2: Core.Form = init_form %D.ref, call_param1 [concrete = constants.%.b61]
|
||||
// CHECK:STDOUT: %self.param: %C.95b = value_param call_param0
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, @C.as.ImplicitAs.impl.7c3.%C [concrete = constants.%C.95b]
|
||||
// CHECK:STDOUT: %self: %C.95b = value_binding self, %self.param
|
||||
@@ -392,7 +392,7 @@ fn F0(n: i32) -> P.D {
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.c49 = out_param_pattern %return.patt, call_param1 [concrete]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [concrete = constants.%D]
|
||||
// CHECK:STDOUT: %.loc10_63.2: Core.Form = init_form %D.ref, call_param1 [concrete = constants.%.b61]
|
||||
// CHECK:STDOUT: %.loc10_70.2: Core.Form = init_form %D.ref, call_param1 [concrete = constants.%.b61]
|
||||
// CHECK:STDOUT: %self.param: %C.a93 = value_param call_param0
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, @C.as.ImplicitAs.impl.fa3.%C [concrete = constants.%C.a93]
|
||||
// CHECK:STDOUT: %self: %C.a93 = value_binding self, %self.param
|
||||
@@ -417,7 +417,7 @@ fn F0(n: i32) -> P.D {
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.c49 = out_param_pattern %return.patt, call_param1 [concrete]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [concrete = constants.%D]
|
||||
// CHECK:STDOUT: %.loc11_63.2: Core.Form = init_form %D.ref, call_param1 [concrete = constants.%.b61]
|
||||
// CHECK:STDOUT: %.loc11_70.2: Core.Form = init_form %D.ref, call_param1 [concrete = constants.%.b61]
|
||||
// CHECK:STDOUT: %self.param: %C.1d7 = value_param call_param0
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, @C.as.ImplicitAs.impl.158.%C [concrete = constants.%C.1d7]
|
||||
// CHECK:STDOUT: %self: %C.1d7 = value_binding self, %self.param
|
||||
@@ -442,7 +442,7 @@ fn F0(n: i32) -> P.D {
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.c49 = out_param_pattern %return.patt, call_param1 [concrete]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [concrete = constants.%D]
|
||||
// CHECK:STDOUT: %.loc12_63.2: Core.Form = init_form %D.ref, call_param1 [concrete = constants.%.b61]
|
||||
// CHECK:STDOUT: %.loc12_70.2: Core.Form = init_form %D.ref, call_param1 [concrete = constants.%.b61]
|
||||
// CHECK:STDOUT: %self.param: %C.e40 = value_param call_param0
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, @C.as.ImplicitAs.impl.f64.%C [concrete = constants.%C.e40]
|
||||
// CHECK:STDOUT: %self: %C.e40 = value_binding self, %self.param
|
||||
@@ -467,7 +467,7 @@ fn F0(n: i32) -> P.D {
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.c49 = out_param_pattern %return.patt, call_param1 [concrete]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [concrete = constants.%D]
|
||||
// CHECK:STDOUT: %.loc13_63.2: Core.Form = init_form %D.ref, call_param1 [concrete = constants.%.b61]
|
||||
// CHECK:STDOUT: %.loc13_70.2: Core.Form = init_form %D.ref, call_param1 [concrete = constants.%.b61]
|
||||
// CHECK:STDOUT: %self.param: %C.3f1 = value_param call_param0
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, @C.as.ImplicitAs.impl.d86.%C [concrete = constants.%C.3f1]
|
||||
// CHECK:STDOUT: %self: %C.3f1 = value_binding self, %self.param
|
||||
@@ -492,7 +492,7 @@ fn F0(n: i32) -> P.D {
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.c49 = out_param_pattern %return.patt, call_param1 [concrete]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [concrete = constants.%D]
|
||||
// CHECK:STDOUT: %.loc14_63.2: Core.Form = init_form %D.ref, call_param1 [concrete = constants.%.b61]
|
||||
// CHECK:STDOUT: %.loc14_70.2: Core.Form = init_form %D.ref, call_param1 [concrete = constants.%.b61]
|
||||
// CHECK:STDOUT: %self.param: %C.0fa = value_param call_param0
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, @C.as.ImplicitAs.impl.f13.%C [concrete = constants.%C.0fa]
|
||||
// CHECK:STDOUT: %self: %C.0fa = value_binding self, %self.param
|
||||
@@ -517,7 +517,7 @@ fn F0(n: i32) -> P.D {
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.c49 = out_param_pattern %return.patt, call_param1 [concrete]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [concrete = constants.%D]
|
||||
// CHECK:STDOUT: %.loc15_63.2: Core.Form = init_form %D.ref, call_param1 [concrete = constants.%.b61]
|
||||
// CHECK:STDOUT: %.loc15_70.2: Core.Form = init_form %D.ref, call_param1 [concrete = constants.%.b61]
|
||||
// CHECK:STDOUT: %self.param: %C.2b7 = value_param call_param0
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, @C.as.ImplicitAs.impl.83b.%C [concrete = constants.%C.2b7]
|
||||
// CHECK:STDOUT: %self: %C.2b7 = value_binding self, %self.param
|
||||
@@ -593,64 +593,64 @@ fn F0(n: i32) -> P.D {
|
||||
// CHECK:STDOUT: fn @C.as.ImplicitAs.impl.Convert.loc8(%self.param: %C.4f5) -> out %return.param: %D {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %Make.ref: %Make.type = name_ref Make, file.%Make.decl [concrete = constants.%Make]
|
||||
// CHECK:STDOUT: %.loc8_63.1: ref %D = splice_block %return.param {}
|
||||
// CHECK:STDOUT: %Make.call: init %D to %.loc8_63.1 = call %Make.ref()
|
||||
// CHECK:STDOUT: %.loc8_70.1: ref %D = splice_block %return.param {}
|
||||
// CHECK:STDOUT: %Make.call: init %D to %.loc8_70.1 = call %Make.ref()
|
||||
// CHECK:STDOUT: return %Make.call to %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @C.as.ImplicitAs.impl.Convert.loc9(%self.param: %C.95b) -> out %return.param: %D {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %Make.ref: %Make.type = name_ref Make, file.%Make.decl [concrete = constants.%Make]
|
||||
// CHECK:STDOUT: %.loc9_63.1: ref %D = splice_block %return.param {}
|
||||
// CHECK:STDOUT: %Make.call: init %D to %.loc9_63.1 = call %Make.ref()
|
||||
// CHECK:STDOUT: %.loc9_70.1: ref %D = splice_block %return.param {}
|
||||
// CHECK:STDOUT: %Make.call: init %D to %.loc9_70.1 = call %Make.ref()
|
||||
// CHECK:STDOUT: return %Make.call to %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @C.as.ImplicitAs.impl.Convert.loc10(%self.param: %C.a93) -> out %return.param: %D {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %Make.ref: %Make.type = name_ref Make, file.%Make.decl [concrete = constants.%Make]
|
||||
// CHECK:STDOUT: %.loc10_63.1: ref %D = splice_block %return.param {}
|
||||
// CHECK:STDOUT: %Make.call: init %D to %.loc10_63.1 = call %Make.ref()
|
||||
// CHECK:STDOUT: %.loc10_70.1: ref %D = splice_block %return.param {}
|
||||
// CHECK:STDOUT: %Make.call: init %D to %.loc10_70.1 = call %Make.ref()
|
||||
// CHECK:STDOUT: return %Make.call to %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @C.as.ImplicitAs.impl.Convert.loc11(%self.param: %C.1d7) -> out %return.param: %D {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %Make.ref: %Make.type = name_ref Make, file.%Make.decl [concrete = constants.%Make]
|
||||
// CHECK:STDOUT: %.loc11_63.1: ref %D = splice_block %return.param {}
|
||||
// CHECK:STDOUT: %Make.call: init %D to %.loc11_63.1 = call %Make.ref()
|
||||
// CHECK:STDOUT: %.loc11_70.1: ref %D = splice_block %return.param {}
|
||||
// CHECK:STDOUT: %Make.call: init %D to %.loc11_70.1 = call %Make.ref()
|
||||
// CHECK:STDOUT: return %Make.call to %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @C.as.ImplicitAs.impl.Convert.loc12(%self.param: %C.e40) -> out %return.param: %D {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %Make.ref: %Make.type = name_ref Make, file.%Make.decl [concrete = constants.%Make]
|
||||
// CHECK:STDOUT: %.loc12_63.1: ref %D = splice_block %return.param {}
|
||||
// CHECK:STDOUT: %Make.call: init %D to %.loc12_63.1 = call %Make.ref()
|
||||
// CHECK:STDOUT: %.loc12_70.1: ref %D = splice_block %return.param {}
|
||||
// CHECK:STDOUT: %Make.call: init %D to %.loc12_70.1 = call %Make.ref()
|
||||
// CHECK:STDOUT: return %Make.call to %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @C.as.ImplicitAs.impl.Convert.loc13(%self.param: %C.3f1) -> out %return.param: %D {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %Make.ref: %Make.type = name_ref Make, file.%Make.decl [concrete = constants.%Make]
|
||||
// CHECK:STDOUT: %.loc13_63.1: ref %D = splice_block %return.param {}
|
||||
// CHECK:STDOUT: %Make.call: init %D to %.loc13_63.1 = call %Make.ref()
|
||||
// CHECK:STDOUT: %.loc13_70.1: ref %D = splice_block %return.param {}
|
||||
// CHECK:STDOUT: %Make.call: init %D to %.loc13_70.1 = call %Make.ref()
|
||||
// CHECK:STDOUT: return %Make.call to %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @C.as.ImplicitAs.impl.Convert.loc14(%self.param: %C.0fa) -> out %return.param: %D {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %Make.ref: %Make.type = name_ref Make, file.%Make.decl [concrete = constants.%Make]
|
||||
// CHECK:STDOUT: %.loc14_63.1: ref %D = splice_block %return.param {}
|
||||
// CHECK:STDOUT: %Make.call: init %D to %.loc14_63.1 = call %Make.ref()
|
||||
// CHECK:STDOUT: %.loc14_70.1: ref %D = splice_block %return.param {}
|
||||
// CHECK:STDOUT: %Make.call: init %D to %.loc14_70.1 = call %Make.ref()
|
||||
// CHECK:STDOUT: return %Make.call to %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @C.as.ImplicitAs.impl.Convert.loc15(%self.param: %C.2b7) -> out %return.param: %D {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %Make.ref: %Make.type = name_ref Make, file.%Make.decl [concrete = constants.%Make]
|
||||
// CHECK:STDOUT: %.loc15_63.1: ref %D = splice_block %return.param {}
|
||||
// CHECK:STDOUT: %Make.call: init %D to %.loc15_63.1 = call %Make.ref()
|
||||
// CHECK:STDOUT: %.loc15_70.1: ref %D = splice_block %return.param {}
|
||||
// CHECK:STDOUT: %Make.call: init %D to %.loc15_70.1 = call %Make.ref()
|
||||
// CHECK:STDOUT: return %Make.call to %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -911,22 +911,22 @@ fn F0(n: i32) -> P.D {
|
||||
// CHECK:STDOUT: %P.import_ref.24c: <witness> = import_ref P//library, loc15_33, loaded [concrete = constants.%ImplicitAs.impl_witness.356]
|
||||
// CHECK:STDOUT: %P.import_ref.854: type = import_ref P//library, loc15_9, loaded [concrete = constants.%C.304]
|
||||
// CHECK:STDOUT: %P.import_ref.68d5e2.8: type = import_ref P//library, loc15_31, loaded [concrete = constants.%ImplicitAs.type.899]
|
||||
// CHECK:STDOUT: %P.import_ref.623: %C.as.ImplicitAs.impl.Convert.type.994 = import_ref P//library, loc8_65, loaded [concrete = constants.%C.as.ImplicitAs.impl.Convert.78d]
|
||||
// CHECK:STDOUT: %P.import_ref.623: %C.as.ImplicitAs.impl.Convert.type.994 = import_ref P//library, loc8_72, loaded [concrete = constants.%C.as.ImplicitAs.impl.Convert.78d]
|
||||
// CHECK:STDOUT: %ImplicitAs.impl_witness_table.1e8 = impl_witness_table (%P.import_ref.623), @C.as.ImplicitAs.impl.87c [concrete]
|
||||
// CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type]
|
||||
// CHECK:STDOUT: %P.import_ref.a4a: %C.as.ImplicitAs.impl.Convert.type.900 = import_ref P//library, loc9_65, loaded [concrete = constants.%C.as.ImplicitAs.impl.Convert.b44]
|
||||
// CHECK:STDOUT: %P.import_ref.a4a: %C.as.ImplicitAs.impl.Convert.type.900 = import_ref P//library, loc9_72, loaded [concrete = constants.%C.as.ImplicitAs.impl.Convert.b44]
|
||||
// CHECK:STDOUT: %ImplicitAs.impl_witness_table.c5c = impl_witness_table (%P.import_ref.a4a), @C.as.ImplicitAs.impl.a01 [concrete]
|
||||
// CHECK:STDOUT: %P.import_ref.e4a: %C.as.ImplicitAs.impl.Convert.type.ae1 = import_ref P//library, loc10_65, loaded [concrete = constants.%C.as.ImplicitAs.impl.Convert.dd6]
|
||||
// CHECK:STDOUT: %P.import_ref.e4a: %C.as.ImplicitAs.impl.Convert.type.ae1 = import_ref P//library, loc10_72, loaded [concrete = constants.%C.as.ImplicitAs.impl.Convert.dd6]
|
||||
// CHECK:STDOUT: %ImplicitAs.impl_witness_table.5db = impl_witness_table (%P.import_ref.e4a), @C.as.ImplicitAs.impl.390 [concrete]
|
||||
// CHECK:STDOUT: %P.import_ref.b26b: %C.as.ImplicitAs.impl.Convert.type.cbe = import_ref P//library, loc11_65, loaded [concrete = constants.%C.as.ImplicitAs.impl.Convert.d1c]
|
||||
// CHECK:STDOUT: %P.import_ref.b26b: %C.as.ImplicitAs.impl.Convert.type.cbe = import_ref P//library, loc11_72, loaded [concrete = constants.%C.as.ImplicitAs.impl.Convert.d1c]
|
||||
// CHECK:STDOUT: %ImplicitAs.impl_witness_table.126 = impl_witness_table (%P.import_ref.b26b), @C.as.ImplicitAs.impl.071 [concrete]
|
||||
// CHECK:STDOUT: %P.import_ref.6da: %C.as.ImplicitAs.impl.Convert.type.876 = import_ref P//library, loc12_65, loaded [concrete = constants.%C.as.ImplicitAs.impl.Convert.db5]
|
||||
// CHECK:STDOUT: %P.import_ref.6da: %C.as.ImplicitAs.impl.Convert.type.876 = import_ref P//library, loc12_72, loaded [concrete = constants.%C.as.ImplicitAs.impl.Convert.db5]
|
||||
// CHECK:STDOUT: %ImplicitAs.impl_witness_table.92c = impl_witness_table (%P.import_ref.6da), @C.as.ImplicitAs.impl.891 [concrete]
|
||||
// CHECK:STDOUT: %P.import_ref.200: %C.as.ImplicitAs.impl.Convert.type.043 = import_ref P//library, loc13_65, loaded [concrete = constants.%C.as.ImplicitAs.impl.Convert.a63]
|
||||
// CHECK:STDOUT: %P.import_ref.200: %C.as.ImplicitAs.impl.Convert.type.043 = import_ref P//library, loc13_72, loaded [concrete = constants.%C.as.ImplicitAs.impl.Convert.a63]
|
||||
// CHECK:STDOUT: %ImplicitAs.impl_witness_table.d8f = impl_witness_table (%P.import_ref.200), @C.as.ImplicitAs.impl.882 [concrete]
|
||||
// CHECK:STDOUT: %P.import_ref.010: %C.as.ImplicitAs.impl.Convert.type.7be = import_ref P//library, loc14_65, loaded [concrete = constants.%C.as.ImplicitAs.impl.Convert.e2f]
|
||||
// CHECK:STDOUT: %P.import_ref.010: %C.as.ImplicitAs.impl.Convert.type.7be = import_ref P//library, loc14_72, loaded [concrete = constants.%C.as.ImplicitAs.impl.Convert.e2f]
|
||||
// CHECK:STDOUT: %ImplicitAs.impl_witness_table.70a = impl_witness_table (%P.import_ref.010), @C.as.ImplicitAs.impl.ad9 [concrete]
|
||||
// CHECK:STDOUT: %P.import_ref.624: %C.as.ImplicitAs.impl.Convert.type.c30 = import_ref P//library, loc15_65, loaded [concrete = constants.%C.as.ImplicitAs.impl.Convert.5ea]
|
||||
// CHECK:STDOUT: %P.import_ref.624: %C.as.ImplicitAs.impl.Convert.type.c30 = import_ref P//library, loc15_72, loaded [concrete = constants.%C.as.ImplicitAs.impl.Convert.5ea]
|
||||
// CHECK:STDOUT: %ImplicitAs.impl_witness_table.575 = impl_witness_table (%P.import_ref.624), @C.as.ImplicitAs.impl.5d4 [concrete]
|
||||
// CHECK:STDOUT: %P.Make: %Make.type = import_ref P//library, Make, loaded [concrete = constants.%Make]
|
||||
// CHECK:STDOUT: }
|
||||
@@ -947,9 +947,9 @@ fn F0(n: i32) -> P.D {
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %P.ref.loc6: <namespace> = name_ref P, imports.%P [concrete = imports.%P]
|
||||
// CHECK:STDOUT: %D.ref: type = name_ref D, imports.%P.D [concrete = constants.%D]
|
||||
// CHECK:STDOUT: %.loc6_19.10: Core.Form = init_form %D.ref, call_param1 [concrete = constants.%.db5]
|
||||
// CHECK:STDOUT: %.loc6_26.10: Core.Form = init_form %D.ref, call_param1 [concrete = constants.%.db5]
|
||||
// CHECK:STDOUT: %n.param: %i32 = value_param call_param0
|
||||
// CHECK:STDOUT: %.loc6_10: type = splice_block %i32 [concrete = constants.%i32] {
|
||||
// CHECK:STDOUT: %.loc6_17: type = splice_block %i32 [concrete = constants.%i32] {
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
@@ -1045,9 +1045,9 @@ fn F0(n: i32) -> P.D {
|
||||
// CHECK:STDOUT: %.loc7_26.1: ref %C.b00 = converted %.loc7_24.1, %.loc7_24.4
|
||||
// CHECK:STDOUT: %impl.elem0.loc7_35: %.866 = impl_witness_access constants.%ImplicitAs.impl_witness.01b, element0 [concrete = constants.%C.as.ImplicitAs.impl.Convert.78d]
|
||||
// CHECK:STDOUT: %bound_method.loc7_35: <bound method> = bound_method %.loc7_26.1, %impl.elem0.loc7_35
|
||||
// CHECK:STDOUT: %.loc6_19.1: ref %D = splice_block %return.param {}
|
||||
// CHECK:STDOUT: %.loc6_26.1: ref %D = splice_block %return.param {}
|
||||
// CHECK:STDOUT: %.loc7_26.2: %C.b00 = acquire_value %.loc7_26.1
|
||||
// CHECK:STDOUT: %C.as.ImplicitAs.impl.Convert.call.loc7: init %D to %.loc6_19.1 = call %bound_method.loc7_35(%.loc7_26.2)
|
||||
// CHECK:STDOUT: %C.as.ImplicitAs.impl.Convert.call.loc7: init %D to %.loc6_26.1 = call %bound_method.loc7_35(%.loc7_26.2)
|
||||
// CHECK:STDOUT: %.loc7_35: init %D = converted %.loc7_26.1, %C.as.ImplicitAs.impl.Convert.call.loc7
|
||||
// CHECK:STDOUT: %DestroyOp.bound.loc7_24.1: <bound method> = bound_method %.loc7_24.4, constants.%DestroyOp.b0ebf8.1
|
||||
// CHECK:STDOUT: %DestroyOp.call.loc7_24.1: init %empty_tuple.type = call %DestroyOp.bound.loc7_24.1(%.loc7_24.4)
|
||||
@@ -1076,9 +1076,9 @@ fn F0(n: i32) -> P.D {
|
||||
// CHECK:STDOUT: %.loc8_26.1: ref %C.674 = converted %.loc8_24.1, %.loc8_24.4
|
||||
// CHECK:STDOUT: %impl.elem0.loc8_35: %.86b = impl_witness_access constants.%ImplicitAs.impl_witness.638, element0 [concrete = constants.%C.as.ImplicitAs.impl.Convert.b44]
|
||||
// CHECK:STDOUT: %bound_method.loc8_35: <bound method> = bound_method %.loc8_26.1, %impl.elem0.loc8_35
|
||||
// CHECK:STDOUT: %.loc6_19.2: ref %D = splice_block %return.param {}
|
||||
// CHECK:STDOUT: %.loc6_26.2: ref %D = splice_block %return.param {}
|
||||
// CHECK:STDOUT: %.loc8_26.2: %C.674 = acquire_value %.loc8_26.1
|
||||
// CHECK:STDOUT: %C.as.ImplicitAs.impl.Convert.call.loc8: init %D to %.loc6_19.2 = call %bound_method.loc8_35(%.loc8_26.2)
|
||||
// CHECK:STDOUT: %C.as.ImplicitAs.impl.Convert.call.loc8: init %D to %.loc6_26.2 = call %bound_method.loc8_35(%.loc8_26.2)
|
||||
// CHECK:STDOUT: %.loc8_35: init %D = converted %.loc8_26.1, %C.as.ImplicitAs.impl.Convert.call.loc8
|
||||
// CHECK:STDOUT: %DestroyOp.bound.loc8_24.1: <bound method> = bound_method %.loc8_24.4, constants.%DestroyOp.b0ebf8.2
|
||||
// CHECK:STDOUT: %DestroyOp.call.loc8_24.1: init %empty_tuple.type = call %DestroyOp.bound.loc8_24.1(%.loc8_24.4)
|
||||
@@ -1109,9 +1109,9 @@ fn F0(n: i32) -> P.D {
|
||||
// CHECK:STDOUT: %.loc9_26.1: ref %C.681 = converted %.loc9_24.1, %.loc9_24.4
|
||||
// CHECK:STDOUT: %impl.elem0.loc9_35: %.bfa = impl_witness_access constants.%ImplicitAs.impl_witness.a8d, element0 [concrete = constants.%C.as.ImplicitAs.impl.Convert.dd6]
|
||||
// CHECK:STDOUT: %bound_method.loc9_35: <bound method> = bound_method %.loc9_26.1, %impl.elem0.loc9_35
|
||||
// CHECK:STDOUT: %.loc6_19.3: ref %D = splice_block %return.param {}
|
||||
// CHECK:STDOUT: %.loc6_26.3: ref %D = splice_block %return.param {}
|
||||
// CHECK:STDOUT: %.loc9_26.2: %C.681 = acquire_value %.loc9_26.1
|
||||
// CHECK:STDOUT: %C.as.ImplicitAs.impl.Convert.call.loc9: init %D to %.loc6_19.3 = call %bound_method.loc9_35(%.loc9_26.2)
|
||||
// CHECK:STDOUT: %C.as.ImplicitAs.impl.Convert.call.loc9: init %D to %.loc6_26.3 = call %bound_method.loc9_35(%.loc9_26.2)
|
||||
// CHECK:STDOUT: %.loc9_35: init %D = converted %.loc9_26.1, %C.as.ImplicitAs.impl.Convert.call.loc9
|
||||
// CHECK:STDOUT: %DestroyOp.bound.loc9_24.1: <bound method> = bound_method %.loc9_24.4, constants.%DestroyOp.b0ebf8.3
|
||||
// CHECK:STDOUT: %DestroyOp.call.loc9_24.1: init %empty_tuple.type = call %DestroyOp.bound.loc9_24.1(%.loc9_24.4)
|
||||
@@ -1144,9 +1144,9 @@ fn F0(n: i32) -> P.D {
|
||||
// CHECK:STDOUT: %.loc10_26.1: ref %C.7ac = converted %.loc10_24.1, %.loc10_24.4
|
||||
// CHECK:STDOUT: %impl.elem0.loc10_35: %.a2c = impl_witness_access constants.%ImplicitAs.impl_witness.56b, element0 [concrete = constants.%C.as.ImplicitAs.impl.Convert.d1c]
|
||||
// CHECK:STDOUT: %bound_method.loc10_35: <bound method> = bound_method %.loc10_26.1, %impl.elem0.loc10_35
|
||||
// CHECK:STDOUT: %.loc6_19.4: ref %D = splice_block %return.param {}
|
||||
// CHECK:STDOUT: %.loc6_26.4: ref %D = splice_block %return.param {}
|
||||
// CHECK:STDOUT: %.loc10_26.2: %C.7ac = acquire_value %.loc10_26.1
|
||||
// CHECK:STDOUT: %C.as.ImplicitAs.impl.Convert.call.loc10: init %D to %.loc6_19.4 = call %bound_method.loc10_35(%.loc10_26.2)
|
||||
// CHECK:STDOUT: %C.as.ImplicitAs.impl.Convert.call.loc10: init %D to %.loc6_26.4 = call %bound_method.loc10_35(%.loc10_26.2)
|
||||
// CHECK:STDOUT: %.loc10_35: init %D = converted %.loc10_26.1, %C.as.ImplicitAs.impl.Convert.call.loc10
|
||||
// CHECK:STDOUT: %DestroyOp.bound.loc10_24.1: <bound method> = bound_method %.loc10_24.4, constants.%DestroyOp.b0ebf8.4
|
||||
// CHECK:STDOUT: %DestroyOp.call.loc10_24.1: init %empty_tuple.type = call %DestroyOp.bound.loc10_24.1(%.loc10_24.4)
|
||||
@@ -1181,9 +1181,9 @@ fn F0(n: i32) -> P.D {
|
||||
// CHECK:STDOUT: %.loc11_26.1: ref %C.89d = converted %.loc11_24.1, %.loc11_24.4
|
||||
// CHECK:STDOUT: %impl.elem0.loc11_35: %.c32 = impl_witness_access constants.%ImplicitAs.impl_witness.e05, element0 [concrete = constants.%C.as.ImplicitAs.impl.Convert.db5]
|
||||
// CHECK:STDOUT: %bound_method.loc11_35: <bound method> = bound_method %.loc11_26.1, %impl.elem0.loc11_35
|
||||
// CHECK:STDOUT: %.loc6_19.5: ref %D = splice_block %return.param {}
|
||||
// CHECK:STDOUT: %.loc6_26.5: ref %D = splice_block %return.param {}
|
||||
// CHECK:STDOUT: %.loc11_26.2: %C.89d = acquire_value %.loc11_26.1
|
||||
// CHECK:STDOUT: %C.as.ImplicitAs.impl.Convert.call.loc11: init %D to %.loc6_19.5 = call %bound_method.loc11_35(%.loc11_26.2)
|
||||
// CHECK:STDOUT: %C.as.ImplicitAs.impl.Convert.call.loc11: init %D to %.loc6_26.5 = call %bound_method.loc11_35(%.loc11_26.2)
|
||||
// CHECK:STDOUT: %.loc11_35: init %D = converted %.loc11_26.1, %C.as.ImplicitAs.impl.Convert.call.loc11
|
||||
// CHECK:STDOUT: %DestroyOp.bound.loc11_24.1: <bound method> = bound_method %.loc11_24.4, constants.%DestroyOp.b0ebf8.5
|
||||
// CHECK:STDOUT: %DestroyOp.call.loc11_24.1: init %empty_tuple.type = call %DestroyOp.bound.loc11_24.1(%.loc11_24.4)
|
||||
@@ -1220,9 +1220,9 @@ fn F0(n: i32) -> P.D {
|
||||
// CHECK:STDOUT: %.loc12_26.1: ref %C.f0a = converted %.loc12_24.1, %.loc12_24.4
|
||||
// CHECK:STDOUT: %impl.elem0.loc12_35: %.df3 = impl_witness_access constants.%ImplicitAs.impl_witness.262, element0 [concrete = constants.%C.as.ImplicitAs.impl.Convert.a63]
|
||||
// CHECK:STDOUT: %bound_method.loc12_35: <bound method> = bound_method %.loc12_26.1, %impl.elem0.loc12_35
|
||||
// CHECK:STDOUT: %.loc6_19.6: ref %D = splice_block %return.param {}
|
||||
// CHECK:STDOUT: %.loc6_26.6: ref %D = splice_block %return.param {}
|
||||
// CHECK:STDOUT: %.loc12_26.2: %C.f0a = acquire_value %.loc12_26.1
|
||||
// CHECK:STDOUT: %C.as.ImplicitAs.impl.Convert.call.loc12: init %D to %.loc6_19.6 = call %bound_method.loc12_35(%.loc12_26.2)
|
||||
// CHECK:STDOUT: %C.as.ImplicitAs.impl.Convert.call.loc12: init %D to %.loc6_26.6 = call %bound_method.loc12_35(%.loc12_26.2)
|
||||
// CHECK:STDOUT: %.loc12_35: init %D = converted %.loc12_26.1, %C.as.ImplicitAs.impl.Convert.call.loc12
|
||||
// CHECK:STDOUT: %DestroyOp.bound.loc12_24.1: <bound method> = bound_method %.loc12_24.4, constants.%DestroyOp.b0ebf8.6
|
||||
// CHECK:STDOUT: %DestroyOp.call.loc12_24.1: init %empty_tuple.type = call %DestroyOp.bound.loc12_24.1(%.loc12_24.4)
|
||||
@@ -1261,9 +1261,9 @@ fn F0(n: i32) -> P.D {
|
||||
// CHECK:STDOUT: %.loc13_26.1: ref %C.c60 = converted %.loc13_24.1, %.loc13_24.4
|
||||
// CHECK:STDOUT: %impl.elem0.loc13_35: %.4a2 = impl_witness_access constants.%ImplicitAs.impl_witness.7d1, element0 [concrete = constants.%C.as.ImplicitAs.impl.Convert.e2f]
|
||||
// CHECK:STDOUT: %bound_method.loc13_35: <bound method> = bound_method %.loc13_26.1, %impl.elem0.loc13_35
|
||||
// CHECK:STDOUT: %.loc6_19.7: ref %D = splice_block %return.param {}
|
||||
// CHECK:STDOUT: %.loc6_26.7: ref %D = splice_block %return.param {}
|
||||
// CHECK:STDOUT: %.loc13_26.2: %C.c60 = acquire_value %.loc13_26.1
|
||||
// CHECK:STDOUT: %C.as.ImplicitAs.impl.Convert.call.loc13: init %D to %.loc6_19.7 = call %bound_method.loc13_35(%.loc13_26.2)
|
||||
// CHECK:STDOUT: %C.as.ImplicitAs.impl.Convert.call.loc13: init %D to %.loc6_26.7 = call %bound_method.loc13_35(%.loc13_26.2)
|
||||
// CHECK:STDOUT: %.loc13_35: init %D = converted %.loc13_26.1, %C.as.ImplicitAs.impl.Convert.call.loc13
|
||||
// CHECK:STDOUT: %DestroyOp.bound.loc13_24.1: <bound method> = bound_method %.loc13_24.4, constants.%DestroyOp.b0ebf8.7
|
||||
// CHECK:STDOUT: %DestroyOp.call.loc13_24.1: init %empty_tuple.type = call %DestroyOp.bound.loc13_24.1(%.loc13_24.4)
|
||||
@@ -1304,9 +1304,9 @@ fn F0(n: i32) -> P.D {
|
||||
// CHECK:STDOUT: %.loc14_26.1: ref %C.304 = converted %.loc14_24.1, %.loc14_24.4
|
||||
// CHECK:STDOUT: %impl.elem0.loc14_35: %.ad8 = impl_witness_access constants.%ImplicitAs.impl_witness.356, element0 [concrete = constants.%C.as.ImplicitAs.impl.Convert.5ea]
|
||||
// CHECK:STDOUT: %bound_method.loc14_35: <bound method> = bound_method %.loc14_26.1, %impl.elem0.loc14_35
|
||||
// CHECK:STDOUT: %.loc6_19.8: ref %D = splice_block %return.param {}
|
||||
// CHECK:STDOUT: %.loc6_26.8: ref %D = splice_block %return.param {}
|
||||
// CHECK:STDOUT: %.loc14_26.2: %C.304 = acquire_value %.loc14_26.1
|
||||
// CHECK:STDOUT: %C.as.ImplicitAs.impl.Convert.call.loc14: init %D to %.loc6_19.8 = call %bound_method.loc14_35(%.loc14_26.2)
|
||||
// CHECK:STDOUT: %C.as.ImplicitAs.impl.Convert.call.loc14: init %D to %.loc6_26.8 = call %bound_method.loc14_35(%.loc14_26.2)
|
||||
// CHECK:STDOUT: %.loc14_35: init %D = converted %.loc14_26.1, %C.as.ImplicitAs.impl.Convert.call.loc14
|
||||
// CHECK:STDOUT: %DestroyOp.bound.loc14_24.1: <bound method> = bound_method %.loc14_24.4, constants.%DestroyOp.b0ebf8.8
|
||||
// CHECK:STDOUT: %DestroyOp.call.loc14_24.1: init %empty_tuple.type = call %DestroyOp.bound.loc14_24.1(%.loc14_24.4)
|
||||
@@ -1329,8 +1329,8 @@ fn F0(n: i32) -> P.D {
|
||||
// CHECK:STDOUT: !if.else.loc14:
|
||||
// CHECK:STDOUT: %P.ref.loc15: <namespace> = name_ref P, imports.%P [concrete = imports.%P]
|
||||
// CHECK:STDOUT: %Make.ref: %Make.type = name_ref Make, imports.%P.Make [concrete = constants.%Make]
|
||||
// CHECK:STDOUT: %.loc6_19.9: ref %D = splice_block %return.param {}
|
||||
// CHECK:STDOUT: %Make.call: init %D to %.loc6_19.9 = call %Make.ref()
|
||||
// CHECK:STDOUT: %.loc6_26.9: ref %D = splice_block %return.param {}
|
||||
// CHECK:STDOUT: %Make.call: init %D to %.loc6_26.9 = call %Make.ref()
|
||||
// CHECK:STDOUT: %DestroyOp.bound.loc14_24.2: <bound method> = bound_method %.loc14_24.4, constants.%DestroyOp.b0ebf8.8
|
||||
// CHECK:STDOUT: %DestroyOp.call.loc14_24.2: init %empty_tuple.type = call %DestroyOp.bound.loc14_24.2(%.loc14_24.4)
|
||||
// CHECK:STDOUT: %DestroyOp.bound.loc13_24.3: <bound method> = bound_method %.loc13_24.4, constants.%DestroyOp.b0ebf8.7
|
||||
|
||||
Reference in New Issue
Block a user