FIR2IR: Fix checking if accessor is allowed to have fake override

This commit is contained in:
Denis Zharkov
2020-09-29 20:04:38 +03:00
parent 70bf7063c9
commit 754e17a28f
@@ -20,6 +20,7 @@ import org.jetbrains.kotlin.fir.symbols.PossiblyFirFakeOverrideSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirNamedFunctionSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirNamedFunctionSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol
import org.jetbrains.kotlin.fir.symbols.impl.unwrapSubstitutionOverrides
import org.jetbrains.kotlin.ir.declarations.* import org.jetbrains.kotlin.ir.declarations.*
import org.jetbrains.kotlin.ir.symbols.IrPropertySymbol import org.jetbrains.kotlin.ir.symbols.IrPropertySymbol
import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol
@@ -228,12 +229,13 @@ class FakeOverrideGenerator(
private fun IrProperty.discardAccessorsAccordingToBaseVisibility(baseSymbols: List<FirPropertySymbol>) { private fun IrProperty.discardAccessorsAccordingToBaseVisibility(baseSymbols: List<FirPropertySymbol>) {
for (baseSymbol in baseSymbols) { for (baseSymbol in baseSymbols) {
val unwrapped = baseSymbol.unwrapSubstitutionOverrides()
// Do not create fake overrides for accessors if not allowed to do so, e.g., private lateinit var. // Do not create fake overrides for accessors if not allowed to do so, e.g., private lateinit var.
if (baseSymbol.fir.getter?.allowsToHaveFakeOverride != true) { if (unwrapped.fir.getter?.allowsToHaveFakeOverride != true) {
getter = null getter = null
} }
// or private setter // or private setter
if (baseSymbol.fir.setter?.allowsToHaveFakeOverride != true) { if (unwrapped.fir.setter?.allowsToHaveFakeOverride != true) {
setter = null setter = null
} }
} }