IR: Test for toSkip(this) in T.resolveFakeOverride()

^KT-49371 Fixed
This commit is contained in:
Georgy Bronnikov
2021-10-27 00:21:31 +03:00
parent c67a1ee2e5
commit 534beb8553
10 changed files with 68 additions and 1 deletions
@@ -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()}")
+23
View File
@@ -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"
}
@@ -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 {
@@ -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 {
@@ -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");
@@ -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");
@@ -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");
@@ -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");
@@ -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 {