[FIR] Add INAPPLICABLE_JVM_FIELD, INAPPLICABLE_JVM_FIELD_WARNING

This commit is contained in:
Ivan Kochurkin
2021-09-08 16:05:27 +03:00
committed by TeamCityServer
parent e3805c9b98
commit 3725c58794
15 changed files with 247 additions and 120 deletions
@@ -1,13 +0,0 @@
@file:kotlin.jvm.JvmMultifileClass
@file:JvmName("SomeName")
@JvmField
val c = 4
@JvmField
var g = 5
class C {
@JvmField
var g = 5
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
@file:kotlin.jvm.JvmMultifileClass
@file:JvmName("SomeName")
@@ -1,59 +0,0 @@
// !LANGUAGE: +JvmFieldInInterface
interface A {
companion object {
@JvmField
val c = 3
}
}
interface B {
companion object {
@JvmField
val c = 3
@JvmField
val a = 3
}
}
interface C {
companion object {
@JvmField
val c = 3
val a = 3
}
}
interface D {
companion object {
@JvmField
var c = 3
}
}
interface E {
companion object {
@JvmField
private val a = 3
@JvmField
internal val b = 3
@JvmField
protected val c = 3
}
}
interface F {
companion object {
@JvmField
<!NON_FINAL_MEMBER_IN_OBJECT!>open<!> val a = 3
}
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// !LANGUAGE: +JvmFieldInInterface
interface A {
@@ -17,33 +17,33 @@ abstract class C : I{
<!WRONG_ANNOTATION_TARGET!>@kotlin.jvm.JvmField<!> private fun foo(s: String = "OK") {
}
<!WRONG_ANNOTATION_TARGET!>@JvmField<!> val a: String by lazy { "A" }
<!INAPPLICABLE_JVM_FIELD, WRONG_ANNOTATION_TARGET!>@JvmField<!> val a: String by lazy { "A" }
@JvmField open val b: Int = 3
<!INAPPLICABLE_JVM_FIELD!>@JvmField<!> open val b: Int = 3
<!WRONG_ANNOTATION_TARGET!>@JvmField<!> abstract val c: Int
@JvmField
<!INAPPLICABLE_JVM_FIELD!>@JvmField<!>
val customGetter: String = ""
get() = field
@JvmField
<!INAPPLICABLE_JVM_FIELD!>@JvmField<!>
val explicitDefaultGetter: String = ""
get
@JvmField
<!INAPPLICABLE_JVM_FIELD!>@JvmField<!>
var explicitDefaultSetter: String = ""
set
@JvmField
<!INAPPLICABLE_JVM_FIELD!>@JvmField<!>
val explicitDefaultAnnotatedGetter: String = ""
@DemoAnnotation get
@JvmField
<!INAPPLICABLE_JVM_FIELD!>@JvmField<!>
var explicitDefaultAnnotatedSetter: String = ""
@DemoAnnotation set
@JvmField
<!INAPPLICABLE_JVM_FIELD!>@JvmField<!>
var customSetter: String = ""
set(s) {
field = s
@@ -53,10 +53,10 @@ abstract class C : I{
val noBackingField: String
get() = "a"
@JvmField
<!INAPPLICABLE_JVM_FIELD!>@JvmField<!>
final override val ai = 3
@JvmField
<!INAPPLICABLE_JVM_FIELD!>@JvmField<!>
private val private = 3
}
@@ -67,14 +67,14 @@ interface I {
}
class G {
@JvmField
<!INAPPLICABLE_JVM_FIELD!>@JvmField<!>
lateinit var lateInit: String
@delegate:JvmField
<!INAPPLICABLE_JVM_FIELD!>@delegate:JvmField<!>
val s: String by lazy { "s" }
}
@JvmField
<!INAPPLICABLE_JVM_FIELD!>@JvmField<!>
const val Const = 4
@JvmField
@@ -93,7 +93,7 @@ interface K {
val j: Int
companion object {
@JvmField
<!INAPPLICABLE_JVM_FIELD!>@JvmField<!>
var c = 3
var x = 3
@@ -101,27 +101,27 @@ interface K {
}
class KK : K {
@JvmField
<!INAPPLICABLE_JVM_FIELD!>@JvmField<!>
override val i: Int = 0
@JvmField
<!INAPPLICABLE_JVM_FIELD!>@JvmField<!>
override final val j: Int = 0
}
open class KKK : K {
@JvmField
<!INAPPLICABLE_JVM_FIELD!>@JvmField<!>
override val i: Int = 0
@JvmField
<!INAPPLICABLE_JVM_FIELD!>@JvmField<!>
override final val j: Int = 0
}
class JK(
override val i: Int,
@JvmField override val j: Int,
<!INAPPLICABLE_JVM_FIELD_WARNING!>@JvmField<!> override val j: Int,
) : K
annotation class L {
companion object {
@JvmField
<!INAPPLICABLE_JVM_FIELD!>@JvmField<!>
var c = 3
}
}
@@ -131,18 +131,18 @@ object O {
val c = 3
}
@JvmField
<!INAPPLICABLE_JVM_FIELD!>@JvmField<!>
private val private = 3
inline class Foo(val x: Int)
object IObject {
@JvmField
<!INAPPLICABLE_JVM_FIELD!>@JvmField<!>
val c: Foo = Foo(42)
@JvmField
<!INAPPLICABLE_JVM_FIELD!>@JvmField<!>
val u = 42u
@JvmField
<!INAPPLICABLE_JVM_FIELD!>@JvmField<!>
private val r: Result<Int> = TODO()
}
@@ -17,33 +17,33 @@ abstract class C : I{
<!WRONG_ANNOTATION_TARGET!>@kotlin.jvm.JvmField<!> private fun foo(s: String = "OK") {
}
<!WRONG_ANNOTATION_TARGET!>@JvmField<!> val a: String by lazy { "A" }
<!INAPPLICABLE_JVM_FIELD, WRONG_ANNOTATION_TARGET!>@JvmField<!> val a: String by lazy { "A" }
@JvmField open val b: Int = 3
<!INAPPLICABLE_JVM_FIELD!>@JvmField<!> open val b: Int = 3
<!WRONG_ANNOTATION_TARGET!>@JvmField<!> abstract val c: Int
@JvmField
<!INAPPLICABLE_JVM_FIELD!>@JvmField<!>
val customGetter: String = ""
get() = field
@JvmField
<!INAPPLICABLE_JVM_FIELD!>@JvmField<!>
val explicitDefaultGetter: String = ""
get
@JvmField
<!INAPPLICABLE_JVM_FIELD!>@JvmField<!>
var explicitDefaultSetter: String = ""
set
@JvmField
<!INAPPLICABLE_JVM_FIELD!>@JvmField<!>
val explicitDefaultAnnotatedGetter: String = ""
@DemoAnnotation get
@JvmField
<!INAPPLICABLE_JVM_FIELD!>@JvmField<!>
var explicitDefaultAnnotatedSetter: String = ""
@DemoAnnotation set
@JvmField
<!INAPPLICABLE_JVM_FIELD!>@JvmField<!>
var customSetter: String = ""
set(s) {
field = s
@@ -53,10 +53,10 @@ abstract class C : I{
val noBackingField: String
get() = "a"
@JvmField
<!INAPPLICABLE_JVM_FIELD!>@JvmField<!>
final override val ai = 3
@JvmField
<!INAPPLICABLE_JVM_FIELD!>@JvmField<!>
private val private = 3
}
@@ -67,14 +67,14 @@ interface I {
}
class G {
@JvmField
<!INAPPLICABLE_JVM_FIELD!>@JvmField<!>
lateinit var lateInit: String
@delegate:JvmField
<!INAPPLICABLE_JVM_FIELD!>@delegate:JvmField<!>
val s: String by lazy { "s" }
}
@JvmField
<!INAPPLICABLE_JVM_FIELD!>@JvmField<!>
const val Const = 4
@JvmField
@@ -93,7 +93,7 @@ interface K {
val j: Int
companion object {
@JvmField
<!INAPPLICABLE_JVM_FIELD!>@JvmField<!>
var c = 3
var x = 3
@@ -101,27 +101,27 @@ interface K {
}
class KK : K {
@JvmField
<!INAPPLICABLE_JVM_FIELD!>@JvmField<!>
override val i: Int = 0
@JvmField
<!INAPPLICABLE_JVM_FIELD!>@JvmField<!>
override final val j: Int = 0
}
open class KKK : K {
@JvmField
<!INAPPLICABLE_JVM_FIELD!>@JvmField<!>
override val i: Int = 0
@JvmField
<!INAPPLICABLE_JVM_FIELD!>@JvmField<!>
override final val j: Int = 0
}
class JK(
override val i: Int,
@JvmField override val j: Int,
<!INAPPLICABLE_JVM_FIELD!>@JvmField<!> override val j: Int,
) : K
annotation class L {
companion object {
@JvmField
<!INAPPLICABLE_JVM_FIELD!>@JvmField<!>
var c = 3
}
}
@@ -131,18 +131,18 @@ object O {
val c = 3
}
@JvmField
<!INAPPLICABLE_JVM_FIELD!>@JvmField<!>
private val private = 3
inline class Foo(val x: Int)
object IObject {
@JvmField
<!INAPPLICABLE_JVM_FIELD!>@JvmField<!>
val c: Foo = Foo(42)
@JvmField
<!INAPPLICABLE_JVM_FIELD!>@JvmField<!>
val u = 42u
@JvmField
<!INAPPLICABLE_JVM_FIELD!>@JvmField<!>
private val r: Result<Int> = TODO()
}