blob: 57dbfea1d9474ac08764fd45e73a70b2faf4cc25 [file]
// RUN_PIPELINE_TILL: FRONTEND
// MODULE: m1
// FILE: m1.kt
@RequiresOptIn(level = RequiresOptIn.Level.ERROR)
@Retention(AnnotationRetention.BINARY)
annotation class UnsupportedAppVersion
annotation class UnusedSince(val version: AppVersion)
enum class AppVersion {
@UnsupportedAppVersion V0_1_0,
@UnsupportedAppVersion V0_2_0,
@UnsupportedAppVersion V0_2_5 {
override fun toString() = "2.5"
},
V0_3_0,
}
@OptIn(UnsupportedAppVersion::class) fun something(appVersion: AppVersion): String {
if (appVersion <= AppVersion.V0_2_0) {
return "something special"
}
return "foo"
}
@UnsupportedAppVersion
fun foo() {}
@UnsupportedAppVersion
val x = 2
// MODULE: m2(m1)
// FILE: m2.kt
class MyDto(
val property1: Int,
@UnusedSince(AppVersion.<!OPT_IN_USAGE_ERROR!>V0_2_0<!>) val property2: Int,
@UnusedSince(AppVersion.<!OPT_IN_USAGE_ERROR!>V0_2_5<!>) val property3: Int,
)
fun bar() {
<!OPT_IN_USAGE_ERROR!>foo<!>()
val y = <!OPT_IN_USAGE_ERROR!>x<!>
}
/* GENERATED_FIR_TAGS: annotationDeclaration, classDeclaration, classReference, comparisonExpression, enumDeclaration,
enumEntry, functionDeclaration, ifExpression, integerLiteral, localProperty, primaryConstructor, propertyDeclaration,
stringLiteral */