[FIR2IR] Populate overridden symbols even for !isOverride

Before this commit we considered !isOverride as a sign that
function / field / accessor has no overridden symbols.
However, it's false for deserialized, because isOverride
is always false there.

This commit fixes 68 BB tests but breaks 25 BB tests (not yet muted)
This commit is contained in:
Mikhail Glukhikh
2020-05-13 11:53:47 +03:00
parent ac1e96500a
commit e7e80be34a
74 changed files with 20 additions and 79 deletions
@@ -10,10 +10,8 @@ import org.jetbrains.kotlin.builtins.KotlinBuiltIns.*
import org.jetbrains.kotlin.descriptors.*
import org.jetbrains.kotlin.descriptors.annotations.Annotations
import org.jetbrains.kotlin.fir.declarations.*
import org.jetbrains.kotlin.fir.declarations.impl.FirDefaultPropertyAccessor
import org.jetbrains.kotlin.fir.declarations.impl.FirDefaultPropertyGetter
import org.jetbrains.kotlin.fir.declarations.impl.FirDefaultPropertySetter
import org.jetbrains.kotlin.fir.declarations.impl.FirPropertyAccessorImpl
import org.jetbrains.kotlin.fir.descriptors.FirBuiltInsPackageFragment
import org.jetbrains.kotlin.fir.descriptors.FirModuleDescriptor
import org.jetbrains.kotlin.fir.descriptors.FirPackageFragmentDescriptor
@@ -455,7 +453,7 @@ class Fir2IrDeclarationStorage(
created.overriddenSymbols += getIrFunctionSymbol(it) as IrSimpleFunctionSymbol
}
}
if (!created.isFakeOverride && simpleFunction?.isOverride == true && thisReceiverOwner != null) {
if (!created.isFakeOverride && thisReceiverOwner != null) {
created.populateOverriddenSymbols(thisReceiverOwner)
}
functionCache[function] = created
@@ -573,12 +571,7 @@ class Fir2IrDeclarationStorage(
parent = irParent
}
correspondingPropertySymbol = correspondingProperty.symbol
val isOverride = when (propertyAccessor) {
is FirDefaultPropertyAccessor -> property.isOverride
is FirPropertyAccessorImpl -> propertyAccessor.status.isOverride
else -> false
}
if (!isFakeOverride && isOverride && thisReceiverOwner != null) {
if (!isFakeOverride && thisReceiverOwner != null) {
populateOverriddenSymbols(thisReceiverOwner)
}
}
@@ -608,7 +601,7 @@ class Fir2IrDeclarationStorage(
isFakeOverride = origin == IrDeclarationOrigin.FAKE_OVERRIDE
).also {
it.correspondingPropertySymbol = this@createBackingField.symbol
if (!isFakeOverride && property.isOverride && thisReceiverOwner != null) {
if (!isFakeOverride && thisReceiverOwner != null) {
it.populateOverriddenSymbols(thisReceiverOwner)
}
}