FirPropertyAccessorChecker: add three new diagnostics

This commit is contained in:
Mikhail Glukhikh
2021-05-07 12:28:56 +03:00
parent 1a3b5657c7
commit 6618b4ea57
23 changed files with 131 additions and 96 deletions
@@ -17,7 +17,7 @@ class Test: ATest(), ITest {
override var prop2 : Int
get() = 14
internal set(value) {}
<!SETTER_VISIBILITY_INCONSISTENT_WITH_PROPERTY_VISIBILITY!>internal<!> set(value) {}
}
fun main() {
@@ -1,25 +0,0 @@
class My {
var x: Int = 0
// Ok
private set
private var y: Int = 1
// Error: better
public set
protected var z: Int = 2
// Ok
private set
protected var w: Int = 3
// Error: incompatible
internal set
internal var v: Int = 4
// Error: incompatible
protected set
internal var t: Int = 5
// Error: better
public set
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
class My {
var x: Int = 0
// Ok
@@ -1,12 +0,0 @@
// KT-11809 Assertion error when delegated property has getter
class A {
val p1 by this
get
var p2 by this
get() = ""
operator fun getValue(a: Any?, p: Any?) = ""
operator fun setValue(a: Any?, p: Any?, v: Any?) {}
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// KT-11809 Assertion error when delegated property has getter
class A {
@@ -1,12 +0,0 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER
import kotlin.reflect.KProperty
val a: Int by Delegate()
get() = 1
class Delegate {
operator fun getValue(t: Any?, p: KProperty<*>): Int {
return 1
}
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// !DIAGNOSTICS: -UNUSED_PARAMETER
import kotlin.reflect.KProperty
@@ -1,15 +0,0 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER
import kotlin.reflect.KProperty
var a: Int by Delegate()
get() = 1
set(i) {}
class Delegate {
operator fun getValue(t: Any?, p: KProperty<*>): Int {
return 1
}
operator fun setValue(t: Any?, p: KProperty<*>, i: Int) {}
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// !DIAGNOSTICS: -UNUSED_PARAMETER
import kotlin.reflect.KProperty
@@ -1,22 +0,0 @@
class My {
lateinit var x: String
private set
lateinit var y: String
internal set
lateinit protected var z: String
private set
lateinit private var w: String
// Ok, private var / private set
private set
lateinit protected var v: String
public set
lateinit public var u: String
// Ok, public var / public set
public set
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
class My {
lateinit var x: String
@@ -6,7 +6,7 @@ class A() {
field = value
}
val y: Int
get(): String = "s"
get(): <!WRONG_GETTER_RETURN_TYPE("Getter return type must be equal to the type of the property, i.e. 'kotlin/Int'")!>String<!> = "s"
val z: Int
get() {
return "s"
@@ -17,7 +17,7 @@ class A() {
field = v
}
val b: Int
get(): Any = "s"
get(): <!WRONG_GETTER_RETURN_TYPE!>Any<!> = "s"
val c: Int
get() {
return 1
@@ -27,7 +27,7 @@ class A() {
return field
}
val e = 1
get(): String {
get(): <!WRONG_GETTER_RETURN_TYPE!>String<!> {
return field
}
@@ -8,5 +8,5 @@ class My {
val another: String = delegate
var delegateWithBackingField: String by kotlin.properties.Delegates.notNull()
private set(arg) { <!UNRESOLVED_REFERENCE!>field<!> = arg }
<!ACCESSOR_FOR_DELEGATED_PROPERTY!>private set(arg) { <!UNRESOLVED_REFERENCE!>field<!> = arg }<!>
}
@@ -45,7 +45,7 @@ interface B {
@JvmStatic get
private var foo8 = 1
@JvmStatic public set
@JvmStatic <!SETTER_VISIBILITY_INCONSISTENT_WITH_PROPERTY_VISIBILITY!>public<!> set
public var foo9 = 1
@JvmStatic private set
@@ -47,7 +47,7 @@ interface B {
@JvmStatic get
private var foo8 = 1
@JvmStatic public set
@JvmStatic <!SETTER_VISIBILITY_INCONSISTENT_WITH_PROPERTY_VISIBILITY!>public<!> set
public var foo9 = 1
@JvmStatic private set
@@ -46,7 +46,7 @@ interface B {
@JvmStatic get
private var foo8 = 1
@JvmStatic public set
@JvmStatic <!SETTER_VISIBILITY_INCONSISTENT_WITH_PROPERTY_VISIBILITY!>public<!> set
public var foo9 = 1
@JvmStatic private set