Use OPT_IN instead of EXPERIMENTAL in diagnostic names

This commit is contained in:
Mikhail Glukhikh
2021-09-02 13:33:43 +03:00
committed by TeamCityServer
parent 2f07589b42
commit 3febabe977
150 changed files with 514 additions and 514 deletions
@@ -1,5 +1,5 @@
// FIR_IDENTICAL
// !DIAGNOSTICS: -EXPERIMENTAL_API_USAGE_ERROR -UNUSED_EXPRESSION
// !DIAGNOSTICS: -OPT_IN_USAGE_ERROR -UNUSED_EXPRESSION
fun test(s: String?) {
val list = buildList {
@@ -1,5 +1,5 @@
// !LANGUAGE: +NewInference
// !DIAGNOSTICS: -UNUSED_PARAMETER -EXPERIMENTAL_IS_NOT_ENABLED
// !DIAGNOSTICS: -UNUSED_PARAMETER -OPT_IN_IS_NOT_ENABLED
// ISSUE: KT-41164
import kotlin.experimental.ExperimentalTypeInference
@@ -1,5 +1,5 @@
// !LANGUAGE: +NewInference
// !DIAGNOSTICS: -UNUSED_PARAMETER -EXPERIMENTAL_IS_NOT_ENABLED
// !DIAGNOSTICS: -UNUSED_PARAMETER -OPT_IN_IS_NOT_ENABLED
// ISSUE: KT-41164
import kotlin.experimental.ExperimentalTypeInference
@@ -1,5 +1,5 @@
// FIR_IDENTICAL
// !DIAGNOSTICS: -EXPERIMENTAL_API_USAGE_ERROR -UNUSED_PARAMETER -CAST_NEVER_SUCCEEDS
// !DIAGNOSTICS: -OPT_IN_USAGE_ERROR -UNUSED_PARAMETER -CAST_NEVER_SUCCEEDS
fun <T, R> Flow<T>.transformLatest(@BuilderInference transform: suspend FlowCollector<R>.(value: T) -> Unit) = null as Flow<R>
@@ -1,4 +1,4 @@
// !DIAGNOSTICS: -UNCHECKED_CAST -EXPERIMENTAL_API_USAGE_ERROR -UNUSED_PARAMETER
// !DIAGNOSTICS: -UNCHECKED_CAST -OPT_IN_USAGE_ERROR -UNUSED_PARAMETER
class Bar
@@ -1,4 +1,4 @@
// !DIAGNOSTICS: -UNCHECKED_CAST -EXPERIMENTAL_API_USAGE_ERROR -UNUSED_PARAMETER
// !DIAGNOSTICS: -UNCHECKED_CAST -OPT_IN_USAGE_ERROR -UNUSED_PARAMETER
class Bar
@@ -111,29 +111,29 @@ package usage3
import api.*
@<!EXPERIMENTAL_API_USAGE!>EAnno<!> fun function() {}
@<!OPT_IN_USAGE!>EAnno<!> fun function() {}
fun parameter(@<!EXPERIMENTAL_API_USAGE!>EAnno<!> p: String) {}
fun parameter(@<!OPT_IN_USAGE!>EAnno<!> p: String) {}
fun parameterType(p: <!WRONG_ANNOTATION_TARGET!>@<!EXPERIMENTAL_API_USAGE!>EAnno<!><!> String) {}
fun parameterType(p: <!WRONG_ANNOTATION_TARGET!>@<!OPT_IN_USAGE!>EAnno<!><!> String) {}
fun returnType(): <!WRONG_ANNOTATION_TARGET!>@<!EXPERIMENTAL_API_USAGE!>EAnno<!><!> Unit {}
fun returnType(): <!WRONG_ANNOTATION_TARGET!>@<!OPT_IN_USAGE!>EAnno<!><!> Unit {}
@<!EXPERIMENTAL_API_USAGE!>EAnno<!> val property = ""
@<!OPT_IN_USAGE!>EAnno<!> val property = ""
@<!EXPERIMENTAL_API_USAGE!>EAnno<!> typealias Typealias = Unit
@<!OPT_IN_USAGE!>EAnno<!> typealias Typealias = Unit
@<!EXPERIMENTAL_API_USAGE!>EAnno<!> class Klass
@<!OPT_IN_USAGE!>EAnno<!> class Klass
annotation class AnnotationArgument(val p: <!EXPERIMENTAL_API_USAGE!>EAnno<!>)
annotation class AnnotationArgument(val p: <!OPT_IN_USAGE!>EAnno<!>)
fun insideBody() {
@<!EXPERIMENTAL_API_USAGE!>EAnno<!> fun local() {}
@<!OPT_IN_USAGE!>EAnno<!> fun local() {}
}
fun inDefaultArgument(f: () -> Unit = @<!EXPERIMENTAL_API_USAGE!>EAnno<!> fun() {}) {}
fun inDefaultArgument(f: () -> Unit = @<!OPT_IN_USAGE!>EAnno<!> fun() {}) {}
val inProperty = @<!EXPERIMENTAL_API_USAGE!>EAnno<!> fun() {}
val inProperty = @<!OPT_IN_USAGE!>EAnno<!> fun() {}
val inPropertyAccessor: () -> Unit
get() = @<!EXPERIMENTAL_API_USAGE!>EAnno<!> fun() {}
get() = @<!OPT_IN_USAGE!>EAnno<!> fun() {}
@@ -19,10 +19,10 @@ package usage
import api.*
fun use1() {
<!EXPERIMENTAL_API_USAGE!>f<!>()
<!OPT_IN_USAGE!>f<!>()
}
val use2 = <!EXPERIMENTAL_API_USAGE!>f<!>()
val use2 = <!OPT_IN_USAGE!>f<!>()
// FILE: inline-usage.kt
@@ -31,20 +31,20 @@ package usage
import api.*
inline fun inlineUse1() {
<!EXPERIMENTAL_API_USAGE!>f<!>()
<!OPT_IN_USAGE!>f<!>()
}
inline var inlineUse2: Unit
get() {
<!EXPERIMENTAL_API_USAGE!>f<!>()
<!OPT_IN_USAGE!>f<!>()
}
set(value) {
<!EXPERIMENTAL_API_USAGE!>f<!>()
<!OPT_IN_USAGE!>f<!>()
}
var inlineUse3: Unit
inline get() {
<!EXPERIMENTAL_API_USAGE!>f<!>()
<!OPT_IN_USAGE!>f<!>()
}
@API
inline set(value) {
@@ -63,23 +63,23 @@ package usage
import api.*
private inline fun privateInline1() {
<!EXPERIMENTAL_API_USAGE!>f<!>()
<!OPT_IN_USAGE!>f<!>()
}
internal inline fun privateInline2() {
<!EXPERIMENTAL_API_USAGE!>f<!>()
<!OPT_IN_USAGE!>f<!>()
}
private inline var privateInline3: Unit
get() {
<!EXPERIMENTAL_API_USAGE!>f<!>()
<!OPT_IN_USAGE!>f<!>()
}
set(value) {
<!EXPERIMENTAL_API_USAGE!>f<!>()
<!OPT_IN_USAGE!>f<!>()
}
internal class InternalClass {
inline fun privateInline4() {
<!EXPERIMENTAL_API_USAGE!>f<!>()
<!OPT_IN_USAGE!>f<!>()
}
}
@@ -80,10 +80,10 @@ package usage3
import api.*
fun use() {
val c: <!EXPERIMENTAL_API_USAGE!>C<!> = <!EXPERIMENTAL_API_USAGE!>C<!>()
<!EXPERIMENTAL_API_USAGE!>c<!>.<!EXPERIMENTAL_API_USAGE!>function<!>()
<!EXPERIMENTAL_API_USAGE!>c<!>.<!EXPERIMENTAL_API_USAGE!>property<!>
<!EXPERIMENTAL_API_USAGE!>C<!>.<!EXPERIMENTAL_API_USAGE!>Nested<!>()
<!EXPERIMENTAL_API_USAGE!>c<!>.<!EXPERIMENTAL_API_USAGE!>Inner<!>()
<!EXPERIMENTAL_API_USAGE!>c<!>.<!EXPERIMENTAL_API_USAGE!>extension<!>()
val c: <!OPT_IN_USAGE!>C<!> = <!OPT_IN_USAGE!>C<!>()
<!OPT_IN_USAGE!>c<!>.<!OPT_IN_USAGE!>function<!>()
<!OPT_IN_USAGE!>c<!>.<!OPT_IN_USAGE!>property<!>
<!OPT_IN_USAGE!>C<!>.<!OPT_IN_USAGE!>Nested<!>()
<!OPT_IN_USAGE!>c<!>.<!OPT_IN_USAGE!>Inner<!>()
<!OPT_IN_USAGE!>c<!>.<!OPT_IN_USAGE!>extension<!>()
}
@@ -80,10 +80,10 @@ package usage3
import api.*
fun use() {
val c: <!EXPERIMENTAL_API_USAGE!>C<!> = <!EXPERIMENTAL_API_USAGE!>C<!>()
<!EXPERIMENTAL_API_USAGE!>c<!>.function()
<!EXPERIMENTAL_API_USAGE!>c<!>.property
<!EXPERIMENTAL_API_USAGE!>C<!>.Nested()
<!EXPERIMENTAL_API_USAGE!>c<!>.Inner()
<!EXPERIMENTAL_API_USAGE!>c<!>.<!EXPERIMENTAL_API_USAGE!>extension<!>()
val c: <!OPT_IN_USAGE!>C<!> = <!OPT_IN_USAGE!>C<!>()
<!OPT_IN_USAGE!>c<!>.function()
<!OPT_IN_USAGE!>c<!>.property
<!OPT_IN_USAGE!>C<!>.Nested()
<!OPT_IN_USAGE!>c<!>.Inner()
<!OPT_IN_USAGE!>c<!>.<!OPT_IN_USAGE!>extension<!>()
}
@@ -31,8 +31,8 @@ package usage
import api.*
fun use() {
val c: <!EXPERIMENTAL_API_USAGE!>C<!> = <!EXPERIMENTAL_API_USAGE!>C<!>()
<!EXPERIMENTAL_API_USAGE!>c<!>.<!EXPERIMENTAL_API_USAGE!>function<!>()
<!EXPERIMENTAL_API_USAGE!>c<!>.<!EXPERIMENTAL_API_USAGE!>property<!>
<!EXPERIMENTAL_API_USAGE!>C<!>.<!EXPERIMENTAL_API_USAGE!>Nested<!>().<!EXPERIMENTAL_API_USAGE!>nestedFunction<!>()
val c: <!OPT_IN_USAGE!>C<!> = <!OPT_IN_USAGE!>C<!>()
<!OPT_IN_USAGE!>c<!>.<!OPT_IN_USAGE!>function<!>()
<!OPT_IN_USAGE!>c<!>.<!OPT_IN_USAGE!>property<!>
<!OPT_IN_USAGE!>C<!>.<!OPT_IN_USAGE!>Nested<!>().<!OPT_IN_USAGE!>nestedFunction<!>()
}
@@ -40,5 +40,5 @@ package usage3
import api.*
@Anno(<!EXPERIMENTAL_API_USAGE!>MEANING<!>)
@Anno(<!OPT_IN_USAGE!>MEANING<!>)
fun usage() {}
@@ -31,7 +31,7 @@ package usage2
import api.*
// TODO: there should be no warning here
@Anno(<!EXPERIMENTAL_API_USAGE!>MEANING<!>)
@Anno(<!OPT_IN_USAGE!>MEANING<!>)
fun usage() {}
// FILE: usage-none.kt
@@ -40,5 +40,5 @@ package usage3
import api.*
@Anno(<!EXPERIMENTAL_API_USAGE!>MEANING<!>)
@Anno(<!OPT_IN_USAGE!>MEANING<!>)
fun usage() {}
@@ -52,7 +52,7 @@ package usage3
import api.*
fun use1() {
C.D.<!EXPERIMENTAL_API_USAGE!>E<!>.<!EXPERIMENTAL_API_USAGE!>F<!>()
C.D.<!OPT_IN_USAGE!>E<!>.<!OPT_IN_USAGE!>F<!>()
}
fun use2(f: <!EXPERIMENTAL_API_USAGE!>C.D.E.F<!>) = <!EXPERIMENTAL_API_USAGE!>f<!>.hashCode()
fun use2(f: <!OPT_IN_USAGE!>C.D.E.F<!>) = <!OPT_IN_USAGE!>f<!>.hashCode()
@@ -52,7 +52,7 @@ package usage3
import api.*
fun use1() {
<!EXPERIMENTAL_API_USAGE!>C<!>.D.E.F()
<!OPT_IN_USAGE!>C<!>.D.E.F()
}
fun use2(f: <!EXPERIMENTAL_API_USAGE!>C<!>.D.E.F) = f.hashCode()
fun use2(f: <!OPT_IN_USAGE!>C<!>.D.E.F) = f.hashCode()
@@ -23,5 +23,5 @@ class Derived : Base() {
}
fun test(b: Base) {
b.<!EXPERIMENTAL_API_USAGE_ERROR!>foo<!>()
b.<!OPT_IN_USAGE_ERROR!>foo<!>()
}
@@ -19,9 +19,9 @@ package usage
import api.*
class Derived : Base() {
override fun <!EXPERIMENTAL_OVERRIDE_ERROR!>foo<!>() {}
override fun <!OPT_IN_OVERRIDE_ERROR!>foo<!>() {}
}
fun test(b: Base) {
b.<!EXPERIMENTAL_API_USAGE_ERROR!>foo<!>()
b.<!OPT_IN_USAGE_ERROR!>foo<!>()
}
@@ -1,7 +1,7 @@
// FIR_IDENTICAL
// FILE: api.kt
@<!EXPERIMENTAL_IS_NOT_ENABLED!>RequiresOptIn<!>
@<!OPT_IN_IS_NOT_ENABLED!>RequiresOptIn<!>
@Retention(AnnotationRetention.BINARY)
annotation class Marker
@@ -11,7 +11,7 @@ fun f() {}
// FILE: usage.kt
fun use1() {
<!EXPERIMENTAL_API_USAGE_ERROR!>f<!>()
<!OPT_IN_USAGE_ERROR!>f<!>()
}
@Marker
@@ -19,7 +19,7 @@ fun use2() {
f()
}
@<!EXPERIMENTAL_IS_NOT_ENABLED!>OptIn<!>(Marker::class)
@<!OPT_IN_IS_NOT_ENABLED!>OptIn<!>(Marker::class)
fun use3() {
f()
}
@@ -6,7 +6,7 @@
annotation class E
class My {
<!EXPERIMENTAL_ANNOTATION_ON_OVERRIDE_WARNING!>@E<!>
<!OPT_IN_MARKER_ON_OVERRIDE_WARNING!>@E<!>
override fun hashCode() = 0
}
@@ -17,8 +17,8 @@ var z: Int = 44
}
fun user(): Int {
<!EXPERIMENTAL_API_USAGE_ERROR!>x<!> = 10
<!EXPERIMENTAL_API_USAGE_ERROR!>y<!> = 5
<!EXPERIMENTAL_API_USAGE_ERROR!>x<!> = 15
return x + <!EXPERIMENTAL_API_USAGE_ERROR!>y<!> + z
<!OPT_IN_USAGE_ERROR!>x<!> = 10
<!OPT_IN_USAGE_ERROR!>y<!> = 5
<!OPT_IN_USAGE_ERROR!>x<!> = 15
return x + <!OPT_IN_USAGE_ERROR!>y<!> + z
}
@@ -10,15 +10,15 @@ annotation class Marker
interface Some
abstract class User {
abstract fun createSome(): <!EXPERIMENTAL_API_USAGE_ERROR!>Some<!>
fun <!EXPERIMENTAL_API_USAGE_ERROR!>Some<!>?.onSome() {}
fun withSome(some: <!EXPERIMENTAL_API_USAGE_ERROR!>Some<!>? = null) {}
abstract fun createSome(): <!OPT_IN_USAGE_ERROR!>Some<!>
fun <!OPT_IN_USAGE_ERROR!>Some<!>?.onSome() {}
fun withSome(some: <!OPT_IN_USAGE_ERROR!>Some<!>? = null) {}
fun use() {
val something = <!EXPERIMENTAL_API_USAGE_ERROR!>createSome<!>()
val somethingOther: <!EXPERIMENTAL_API_USAGE_ERROR!>Some<!> = <!EXPERIMENTAL_API_USAGE_ERROR!>createSome<!>()
null.<!EXPERIMENTAL_API_USAGE_ERROR!>onSome<!>()
<!EXPERIMENTAL_API_USAGE_ERROR!>withSome<!>()
val something = <!OPT_IN_USAGE_ERROR!>createSome<!>()
val somethingOther: <!OPT_IN_USAGE_ERROR!>Some<!> = <!OPT_IN_USAGE_ERROR!>createSome<!>()
null.<!OPT_IN_USAGE_ERROR!>onSome<!>()
<!OPT_IN_USAGE_ERROR!>withSome<!>()
}
}
@@ -26,15 +26,15 @@ data class DataClass(@property:Marker val x: Int)
fun useDataClass(d: DataClass) {
// Should have error in both
d.<!EXPERIMENTAL_API_USAGE_ERROR!>x<!>
d.<!OPT_IN_USAGE_ERROR!>x<!>
val (x) = d
}
typealias My = <!EXPERIMENTAL_API_USAGE_ERROR!>Some<!>
typealias My = <!OPT_IN_USAGE_ERROR!>Some<!>
fun my(my: <!EXPERIMENTAL_API_USAGE_ERROR!>My<!>) {}
fun my(my: <!OPT_IN_USAGE_ERROR!>My<!>) {}
fun your(my: <!EXPERIMENTAL_API_USAGE_ERROR!>Some<!>) {}
fun your(my: <!OPT_IN_USAGE_ERROR!>Some<!>) {}
@Marker
interface ExperimentalType {
@@ -49,7 +49,7 @@ interface NotExperimentalExtension : ExperimentalType {
fun use(arg: NotExperimentalExtension) {
arg.foo()
arg.<!EXPERIMENTAL_API_USAGE_ERROR!>bar<!>()
arg.<!OPT_IN_USAGE_ERROR!>bar<!>()
}
@Marker
@@ -68,7 +68,7 @@ typealias MyList = ArrayList<I>
typealias YourList = ArrayList<String>
fun main() {
val x = <!EXPERIMENTAL_API_USAGE_ERROR!>listOf<!>(A(), B())
val x = <!OPT_IN_USAGE_ERROR!>listOf<!>(A(), B())
val y = MyList()
val z = YourList()
YourList().add("")
@@ -84,7 +84,7 @@ object O {
operator fun provideDelegate(x: Any?, y: Any?): C = C()
}
val x: String by <!EXPERIMENTAL_API_USAGE_ERROR!>O<!>
val x: String by <!OPT_IN_USAGE_ERROR!>O<!>
@Marker
class OperatorContainer : Comparable<OperatorContainer> {
@@ -117,8 +117,8 @@ operator fun String.minus(s: String) = OperatorContainer()
operator fun String.invoke() = OperatorContainer()
fun operatorContainerUsage(s: String, a: AnotherContainer) {
val res1 = s <!EXPERIMENTAL_API_USAGE_ERROR!>-<!> s
val res2 = <!EXPERIMENTAL_API_USAGE_ERROR!>s<!>()
val res3 = <!EXPERIMENTAL_API_USAGE_ERROR!>res1<!> <!EXPERIMENTAL_API_USAGE_ERROR!>><!> <!EXPERIMENTAL_API_USAGE_ERROR!>res2<!>
<!EXPERIMENTAL_API_USAGE_ERROR, EXPERIMENTAL_API_USAGE_ERROR, EXPERIMENTAL_API_USAGE_ERROR, EXPERIMENTAL_API_USAGE_ERROR!>for (c in a) {}<!>
val res1 = s <!OPT_IN_USAGE_ERROR!>-<!> s
val res2 = <!OPT_IN_USAGE_ERROR!>s<!>()
val res3 = <!OPT_IN_USAGE_ERROR!>res1<!> <!OPT_IN_USAGE_ERROR!>><!> <!OPT_IN_USAGE_ERROR!>res2<!>
<!OPT_IN_USAGE_ERROR, OPT_IN_USAGE_ERROR, OPT_IN_USAGE_ERROR, OPT_IN_USAGE_ERROR!>for (c in a) {}<!>
}
@@ -10,15 +10,15 @@ annotation class Marker
interface Some
abstract class User {
abstract fun createSome(): <!EXPERIMENTAL_API_USAGE_ERROR!>Some<!>
fun <!EXPERIMENTAL_API_USAGE_ERROR!>Some<!>?.onSome() {}
fun withSome(some: <!EXPERIMENTAL_API_USAGE_ERROR!>Some<!>? = null) {}
abstract fun createSome(): <!OPT_IN_USAGE_ERROR!>Some<!>
fun <!OPT_IN_USAGE_ERROR!>Some<!>?.onSome() {}
fun withSome(some: <!OPT_IN_USAGE_ERROR!>Some<!>? = null) {}
fun use() {
val something = <!EXPERIMENTAL_API_USAGE_ERROR!>createSome<!>()
val somethingOther: <!EXPERIMENTAL_API_USAGE_ERROR!>Some<!> = <!EXPERIMENTAL_API_USAGE_ERROR!>createSome<!>()
null.<!EXPERIMENTAL_API_USAGE_ERROR!>onSome<!>()
<!EXPERIMENTAL_API_USAGE_ERROR!>withSome<!>()
val something = <!OPT_IN_USAGE_ERROR!>createSome<!>()
val somethingOther: <!OPT_IN_USAGE_ERROR!>Some<!> = <!OPT_IN_USAGE_ERROR!>createSome<!>()
null.<!OPT_IN_USAGE_ERROR!>onSome<!>()
<!OPT_IN_USAGE_ERROR!>withSome<!>()
}
}
@@ -26,15 +26,15 @@ data class DataClass(@property:Marker val x: Int)
fun useDataClass(d: DataClass) {
// Should have error in both
d.<!EXPERIMENTAL_API_USAGE_ERROR!>x<!>
val (<!EXPERIMENTAL_API_USAGE_ERROR!>x<!>) = d
d.<!OPT_IN_USAGE_ERROR!>x<!>
val (<!OPT_IN_USAGE_ERROR!>x<!>) = d
}
typealias My = <!EXPERIMENTAL_API_USAGE_ERROR!>Some<!>
typealias My = <!OPT_IN_USAGE_ERROR!>Some<!>
fun my(my: <!EXPERIMENTAL_API_USAGE_ERROR!>My<!>) {}
fun my(my: <!OPT_IN_USAGE_ERROR!>My<!>) {}
fun your(my: <!EXPERIMENTAL_API_USAGE_ERROR!>Some<!>) {}
fun your(my: <!OPT_IN_USAGE_ERROR!>Some<!>) {}
@Marker
interface ExperimentalType {
@@ -68,10 +68,10 @@ typealias MyList = ArrayList<I>
typealias YourList = ArrayList<String>
fun main() {
val x = <!EXPERIMENTAL_API_USAGE_ERROR!>listOf<!>(A(), B())
val y = <!EXPERIMENTAL_API_USAGE_ERROR!>MyList<!>()
val z = <!EXPERIMENTAL_API_USAGE_ERROR!>YourList<!>()
<!EXPERIMENTAL_API_USAGE_ERROR!>YourList<!>().add("")
val x = <!OPT_IN_USAGE_ERROR!>listOf<!>(A(), B())
val y = <!OPT_IN_USAGE_ERROR!>MyList<!>()
val z = <!OPT_IN_USAGE_ERROR!>YourList<!>()
<!OPT_IN_USAGE_ERROR!>YourList<!>().add("")
}
@Marker
@@ -84,7 +84,7 @@ object O {
operator fun provideDelegate(x: Any?, y: Any?): C = C()
}
val x: String by <!EXPERIMENTAL_API_USAGE_ERROR!>O<!>
val x: String by <!OPT_IN_USAGE_ERROR!>O<!>
@Marker
class OperatorContainer : Comparable<OperatorContainer> {
@@ -117,8 +117,8 @@ operator fun String.minus(s: String) = OperatorContainer()
operator fun String.invoke() = OperatorContainer()
fun operatorContainerUsage(s: String, a: AnotherContainer) {
val res1 = s <!EXPERIMENTAL_API_USAGE_ERROR!>-<!> s
val res2 = <!EXPERIMENTAL_API_USAGE_ERROR!>s<!>()
val res3 = <!EXPERIMENTAL_API_USAGE_ERROR!>res1<!> <!EXPERIMENTAL_API_USAGE_ERROR!>><!> <!EXPERIMENTAL_API_USAGE_ERROR!>res2<!>
for (c in <!EXPERIMENTAL_API_USAGE_ERROR!>a<!>) {}
val res1 = s <!OPT_IN_USAGE_ERROR!>-<!> s
val res2 = <!OPT_IN_USAGE_ERROR!>s<!>()
val res3 = <!OPT_IN_USAGE_ERROR!>res1<!> <!OPT_IN_USAGE_ERROR!>><!> <!OPT_IN_USAGE_ERROR!>res2<!>
for (c in <!OPT_IN_USAGE_ERROR!>a<!>) {}
}
@@ -10,15 +10,15 @@ annotation class Marker
interface Some
abstract class User {
abstract fun createSome(): <!EXPERIMENTAL_API_USAGE_ERROR!>Some<!>
fun <!EXPERIMENTAL_API_USAGE_ERROR!>Some<!>?.onSome() {}
fun withSome(some: <!EXPERIMENTAL_API_USAGE_ERROR!>Some<!>? = null) {}
abstract fun createSome(): <!OPT_IN_USAGE_ERROR!>Some<!>
fun <!OPT_IN_USAGE_ERROR!>Some<!>?.onSome() {}
fun withSome(some: <!OPT_IN_USAGE_ERROR!>Some<!>? = null) {}
fun use() {
val something = <!EXPERIMENTAL_API_USAGE_ERROR!>createSome<!>()
val somethingOther: <!EXPERIMENTAL_API_USAGE_ERROR!>Some<!> = <!EXPERIMENTAL_API_USAGE_ERROR!>createSome<!>()
null.<!EXPERIMENTAL_API_USAGE_ERROR!>onSome<!>()
<!EXPERIMENTAL_API_USAGE_ERROR!>withSome<!>()
val something = <!OPT_IN_USAGE_ERROR!>createSome<!>()
val somethingOther: <!OPT_IN_USAGE_ERROR!>Some<!> = <!OPT_IN_USAGE_ERROR!>createSome<!>()
null.<!OPT_IN_USAGE_ERROR!>onSome<!>()
<!OPT_IN_USAGE_ERROR!>withSome<!>()
}
}
@@ -26,15 +26,15 @@ data class DataClass(@property:Marker val x: Int)
fun useDataClass(d: DataClass) {
// Should have error in both
d.<!EXPERIMENTAL_API_USAGE_ERROR!>x<!>
d.<!OPT_IN_USAGE_ERROR!>x<!>
val (x) = d
}
typealias My = <!EXPERIMENTAL_API_USAGE_ERROR!>Some<!>
typealias My = <!OPT_IN_USAGE_ERROR!>Some<!>
fun my(my: <!EXPERIMENTAL_API_USAGE_ERROR!>My<!>) {}
fun my(my: <!OPT_IN_USAGE_ERROR!>My<!>) {}
fun your(my: <!EXPERIMENTAL_API_USAGE_ERROR!>Some<!>) {}
fun your(my: <!OPT_IN_USAGE_ERROR!>Some<!>) {}
@Marker
interface ExperimentalType {
@@ -49,7 +49,7 @@ interface NotExperimentalExtension : ExperimentalType {
fun use(arg: NotExperimentalExtension) {
arg.foo()
arg.<!EXPERIMENTAL_API_USAGE_ERROR!>bar<!>()
arg.<!OPT_IN_USAGE_ERROR!>bar<!>()
}
@Marker
@@ -68,7 +68,7 @@ typealias MyList = ArrayList<I>
typealias YourList = ArrayList<String>
fun main() {
val x = <!EXPERIMENTAL_API_USAGE_ERROR!>listOf<!>(A(), B())
val x = <!OPT_IN_USAGE_ERROR!>listOf<!>(A(), B())
val y = MyList()
val z = YourList()
YourList().add("")
@@ -84,7 +84,7 @@ object O {
operator fun provideDelegate(x: Any?, y: Any?): C = C()
}
val x: String by <!EXPERIMENTAL_API_USAGE_ERROR!>O<!>
val x: String by <!OPT_IN_USAGE_ERROR!>O<!>
@Marker
class OperatorContainer : Comparable<OperatorContainer> {
@@ -117,8 +117,8 @@ operator fun String.minus(s: String) = OperatorContainer()
operator fun String.invoke() = OperatorContainer()
fun operatorContainerUsage(s: String, a: AnotherContainer) {
val res1 = s <!EXPERIMENTAL_API_USAGE_ERROR!>-<!> s
val res2 = <!EXPERIMENTAL_API_USAGE_ERROR!>s<!>()
val res3 = <!EXPERIMENTAL_API_USAGE_ERROR!>res1<!> <!EXPERIMENTAL_API_USAGE_ERROR!>><!> <!EXPERIMENTAL_API_USAGE_ERROR!>res2<!>
<!EXPERIMENTAL_API_USAGE_ERROR, EXPERIMENTAL_API_USAGE_ERROR, EXPERIMENTAL_API_USAGE_ERROR, EXPERIMENTAL_API_USAGE_ERROR!>for (c in a) {}<!>
val res1 = s <!OPT_IN_USAGE_ERROR!>-<!> s
val res2 = <!OPT_IN_USAGE_ERROR!>s<!>()
val res3 = <!OPT_IN_USAGE_ERROR!>res1<!> <!OPT_IN_USAGE_ERROR!>><!> <!OPT_IN_USAGE_ERROR!>res2<!>
<!OPT_IN_USAGE_ERROR, OPT_IN_USAGE_ERROR, OPT_IN_USAGE_ERROR, OPT_IN_USAGE_ERROR!>for (c in a) {}<!>
}
@@ -10,15 +10,15 @@ annotation class Marker
interface Some
abstract class User {
abstract fun createSome(): <!EXPERIMENTAL_API_USAGE_ERROR!>Some<!>
fun <!EXPERIMENTAL_API_USAGE_ERROR!>Some<!>?.onSome() {}
fun withSome(some: <!EXPERIMENTAL_API_USAGE_ERROR!>Some<!>? = null) {}
abstract fun createSome(): <!OPT_IN_USAGE_ERROR!>Some<!>
fun <!OPT_IN_USAGE_ERROR!>Some<!>?.onSome() {}
fun withSome(some: <!OPT_IN_USAGE_ERROR!>Some<!>? = null) {}
fun use() {
val something = <!EXPERIMENTAL_API_USAGE_FUTURE_ERROR!>createSome<!>()
val somethingOther: <!EXPERIMENTAL_API_USAGE_ERROR!>Some<!> = <!EXPERIMENTAL_API_USAGE_FUTURE_ERROR!>createSome<!>()
null.<!EXPERIMENTAL_API_USAGE_FUTURE_ERROR!>onSome<!>()
<!EXPERIMENTAL_API_USAGE_FUTURE_ERROR!>withSome<!>()
val something = <!OPT_IN_USAGE_FUTURE_ERROR!>createSome<!>()
val somethingOther: <!OPT_IN_USAGE_ERROR!>Some<!> = <!OPT_IN_USAGE_FUTURE_ERROR!>createSome<!>()
null.<!OPT_IN_USAGE_FUTURE_ERROR!>onSome<!>()
<!OPT_IN_USAGE_FUTURE_ERROR!>withSome<!>()
}
}
@@ -26,15 +26,15 @@ data class DataClass(@property:Marker val x: Int)
fun useDataClass(d: DataClass) {
// Should have error in both
d.<!EXPERIMENTAL_API_USAGE_ERROR!>x<!>
val (<!EXPERIMENTAL_API_USAGE_ERROR!>x<!>) = d
d.<!OPT_IN_USAGE_ERROR!>x<!>
val (<!OPT_IN_USAGE_ERROR!>x<!>) = d
}
typealias My = <!EXPERIMENTAL_API_USAGE_ERROR!>Some<!>
typealias My = <!OPT_IN_USAGE_ERROR!>Some<!>
fun my(my: <!EXPERIMENTAL_API_USAGE_FUTURE_ERROR!>My<!>) {}
fun my(my: <!OPT_IN_USAGE_FUTURE_ERROR!>My<!>) {}
fun your(my: <!EXPERIMENTAL_API_USAGE_ERROR!>Some<!>) {}
fun your(my: <!OPT_IN_USAGE_ERROR!>Some<!>) {}
@Marker
interface ExperimentalType {
@@ -68,10 +68,10 @@ typealias MyList = ArrayList<I>
typealias YourList = ArrayList<String>
fun main() {
val x = <!EXPERIMENTAL_API_USAGE_FUTURE_ERROR!>listOf<!>(A(), B())
val y = <!EXPERIMENTAL_API_USAGE_FUTURE_ERROR!>MyList<!>()
val z = <!EXPERIMENTAL_API_USAGE_FUTURE_ERROR!>YourList<!>()
<!EXPERIMENTAL_API_USAGE_FUTURE_ERROR!>YourList<!>().add("")
val x = <!OPT_IN_USAGE_FUTURE_ERROR!>listOf<!>(A(), B())
val y = <!OPT_IN_USAGE_FUTURE_ERROR!>MyList<!>()
val z = <!OPT_IN_USAGE_FUTURE_ERROR!>YourList<!>()
<!OPT_IN_USAGE_FUTURE_ERROR!>YourList<!>().add("")
}
@Marker
@@ -84,7 +84,7 @@ object O {
operator fun provideDelegate(x: Any?, y: Any?): C = C()
}
val x: String by <!EXPERIMENTAL_API_USAGE_FUTURE_ERROR!>O<!>
val x: String by <!OPT_IN_USAGE_FUTURE_ERROR!>O<!>
@Marker
class OperatorContainer : Comparable<OperatorContainer> {
@@ -117,8 +117,8 @@ operator fun String.minus(s: String) = OperatorContainer()
operator fun String.invoke() = OperatorContainer()
fun operatorContainerUsage(s: String, a: AnotherContainer) {
val res1 = s <!EXPERIMENTAL_API_USAGE_FUTURE_ERROR!>-<!> s
val res2 = <!EXPERIMENTAL_API_USAGE_FUTURE_ERROR!>s<!>()
val res3 = <!EXPERIMENTAL_API_USAGE_FUTURE_ERROR!>res1<!> <!EXPERIMENTAL_API_USAGE_FUTURE_ERROR!>><!> <!EXPERIMENTAL_API_USAGE_FUTURE_ERROR!>res2<!>
for (c in <!EXPERIMENTAL_API_USAGE_FUTURE_ERROR!>a<!>) {}
val res1 = s <!OPT_IN_USAGE_FUTURE_ERROR!>-<!> s
val res2 = <!OPT_IN_USAGE_FUTURE_ERROR!>s<!>()
val res3 = <!OPT_IN_USAGE_FUTURE_ERROR!>res1<!> <!OPT_IN_USAGE_FUTURE_ERROR!>><!> <!OPT_IN_USAGE_FUTURE_ERROR!>res2<!>
for (c in <!OPT_IN_USAGE_FUTURE_ERROR!>a<!>) {}
}
@@ -13,21 +13,21 @@ import kotlin.annotation.AnnotationTarget.*
annotation class E1
@RequiresOptIn(level = RequiresOptIn.Level.WARNING)
<!EXPERIMENTAL_ANNOTATION_WITH_WRONG_TARGET!>@Target(FILE)<!>
<!OPT_IN_MARKER_WITH_WRONG_TARGET!>@Target(FILE)<!>
annotation class E2
@RequiresOptIn(level = RequiresOptIn.Level.WARNING)
<!EXPERIMENTAL_ANNOTATION_WITH_WRONG_TARGET!>@Target(EXPRESSION)<!>
<!EXPERIMENTAL_ANNOTATION_WITH_WRONG_RETENTION!>@Retention(AnnotationRetention.SOURCE)<!>
<!OPT_IN_MARKER_WITH_WRONG_TARGET!>@Target(EXPRESSION)<!>
<!OPT_IN_MARKER_WITH_WRONG_RETENTION!>@Retention(AnnotationRetention.SOURCE)<!>
annotation class E3
@RequiresOptIn(level = RequiresOptIn.Level.WARNING)
<!EXPERIMENTAL_ANNOTATION_WITH_WRONG_TARGET!>@Target(TYPE_PARAMETER)<!>
<!OPT_IN_MARKER_WITH_WRONG_TARGET!>@Target(TYPE_PARAMETER)<!>
@Retention(AnnotationRetention.BINARY)
annotation class E3A
@RequiresOptIn(level = RequiresOptIn.Level.WARNING)
<!EXPERIMENTAL_ANNOTATION_WITH_WRONG_TARGET!>@Target(TYPE)<!>
<!OPT_IN_MARKER_WITH_WRONG_TARGET!>@Target(TYPE)<!>
@Retention(AnnotationRetention.BINARY)
annotation class E3B
@@ -13,21 +13,21 @@ import kotlin.annotation.AnnotationTarget.*
annotation class E1
@RequiresOptIn(level = RequiresOptIn.Level.WARNING)
<!EXPERIMENTAL_ANNOTATION_WITH_WRONG_TARGET!>@Target(FILE)<!>
<!OPT_IN_MARKER_WITH_WRONG_TARGET!>@Target(FILE)<!>
annotation class E2
@RequiresOptIn(level = RequiresOptIn.Level.WARNING)
<!EXPERIMENTAL_ANNOTATION_WITH_WRONG_TARGET!>@Target(EXPRESSION)<!>
<!EXPERIMENTAL_ANNOTATION_WITH_WRONG_RETENTION!>@Retention(AnnotationRetention.SOURCE)<!>
<!OPT_IN_MARKER_WITH_WRONG_TARGET!>@Target(EXPRESSION)<!>
<!OPT_IN_MARKER_WITH_WRONG_RETENTION!>@Retention(AnnotationRetention.SOURCE)<!>
annotation class E3
@RequiresOptIn(level = RequiresOptIn.Level.WARNING)
<!EXPERIMENTAL_ANNOTATION_WITH_WRONG_TARGET!>@Target(TYPE_PARAMETER)<!>
<!OPT_IN_MARKER_WITH_WRONG_TARGET!>@Target(TYPE_PARAMETER)<!>
@Retention(AnnotationRetention.BINARY)
annotation class E3A
@RequiresOptIn(level = RequiresOptIn.Level.WARNING)
<!EXPERIMENTAL_ANNOTATION_WITH_WRONG_TARGET!>@Target(TYPE)<!>
<!OPT_IN_MARKER_WITH_WRONG_TARGET!>@Target(TYPE)<!>
@Retention(AnnotationRetention.BINARY)
annotation class E3B
@@ -47,16 +47,16 @@ annotation class E5
annotation class E6
var some: Int
<!EXPERIMENTAL_ANNOTATION_ON_WRONG_TARGET!>@E4<!>
<!OPT_IN_MARKER_ON_WRONG_TARGET!>@E4<!>
get() = 42
@E5
set(value) {}
<!EXPERIMENTAL_ANNOTATION_ON_WRONG_TARGET!>@get:E4<!>
<!OPT_IN_MARKER_ON_WRONG_TARGET!>@get:E4<!>
val another: Int = 42
class My {
<!EXPERIMENTAL_ANNOTATION_ON_OVERRIDE!>@E6<!>
<!OPT_IN_MARKER_ON_OVERRIDE!>@E6<!>
override fun hashCode() = 0
}
@@ -72,24 +72,24 @@ interface Base {
}
class Derived : Base {
<!EXPERIMENTAL_ANNOTATION_ON_OVERRIDE!>@E6<!>
<!OPT_IN_MARKER_ON_OVERRIDE!>@E6<!>
override val bar: Int = 42
@set:E6 <!EXPERIMENTAL_ANNOTATION_ON_WRONG_TARGET!>@setparam:E6<!>
@set:E6 <!OPT_IN_MARKER_ON_WRONG_TARGET!>@setparam:E6<!>
override var baz: Int = 13
@E6
override fun foo() {}
override fun <!EXPERIMENTAL_ANNOTATION_ON_WRONG_TARGET!>@receiver:E6<!> String.withReceiver() {}
override fun <!OPT_IN_MARKER_ON_WRONG_TARGET!>@receiver:E6<!> String.withReceiver() {}
}
abstract class Another(<!EXPERIMENTAL_ANNOTATION_ON_WRONG_TARGET!>@param:E6<!> val x: String) : Base {
<!EXPERIMENTAL_ANNOTATION_ON_WRONG_TARGET!>@delegate:E6<!>
abstract class Another(<!OPT_IN_MARKER_ON_WRONG_TARGET!>@param:E6<!> val x: String) : Base {
<!OPT_IN_MARKER_ON_WRONG_TARGET!>@delegate:E6<!>
override val bar: Int by lazy { 42 }
fun baz(<!EXPERIMENTAL_ANNOTATION_ON_WRONG_TARGET!>@E6<!> param: Int) {
<!EXPERIMENTAL_ANNOTATION_ON_WRONG_TARGET!>@E6<!> val x = param
fun baz(<!OPT_IN_MARKER_ON_WRONG_TARGET!>@E6<!> param: Int) {
<!OPT_IN_MARKER_ON_WRONG_TARGET!>@E6<!> val x = param
}
}
@@ -3,8 +3,8 @@
annotation class NotAMarker
<!USE_EXPERIMENTAL_WITHOUT_ARGUMENTS!>@OptIn<!>
<!OPT_IN_WITHOUT_ARGUMENTS!>@OptIn<!>
fun f1() {}
<!USE_EXPERIMENTAL_ARGUMENT_IS_NOT_MARKER!>@OptIn(NotAMarker::class)<!>
<!OPT_IN_ARGUMENT_IS_NOT_MARKER!>@OptIn(NotAMarker::class)<!>
fun f2() {}
@@ -13,7 +13,7 @@ open class Base {
}
class DerivedInSameModule : Base() {
override fun <!EXPERIMENTAL_OVERRIDE!>foo<!>() {}
override fun <!OPT_IN_OVERRIDE!>foo<!>() {}
}
// FILE: usage-propagate.kt
@@ -41,5 +41,5 @@ package usage2
import api.*
class Derived : Base() {
override fun <!EXPERIMENTAL_OVERRIDE!>foo<!>() {}
override fun <!OPT_IN_OVERRIDE!>foo<!>() {}
}
@@ -23,12 +23,12 @@ interface Base3 {
}
class DerivedA : Base1, Base2, Base3 {
override fun <!EXPERIMENTAL_OVERRIDE, EXPERIMENTAL_OVERRIDE!>foo<!>() {}
override fun <!OPT_IN_OVERRIDE, OPT_IN_OVERRIDE!>foo<!>() {}
}
class DerivedB : Base1, Base3 {
@E3
override fun <!EXPERIMENTAL_OVERRIDE!>foo<!>() {}
override fun <!OPT_IN_OVERRIDE!>foo<!>() {}
}
class DerivedC : Base1, Base2, Base3 {
@@ -19,8 +19,8 @@ fun use() {
function()
}
<!EXPERIMENTAL_API_USAGE!>function<!>()
<!EXPERIMENTAL_API_USAGE!>use<!>()
<!OPT_IN_USAGE!>function<!>()
<!OPT_IN_USAGE!>use<!>()
// FILE: usage-use.kts
@@ -39,8 +39,8 @@ use()
import api.*
fun use() {
<!EXPERIMENTAL_API_USAGE!>function<!>()
<!OPT_IN_USAGE!>function<!>()
}
<!EXPERIMENTAL_API_USAGE!>function<!>()
<!OPT_IN_USAGE!>function<!>()
use()
@@ -73,8 +73,8 @@ package usage3
import api.*
fun use() {
<!EXPERIMENTAL_API_USAGE!>function<!>()
<!EXPERIMENTAL_API_USAGE!>property<!>
val s: <!EXPERIMENTAL_API_USAGE!>Typealias<!> = ""
<!EXPERIMENTAL_API_USAGE!>s<!>.hashCode()
<!OPT_IN_USAGE!>function<!>()
<!OPT_IN_USAGE!>property<!>
val s: <!OPT_IN_USAGE!>Typealias<!> = ""
<!OPT_IN_USAGE!>s<!>.hashCode()
}
@@ -12,4 +12,4 @@ annotation class ExperimentalAPI
@ExperimentalAPI
class Foo
typealias Bar = <!EXPERIMENTAL_API_USAGE_ERROR!>Foo<!>
typealias Bar = <!OPT_IN_USAGE_ERROR!>Foo<!>
@@ -21,11 +21,11 @@ annotation class M
// Usages as types should be errors
fun f1(e: <!EXPERIMENTAL_CAN_ONLY_BE_USED_AS_ANNOTATION!>RequiresOptIn<!>) {}
fun f2(u: <!EXPERIMENTAL_CAN_ONLY_BE_USED_AS_ANNOTATION!>OptIn?<!>) {}
fun f1(e: <!OPT_IN_CAN_ONLY_BE_USED_AS_ANNOTATION!>RequiresOptIn<!>) {}
fun f2(u: <!OPT_IN_CAN_ONLY_BE_USED_AS_ANNOTATION!>OptIn?<!>) {}
typealias Experimental0 = <!EXPERIMENTAL_CAN_ONLY_BE_USED_AS_ANNOTATION!>RequiresOptIn<!>
typealias OptIn0 = <!EXPERIMENTAL_CAN_ONLY_BE_USED_AS_ANNOTATION!>OptIn<!>
typealias Experimental0 = <!OPT_IN_CAN_ONLY_BE_USED_AS_ANNOTATION!>RequiresOptIn<!>
typealias OptIn0 = <!OPT_IN_CAN_ONLY_BE_USED_AS_ANNOTATION!>OptIn<!>
fun f3(e: Experimental0 /* TODO */) {}
fun f4(u: OptIn0 /* TODO */) {}
@@ -35,10 +35,10 @@ fun f4(u: OptIn0 /* TODO */) {}
annotation class VarargKClasses(vararg val k: KClass<*>)
@VarargKClasses(
<!EXPERIMENTAL_CAN_ONLY_BE_USED_AS_ANNOTATION!>RequiresOptIn<!>::class,
<!EXPERIMENTAL_CAN_ONLY_BE_USED_AS_ANNOTATION!>OptIn<!>::class,
<!EXPERIMENTAL_CAN_ONLY_BE_USED_AS_ANNOTATION!>kotlin.RequiresOptIn<!>::class,
<!EXPERIMENTAL_CAN_ONLY_BE_USED_AS_ANNOTATION!>kotlin.OptIn<!>::class
<!OPT_IN_CAN_ONLY_BE_USED_AS_ANNOTATION!>RequiresOptIn<!>::class,
<!OPT_IN_CAN_ONLY_BE_USED_AS_ANNOTATION!>OptIn<!>::class,
<!OPT_IN_CAN_ONLY_BE_USED_AS_ANNOTATION!>kotlin.RequiresOptIn<!>::class,
<!OPT_IN_CAN_ONLY_BE_USED_AS_ANNOTATION!>kotlin.OptIn<!>::class
)
fun f5() {}
@@ -54,11 +54,11 @@ annotation class Marker {
}
}
fun f6(m: <!EXPERIMENTAL_MARKER_CAN_ONLY_BE_USED_AS_ANNOTATION_OR_ARGUMENT_IN_USE_EXPERIMENTAL!>Marker<!>) {}
fun f7(): List<<!EXPERIMENTAL_MARKER_CAN_ONLY_BE_USED_AS_ANNOTATION_OR_ARGUMENT_IN_USE_EXPERIMENTAL!>Marker<!>>? = null
fun f8(): <!EXPERIMENTAL_MARKER_CAN_ONLY_BE_USED_AS_ANNOTATION_OR_ARGUMENT_IN_USE_EXPERIMENTAL!>test.Marker?<!> = null
fun f6(m: <!OPT_IN_MARKER_CAN_ONLY_BE_USED_AS_ANNOTATION_OR_ARGUMENT_IN_OPT_IN!>Marker<!>) {}
fun f7(): List<<!OPT_IN_MARKER_CAN_ONLY_BE_USED_AS_ANNOTATION_OR_ARGUMENT_IN_OPT_IN!>Marker<!>>? = null
fun f8(): <!OPT_IN_MARKER_CAN_ONLY_BE_USED_AS_ANNOTATION_OR_ARGUMENT_IN_OPT_IN!>test.Marker?<!> = null
typealias Marker0 = <!EXPERIMENTAL_MARKER_CAN_ONLY_BE_USED_AS_ANNOTATION_OR_ARGUMENT_IN_USE_EXPERIMENTAL!>Marker<!>
typealias Marker0 = <!OPT_IN_MARKER_CAN_ONLY_BE_USED_AS_ANNOTATION_OR_ARGUMENT_IN_OPT_IN!>Marker<!>
fun f9(m: Marker0) {}
@@ -21,11 +21,11 @@ annotation class M
// Usages as types should be errors
fun f1(e: <!EXPERIMENTAL_CAN_ONLY_BE_USED_AS_ANNOTATION!>RequiresOptIn<!>) {}
fun f2(u: <!EXPERIMENTAL_CAN_ONLY_BE_USED_AS_ANNOTATION!>OptIn<!>?) {}
fun f1(e: <!OPT_IN_CAN_ONLY_BE_USED_AS_ANNOTATION!>RequiresOptIn<!>) {}
fun f2(u: <!OPT_IN_CAN_ONLY_BE_USED_AS_ANNOTATION!>OptIn<!>?) {}
typealias Experimental0 = <!EXPERIMENTAL_CAN_ONLY_BE_USED_AS_ANNOTATION!>RequiresOptIn<!>
typealias OptIn0 = <!EXPERIMENTAL_CAN_ONLY_BE_USED_AS_ANNOTATION!>OptIn<!>
typealias Experimental0 = <!OPT_IN_CAN_ONLY_BE_USED_AS_ANNOTATION!>RequiresOptIn<!>
typealias OptIn0 = <!OPT_IN_CAN_ONLY_BE_USED_AS_ANNOTATION!>OptIn<!>
fun f3(e: Experimental0 /* TODO */) {}
fun f4(u: OptIn0 /* TODO */) {}
@@ -35,10 +35,10 @@ fun f4(u: OptIn0 /* TODO */) {}
annotation class VarargKClasses(vararg val k: KClass<*>)
@VarargKClasses(
<!EXPERIMENTAL_CAN_ONLY_BE_USED_AS_ANNOTATION!>RequiresOptIn<!>::class,
<!EXPERIMENTAL_CAN_ONLY_BE_USED_AS_ANNOTATION!>OptIn<!>::class,
kotlin.<!EXPERIMENTAL_CAN_ONLY_BE_USED_AS_ANNOTATION!>RequiresOptIn<!>::class,
kotlin.<!EXPERIMENTAL_CAN_ONLY_BE_USED_AS_ANNOTATION!>OptIn<!>::class
<!OPT_IN_CAN_ONLY_BE_USED_AS_ANNOTATION!>RequiresOptIn<!>::class,
<!OPT_IN_CAN_ONLY_BE_USED_AS_ANNOTATION!>OptIn<!>::class,
kotlin.<!OPT_IN_CAN_ONLY_BE_USED_AS_ANNOTATION!>RequiresOptIn<!>::class,
kotlin.<!OPT_IN_CAN_ONLY_BE_USED_AS_ANNOTATION!>OptIn<!>::class
)
fun f5() {}
@@ -54,19 +54,19 @@ annotation class Marker {
}
}
fun f6(m: <!EXPERIMENTAL_MARKER_CAN_ONLY_BE_USED_AS_ANNOTATION_OR_ARGUMENT_IN_USE_EXPERIMENTAL!>Marker<!>) {}
fun f7(): List<<!EXPERIMENTAL_MARKER_CAN_ONLY_BE_USED_AS_ANNOTATION_OR_ARGUMENT_IN_USE_EXPERIMENTAL!>Marker<!>>? = null
fun f8(): test.<!EXPERIMENTAL_MARKER_CAN_ONLY_BE_USED_AS_ANNOTATION_OR_ARGUMENT_IN_USE_EXPERIMENTAL!>Marker<!>? = null
fun f6(m: <!OPT_IN_MARKER_CAN_ONLY_BE_USED_AS_ANNOTATION_OR_ARGUMENT_IN_OPT_IN!>Marker<!>) {}
fun f7(): List<<!OPT_IN_MARKER_CAN_ONLY_BE_USED_AS_ANNOTATION_OR_ARGUMENT_IN_OPT_IN!>Marker<!>>? = null
fun f8(): test.<!OPT_IN_MARKER_CAN_ONLY_BE_USED_AS_ANNOTATION_OR_ARGUMENT_IN_OPT_IN!>Marker<!>? = null
typealias Marker0 = <!EXPERIMENTAL_MARKER_CAN_ONLY_BE_USED_AS_ANNOTATION_OR_ARGUMENT_IN_USE_EXPERIMENTAL!>Marker<!>
typealias Marker0 = <!OPT_IN_MARKER_CAN_ONLY_BE_USED_AS_ANNOTATION_OR_ARGUMENT_IN_OPT_IN!>Marker<!>
fun f9(m: <!EXPERIMENTAL_MARKER_CAN_ONLY_BE_USED_AS_ANNOTATION_OR_ARGUMENT_IN_USE_EXPERIMENTAL!>Marker0<!>) {}
fun f9(m: <!OPT_IN_MARKER_CAN_ONLY_BE_USED_AS_ANNOTATION_OR_ARGUMENT_IN_OPT_IN!>Marker0<!>) {}
// Usages of markers as qualifiers are errors as well (we can lift this restriction for select cases)
fun f10(m: <!EXPERIMENTAL_MARKER_CAN_ONLY_BE_USED_AS_ANNOTATION_OR_ARGUMENT_IN_USE_EXPERIMENTAL!>Marker<!>.NestedClass) {
<!EXPERIMENTAL_MARKER_CAN_ONLY_BE_USED_AS_ANNOTATION_OR_ARGUMENT_IN_USE_EXPERIMENTAL!>Marker<!>.value
fun f10(m: <!OPT_IN_MARKER_CAN_ONLY_BE_USED_AS_ANNOTATION_OR_ARGUMENT_IN_OPT_IN!>Marker<!>.NestedClass) {
<!OPT_IN_MARKER_CAN_ONLY_BE_USED_AS_ANNOTATION_OR_ARGUMENT_IN_OPT_IN!>Marker<!>.value
}
// FILE: usage-from-other-file.kt
@@ -74,5 +74,5 @@ fun f10(m: <!EXPERIMENTAL_MARKER_CAN_ONLY_BE_USED_AS_ANNOTATION_OR_ARGUMENT_IN_U
// Usages of markers in import statements should be OK, but not as qualifiers to import their nested classes
import test.Marker
import test.<!EXPERIMENTAL_MARKER_CAN_ONLY_BE_USED_AS_ANNOTATION_OR_ARGUMENT_IN_USE_EXPERIMENTAL!>Marker<!>.NestedClass
import test.<!EXPERIMENTAL_MARKER_CAN_ONLY_BE_USED_AS_ANNOTATION_OR_ARGUMENT_IN_USE_EXPERIMENTAL!>Marker<!>.Companion
import test.<!OPT_IN_MARKER_CAN_ONLY_BE_USED_AS_ANNOTATION_OR_ARGUMENT_IN_OPT_IN!>Marker<!>.NestedClass
import test.<!OPT_IN_MARKER_CAN_ONLY_BE_USED_AS_ANNOTATION_OR_ARGUMENT_IN_OPT_IN!>Marker<!>.Companion
@@ -29,12 +29,12 @@ import api.*
fun use() {
compilation()
<!EXPERIMENTAL_API_USAGE!>runtime<!>()
<!OPT_IN_USAGE!>runtime<!>()
}
class Use {
fun use() {
compilation()
<!EXPERIMENTAL_API_USAGE!>runtime<!>()
<!OPT_IN_USAGE!>runtime<!>()
}
}
@@ -52,5 +52,5 @@ fun use2() {
fun use3() {
e1()
e2()
<!EXPERIMENTAL_API_USAGE!>e3<!>()
<!OPT_IN_USAGE!>e3<!>()
}
@@ -24,12 +24,12 @@ class NewClassExperimentalInThePast
@SinceKotlin("1.4")
@WasExperimental(Marker::class)
typealias TypeAliasToNewClass = <!EXPERIMENTAL_API_USAGE_ERROR!>NewClassExperimentalInThePast<!>
typealias TypeAliasToNewClass = <!OPT_IN_USAGE_ERROR!>NewClassExperimentalInThePast<!>
fun use1(
c1: <!EXPERIMENTAL_API_USAGE_ERROR!>NewClassExperimentalInThePast<!>,
t1: <!EXPERIMENTAL_API_USAGE_ERROR!>TypeAliasToNewClass<!>
c1: <!OPT_IN_USAGE_ERROR!>NewClassExperimentalInThePast<!>,
t1: <!OPT_IN_USAGE_ERROR!>TypeAliasToNewClass<!>
) {
<!UNRESOLVED_REFERENCE!>newPublishedFun<!>()
<!UNRESOLVED_REFERENCE!>newFunExperimentalInThePast<!>()
@@ -8,18 +8,18 @@ annotation class SomeOptInMarker
annotation class OtherOptInMarker
class IntWrapper(
<!EXPERIMENTAL_ANNOTATION_ON_WRONG_TARGET!>@SomeOptInMarker<!>
<!EXPERIMENTAL_ANNOTATION_ON_WRONG_TARGET!>@OtherOptInMarker<!>
<!OPT_IN_MARKER_ON_WRONG_TARGET!>@SomeOptInMarker<!>
<!OPT_IN_MARKER_ON_WRONG_TARGET!>@OtherOptInMarker<!>
val value: Int
) {
val isEven: Boolean
<!EXPERIMENTAL_ANNOTATION_ON_WRONG_TARGET!>@SomeOptInMarker<!>
<!EXPERIMENTAL_ANNOTATION_ON_WRONG_TARGET!>@OtherOptInMarker<!>
<!OPT_IN_MARKER_ON_WRONG_TARGET!>@SomeOptInMarker<!>
<!OPT_IN_MARKER_ON_WRONG_TARGET!>@OtherOptInMarker<!>
get() = (value % 2) == 0
}
fun foo() {
<!EXPERIMENTAL_ANNOTATION_ON_WRONG_TARGET!>@SomeOptInMarker<!>
<!EXPERIMENTAL_ANNOTATION_ON_WRONG_TARGET!>@OtherOptInMarker<!>
<!OPT_IN_MARKER_ON_WRONG_TARGET!>@SomeOptInMarker<!>
<!OPT_IN_MARKER_ON_WRONG_TARGET!>@OtherOptInMarker<!>
val value = 2
}
@@ -1,6 +1,6 @@
// FIR_IDENTICAL
// !LANGUAGE: +NewInference +OverloadResolutionByLambdaReturnType
// !DIAGNOSTICS: -UNUSED_PARAMETER -UNUSED_VARIABLE -UNUSED_EXPRESSION -EXPERIMENTAL_API_USAGE -EXPERIMENTAL_UNSIGNED_LITERALS
// !DIAGNOSTICS: -UNUSED_PARAMETER -UNUSED_VARIABLE -UNUSED_EXPRESSION -OPT_IN_USAGE -EXPERIMENTAL_UNSIGNED_LITERALS
// ISSUE: KT-11265
// FILE: OverloadResolutionByLambdaReturnType.kt
@@ -1,6 +1,6 @@
// FIR_IDENTICAL
// !LANGUAGE: +NewInference +OverloadResolutionByLambdaReturnType
// !DIAGNOSTICS: -UNUSED_PARAMETER -UNUSED_VARIABLE -UNUSED_EXPRESSION -EXPERIMENTAL_API_USAGE -EXPERIMENTAL_UNSIGNED_LITERALS
// !DIAGNOSTICS: -UNUSED_PARAMETER -UNUSED_VARIABLE -UNUSED_EXPRESSION -OPT_IN_USAGE -EXPERIMENTAL_UNSIGNED_LITERALS
// ISSUE: KT-11265
// FILE: OverloadResolutionByLambdaReturnType.kt
@@ -1,6 +1,6 @@
// FIR_IDENTICAL
// !LANGUAGE: +NewInference +OverloadResolutionByLambdaReturnType
// !DIAGNOSTICS: -UNUSED_PARAMETER -UNUSED_VARIABLE -UNUSED_EXPRESSION -EXPERIMENTAL_API_USAGE -EXPERIMENTAL_UNSIGNED_LITERALS
// !DIAGNOSTICS: -UNUSED_PARAMETER -UNUSED_VARIABLE -UNUSED_EXPRESSION -OPT_IN_USAGE -EXPERIMENTAL_UNSIGNED_LITERALS
// ISSUE: KT-11265
// FILE: OverloadResolutionByLambdaReturnType.kt
@@ -1,6 +1,6 @@
// FIR_IDENTICAL
// !LANGUAGE: +NewInference +OverloadResolutionByLambdaReturnType
// !DIAGNOSTICS: -UNUSED_PARAMETER -UNUSED_VARIABLE -UNUSED_EXPRESSION -EXPERIMENTAL_API_USAGE -EXPERIMENTAL_UNSIGNED_LITERALS
// !DIAGNOSTICS: -UNUSED_PARAMETER -UNUSED_VARIABLE -UNUSED_EXPRESSION -OPT_IN_USAGE -EXPERIMENTAL_UNSIGNED_LITERALS
// ISSUE: KT-11265
// FILE: OverloadResolutionByLambdaReturnType.kt
@@ -2,9 +2,9 @@
fun main() {
val list = listOf(A())
list.forEach(A::<!EXPERIMENTAL_API_USAGE_ERROR!>foo<!>)
list.forEach(A::<!OPT_IN_USAGE_ERROR!>foo<!>)
list.forEach {
it.<!EXPERIMENTAL_API_USAGE_ERROR!>foo<!>()
it.<!OPT_IN_USAGE_ERROR!>foo<!>()
}
}
@@ -15,5 +15,5 @@ class A {
}
}
@<!EXPERIMENTAL_IS_NOT_ENABLED!>RequiresOptIn<!>(level = RequiresOptIn.Level.ERROR)
@<!OPT_IN_IS_NOT_ENABLED!>RequiresOptIn<!>(level = RequiresOptIn.Level.ERROR)
annotation class ExperimentalTime
@@ -2,9 +2,9 @@
fun main() {
val list = listOf(A())
list.forEach(A::<!EXPERIMENTAL_API_USAGE_ERROR!>foo<!>)
list.forEach(A::<!OPT_IN_USAGE_ERROR!>foo<!>)
list.forEach {
it.<!EXPERIMENTAL_API_USAGE_ERROR!>foo<!>()
it.<!OPT_IN_USAGE_ERROR!>foo<!>()
}
}
@@ -15,5 +15,5 @@ class A {
}
}
@<!EXPERIMENTAL_IS_NOT_ENABLED!>RequiresOptIn<!>(level = <!EXPERIMENTAL_IS_NOT_ENABLED!>RequiresOptIn<!>.Level.ERROR)
@<!OPT_IN_IS_NOT_ENABLED!>RequiresOptIn<!>(level = <!OPT_IN_IS_NOT_ENABLED!>RequiresOptIn<!>.Level.ERROR)
annotation class ExperimentalTime