mirror of
https://github.com/roc-lang/roc.git
synced 2025-10-01 15:51:12 +00:00
Correct calling branches
This commit is contained in:
parent
23f4d02f81
commit
fde75d5432
2 changed files with 19 additions and 25 deletions
|
@ -219,7 +219,7 @@ pub fn call_erased_function<'a>(
|
||||||
cond_symbol: value_is_null,
|
cond_symbol: value_is_null,
|
||||||
cond_layout: Layout::BOOL,
|
cond_layout: Layout::BOOL,
|
||||||
// value == null
|
// value == null
|
||||||
branches: arena.alloc([(0, BranchInfo::None, build_closure_data_branch(env, false))]),
|
branches: arena.alloc([(1, BranchInfo::None, build_closure_data_branch(env, false))]),
|
||||||
// value != null
|
// value != null
|
||||||
default_branch: (
|
default_branch: (
|
||||||
BranchInfo::None,
|
BranchInfo::None,
|
||||||
|
|
|
@ -65,33 +65,27 @@ procedure Test.0 ():
|
||||||
let Test.10 : Int1 = lowlevel Eq Test.9 Test.11;
|
let Test.10 : Int1 = lowlevel Eq Test.9 Test.11;
|
||||||
dec Test.11;
|
dec Test.11;
|
||||||
dec Test.9;
|
dec Test.9;
|
||||||
switch Test.10:
|
if Test.10 then
|
||||||
case 0:
|
|
||||||
let Test.12 : FunPtr(({}) -> Str) = ErasedLoad Test.7 .Callee;
|
let Test.12 : FunPtr(({}) -> Str) = ErasedLoad Test.7 .Callee;
|
||||||
let Test.13 : Str = CallByPtr Test.12 Test.6;
|
let Test.13 : Str = CallByPtr Test.12 Test.6;
|
||||||
jump Test.8 Test.13;
|
jump Test.8 Test.13;
|
||||||
|
else
|
||||||
default:
|
|
||||||
inc Test.7;
|
inc Test.7;
|
||||||
let Test.14 : FunPtr(({}, ?Erased) -> Str) = ErasedLoad Test.7 .Callee;
|
let Test.14 : FunPtr(({}, ?Erased) -> Str) = ErasedLoad Test.7 .Callee;
|
||||||
let Test.15 : Str = CallByPtr Test.14 Test.6 Test.7;
|
let Test.15 : Str = CallByPtr Test.14 Test.6 Test.7;
|
||||||
jump Test.8 Test.15;
|
jump Test.8 Test.15;
|
||||||
|
|
||||||
in
|
in
|
||||||
let Test.19 : Boxed([]) = ErasedLoad Test.17 .Value;
|
let Test.19 : Boxed([]) = ErasedLoad Test.17 .Value;
|
||||||
let Test.21 : Boxed([]) = NullPointer;
|
let Test.21 : Boxed([]) = NullPointer;
|
||||||
let Test.20 : Int1 = lowlevel Eq Test.19 Test.21;
|
let Test.20 : Int1 = lowlevel Eq Test.19 Test.21;
|
||||||
dec Test.21;
|
dec Test.21;
|
||||||
dec Test.19;
|
dec Test.19;
|
||||||
switch Test.20:
|
if Test.20 then
|
||||||
case 0:
|
|
||||||
let Test.22 : FunPtr((Str) -> ?Erased) = ErasedLoad Test.17 .Callee;
|
let Test.22 : FunPtr((Str) -> ?Erased) = ErasedLoad Test.17 .Callee;
|
||||||
let Test.23 : ?Erased = CallByPtr Test.22 Test.16;
|
let Test.23 : ?Erased = CallByPtr Test.22 Test.16;
|
||||||
jump Test.18 Test.23;
|
jump Test.18 Test.23;
|
||||||
|
else
|
||||||
default:
|
|
||||||
inc Test.17;
|
inc Test.17;
|
||||||
let Test.24 : FunPtr((Str, ?Erased) -> ?Erased) = ErasedLoad Test.17 .Callee;
|
let Test.24 : FunPtr((Str, ?Erased) -> ?Erased) = ErasedLoad Test.17 .Callee;
|
||||||
let Test.25 : ?Erased = CallByPtr Test.24 Test.16 Test.17;
|
let Test.25 : ?Erased = CallByPtr Test.24 Test.16 Test.17;
|
||||||
jump Test.18 Test.25;
|
jump Test.18 Test.25;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue