[JS IR BE] BridgeConstruction: Fix init order of receivers and type parameters
This commit is contained in:
+1
-2
@@ -134,13 +134,12 @@ class BridgesConstruction(val context: JsIrBackendContext) : ClassLoweringPass {
|
||||
bridge.isSuspend,
|
||||
origin
|
||||
).apply {
|
||||
|
||||
copyTypeParametersFrom(bridge)
|
||||
// TODO: should dispatch receiver be copied?
|
||||
dispatchReceiverParameter = bridge.dispatchReceiverParameter?.run {
|
||||
IrValueParameterImpl(startOffset, endOffset, origin, descriptor, type, varargElementType).also { it.parent = this@apply }
|
||||
}
|
||||
extensionReceiverParameter = bridge.extensionReceiverParameter?.copyTo(this)
|
||||
copyTypeParametersFrom(bridge)
|
||||
valueParameters += bridge.valueParameters.map { p -> p.copyTo(this) }
|
||||
annotations += bridge.annotations
|
||||
overriddenSymbols.addAll(delegateTo.overriddenSymbols)
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
interface A<T1> {
|
||||
fun <T2> T2.foo(x: T1): String
|
||||
}
|
||||
|
||||
class Z : A<String> {
|
||||
override fun <T2> T2.foo(x: String) = this.toString() + x
|
||||
}
|
||||
|
||||
fun A<String>.result() = "O".foo("K")
|
||||
|
||||
fun box(): String {
|
||||
val a: A<String> = Z()
|
||||
return a.result()
|
||||
}
|
||||
+5
@@ -1474,6 +1474,11 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest {
|
||||
runTest("compiler/testData/codegen/box/bridges/twoParentsWithTheSameMethodOneBridge.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("typeParameterInExtensionReceiver.kt")
|
||||
public void testTypeParameterInExtensionReceiver() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/bridges/typeParameterInExtensionReceiver.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("compiler/testData/codegen/box/bridges/substitutionInSuperClass")
|
||||
@TestDataPath("$PROJECT_ROOT")
|
||||
@RunWith(JUnit3RunnerWithInners.class)
|
||||
|
||||
+5
@@ -1474,6 +1474,11 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes
|
||||
runTest("compiler/testData/codegen/box/bridges/twoParentsWithTheSameMethodOneBridge.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("typeParameterInExtensionReceiver.kt")
|
||||
public void testTypeParameterInExtensionReceiver() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/bridges/typeParameterInExtensionReceiver.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("compiler/testData/codegen/box/bridges/substitutionInSuperClass")
|
||||
@TestDataPath("$PROJECT_ROOT")
|
||||
@RunWith(JUnit3RunnerWithInners.class)
|
||||
|
||||
+5
@@ -1474,6 +1474,11 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes
|
||||
runTest("compiler/testData/codegen/box/bridges/twoParentsWithTheSameMethodOneBridge.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("typeParameterInExtensionReceiver.kt")
|
||||
public void testTypeParameterInExtensionReceiver() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/bridges/typeParameterInExtensionReceiver.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("compiler/testData/codegen/box/bridges/substitutionInSuperClass")
|
||||
@TestDataPath("$PROJECT_ROOT")
|
||||
@RunWith(JUnit3RunnerWithInners.class)
|
||||
|
||||
Generated
+5
@@ -1179,6 +1179,11 @@ public class IrJsCodegenBoxTestGenerated extends AbstractIrJsCodegenBoxTest {
|
||||
runTest("compiler/testData/codegen/box/bridges/twoParentsWithTheSameMethodOneBridge.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("typeParameterInExtensionReceiver.kt")
|
||||
public void testTypeParameterInExtensionReceiver() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/bridges/typeParameterInExtensionReceiver.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("compiler/testData/codegen/box/bridges/substitutionInSuperClass")
|
||||
@TestDataPath("$PROJECT_ROOT")
|
||||
@RunWith(JUnit3RunnerWithInners.class)
|
||||
|
||||
+5
@@ -1179,6 +1179,11 @@ public class JsCodegenBoxTestGenerated extends AbstractJsCodegenBoxTest {
|
||||
runTest("compiler/testData/codegen/box/bridges/twoParentsWithTheSameMethodOneBridge.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("typeParameterInExtensionReceiver.kt")
|
||||
public void testTypeParameterInExtensionReceiver() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/bridges/typeParameterInExtensionReceiver.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("compiler/testData/codegen/box/bridges/substitutionInSuperClass")
|
||||
@TestDataPath("$PROJECT_ROOT")
|
||||
@RunWith(JUnit3RunnerWithInners.class)
|
||||
|
||||
Reference in New Issue
Block a user