Generate local variable table for inlined lambda

This commit is contained in:
Mikhael Bogdanov
2014-03-19 17:45:46 +04:00
parent 75c57f9827
commit 93367ffd3b
9 changed files with 162 additions and 31 deletions
@@ -0,0 +1,16 @@
class A {
inline fun inlineFun(s: (s: Int) -> Unit) {
s(11)
}
fun foo() {
inlineFun ({
var zzz = it;
})
}
}
// METHOD : A.foo()V
// VARIABLE : NAME=zzz TYPE=I INDEX=3
// VARIABLE : NAME=it TYPE=I INDEX=2
// VARIABLE : NAME=this TYPE=LA; INDEX=0
@@ -0,0 +1,20 @@
class A {
inline fun inlineFun(s: (s: Int) -> Unit, p : Int) {
s(11)
s(p)
}
fun foo() {
inlineFun ({ l ->
var zzz = l;
}, 11)
}
}
// METHOD : A.foo()V
// VARIABLE : NAME=zzz TYPE=I INDEX=4
// VARIABLE : NAME=l TYPE=I INDEX=3
// VARIABLE : NAME=zzz TYPE=I INDEX=4
// VARIABLE : NAME=l TYPE=I INDEX=3
// VARIABLE : NAME=this TYPE=LA; INDEX=0
@@ -0,0 +1,17 @@
class A {
inline fun inlineFun(s: () -> Unit) {
s()
}
fun foo() {
var s = 1;
inlineFun ({
var zzz = 2;
})
}
}
// METHOD : A.foo()V
// VARIABLE : NAME=zzz TYPE=I INDEX=3
// VARIABLE : NAME=s TYPE=I INDEX=1
// VARIABLE : NAME=this TYPE=LA; INDEX=0
@@ -0,0 +1,22 @@
class A {
inline fun inlineFun(s: () -> Unit) {
s()
}
fun foo() {
var s = 0;
inlineFun {
var z = 1;
inlineFun {
var zz2 = 2;
}
}
}
}
// METHOD : A.foo()V
// VARIABLE : NAME=zz2 TYPE=I INDEX=5
// VARIABLE : NAME=z TYPE=I INDEX=3
// VARIABLE : NAME=s TYPE=I INDEX=1
// VARIABLE : NAME=this TYPE=LA; INDEX=0