IR: Test for toSkip(this) in T.resolveFakeOverride()
^KT-49371 Fixed
This commit is contained in:
+6
@@ -16078,6 +16078,12 @@ public class FirBlackBoxCodegenTestGenerated extends AbstractFirBlackBoxCodegenT
|
||||
runTest("compiler/testData/codegen/box/fakeOverride/internalFromFriendModule.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("kt49371.kt")
|
||||
public void testKt49371() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/fakeOverride/kt49371.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("privateFakeOverrides0.kt")
|
||||
public void testPrivateFakeOverrides0() throws Exception {
|
||||
|
||||
@@ -98,7 +98,7 @@ fun <S : IrSymbol, T : IrOverridableDeclaration<S>> T.resolveFakeOverride(
|
||||
allowAbstract: Boolean = false,
|
||||
toSkip: (T) -> Boolean = { false }
|
||||
): T? {
|
||||
if (!isFakeOverride) return this
|
||||
if (!isFakeOverride && !toSkip(this)) return this
|
||||
return if (allowAbstract) {
|
||||
val reals = collectRealOverrides(toSkip)
|
||||
if (reals.isEmpty()) error("No real overrides for ${this.render()}")
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
interface Left
|
||||
interface Right
|
||||
class Bottom : Left, Right
|
||||
|
||||
interface A<T> {
|
||||
fun f(): T? {
|
||||
return null
|
||||
}
|
||||
}
|
||||
|
||||
interface B<T : Left> : A<T> {}
|
||||
|
||||
abstract class C<T> : A<T>
|
||||
|
||||
abstract class D<T : Right> : C<T>()
|
||||
|
||||
class Z : D<Bottom>(), B<Bottom>
|
||||
|
||||
|
||||
fun box(): String {
|
||||
Z().f()
|
||||
return "OK"
|
||||
}
|
||||
+6
@@ -16000,6 +16000,12 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest {
|
||||
runTest("compiler/testData/codegen/box/fakeOverride/internalFromFriendModule.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("kt49371.kt")
|
||||
public void testKt49371() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/fakeOverride/kt49371.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("privateFakeOverrides0.kt")
|
||||
public void testPrivateFakeOverrides0() throws Exception {
|
||||
|
||||
+6
@@ -16078,6 +16078,12 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes
|
||||
runTest("compiler/testData/codegen/box/fakeOverride/internalFromFriendModule.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("kt49371.kt")
|
||||
public void testKt49371() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/fakeOverride/kt49371.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("privateFakeOverrides0.kt")
|
||||
public void testPrivateFakeOverrides0() throws Exception {
|
||||
|
||||
+5
@@ -13173,6 +13173,11 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes
|
||||
runTest("compiler/testData/codegen/box/fakeOverride/internalFromFriendModule.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("kt49371.kt")
|
||||
public void testKt49371() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/fakeOverride/kt49371.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("privateFakeOverrides0.kt")
|
||||
public void testPrivateFakeOverrides0() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/fakeOverride/privateFakeOverrides0.kt");
|
||||
|
||||
js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/es6/semantics/IrJsCodegenBoxES6TestGenerated.java
Generated
+5
@@ -11672,6 +11672,11 @@ public class IrJsCodegenBoxES6TestGenerated extends AbstractIrJsCodegenBoxES6Tes
|
||||
runTest("compiler/testData/codegen/box/fakeOverride/internalFromFriendModule.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("kt49371.kt")
|
||||
public void testKt49371() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/fakeOverride/kt49371.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("privateFakeOverrides0.kt")
|
||||
public void testPrivateFakeOverrides0() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/fakeOverride/privateFakeOverrides0.kt");
|
||||
|
||||
Generated
+5
@@ -11078,6 +11078,11 @@ public class IrJsCodegenBoxTestGenerated extends AbstractIrJsCodegenBoxTest {
|
||||
runTest("compiler/testData/codegen/box/fakeOverride/internalFromFriendModule.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("kt49371.kt")
|
||||
public void testKt49371() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/fakeOverride/kt49371.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("privateFakeOverrides0.kt")
|
||||
public void testPrivateFakeOverrides0() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/fakeOverride/privateFakeOverrides0.kt");
|
||||
|
||||
js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/wasm/semantics/IrCodegenBoxWasmTestGenerated.java
Generated
+5
@@ -10339,6 +10339,11 @@ public class IrCodegenBoxWasmTestGenerated extends AbstractIrCodegenBoxWasmTest
|
||||
runTest("compiler/testData/codegen/box/fakeOverride/internalFromFriendModule.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("kt49371.kt")
|
||||
public void testKt49371() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/fakeOverride/kt49371.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("privateFakeOverrides0.kt")
|
||||
public void testPrivateFakeOverrides0() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/fakeOverride/privateFakeOverrides0.kt");
|
||||
|
||||
+6
@@ -12468,6 +12468,12 @@ public class JsCodegenBoxTestGenerated extends AbstractJsCodegenBoxTest {
|
||||
runTest("compiler/testData/codegen/box/fakeOverride/internalFromFriendModule.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("kt49371.kt")
|
||||
public void testKt49371() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/fakeOverride/kt49371.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("privateFakeOverrides0.kt")
|
||||
public void testPrivateFakeOverrides0() throws Exception {
|
||||
|
||||
Reference in New Issue
Block a user