103 lines
2.3 KiB
Kotlin
Vendored
103 lines
2.3 KiB
Kotlin
Vendored
// FIR_IDENTICAL
|
|
@RequiresOptIn
|
|
annotation class Marker
|
|
|
|
// Error!
|
|
<!SUBCLASS_OPT_IN_INAPPLICABLE!>@SubclassOptInRequired(Marker::class)<!>
|
|
class Final
|
|
|
|
// Error!
|
|
<!SUBCLASS_OPT_IN_INAPPLICABLE!>@SubclassOptInRequired(Marker::class)<!>
|
|
sealed class SealedClass {
|
|
<!SUBCLASS_OPT_IN_INAPPLICABLE!>@SubclassOptInRequired(Marker::class)<!>
|
|
object O : SealedClass()
|
|
}
|
|
|
|
// Error!
|
|
<!SUBCLASS_OPT_IN_INAPPLICABLE!>@SubclassOptInRequired(Marker::class)<!>
|
|
sealed interface SealedInterface
|
|
|
|
// Error!
|
|
<!SUBCLASS_OPT_IN_INAPPLICABLE!>@SubclassOptInRequired(Marker::class)<!>
|
|
fun interface FunInterface {
|
|
fun doIt()
|
|
}
|
|
|
|
sealed class Normal
|
|
|
|
// Ok!
|
|
@SubclassOptInRequired(Marker::class)
|
|
open class NormalOpen : Normal()
|
|
|
|
// Ok!
|
|
@SubclassOptInRequired(Marker::class)
|
|
abstract class NormalAbstract : Normal()
|
|
|
|
// Error!
|
|
<!SUBCLASS_OPT_IN_INAPPLICABLE!>@SubclassOptInRequired(Marker::class)<!>
|
|
sealed class ErrorSealed : Normal()
|
|
|
|
// Error!
|
|
<!SUBCLASS_OPT_IN_INAPPLICABLE!>@SubclassOptInRequired(Marker::class)<!>
|
|
class ErrorFinal : Normal()
|
|
|
|
// Ok!
|
|
@SubclassOptInRequired(Marker::class)
|
|
abstract class Abstract
|
|
|
|
// Error! Should be replaced with OptIn
|
|
<!SUBCLASS_OPT_IN_INAPPLICABLE!>@SubclassOptInRequired(Marker::class)<!>
|
|
class Derived1 : Abstract()
|
|
|
|
// Ok!
|
|
@OptIn(Marker::class)
|
|
class Derived2 : Abstract()
|
|
|
|
// Error!
|
|
<!SUBCLASS_OPT_IN_INAPPLICABLE!>@SubclassOptInRequired(Marker::class)<!>
|
|
object Obj
|
|
|
|
// Error!
|
|
<!SUBCLASS_OPT_IN_INAPPLICABLE!>@SubclassOptInRequired(Marker::class)<!>
|
|
enum class E1 {
|
|
FIRST;
|
|
}
|
|
|
|
enum class E2 {
|
|
// Error!
|
|
<!WRONG_ANNOTATION_TARGET!>@SubclassOptInRequired(Marker::class)<!>
|
|
SECOND;
|
|
}
|
|
|
|
// Error!
|
|
<!SUBCLASS_OPT_IN_INAPPLICABLE!>@SubclassOptInRequired(Marker::class)<!>
|
|
annotation class A
|
|
|
|
// Local stuff
|
|
fun foo() {
|
|
// Error!
|
|
val v = <!SUBCLASS_OPT_IN_INAPPLICABLE!>@SubclassOptInRequired(Marker::class)<!> object : Any() {
|
|
|
|
}
|
|
|
|
// Error!
|
|
<!SUBCLASS_OPT_IN_INAPPLICABLE!>@SubclassOptInRequired(Marker::class)<!>
|
|
open class OpenLocal
|
|
|
|
// Ok!
|
|
@OptIn(Marker::class)
|
|
class DerivedLocal : OpenLocal()
|
|
|
|
// Error!
|
|
<!SUBCLASS_OPT_IN_INAPPLICABLE!>@SubclassOptInRequired(Marker::class)<!>
|
|
class Local
|
|
}
|
|
|
|
// Common rules with OptIn
|
|
|
|
annotation class Simple
|
|
|
|
// Error! Opt-in marker required
|
|
<!OPT_IN_ARGUMENT_IS_NOT_MARKER!>@SubclassOptInRequired(Simple::class)<!>
|
|
open class Some
|