Fix and refactor ExpressionCodegen#pushClosureOnStack

- change Closure parameter to ClassDescriptor, load closure in the beginning
- invert and rename boolean parameter, also use it only to prevent pushing
  dispatch receiver (not the extension receiver) onto the stack because the
  only non-trivial usage of it is preceded by manual handling of the dispatch
  (not extension) receiver. This fixes innerOfLocalCaptureExtensionReceiver.kt
This commit is contained in:
Alexander Udalov
2014-10-14 14:23:41 +04:00
parent 79123d6bb6
commit 7315146753
7 changed files with 79 additions and 50 deletions
@@ -0,0 +1,14 @@
class Outer {
fun String.id(): String {
class Local(unused: Long) {
fun result() = this@id
fun outer() = this@Outer
}
return Local(42L).result()
}
fun result(): String = "OK".id()
}
fun box() = Outer().result()