diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/evaluate/FirCompileTimeConstantEvaluator.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/evaluate/FirCompileTimeConstantEvaluator.kt index 21da341bcb2..7cc200c1f0f 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/evaluate/FirCompileTimeConstantEvaluator.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/evaluate/FirCompileTimeConstantEvaluator.kt @@ -15,13 +15,13 @@ import org.jetbrains.kotlin.fir.declarations.FirResolvePhase import org.jetbrains.kotlin.fir.declarations.FirSimpleFunction import org.jetbrains.kotlin.fir.declarations.utils.isConst import org.jetbrains.kotlin.fir.declarations.utils.isFinal -import org.jetbrains.kotlin.fir.declarations.utils.referredVariableSymbol import org.jetbrains.kotlin.fir.expressions.* import org.jetbrains.kotlin.fir.expressions.builder.buildConstExpression import org.jetbrains.kotlin.fir.psi import org.jetbrains.kotlin.fir.references.FirNamedReference import org.jetbrains.kotlin.fir.references.FirResolvedNamedReference import org.jetbrains.kotlin.fir.references.toResolvedPropertySymbol +import org.jetbrains.kotlin.fir.references.toResolvedVariableSymbol import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirFieldSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol @@ -48,7 +48,7 @@ internal object FirCompileTimeConstantEvaluator { ): FirConstExpression<*>? = when (fir) { is FirPropertyAccessExpression -> { - when (val referredVariable = fir.referredVariableSymbol) { + when (val referredVariable = fir.calleeReference.toResolvedVariableSymbol()) { is FirPropertySymbol -> { if (referredVariable.callableId.isStringLength) { evaluate(fir.explicitReceiver, mode)?.evaluateStringLength() diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/cfa/FirPropertyInitializationAnalyzer.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/cfa/FirPropertyInitializationAnalyzer.kt index f44e0b1fccc..9802f2efa7c 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/cfa/FirPropertyInitializationAnalyzer.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/cfa/FirPropertyInitializationAnalyzer.kt @@ -15,10 +15,10 @@ import org.jetbrains.kotlin.fir.analysis.cfa.util.traverse import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors import org.jetbrains.kotlin.fir.declarations.utils.isLateInit -import org.jetbrains.kotlin.fir.declarations.utils.referredPropertySymbol import org.jetbrains.kotlin.fir.expressions.FirQualifiedAccess import org.jetbrains.kotlin.fir.expressions.FirVariableAssignment import org.jetbrains.kotlin.fir.isCatchParameter +import org.jetbrains.kotlin.fir.references.toResolvedPropertySymbol import org.jetbrains.kotlin.fir.resolve.dfa.cfg.* import org.jetbrains.kotlin.fir.symbols.SymbolInternals import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol @@ -61,7 +61,7 @@ object FirPropertyInitializationAnalyzer : AbstractFirPropertyInitializationChec } private val CFGNode<*>.propertySymbol: FirPropertySymbol? - get() = (fir as? FirQualifiedAccess)?.referredPropertySymbol + get() = (fir as? FirQualifiedAccess)?.calleeReference?.toResolvedPropertySymbol() override fun visitVariableAssignmentNode(node: VariableAssignmentNode) { val symbol = node.propertySymbol ?: return diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/cfa/util/LocalPropertyAndCapturedWriteCollector.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/cfa/util/LocalPropertyAndCapturedWriteCollector.kt index 22ce3a110ca..d1bc9f3d6dc 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/cfa/util/LocalPropertyAndCapturedWriteCollector.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/cfa/util/LocalPropertyAndCapturedWriteCollector.kt @@ -8,8 +8,8 @@ package org.jetbrains.kotlin.fir.analysis.cfa.util import org.jetbrains.kotlin.contracts.description.isInPlace import org.jetbrains.kotlin.fir.declarations.FirAnonymousFunction import org.jetbrains.kotlin.fir.declarations.FirFunction -import org.jetbrains.kotlin.fir.declarations.utils.referredPropertySymbol import org.jetbrains.kotlin.fir.expressions.FirVariableAssignment +import org.jetbrains.kotlin.fir.references.toResolvedPropertySymbol import org.jetbrains.kotlin.fir.resolve.dfa.cfg.* import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol import org.jetbrains.kotlin.fir.symbols.impl.FirSyntheticPropertySymbol @@ -56,7 +56,7 @@ class LocalPropertyAndCapturedWriteCollector private constructor() : ControlFlow } override fun visitVariableAssignmentNode(node: VariableAssignmentNode) { - val symbol = node.fir.referredPropertySymbol ?: return + val symbol = node.fir.calleeReference.toResolvedPropertySymbol() ?: return if (symbol is FirSyntheticPropertySymbol) { symbols[symbol] = true return diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/cfa/util/PropertyInitializationInfoCollector.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/cfa/util/PropertyInitializationInfoCollector.kt index 8593d1b157a..a289c41842f 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/cfa/util/PropertyInitializationInfoCollector.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/cfa/util/PropertyInitializationInfoCollector.kt @@ -8,8 +8,8 @@ package org.jetbrains.kotlin.fir.analysis.cfa.util import kotlinx.collections.immutable.PersistentMap import kotlinx.collections.immutable.persistentMapOf import org.jetbrains.kotlin.contracts.description.EventOccurrencesRange -import org.jetbrains.kotlin.fir.declarations.utils.referredPropertySymbol import org.jetbrains.kotlin.fir.expressions.FirStatement +import org.jetbrains.kotlin.fir.references.toResolvedPropertySymbol import org.jetbrains.kotlin.fir.resolve.dfa.cfg.* import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol @@ -25,7 +25,7 @@ class PropertyInitializationInfoCollector( data: Collection> ): PathAwarePropertyInitializationInfo { val dataForNode = visitNode(node, data) - val symbol = node.fir.referredPropertySymbol ?: return dataForNode + val symbol = node.fir.calleeReference.toResolvedPropertySymbol() ?: return dataForNode return if (symbol !in localProperties) { dataForNode } else { diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/dfa/FirLocalVariableAssignmentAnalyzer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/dfa/FirLocalVariableAssignmentAnalyzer.kt index 54c744585f3..1d4c884a7b1 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/dfa/FirLocalVariableAssignmentAnalyzer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/dfa/FirLocalVariableAssignmentAnalyzer.kt @@ -8,10 +8,10 @@ package org.jetbrains.kotlin.fir.resolve.dfa import org.jetbrains.kotlin.contracts.description.isInPlace import org.jetbrains.kotlin.fir.FirElement import org.jetbrains.kotlin.fir.declarations.* -import org.jetbrains.kotlin.fir.declarations.utils.referredPropertySymbol import org.jetbrains.kotlin.fir.expressions.* import org.jetbrains.kotlin.fir.references.FirNamedReference import org.jetbrains.kotlin.fir.references.FirReference +import org.jetbrains.kotlin.fir.references.toResolvedPropertySymbol import org.jetbrains.kotlin.fir.symbols.impl.FirFunctionSymbol import org.jetbrains.kotlin.fir.visitors.FirVisitor import org.jetbrains.kotlin.name.Name @@ -55,7 +55,7 @@ internal class FirLocalVariableAssignmentAnalyzer { if (assignedLocalVariablesByFunction == null) return false val realFir = fir.unwrapElement() as? FirQualifiedAccessExpression ?: return false - val property = realFir.referredPropertySymbol?.fir ?: return false + val property = realFir.calleeReference.toResolvedPropertySymbol()?.fir ?: return false // Have data => have a root function => functionScopes is not empty. return property in functionScopes.top().second || postponedLambdas.all().any { lambdas -> // Control-flow-postponed lambdas' assignments should be in `functionScopes.top()`. diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/utils/FirDeclarationUtil.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/utils/FirDeclarationUtil.kt index 5f60635816a..8d8f6a039d3 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/utils/FirDeclarationUtil.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/utils/FirDeclarationUtil.kt @@ -6,22 +6,14 @@ package org.jetbrains.kotlin.fir.declarations.utils import org.jetbrains.kotlin.fir.declarations.* -import org.jetbrains.kotlin.fir.expressions.FirQualifiedAccess -import org.jetbrains.kotlin.fir.references.toResolvedVariableSymbol -import org.jetbrains.kotlin.fir.symbols.impl.* import org.jetbrains.kotlin.fir.types.ConeClassLikeType import org.jetbrains.kotlin.fir.types.coneTypeSafe import org.jetbrains.kotlin.name.ClassId val FirTypeAlias.expandedConeType: ConeClassLikeType? get() = expandedTypeRef.coneTypeSafe() -val FirClassLikeDeclaration.classId - get() = when (this) { - is FirClass -> symbol.classId - is FirTypeAlias -> symbol.classId - } - -val FirClass.classId: ClassId get() = symbol.classId +val FirClassLikeDeclaration.classId: ClassId + get() = symbol.classId val FirClass.superConeTypes: List get() = superTypeRefs.mapNotNull { it.coneTypeSafe() } @@ -31,12 +23,6 @@ val FirClass.anonymousInitializers: List val FirClass.delegateFields: List get() = declarations.filterIsInstance().filter { it.isSynthetic } -val FirQualifiedAccess.referredVariableSymbol: FirVariableSymbol<*>? - get() = calleeReference.toResolvedVariableSymbol() - -val FirQualifiedAccess.referredPropertySymbol: FirPropertySymbol? - get() = referredVariableSymbol as? FirPropertySymbol - inline val FirDeclaration.isJava: Boolean get() = origin is FirDeclarationOrigin.Java inline val FirDeclaration.isJavaSource: Boolean