[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,
|
bridge.isSuspend,
|
||||||
origin
|
origin
|
||||||
).apply {
|
).apply {
|
||||||
|
copyTypeParametersFrom(bridge)
|
||||||
// TODO: should dispatch receiver be copied?
|
// TODO: should dispatch receiver be copied?
|
||||||
dispatchReceiverParameter = bridge.dispatchReceiverParameter?.run {
|
dispatchReceiverParameter = bridge.dispatchReceiverParameter?.run {
|
||||||
IrValueParameterImpl(startOffset, endOffset, origin, descriptor, type, varargElementType).also { it.parent = this@apply }
|
IrValueParameterImpl(startOffset, endOffset, origin, descriptor, type, varargElementType).also { it.parent = this@apply }
|
||||||
}
|
}
|
||||||
extensionReceiverParameter = bridge.extensionReceiverParameter?.copyTo(this)
|
extensionReceiverParameter = bridge.extensionReceiverParameter?.copyTo(this)
|
||||||
copyTypeParametersFrom(bridge)
|
|
||||||
valueParameters += bridge.valueParameters.map { p -> p.copyTo(this) }
|
valueParameters += bridge.valueParameters.map { p -> p.copyTo(this) }
|
||||||
annotations += bridge.annotations
|
annotations += bridge.annotations
|
||||||
overriddenSymbols.addAll(delegateTo.overriddenSymbols)
|
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");
|
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")
|
@TestMetadata("compiler/testData/codegen/box/bridges/substitutionInSuperClass")
|
||||||
@TestDataPath("$PROJECT_ROOT")
|
@TestDataPath("$PROJECT_ROOT")
|
||||||
@RunWith(JUnit3RunnerWithInners.class)
|
@RunWith(JUnit3RunnerWithInners.class)
|
||||||
|
|||||||
+5
@@ -1474,6 +1474,11 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes
|
|||||||
runTest("compiler/testData/codegen/box/bridges/twoParentsWithTheSameMethodOneBridge.kt");
|
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")
|
@TestMetadata("compiler/testData/codegen/box/bridges/substitutionInSuperClass")
|
||||||
@TestDataPath("$PROJECT_ROOT")
|
@TestDataPath("$PROJECT_ROOT")
|
||||||
@RunWith(JUnit3RunnerWithInners.class)
|
@RunWith(JUnit3RunnerWithInners.class)
|
||||||
|
|||||||
+5
@@ -1474,6 +1474,11 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes
|
|||||||
runTest("compiler/testData/codegen/box/bridges/twoParentsWithTheSameMethodOneBridge.kt");
|
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")
|
@TestMetadata("compiler/testData/codegen/box/bridges/substitutionInSuperClass")
|
||||||
@TestDataPath("$PROJECT_ROOT")
|
@TestDataPath("$PROJECT_ROOT")
|
||||||
@RunWith(JUnit3RunnerWithInners.class)
|
@RunWith(JUnit3RunnerWithInners.class)
|
||||||
|
|||||||
Generated
+5
@@ -1179,6 +1179,11 @@ public class IrJsCodegenBoxTestGenerated extends AbstractIrJsCodegenBoxTest {
|
|||||||
runTest("compiler/testData/codegen/box/bridges/twoParentsWithTheSameMethodOneBridge.kt");
|
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")
|
@TestMetadata("compiler/testData/codegen/box/bridges/substitutionInSuperClass")
|
||||||
@TestDataPath("$PROJECT_ROOT")
|
@TestDataPath("$PROJECT_ROOT")
|
||||||
@RunWith(JUnit3RunnerWithInners.class)
|
@RunWith(JUnit3RunnerWithInners.class)
|
||||||
|
|||||||
+5
@@ -1179,6 +1179,11 @@ public class JsCodegenBoxTestGenerated extends AbstractJsCodegenBoxTest {
|
|||||||
runTest("compiler/testData/codegen/box/bridges/twoParentsWithTheSameMethodOneBridge.kt");
|
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")
|
@TestMetadata("compiler/testData/codegen/box/bridges/substitutionInSuperClass")
|
||||||
@TestDataPath("$PROJECT_ROOT")
|
@TestDataPath("$PROJECT_ROOT")
|
||||||
@RunWith(JUnit3RunnerWithInners.class)
|
@RunWith(JUnit3RunnerWithInners.class)
|
||||||
|
|||||||
Reference in New Issue
Block a user