JS: fix identifier generation in delegate constructor calls
See KT-21093
This commit is contained in:
@@ -0,0 +1,30 @@
|
|||||||
|
open class A(val x: String) {
|
||||||
|
constructor(`in`: String, y: String) : this(`in` + y)
|
||||||
|
|
||||||
|
constructor(`in`: Int = 23) : this(`in`.toString())
|
||||||
|
}
|
||||||
|
|
||||||
|
class B(`in`: String) : A(`in`)
|
||||||
|
|
||||||
|
class C : A {
|
||||||
|
constructor(`in`: String) : super(`in`)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun box(): String {
|
||||||
|
val a1 = A("a", "b")
|
||||||
|
if (a1.x != "ab") return "fail1: ${a1.x}"
|
||||||
|
|
||||||
|
val a2 = A(42)
|
||||||
|
if (a2.x != "42") return "fail2: ${a2.x}"
|
||||||
|
|
||||||
|
val a3 = A()
|
||||||
|
if (a3.x != "23") return "fail3: ${a3.x}"
|
||||||
|
|
||||||
|
val b = B("q")
|
||||||
|
if (b.x != "q") return "fail4: ${b.x}"
|
||||||
|
|
||||||
|
val c = C("w")
|
||||||
|
if (c.x != "w") return "fail5: ${c.x}"
|
||||||
|
|
||||||
|
return "OK"
|
||||||
|
}
|
||||||
+6
@@ -2999,6 +2999,12 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes
|
|||||||
doTest(fileName);
|
doTest(fileName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("delegateConstructorCallWithKeywords.kt")
|
||||||
|
public void testDelegateConstructorCallWithKeywords() throws Exception {
|
||||||
|
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/classes/delegateConstructorCallWithKeywords.kt");
|
||||||
|
doTest(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("delegation2.kt")
|
@TestMetadata("delegation2.kt")
|
||||||
public void testDelegation2() throws Exception {
|
public void testDelegation2() throws Exception {
|
||||||
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/classes/delegation2.kt");
|
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/classes/delegation2.kt");
|
||||||
|
|||||||
@@ -2999,6 +2999,12 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest {
|
|||||||
doTest(fileName);
|
doTest(fileName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("delegateConstructorCallWithKeywords.kt")
|
||||||
|
public void testDelegateConstructorCallWithKeywords() throws Exception {
|
||||||
|
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/classes/delegateConstructorCallWithKeywords.kt");
|
||||||
|
doTest(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("delegation2.kt")
|
@TestMetadata("delegation2.kt")
|
||||||
public void testDelegation2() throws Exception {
|
public void testDelegation2() throws Exception {
|
||||||
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/classes/delegation2.kt");
|
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/classes/delegation2.kt");
|
||||||
|
|||||||
@@ -2999,6 +2999,12 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes
|
|||||||
doTest(fileName);
|
doTest(fileName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("delegateConstructorCallWithKeywords.kt")
|
||||||
|
public void testDelegateConstructorCallWithKeywords() throws Exception {
|
||||||
|
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/classes/delegateConstructorCallWithKeywords.kt");
|
||||||
|
doTest(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("delegation2.kt")
|
@TestMetadata("delegation2.kt")
|
||||||
public void testDelegation2() throws Exception {
|
public void testDelegation2() throws Exception {
|
||||||
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/classes/delegation2.kt");
|
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/classes/delegation2.kt");
|
||||||
|
|||||||
@@ -3581,6 +3581,12 @@ public class JsCodegenBoxTestGenerated extends AbstractJsCodegenBoxTest {
|
|||||||
doTest(fileName);
|
doTest(fileName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("delegateConstructorCallWithKeywords.kt")
|
||||||
|
public void testDelegateConstructorCallWithKeywords() throws Exception {
|
||||||
|
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/classes/delegateConstructorCallWithKeywords.kt");
|
||||||
|
doTest(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("delegation2.kt")
|
@TestMetadata("delegation2.kt")
|
||||||
public void testDelegation2() throws Exception {
|
public void testDelegation2() throws Exception {
|
||||||
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/classes/delegation2.kt");
|
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/classes/delegation2.kt");
|
||||||
|
|||||||
+2
-2
@@ -253,8 +253,8 @@ class ClassTranslator private constructor(
|
|||||||
context.addDeclarationStatement(constructorInitializer.makeStmt())
|
context.addDeclarationStatement(constructorInitializer.makeStmt())
|
||||||
|
|
||||||
context = context.contextWithScope(constructorInitializer)
|
context = context.contextWithScope(constructorInitializer)
|
||||||
context.translateAndAliasParameters(constructorDescriptor, constructorInitializer.parameters)
|
.translateAndAliasParameters(constructorDescriptor, constructorInitializer.parameters)
|
||||||
.translateFunction(constructor, constructorInitializer)
|
context.translateFunction(constructor, constructorInitializer)
|
||||||
|
|
||||||
// Translate super/this call
|
// Translate super/this call
|
||||||
val superCallGenerators = mutableListOf<(MutableList<JsStatement>) -> Unit>()
|
val superCallGenerators = mutableListOf<(MutableList<JsStatement>) -> Unit>()
|
||||||
|
|||||||
Reference in New Issue
Block a user