Files
kotlin-fork/js/js.translator/testData/closure/cases/closureReceiverInLocalExtFunByLocalExtFun.kt
T
Zalim Bashorov 206be96509 JS backend: added tests which pass an extension lambda to native code and visa versa.
Added workarounds in some tests because Rhino wrongly implicitly converts first parameter of `Function.call` to `Object`. But it's contradicts to ES5 specification(par. 15.3.4.4).

(#KT-4238, #KT-4345) In progress
2014-03-13 14:17:09 +04:00

31 lines
650 B
Kotlin

package foo
fun assertEquals<T>(expected: T, actual: T, message: String) {
if (expected != actual) throw Exception("Failed when $message, expected = $expected, actual = $actual")
}
// workaround for Rhino
var n = 0
class A {
val i = ++n
}
fun box(): String {
fun A.foo() {
fun A.bar() {
assertEquals(2, this.i, "check this.i in A.bar()")
assertEquals(1, this@foo.i, "check this@foo.i in A.bar()")
}
val b = { assertEquals(1, this.i, "check this.i in b") }
assertEquals(1, this.i, "check this.i in A.foo()")
A().bar()
b()
}
A().foo()
return "OK"
}