[FIR] Remove some rare used utilities

This commit is contained in:
Dmitriy Novozhilov
2022-12-14 14:32:36 +02:00
committed by Space Team
parent b53c4a6353
commit 7334694fd9
6 changed files with 12 additions and 26 deletions
@@ -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()
@@ -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
@@ -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
@@ -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<Pair<EdgeLabel, PathAwarePropertyInitializationInfo>>
): 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 {
@@ -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()`.
@@ -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<ConeClassLikeType> get() = superTypeRefs.mapNotNull { it.coneTypeSafe() }
@@ -31,12 +23,6 @@ val FirClass.anonymousInitializers: List<FirAnonymousInitializer>
val FirClass.delegateFields: List<FirField>
get() = declarations.filterIsInstance<FirField>().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