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:
Tianyu Geng
2021-02-18 16:28:27 -08:00
committed by Mikhail Glukhikh
parent bdeecfc188
commit 5bdea9652b
14 changed files with 56 additions and 55 deletions
@@ -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) {}
}