[K/JS] Remove super keyword insertion if the body of method was moved into another place (private methods, lambdas, coroutines) ^KT-57990 Fixed
This commit is contained in:
@@ -620,6 +620,12 @@ public class BoxJsTestGenerated extends AbstractBoxJsTest {
|
||||
runTest("js/js.translator/testData/box/closure/recursiveFunctionWithSameNameDeclaration.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("superCallInsideLambda.kt")
|
||||
public void testSuperCallInsideLambda() throws Exception {
|
||||
runTest("js/js.translator/testData/box/closure/superCallInsideLambda.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("withManyClosuresInNestedFunctionsAndObjects.kt")
|
||||
public void testWithManyClosuresInNestedFunctionsAndObjects() throws Exception {
|
||||
@@ -867,6 +873,12 @@ public class BoxJsTestGenerated extends AbstractBoxJsTest {
|
||||
public void testSuspendFunctionalInterface() throws Exception {
|
||||
runTest("js/js.translator/testData/box/coroutines/suspendFunctionalInterface.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("suspendMethodWithSuperCall.kt")
|
||||
public void testSuspendMethodWithSuperCall() throws Exception {
|
||||
runTest("js/js.translator/testData/box/coroutines/suspendMethodWithSuperCall.kt");
|
||||
}
|
||||
}
|
||||
|
||||
@Nested
|
||||
@@ -9816,6 +9828,12 @@ public class BoxJsTestGenerated extends AbstractBoxJsTest {
|
||||
runTest("js/js.translator/testData/box/superCall/propertySuperAccess.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("superCallInPrivateMethod.kt")
|
||||
public void testSuperCallInPrivateMethod() throws Exception {
|
||||
runTest("js/js.translator/testData/box/superCall/superCallInPrivateMethod.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("traitSuperCall.kt")
|
||||
public void testTraitSuperCall() throws Exception {
|
||||
|
||||
+18
@@ -620,6 +620,12 @@ public class FirJsBoxTestGenerated extends AbstractFirJsBoxTest {
|
||||
runTest("js/js.translator/testData/box/closure/recursiveFunctionWithSameNameDeclaration.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("superCallInsideLambda.kt")
|
||||
public void testSuperCallInsideLambda() throws Exception {
|
||||
runTest("js/js.translator/testData/box/closure/superCallInsideLambda.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("withManyClosuresInNestedFunctionsAndObjects.kt")
|
||||
public void testWithManyClosuresInNestedFunctionsAndObjects() throws Exception {
|
||||
@@ -931,6 +937,12 @@ public class FirJsBoxTestGenerated extends AbstractFirJsBoxTest {
|
||||
public void testSuspendFunctionalInterface() throws Exception {
|
||||
runTest("js/js.translator/testData/box/coroutines/suspendFunctionalInterface.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("suspendMethodWithSuperCall.kt")
|
||||
public void testSuspendMethodWithSuperCall() throws Exception {
|
||||
runTest("js/js.translator/testData/box/coroutines/suspendMethodWithSuperCall.kt");
|
||||
}
|
||||
}
|
||||
|
||||
@Nested
|
||||
@@ -10726,6 +10738,12 @@ public class FirJsBoxTestGenerated extends AbstractFirJsBoxTest {
|
||||
runTest("js/js.translator/testData/box/superCall/propertySuperAccess.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("superCallInPrivateMethod.kt")
|
||||
public void testSuperCallInPrivateMethod() throws Exception {
|
||||
runTest("js/js.translator/testData/box/superCall/superCallInPrivateMethod.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("traitSuperCall.kt")
|
||||
public void testTraitSuperCall() throws Exception {
|
||||
|
||||
+18
@@ -620,6 +620,12 @@ public class IrBoxJsES6TestGenerated extends AbstractIrBoxJsES6Test {
|
||||
runTest("js/js.translator/testData/box/closure/recursiveFunctionWithSameNameDeclaration.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("superCallInsideLambda.kt")
|
||||
public void testSuperCallInsideLambda() throws Exception {
|
||||
runTest("js/js.translator/testData/box/closure/superCallInsideLambda.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("withManyClosuresInNestedFunctionsAndObjects.kt")
|
||||
public void testWithManyClosuresInNestedFunctionsAndObjects() throws Exception {
|
||||
@@ -931,6 +937,12 @@ public class IrBoxJsES6TestGenerated extends AbstractIrBoxJsES6Test {
|
||||
public void testSuspendFunctionalInterface() throws Exception {
|
||||
runTest("js/js.translator/testData/box/coroutines/suspendFunctionalInterface.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("suspendMethodWithSuperCall.kt")
|
||||
public void testSuspendMethodWithSuperCall() throws Exception {
|
||||
runTest("js/js.translator/testData/box/coroutines/suspendMethodWithSuperCall.kt");
|
||||
}
|
||||
}
|
||||
|
||||
@Nested
|
||||
@@ -10832,6 +10844,12 @@ public class IrBoxJsES6TestGenerated extends AbstractIrBoxJsES6Test {
|
||||
runTest("js/js.translator/testData/box/superCall/propertySuperAccess.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("superCallInPrivateMethod.kt")
|
||||
public void testSuperCallInPrivateMethod() throws Exception {
|
||||
runTest("js/js.translator/testData/box/superCall/superCallInPrivateMethod.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("traitSuperCall.kt")
|
||||
public void testTraitSuperCall() throws Exception {
|
||||
|
||||
+18
@@ -620,6 +620,12 @@ public class IrBoxJsTestGenerated extends AbstractIrBoxJsTest {
|
||||
runTest("js/js.translator/testData/box/closure/recursiveFunctionWithSameNameDeclaration.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("superCallInsideLambda.kt")
|
||||
public void testSuperCallInsideLambda() throws Exception {
|
||||
runTest("js/js.translator/testData/box/closure/superCallInsideLambda.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("withManyClosuresInNestedFunctionsAndObjects.kt")
|
||||
public void testWithManyClosuresInNestedFunctionsAndObjects() throws Exception {
|
||||
@@ -931,6 +937,12 @@ public class IrBoxJsTestGenerated extends AbstractIrBoxJsTest {
|
||||
public void testSuspendFunctionalInterface() throws Exception {
|
||||
runTest("js/js.translator/testData/box/coroutines/suspendFunctionalInterface.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("suspendMethodWithSuperCall.kt")
|
||||
public void testSuspendMethodWithSuperCall() throws Exception {
|
||||
runTest("js/js.translator/testData/box/coroutines/suspendMethodWithSuperCall.kt");
|
||||
}
|
||||
}
|
||||
|
||||
@Nested
|
||||
@@ -10726,6 +10738,12 @@ public class IrBoxJsTestGenerated extends AbstractIrBoxJsTest {
|
||||
runTest("js/js.translator/testData/box/superCall/propertySuperAccess.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("superCallInPrivateMethod.kt")
|
||||
public void testSuperCallInPrivateMethod() throws Exception {
|
||||
runTest("js/js.translator/testData/box/superCall/superCallInPrivateMethod.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("traitSuperCall.kt")
|
||||
public void testTraitSuperCall() throws Exception {
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
// EXPECTED_REACHABLE_NODES: 1292
|
||||
|
||||
var result = ""
|
||||
|
||||
fun <T> call(lambda: () -> T): T {
|
||||
return lambda()
|
||||
}
|
||||
|
||||
abstract class Parent {
|
||||
val o = "O"
|
||||
val k = "K"
|
||||
protected fun getO() = o
|
||||
protected fun getK() = k
|
||||
}
|
||||
|
||||
class Child : Parent() {
|
||||
fun runTest() {
|
||||
result += call { super.getO() + super.getK() }
|
||||
}
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
Child().runTest()
|
||||
return result
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
// WITH_STDLIB
|
||||
// EXPECTED_REACHABLE_NODES: 1292
|
||||
|
||||
import kotlin.coroutines.*
|
||||
import kotlin.coroutines.intrinsics.*
|
||||
|
||||
var result = ""
|
||||
|
||||
fun builder(c: suspend () -> Unit) {
|
||||
c.startCoroutine(object : Continuation<Unit> {
|
||||
override val context = EmptyCoroutineContext
|
||||
override fun resumeWith(result: Result<Unit>) {}
|
||||
})
|
||||
}
|
||||
|
||||
abstract class Parent {
|
||||
val o = "O"
|
||||
val k = "K"
|
||||
protected fun getO() = o
|
||||
protected fun getK() = k
|
||||
}
|
||||
|
||||
|
||||
class Child : Parent() {
|
||||
suspend fun justSomeSuspendFunction() {
|
||||
Unit
|
||||
}
|
||||
|
||||
suspend fun runTest() {
|
||||
justSomeSuspendFunction()
|
||||
result += super.getO() + super.getK()
|
||||
}
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
builder {
|
||||
Child().runTest()
|
||||
}
|
||||
return result
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
// EXPECTED_REACHABLE_NODES: 1292
|
||||
|
||||
var result = ""
|
||||
abstract class Parent {
|
||||
val o = "O"
|
||||
val k = "K"
|
||||
protected fun getO() = o
|
||||
protected fun getK() = k
|
||||
}
|
||||
|
||||
class Child : Parent() {
|
||||
private fun calculateResult(): String {
|
||||
return super.getO() + super.getK()
|
||||
}
|
||||
fun runTest() {
|
||||
result += this.calculateResult()
|
||||
}
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
Child().runTest()
|
||||
return result
|
||||
}
|
||||
Reference in New Issue
Block a user