KT-10785 Ensure that access to private properties from inside memeber functions of objects is performed via 'this' rather that by FQN.

This commit is contained in:
Alexey Andreev
2016-02-20 14:56:42 +03:00
parent 0a2cff9056
commit 718c15806c
2 changed files with 26 additions and 0 deletions
@@ -102,6 +102,10 @@ public final class PropertyAccessTest extends SingleFileTranslationTest {
checkFooBoxIsOk();
}
public void testPrivatePropertyAccessFromMethod() throws Exception {
checkFooBoxIsOk();
}
@Override
@NotNull
protected List<String> additionalJsFiles(@NotNull EcmaVersion ecmaVersion) {
@@ -0,0 +1,22 @@
package foo
object A {
private val foo = 23
fun bar(): Int {
// Erase object so that we ensure that access to 'foo' property is performed via 'this'
// It's no crucial from runtime standpoind, but JS code looks more concise and natural this way.
erase()
return foo
}
fun erase() {
js("_.foo.A = null")
}
}
fun box(): String {
var result = A.bar()
if (result != 23) return "failed: ${result}"
return "OK"
}