[FIR] Support sealed class inheritors in multiple files
This commit is contained in:
@@ -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<!>()
|
||||
|
||||
-39
@@ -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<!>()
|
||||
|
||||
Reference in New Issue
Block a user