Files
kotlin-fork/compiler/testData/diagnostics/testsWithStdLib/experimental/subClassOptInRequired.kt
T
Ilya Kirillov 1bbcae5ed2 [FIR] fix resolve contract violation from scopes
We cannot call lazy resolve to STATUS phase from scopes as scopes may be accessed on a STATUS phase or earlier

^KT-54890
^KTIJ-23587 fixed
2023-01-13 21:32:51 +00:00

52 lines
1.1 KiB
Kotlin
Vendored

// FIR_IDENTICAL
@RequiresOptIn
annotation class Marker
@SubclassOptInRequired(Marker::class)
open class Base
@Marker
class DerivedFirst : Base()
@OptIn(Marker::class)
class DerivedSecond : Base()
@SubclassOptInRequired(Marker::class)
open class DerivedThird : Base()
open class DerivedFourth : <!OPT_IN_USAGE_ERROR!>Base<!>()
class GrandDerivedThird : <!OPT_IN_USAGE_ERROR!>DerivedThird<!>()
// Question: should we have an error also here?
class GrandDerivedFourth : DerivedFourth()
@Marker
open class Marked
@SubclassOptInRequired(Marker::class)
open class DerivedMarked : <!OPT_IN_USAGE_ERROR!>Marked<!>()
fun test() {
val b = Base()
val d1 = <!OPT_IN_USAGE_ERROR!>DerivedFirst<!>()
val d2 = DerivedSecond()
val d3 = DerivedThird()
val d4 = DerivedFourth()
}
fun test2(b: Base, g: Generic<Base>) {
object : <!OPT_IN_USAGE_ERROR!>Base<!>() {}
}
open class Generic<T>
class DerivedGeneric : Generic<Base>()
@SubclassOptInRequired(Marker::class)
interface BaseInterface
interface DerivedInterface : <!OPT_IN_USAGE_ERROR!>BaseInterface<!>
class Delegated(val bi: BaseInterface) : <!OPT_IN_USAGE_ERROR!>BaseInterface<!> by bi