[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();
|
||||
}
|
||||
|
||||
public void testInnerReferenceFromChild() throws Exception {
|
||||
checkFooBoxIsOk();
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
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.psi.KtSuperExpression
|
||||
import org.jetbrains.kotlin.resolve.scopes.receivers.ExpressionReceiver
|
||||
import org.jetbrains.kotlin.resolve.scopes.receivers.ExtensionReceiver
|
||||
import org.jetbrains.kotlin.resolve.scopes.receivers.ThisClassReceiver
|
||||
|
||||
interface CallInfo {
|
||||
@@ -79,6 +80,9 @@ val CallInfo.superCallReceiver : JsExpression?
|
||||
is ThisClassReceiver -> {
|
||||
JsLiteral.THIS
|
||||
}
|
||||
is ExtensionReceiver -> {
|
||||
JsLiteral.THIS
|
||||
}
|
||||
else -> {
|
||||
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