FIR IDE: use correspondingProperty in ref shortener
This commit is contained in:
committed by
Roman Golyshev
parent
9b3add0130
commit
7fb82232cd
+5
-18
@@ -17,7 +17,10 @@ import org.jetbrains.kotlin.analysis.api.fir.utils.computeImportableName
|
|||||||
import org.jetbrains.kotlin.analysis.api.symbols.KtCallableSymbol
|
import org.jetbrains.kotlin.analysis.api.symbols.KtCallableSymbol
|
||||||
import org.jetbrains.kotlin.analysis.api.symbols.KtClassLikeSymbol
|
import org.jetbrains.kotlin.analysis.api.symbols.KtClassLikeSymbol
|
||||||
import org.jetbrains.kotlin.analysis.api.tokens.ValidityToken
|
import org.jetbrains.kotlin.analysis.api.tokens.ValidityToken
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.*
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.FirModuleResolveState
|
||||||
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LowLevelFirApiFacadeForResolveOnAir
|
||||||
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.getOrBuildFir
|
||||||
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.getOrBuildFirOfType
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.element.builder.FirTowerContextProvider
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.element.builder.FirTowerContextProvider
|
||||||
import org.jetbrains.kotlin.descriptors.ClassKind
|
import org.jetbrains.kotlin.descriptors.ClassKind
|
||||||
import org.jetbrains.kotlin.fir.*
|
import org.jetbrains.kotlin.fir.*
|
||||||
@@ -284,25 +287,9 @@ private class ElementsToShortenCollector(
|
|||||||
|
|
||||||
override fun visitValueParameter(valueParameter: FirValueParameter) {
|
override fun visitValueParameter(valueParameter: FirValueParameter) {
|
||||||
super.visitValueParameter(valueParameter)
|
super.visitValueParameter(valueParameter)
|
||||||
valueParameter.getCorrespondingProperty()?.let { visitProperty(it) }
|
valueParameter.correspondingProperty?.let { visitProperty(it) }
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun FirValueParameter.getCorrespondingProperty(): FirProperty? {
|
|
||||||
val parameter = psi as? KtParameter
|
|
||||||
val containingFunction = parameter?.getContainingFunction()
|
|
||||||
if (containingFunction is KtPrimaryConstructor && parameter.valOrVarKeyword != null) {
|
|
||||||
// also check the FirProperty corresponding to this parameter in the primary constructor
|
|
||||||
return (containingFunction.parent as? KtClass)
|
|
||||||
?.getOrBuildFirSafe<FirClass>(firResolveState)
|
|
||||||
?.declarations
|
|
||||||
?.firstOrNull { it.source?.kind == FirFakeSourceElementKind.PropertyFromParameter && it.psi == parameter } as FirProperty
|
|
||||||
}
|
|
||||||
return null
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun KtParameter.getContainingFunction(): KtFunction? = (parent as? KtParameterList)?.parent as? KtFunction
|
|
||||||
|
|
||||||
|
|
||||||
override fun visitProperty(property: FirProperty) {
|
override fun visitProperty(property: FirProperty) {
|
||||||
if (visitedProperty.add(property)) {
|
if (visitedProperty.add(property)) {
|
||||||
super.visitProperty(property)
|
super.visitProperty(property)
|
||||||
|
|||||||
Reference in New Issue
Block a user