JVM_IR KT-42137 bridges are not generated for fake overrides
This commit is contained in:
Generated
+5
@@ -1522,6 +1522,11 @@ public class FirBlackBoxCodegenTestGenerated extends AbstractFirBlackBoxCodegenT
|
|||||||
runTest("compiler/testData/codegen/box/bridges/kt318.kt");
|
runTest("compiler/testData/codegen/box/bridges/kt318.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("kt42137.kt")
|
||||||
|
public void testKt42137() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/bridges/kt42137.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("longChainOneBridge.kt")
|
@TestMetadata("longChainOneBridge.kt")
|
||||||
public void testLongChainOneBridge() throws Exception {
|
public void testLongChainOneBridge() throws Exception {
|
||||||
runTest("compiler/testData/codegen/box/bridges/longChainOneBridge.kt");
|
runTest("compiler/testData/codegen/box/bridges/longChainOneBridge.kt");
|
||||||
|
|||||||
+5
-2
@@ -350,9 +350,12 @@ internal class BridgeLowering(val context: JvmBackendContext) : FileLoweringPass
|
|||||||
//
|
//
|
||||||
// This can still break binary compatibility, but it matches the behavior of the JVM backend.
|
// This can still break binary compatibility, but it matches the behavior of the JVM backend.
|
||||||
if (irFunction.isFakeOverride) {
|
if (irFunction.isFakeOverride) {
|
||||||
irFunction.overriddenSymbols.asSequence().map { it.owner }.filter { !it.isJvmAbstract(context.state.jvmDefaultMode) }
|
irFunction.overriddenSymbols.asSequence()
|
||||||
|
.map { it.owner }.filter { !it.isJvmAbstract(context.state.jvmDefaultMode) }
|
||||||
.forEach { override ->
|
.forEach { override ->
|
||||||
override.allOverridden().mapTo(blacklist) { it.jvmMethod }
|
override.allOverridden()
|
||||||
|
.filter { !it.isFakeOverride }
|
||||||
|
.mapTo(blacklist) { it.jvmMethod }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,16 @@
|
|||||||
|
interface A<out T> {
|
||||||
|
val value: T
|
||||||
|
}
|
||||||
|
|
||||||
|
interface B<out T : CharSequence> : A<T>
|
||||||
|
|
||||||
|
open class C(override val value: String) : B<CharSequence>
|
||||||
|
|
||||||
|
interface X {
|
||||||
|
val value: CharSequence
|
||||||
|
}
|
||||||
|
|
||||||
|
class Y(value: String) : C(value), X
|
||||||
|
|
||||||
|
fun box(): String =
|
||||||
|
(Y("OK") as X).value.toString()
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
interface A<out T> {
|
||||||
|
val value: T
|
||||||
|
}
|
||||||
|
|
||||||
|
interface B<out T : CharSequence> : A<T>
|
||||||
|
|
||||||
|
open class C(override val value: String) : B<CharSequence>
|
||||||
|
|
||||||
|
interface X {
|
||||||
|
val value: CharSequence
|
||||||
|
}
|
||||||
|
|
||||||
|
class Y(value: String) : C(value), X
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
@kotlin.Metadata
|
||||||
|
public interface A {
|
||||||
|
// source: 'kt42137.kt'
|
||||||
|
public abstract method getValue(): java.lang.Object
|
||||||
|
}
|
||||||
|
|
||||||
|
@kotlin.Metadata
|
||||||
|
public interface B {
|
||||||
|
// source: 'kt42137.kt'
|
||||||
|
}
|
||||||
|
|
||||||
|
@kotlin.Metadata
|
||||||
|
public class C {
|
||||||
|
// source: 'kt42137.kt'
|
||||||
|
private final @org.jetbrains.annotations.NotNull field value: java.lang.String
|
||||||
|
public method <init>(@org.jetbrains.annotations.NotNull p0: java.lang.String): void
|
||||||
|
public synthetic bridge method getValue(): java.lang.Object
|
||||||
|
public @org.jetbrains.annotations.NotNull method getValue(): java.lang.String
|
||||||
|
}
|
||||||
|
|
||||||
|
@kotlin.Metadata
|
||||||
|
public interface X {
|
||||||
|
// source: 'kt42137.kt'
|
||||||
|
public abstract @org.jetbrains.annotations.NotNull method getValue(): java.lang.CharSequence
|
||||||
|
}
|
||||||
|
|
||||||
|
@kotlin.Metadata
|
||||||
|
public final class Y {
|
||||||
|
// source: 'kt42137.kt'
|
||||||
|
public method <init>(@org.jetbrains.annotations.NotNull p0: java.lang.String): void
|
||||||
|
public synthetic bridge method getValue(): java.lang.CharSequence
|
||||||
|
}
|
||||||
+5
@@ -1542,6 +1542,11 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest {
|
|||||||
runTest("compiler/testData/codegen/box/bridges/kt318.kt");
|
runTest("compiler/testData/codegen/box/bridges/kt318.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("kt42137.kt")
|
||||||
|
public void testKt42137() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/bridges/kt42137.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("longChainOneBridge.kt")
|
@TestMetadata("longChainOneBridge.kt")
|
||||||
public void testLongChainOneBridge() throws Exception {
|
public void testLongChainOneBridge() throws Exception {
|
||||||
runTest("compiler/testData/codegen/box/bridges/longChainOneBridge.kt");
|
runTest("compiler/testData/codegen/box/bridges/longChainOneBridge.kt");
|
||||||
|
|||||||
+5
@@ -104,6 +104,11 @@ public class BytecodeListingTestGenerated extends AbstractBytecodeListingTest {
|
|||||||
runTest("compiler/testData/codegen/bytecodeListing/jvmStaticWithDefaultParameters.kt");
|
runTest("compiler/testData/codegen/bytecodeListing/jvmStaticWithDefaultParameters.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("kt42137.kt")
|
||||||
|
public void testKt42137() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/bytecodeListing/kt42137.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("kt42879.kt")
|
@TestMetadata("kt42879.kt")
|
||||||
public void testKt42879() throws Exception {
|
public void testKt42879() throws Exception {
|
||||||
runTest("compiler/testData/codegen/bytecodeListing/kt42879.kt");
|
runTest("compiler/testData/codegen/bytecodeListing/kt42879.kt");
|
||||||
|
|||||||
+5
@@ -1542,6 +1542,11 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes
|
|||||||
runTest("compiler/testData/codegen/box/bridges/kt318.kt");
|
runTest("compiler/testData/codegen/box/bridges/kt318.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("kt42137.kt")
|
||||||
|
public void testKt42137() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/bridges/kt42137.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("longChainOneBridge.kt")
|
@TestMetadata("longChainOneBridge.kt")
|
||||||
public void testLongChainOneBridge() throws Exception {
|
public void testLongChainOneBridge() throws Exception {
|
||||||
runTest("compiler/testData/codegen/box/bridges/longChainOneBridge.kt");
|
runTest("compiler/testData/codegen/box/bridges/longChainOneBridge.kt");
|
||||||
|
|||||||
+5
@@ -1522,6 +1522,11 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes
|
|||||||
runTest("compiler/testData/codegen/box/bridges/kt318.kt");
|
runTest("compiler/testData/codegen/box/bridges/kt318.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("kt42137.kt")
|
||||||
|
public void testKt42137() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/bridges/kt42137.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("longChainOneBridge.kt")
|
@TestMetadata("longChainOneBridge.kt")
|
||||||
public void testLongChainOneBridge() throws Exception {
|
public void testLongChainOneBridge() throws Exception {
|
||||||
runTest("compiler/testData/codegen/box/bridges/longChainOneBridge.kt");
|
runTest("compiler/testData/codegen/box/bridges/longChainOneBridge.kt");
|
||||||
|
|||||||
+5
@@ -104,6 +104,11 @@ public class IrBytecodeListingTestGenerated extends AbstractIrBytecodeListingTes
|
|||||||
runTest("compiler/testData/codegen/bytecodeListing/jvmStaticWithDefaultParameters.kt");
|
runTest("compiler/testData/codegen/bytecodeListing/jvmStaticWithDefaultParameters.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("kt42137.kt")
|
||||||
|
public void testKt42137() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/bytecodeListing/kt42137.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("kt42879.kt")
|
@TestMetadata("kt42879.kt")
|
||||||
public void testKt42879() throws Exception {
|
public void testKt42879() throws Exception {
|
||||||
runTest("compiler/testData/codegen/bytecodeListing/kt42879.kt");
|
runTest("compiler/testData/codegen/bytecodeListing/kt42879.kt");
|
||||||
|
|||||||
Generated
+5
@@ -1137,6 +1137,11 @@ public class IrJsCodegenBoxES6TestGenerated extends AbstractIrJsCodegenBoxES6Tes
|
|||||||
runTest("compiler/testData/codegen/box/bridges/kt318.kt");
|
runTest("compiler/testData/codegen/box/bridges/kt318.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("kt42137.kt")
|
||||||
|
public void testKt42137() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/bridges/kt42137.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("longChainOneBridge.kt")
|
@TestMetadata("longChainOneBridge.kt")
|
||||||
public void testLongChainOneBridge() throws Exception {
|
public void testLongChainOneBridge() throws Exception {
|
||||||
runTest("compiler/testData/codegen/box/bridges/longChainOneBridge.kt");
|
runTest("compiler/testData/codegen/box/bridges/longChainOneBridge.kt");
|
||||||
|
|||||||
Generated
+5
@@ -1137,6 +1137,11 @@ public class IrJsCodegenBoxTestGenerated extends AbstractIrJsCodegenBoxTest {
|
|||||||
runTest("compiler/testData/codegen/box/bridges/kt318.kt");
|
runTest("compiler/testData/codegen/box/bridges/kt318.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("kt42137.kt")
|
||||||
|
public void testKt42137() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/bridges/kt42137.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("longChainOneBridge.kt")
|
@TestMetadata("longChainOneBridge.kt")
|
||||||
public void testLongChainOneBridge() throws Exception {
|
public void testLongChainOneBridge() throws Exception {
|
||||||
runTest("compiler/testData/codegen/box/bridges/longChainOneBridge.kt");
|
runTest("compiler/testData/codegen/box/bridges/longChainOneBridge.kt");
|
||||||
|
|||||||
+5
@@ -1137,6 +1137,11 @@ public class JsCodegenBoxTestGenerated extends AbstractJsCodegenBoxTest {
|
|||||||
runTest("compiler/testData/codegen/box/bridges/kt318.kt");
|
runTest("compiler/testData/codegen/box/bridges/kt318.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("kt42137.kt")
|
||||||
|
public void testKt42137() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/bridges/kt42137.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("longChainOneBridge.kt")
|
@TestMetadata("longChainOneBridge.kt")
|
||||||
public void testLongChainOneBridge() throws Exception {
|
public void testLongChainOneBridge() throws Exception {
|
||||||
runTest("compiler/testData/codegen/box/bridges/longChainOneBridge.kt");
|
runTest("compiler/testData/codegen/box/bridges/longChainOneBridge.kt");
|
||||||
|
|||||||
Generated
+5
@@ -977,6 +977,11 @@ public class IrCodegenBoxWasmTestGenerated extends AbstractIrCodegenBoxWasmTest
|
|||||||
runTest("compiler/testData/codegen/box/bridges/kt318.kt");
|
runTest("compiler/testData/codegen/box/bridges/kt318.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("kt42137.kt")
|
||||||
|
public void testKt42137() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/bridges/kt42137.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("longChainOneBridge.kt")
|
@TestMetadata("longChainOneBridge.kt")
|
||||||
public void testLongChainOneBridge() throws Exception {
|
public void testLongChainOneBridge() throws Exception {
|
||||||
runTest("compiler/testData/codegen/box/bridges/longChainOneBridge.kt");
|
runTest("compiler/testData/codegen/box/bridges/longChainOneBridge.kt");
|
||||||
|
|||||||
Reference in New Issue
Block a user