FIR: check subclass of sealed class

This commit is contained in:
Tianyu Geng
2021-06-25 17:39:35 -07:00
committed by TeamCityServer
parent ed152e74a0
commit 10d4dfef04
18 changed files with 110 additions and 66 deletions
@@ -12,7 +12,7 @@ fun test_1(b: Base) = when (b) {
// MODULE: m1-jvm()()(m1-common)
class PlatfromDerived : Base() // must be an error
class PlatfromDerived : <!SEALED_INHERITOR_IN_DIFFERENT_MODULE!>Base<!>() // must be an error
fun test_2(b: Base) = when (b) {
is Derived -> 1
@@ -13,10 +13,10 @@ expect sealed class SealedWithPlatformActuals : SealedWithSharedActual
package foo
actual sealed class SealedWithSharedActual
class SimpleShared : <!UNRESOLVED_REFERENCE!>SealedWithPlatformActuals<!>()
class SimpleShared : <!SEALED_INHERITOR_IN_DIFFERENT_MODULE, UNRESOLVED_REFERENCE!>SealedWithPlatformActuals<!>()
// MODULE: main()()(intermediate)
// TARGET_PLATFORM: JVM
package foo
actual sealed class SealedWithPlatformActuals <!ACTUAL_WITHOUT_EXPECT, NON_PRIVATE_OR_PROTECTED_CONSTRUCTOR_IN_SEALED!>actual constructor()<!>: SealedWithSharedActual()
actual sealed class SealedWithPlatformActuals <!ACTUAL_WITHOUT_EXPECT, NON_PRIVATE_OR_PROTECTED_CONSTRUCTOR_IN_SEALED!>actual constructor()<!>: <!SEALED_INHERITOR_IN_DIFFERENT_MODULE!>SealedWithSharedActual<!>()
@@ -37,4 +37,4 @@ package bar
import foo.Base
class E : <!SEALED_SUPERTYPE!>Base<!>()
class E : <!SEALED_INHERITOR_IN_DIFFERENT_PACKAGE!>Base<!>()
@@ -1,17 +0,0 @@
// ISSUE: KT-20423
// !LANGUAGE: +SealedInterfaces +AllowSealedInheritorsInDifferentFilesOfSamePackage
// MODULE: m1
// FILE: a.kt
package a
sealed class Base
class A : Base()
// MODULE: m2(m1)
// FILE: b.kt
package a
class B : Base()
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// ISSUE: KT-20423
// !LANGUAGE: +SealedInterfaces +AllowSealedInheritorsInDifferentFilesOfSamePackage
@@ -1,17 +0,0 @@
// ISSUE: KT-20423
// !LANGUAGE: +SealedInterfaces +AllowSealedInheritorsInDifferentFilesOfSamePackage
// MODULE: m1
// FILE: a.kt
package a
sealed interface Base
interface A : Base
// MODULE: m2(m1)
// FILE: b.kt
package a
interface B : Base
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// ISSUE: KT-20423
// !LANGUAGE: +SealedInterfaces +AllowSealedInheritorsInDifferentFilesOfSamePackage
@@ -1,11 +0,0 @@
// ISSUE: KT-41215
// FILE: Base.java
public sealed class Base permits A, B {}
// FILE: A.java
public final class A extends Base {}
// FILE: B.kt
class B : Base()
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// ISSUE: KT-41215
// FILE: Base.java
@@ -1,11 +0,0 @@
// ISSUE: KT-41215
// FILE: Base.java
public sealed interface Base permits A, B {}
// FILE: A.java
public final class A extends Base {}
// FILE: B.kt
class B : Base
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// ISSUE: KT-41215
// FILE: Base.java