// FIR_DISABLE_LAZY_RESOLVE_CHECKS
// 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 : Base()
class GrandDerivedThird : DerivedThird()
// Question: should we have an error also here?
class GrandDerivedFourth : DerivedFourth()
@Marker
open class Marked
@SubclassOptInRequired(Marker::class)
open class DerivedMarked : Marked()
fun test() {
val b = Base()
val d1 = DerivedFirst()
val d2 = DerivedSecond()
val d3 = DerivedThird()
val d4 = DerivedFourth()
}
fun test2(b: Base, g: Generic) {
object : Base() {}
}
open class Generic
class DerivedGeneric : Generic()
@SubclassOptInRequired(Marker::class)
interface BaseInterface
interface DerivedInterface : BaseInterface
class Delegated(val bi: BaseInterface) : BaseInterface by bi