FIR: Rework checking dispatch receivers applicability

Using `ownerLookupTag` might be wrong in case of private constuctors
 of inner classes: their owner is an Inner class, but expected
 dispach receiver is Outer
This commit is contained in:
Denis.Zharkov
2022-05-30 19:05:47 +03:00
committed by teamcity
parent 67e6687e89
commit 461d91a10e
8 changed files with 72 additions and 21 deletions
@@ -5,10 +5,8 @@
package org.jetbrains.kotlin.fir
import org.jetbrains.kotlin.descriptors.Modality
import org.jetbrains.kotlin.fir.declarations.*
import org.jetbrains.kotlin.fir.declarations.utils.isLocal
import org.jetbrains.kotlin.fir.declarations.utils.modality
import org.jetbrains.kotlin.fir.symbols.ConeClassLikeLookupTag
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
import org.jetbrains.kotlin.fir.types.ConeClassLikeType
@@ -127,3 +125,9 @@ private object CorrespondingProperty : FirDeclarationDataKey()
* The corresponding [FirProperty] if the current value parameter is a `val` or `var` declared inside the primary constructor.
*/
var FirValueParameter.correspondingProperty: FirProperty? by FirDeclarationDataRegistry.data(CorrespondingProperty)
val FirCallableDeclaration.propertyIfAccessor: FirCallableDeclaration
get() = (this as? FirPropertyAccessor)?.propertySymbol?.fir ?: this
val FirCallableDeclaration.propertyIfBackingField: FirCallableDeclaration
get() = (this as? FirBackingField)?.propertySymbol?.fir ?: this