[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:
Artem Kobzar
2023-04-24 13:54:36 +00:00
committed by Space Team
parent e63ed03d19
commit 9bcfd093c5
8 changed files with 166 additions and 5 deletions
@@ -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 {
@@ -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 {
@@ -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 {
@@ -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
}