[FIR] Consider getter and setter for CANNOT_WEAKEN_ACCESS_PRIVILEGE

Fill source with correct value instead of null
for FirDefaultPropertySetter in light tree converter
This commit is contained in:
Ivan Kochurkin
2021-07-29 23:57:30 +03:00
committed by teamcityserver
parent b3d7ed569d
commit 0e2d765a2d
7 changed files with 45 additions and 113 deletions
@@ -1,29 +0,0 @@
public interface ITest {
public var prop : Int
get() = 12
set(value) {}
}
abstract class ATest {
protected open var prop2 : Int
get() = 13
set(value) {}
}
class Test: ATest(), ITest {
override var prop : Int
get() = 12
private set(value) {}
override var prop2 : Int
get() = 14
<!SETTER_VISIBILITY_INCONSISTENT_WITH_PROPERTY_VISIBILITY!>internal<!> set(value) {}
}
fun main() {
val test = Test()
<!INVISIBLE_SETTER!>test.prop<!> = 12
val itest: ITest = test
itest.prop = 12 // No error here
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
public interface ITest {
public var prop : Int
get() = 12
@@ -1,70 +0,0 @@
// See KT-10325: private setters are allowed for overridden properties in final class
interface A {
val a: Int
var b: Int
}
abstract class AA {
abstract val c: Int
abstract var d: Int
}
class B : A, AA() {
override var a: Int = 0
// Ok
private set
override var b: Int = 1
private set
override var c: Int = 2
// Ok
private set
override var d: Int = 3
private set
}
open class C : A, AA() {
override var a: Int = 0
// Errors here and below
<!PRIVATE_SETTER_FOR_OPEN_PROPERTY!>private<!> set
override var b: Int = 1
<!PRIVATE_SETTER_FOR_OPEN_PROPERTY!>private<!> set
override var c: Int = 2
<!PRIVATE_SETTER_FOR_OPEN_PROPERTY!>private<!> set
override var d: Int = 3
<!PRIVATE_SETTER_FOR_OPEN_PROPERTY!>private<!> set
}
abstract class D : A, AA() {
override var a: Int = 0
// Errors here and below
<!PRIVATE_SETTER_FOR_OPEN_PROPERTY!>private<!> set
override var b: Int = 1
<!PRIVATE_SETTER_FOR_OPEN_PROPERTY!>private<!> set
override var c: Int = 2
<!PRIVATE_SETTER_FOR_OPEN_PROPERTY!>private<!> set
override var d: Int = 3
<!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) {}
override var b: Int
get() = 0
<!PRIVATE_SETTER_FOR_OPEN_PROPERTY!>private<!> set(arg) {}
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// See KT-10325: private setters are allowed for overridden properties in final class
interface A {