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:
@@ -102,6 +102,10 @@ public final class PropertyAccessTest extends SingleFileTranslationTest {
|
|||||||
checkFooBoxIsOk();
|
checkFooBoxIsOk();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testPrivatePropertyAccessFromMethod() throws Exception {
|
||||||
|
checkFooBoxIsOk();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@NotNull
|
@NotNull
|
||||||
protected List<String> additionalJsFiles(@NotNull EcmaVersion ecmaVersion) {
|
protected List<String> additionalJsFiles(@NotNull EcmaVersion ecmaVersion) {
|
||||||
|
|||||||
+22
@@ -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"
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user