Opt-in: forbid/deprecate constructor call with default arguments under marker

#KT-55074 Fixed
This commit is contained in:
Mikhail Glukhikh
2022-11-21 15:35:25 +01:00
committed by Space Team
parent b92ce68f32
commit 8ddc535caf
5 changed files with 54 additions and 29 deletions
@@ -1,4 +1,3 @@
// FIR_IDENTICAL
@RequiresOptIn
annotation class Marker
@@ -16,8 +15,12 @@ class Other(val x: Int) {
constructor(y: Long, some: Some? = null): this(some?.x ?: y.toInt())
}
fun foo(some: <!OPT_IN_USAGE_ERROR!>Some<!>? = null) {}
fun test() {
val o1 = <!OPT_IN_USAGE_ERROR!>Other<!>()
val o2 = Other(<!OPT_IN_USAGE_ERROR!>Some<!>(0))
val o3 = Other(444L)
val o2 = <!OPT_IN_USAGE_FUTURE_ERROR!>Other<!>(<!OPT_IN_USAGE_ERROR!>Some<!>(0))
val o3 = <!OPT_IN_USAGE_FUTURE_ERROR!>Other<!>(444L)
<!OPT_IN_USAGE_ERROR!>foo<!>()
<!OPT_IN_USAGE_ERROR!>foo<!>(null)
}