| // 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, OPT_IN_USAGE_ERROR!>V0_2_0<!>) val property2: Int, | |
| @UnusedSince(AppVersion.<!OPT_IN_USAGE_ERROR, 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 */ |