FIR: fix position and reporting of PRIVATE_SETTER_*
Previously `FirPropertyAccessor.source` references the `KtProperty` if the user code contains a setter or getter that doesn't contain a body. For example, with the following ``` val i: Int = 1 private set ``` The `FirPropertyAccessor` would reference the `KtProperty` as the source. This change makes `FirPropertyAccessor` reference `KtPropertyAccessor` as the source if possible, regardless of whether the body is present or not.
This commit is contained in:
committed by
Mikhail Glukhikh
parent
bdeecfc188
commit
5bdea9652b
@@ -1,14 +1,14 @@
|
||||
abstract class My {
|
||||
abstract var x: Int
|
||||
public get
|
||||
private set
|
||||
<!PRIVATE_SETTER_FOR_ABSTRACT_PROPERTY!>private<!> set
|
||||
|
||||
abstract val y: Int
|
||||
protected get
|
||||
|
||||
abstract protected var z: Int
|
||||
internal get
|
||||
private set
|
||||
<!PRIVATE_SETTER_FOR_ABSTRACT_PROPERTY!>private<!> set
|
||||
|
||||
abstract internal val w: Int
|
||||
protected get
|
||||
@@ -17,5 +17,5 @@ abstract class My {
|
||||
protected set
|
||||
|
||||
open var t: Int = 0
|
||||
private set
|
||||
}
|
||||
<!PRIVATE_SETTER_FOR_OPEN_PROPERTY!>private<!> set
|
||||
}
|
||||
|
||||
@@ -9,8 +9,8 @@ abstract class MyAbstractClass() {
|
||||
|
||||
var b: Int private set
|
||||
var b1: Int = 0; private set
|
||||
abstract var b2: Int private set
|
||||
abstract var b3: Int = <!ABSTRACT_PROPERTY_WITH_INITIALIZER!>0<!>; private set
|
||||
abstract var b2: Int <!PRIVATE_SETTER_FOR_ABSTRACT_PROPERTY!>private<!> set
|
||||
abstract var b3: Int = <!ABSTRACT_PROPERTY_WITH_INITIALIZER!>0<!>; <!PRIVATE_SETTER_FOR_ABSTRACT_PROPERTY!>private<!> set
|
||||
|
||||
var c: Int set(v: Int) { field = v }
|
||||
var c1: Int = 0; set(v: Int) { field = v }
|
||||
@@ -42,4 +42,4 @@ abstract class MyAbstractClass() {
|
||||
var l1: Int = 0; abstract get abstract set
|
||||
|
||||
var n: Int abstract get abstract set(v: Int) {}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,10 +7,10 @@ interface MyTrait {
|
||||
abstract val a2: Int
|
||||
abstract val a3: Int = <!ABSTRACT_PROPERTY_WITH_INITIALIZER!>1<!>
|
||||
|
||||
var b: Int private set
|
||||
var b1: Int = <!PROPERTY_INITIALIZER_IN_INTERFACE!>0<!>; private set
|
||||
abstract var b2: Int private set
|
||||
abstract var b3: Int = <!ABSTRACT_PROPERTY_WITH_INITIALIZER!>0<!>; private set
|
||||
var b: Int <!PRIVATE_SETTER_FOR_ABSTRACT_PROPERTY!>private<!> set
|
||||
var b1: Int = <!PROPERTY_INITIALIZER_IN_INTERFACE!>0<!>; <!PRIVATE_SETTER_FOR_OPEN_PROPERTY!>private<!> set
|
||||
abstract var b2: Int <!PRIVATE_SETTER_FOR_ABSTRACT_PROPERTY!>private<!> set
|
||||
abstract var b3: Int = <!ABSTRACT_PROPERTY_WITH_INITIALIZER!>0<!>; <!PRIVATE_SETTER_FOR_ABSTRACT_PROPERTY!>private<!> set
|
||||
|
||||
<!BACKING_FIELD_IN_INTERFACE!>var c: Int<!> set(v: Int) { field = v }
|
||||
<!BACKING_FIELD_IN_INTERFACE!>var c1: Int<!> = <!PROPERTY_INITIALIZER_IN_INTERFACE!>0<!>; set(v: Int) { field = v }
|
||||
@@ -42,4 +42,4 @@ interface MyTrait {
|
||||
var l1: Int = <!PROPERTY_INITIALIZER_IN_INTERFACE!>0<!>; abstract get abstract set
|
||||
|
||||
<!BACKING_FIELD_IN_INTERFACE!>var n: Int<!> abstract get abstract set(v: Int) {}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -31,40 +31,40 @@ class B : A, AA() {
|
||||
open class C : A, AA() {
|
||||
override var a: Int = 0
|
||||
// Errors here and below
|
||||
private set
|
||||
<!PRIVATE_SETTER_FOR_OPEN_PROPERTY!>private<!> set
|
||||
|
||||
override var b: Int = 1
|
||||
private set
|
||||
<!PRIVATE_SETTER_FOR_OPEN_PROPERTY!>private<!> set
|
||||
|
||||
override var c: Int = 2
|
||||
private set
|
||||
<!PRIVATE_SETTER_FOR_OPEN_PROPERTY!>private<!> set
|
||||
|
||||
override var d: Int = 3
|
||||
private set
|
||||
<!PRIVATE_SETTER_FOR_OPEN_PROPERTY!>private<!> set
|
||||
}
|
||||
|
||||
abstract class D : A, AA() {
|
||||
override var a: Int = 0
|
||||
// Errors here and below
|
||||
private set
|
||||
<!PRIVATE_SETTER_FOR_OPEN_PROPERTY!>private<!> set
|
||||
|
||||
override var b: Int = 1
|
||||
private set
|
||||
<!PRIVATE_SETTER_FOR_OPEN_PROPERTY!>private<!> set
|
||||
|
||||
override var c: Int = 2
|
||||
private set
|
||||
<!PRIVATE_SETTER_FOR_OPEN_PROPERTY!>private<!> set
|
||||
|
||||
override var d: Int = 3
|
||||
private set
|
||||
<!PRIVATE_SETTER_FOR_OPEN_PROPERTY!>private<!> set
|
||||
}
|
||||
|
||||
interface E : A {
|
||||
override var a: Int
|
||||
get() = 0
|
||||
// Errors here and below
|
||||
<!PRIVATE_SETTER_FOR_OPEN_PROPERTY!>private set(arg) {}<!>
|
||||
<!PRIVATE_SETTER_FOR_OPEN_PROPERTY!>private<!> set(arg) {}
|
||||
|
||||
override var b: Int
|
||||
get() = 0
|
||||
<!PRIVATE_SETTER_FOR_OPEN_PROPERTY!>private set(arg) {}<!>
|
||||
}
|
||||
<!PRIVATE_SETTER_FOR_OPEN_PROPERTY!>private<!> set(arg) {}
|
||||
}
|
||||
|
||||
@@ -11,8 +11,8 @@ enum class MyEnum() {
|
||||
|
||||
var b: Int private set
|
||||
var b1: Int = 0; private set
|
||||
abstract var b2: Int private set
|
||||
abstract var b3: Int = <!ABSTRACT_PROPERTY_WITH_INITIALIZER!>0<!>; private set
|
||||
abstract var b2: Int <!PRIVATE_SETTER_FOR_ABSTRACT_PROPERTY!>private<!> set
|
||||
abstract var b3: Int = <!ABSTRACT_PROPERTY_WITH_INITIALIZER!>0<!>; <!PRIVATE_SETTER_FOR_ABSTRACT_PROPERTY!>private<!> set
|
||||
|
||||
var c: Int set(v: Int) { field = v }
|
||||
var c1: Int = 0; set(v: Int) { field = v }
|
||||
@@ -44,4 +44,4 @@ enum class MyEnum() {
|
||||
var l1: Int = 0; abstract get abstract set
|
||||
|
||||
var n: Int abstract get abstract set(v: Int) {}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,11 +5,11 @@ interface Test<in I, out O> {
|
||||
<!PRIVATE_PROPERTY_IN_INTERFACE!>private<!> val private_val: I
|
||||
|
||||
var interlan_private_set: O
|
||||
private set
|
||||
<!PRIVATE_SETTER_FOR_ABSTRACT_PROPERTY!>private<!> set
|
||||
public var public_private_set: O
|
||||
private set
|
||||
<!PRIVATE_SETTER_FOR_ABSTRACT_PROPERTY!>private<!> set
|
||||
protected var protected_private_set: O
|
||||
private set
|
||||
<!PRIVATE_SETTER_FOR_ABSTRACT_PROPERTY!>private<!> set
|
||||
<!PRIVATE_PROPERTY_IN_INTERFACE!>private<!> var private_private_set: O
|
||||
private set
|
||||
|
||||
@@ -17,4 +17,4 @@ interface Test<in I, out O> {
|
||||
public fun public_fun(i: O) : I
|
||||
protected fun protected_fun(i: O) : I
|
||||
<!PRIVATE_FUNCTION_WITH_NO_BODY!>private<!> fun private_fun(i: O) : I
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user