Pseudocode: Generate instructions for callable reference expressions

This commit is contained in:
Alexey Sedunov
2014-07-11 19:30:22 +04:00
parent fd27518070
commit 4f54d833d3
7 changed files with 62 additions and 1 deletions
@@ -0,0 +1,29 @@
== bar ==
fun bar(): Int = 1
---------------------
L0:
1 <START>
r(1) -> <v0>
ret(*|<v0>) L1
L1:
<END> NEXT:[<SINK>]
error:
<ERROR> PREV:[]
sink:
<SINK> PREV:[<ERROR>, <END>]
=====================
== foo ==
fun foo(): Any = ::bar
---------------------
L0:
1 <START>
mark(::bar)
magic[CALLABLE_REFERENCE](::bar) -> <v0>
ret(*|<v0>) L1
L1:
<END> NEXT:[<SINK>]
error:
<ERROR> PREV:[]
sink:
<SINK> PREV:[<ERROR>, <END>]
=====================
@@ -0,0 +1,3 @@
fun bar(): Int = 1
fun foo(): Any = ::bar
@@ -0,0 +1,10 @@
== bar ==
fun bar(): Int = 1
---------------------
1 <v0>: Int NEW: r(1) -> <v0>
=====================
== foo ==
fun foo(): Any = ::bar
---------------------
::bar <v0>: {<: Any} NEW: magic[CALLABLE_REFERENCE](::bar) -> <v0>
=====================