[KT-4124] Support invocation of constructor of inner class from extension method
This commit is contained in:
@@ -58,6 +58,10 @@ public class NestedTypesTest extends SingleFileTranslationTest {
|
|||||||
checkFooBoxIsOk();
|
checkFooBoxIsOk();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testInnerReferenceFromChild() throws Exception {
|
||||||
|
checkFooBoxIsOk();
|
||||||
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
@Override
|
@Override
|
||||||
protected List<String> additionalJsFiles(@NotNull EcmaVersion ecmaVersion) {
|
protected List<String> additionalJsFiles(@NotNull EcmaVersion ecmaVersion) {
|
||||||
|
|||||||
@@ -35,6 +35,7 @@ import org.jetbrains.kotlin.js.translate.general.Translation
|
|||||||
import org.jetbrains.kotlin.js.translate.utils.JsDescriptorUtils
|
import org.jetbrains.kotlin.js.translate.utils.JsDescriptorUtils
|
||||||
import org.jetbrains.kotlin.psi.KtSuperExpression
|
import org.jetbrains.kotlin.psi.KtSuperExpression
|
||||||
import org.jetbrains.kotlin.resolve.scopes.receivers.ExpressionReceiver
|
import org.jetbrains.kotlin.resolve.scopes.receivers.ExpressionReceiver
|
||||||
|
import org.jetbrains.kotlin.resolve.scopes.receivers.ExtensionReceiver
|
||||||
import org.jetbrains.kotlin.resolve.scopes.receivers.ThisClassReceiver
|
import org.jetbrains.kotlin.resolve.scopes.receivers.ThisClassReceiver
|
||||||
|
|
||||||
interface CallInfo {
|
interface CallInfo {
|
||||||
@@ -79,6 +80,9 @@ val CallInfo.superCallReceiver : JsExpression?
|
|||||||
is ThisClassReceiver -> {
|
is ThisClassReceiver -> {
|
||||||
JsLiteral.THIS
|
JsLiteral.THIS
|
||||||
}
|
}
|
||||||
|
is ExtensionReceiver -> {
|
||||||
|
JsLiteral.THIS
|
||||||
|
}
|
||||||
else -> {
|
else -> {
|
||||||
null
|
null
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,25 @@
|
|||||||
|
package foo
|
||||||
|
|
||||||
|
var i = 0
|
||||||
|
|
||||||
|
abstract class Base {
|
||||||
|
val base = "b" + i++
|
||||||
|
inner class Inner {
|
||||||
|
fun o() = "O" + base
|
||||||
|
fun k() = "K" + base
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class Child : Base()
|
||||||
|
|
||||||
|
fun box(): String {
|
||||||
|
var result = ""
|
||||||
|
result += Child().Inner().o()
|
||||||
|
|
||||||
|
fun Child.f() {
|
||||||
|
result += Inner().k()
|
||||||
|
}
|
||||||
|
Child().f()
|
||||||
|
|
||||||
|
return if (result == "Ob0Kb1") "OK" else result
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user