[FIR] Support sealed class inheritors in multiple files

This commit is contained in:
Dmitriy Novozhilov
2021-02-04 12:17:37 +03:00
parent c8f9cc33ef
commit 490ef210ac
13 changed files with 130 additions and 156 deletions
@@ -1,7 +1,7 @@
sealed class Base
class Derived: Base() {
class Derived2: <!SEALED_SUPERTYPE!>Base<!>()
class Derived2: Base()
}
fun test() {
@@ -10,14 +10,14 @@ sealed class Base {
// FILE: B.kt
class B : <!HIDDEN!>Base<!>()
class B : Base()
// FILE: Container.kt
class Containter {
class C : <!HIDDEN, SEALED_SUPERTYPE!>Base<!>()
class C : Base()
inner class D : <!HIDDEN, SEALED_SUPERTYPE!>Base<!>()
inner class D : Base()
}
// FILE: main.kt
@@ -13,21 +13,21 @@ sealed class Base {
package foo
class B : <!HIDDEN!>Base<!>()
class B : Base()
// FILE: c.kt
package foo
class Container {
class C : <!HIDDEN, SEALED_SUPERTYPE!>Base<!>()
class C : Base()
inner class D : <!HIDDEN, SEALED_SUPERTYPE!>Base<!>()
inner class D : Base()
val anon = object : <!HIDDEN, SEALED_SUPERTYPE_IN_LOCAL_CLASS!>Base<!>() {} // Should be an error
val anon = object : <!SEALED_SUPERTYPE_IN_LOCAL_CLASS!>Base<!>() {} // Should be an error
fun someFun() {
class LocalClass : <!HIDDEN, SEALED_SUPERTYPE_IN_LOCAL_CLASS!>Base<!>() {} // Should be an error
class LocalClass : <!SEALED_SUPERTYPE_IN_LOCAL_CLASS!>Base<!>() {} // Should be an error
}
}
@@ -37,4 +37,4 @@ package bar
import foo.Base
class E : <!HIDDEN!>Base<!>()
class E : <!HIDDEN, SEALED_SUPERTYPE!>Base<!>()
@@ -1,39 +0,0 @@
// ISSUE: KT-13495
// !LANGUAGE: +AllowSealedInheritorsInDifferentFilesOfSamePackage
// !DIAGNOSTICS: -UNUSED_VARIABLE
// FILE: base.kt
package foo
class Container {
sealed class Base
}
// FILE: a.kt
package foo
class A : <!HIDDEN, SEALED_SUPERTYPE!>Container.Base<!>()
// FILE: b.kt
package foo
class BContainer {
class B : <!HIDDEN, SEALED_SUPERTYPE!>Container.Base<!>()
inner class C : <!HIDDEN, SEALED_SUPERTYPE!>Container.Base<!>()
}
// FILE: test.kt
package foo
fun test(base: Container.Base) {
val x = when (base) {
is A -> 1
is BContainer.B -> 2
is BContainer.C -> 3
}
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// ISSUE: KT-13495
// !LANGUAGE: +AllowSealedInheritorsInDifferentFilesOfSamePackage
// !DIAGNOSTICS: -UNUSED_VARIABLE
@@ -2,7 +2,7 @@ class A {
sealed class Base
}
class Derived : <!SEALED_SUPERTYPE!>A.Base<!>()
class Derived : A.Base()
fun test() {
class DerivedLocal : <!SEALED_SUPERTYPE_IN_LOCAL_CLASS!>A.Base<!>()