FIR: use isReal() and isSynthetic() helper consistently

This commit is contained in:
Tianyu Geng
2021-05-05 15:24:33 -07:00
committed by Dmitriy Novozhilov
parent 2165cc8f0d
commit 931a637bdd
2 changed files with 9 additions and 6 deletions
@@ -16,24 +16,27 @@ import org.jetbrains.kotlin.fir.declarations.*
import org.jetbrains.kotlin.fir.expressions.*
import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference
import org.jetbrains.kotlin.fir.references.FirResolvedNamedReference
import org.jetbrains.kotlin.fir.resolve.*
import org.jetbrains.kotlin.fir.resolve.PersistentImplicitReceiverStack
import org.jetbrains.kotlin.fir.resolve.ResolutionMode
import org.jetbrains.kotlin.fir.resolve.dfa.cfg.*
import org.jetbrains.kotlin.fir.resolve.dfa.contracts.buildContractFir
import org.jetbrains.kotlin.fir.resolve.dfa.contracts.createArgumentsMapping
import org.jetbrains.kotlin.fir.resolve.fullyExpandedType
import org.jetbrains.kotlin.fir.resolve.inference.inferenceComponents
import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutor
import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutorByMap
import org.jetbrains.kotlin.fir.resolve.toSymbol
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirAbstractBodyResolveTransformer
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.resultType
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirTypeParameterSymbol
import org.jetbrains.kotlin.name.CallableId
import org.jetbrains.kotlin.name.StandardClassIds
import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol
import org.jetbrains.kotlin.fir.types.*
import org.jetbrains.kotlin.fir.visitors.transformSingle
import org.jetbrains.kotlin.name.CallableId
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.name.StandardClassIds
import org.jetbrains.kotlin.types.ConstantValueKind
import org.jetbrains.kotlin.utils.addIfNotNull
@@ -441,7 +444,7 @@ abstract class FirDataFlowAnalyzer<FLOW : Flow>(
val operandVariable = variableStorage.getOrCreateVariable(node.previousFlow, operand)
// expression == const -> expression != null
flow.addImplication((expressionVariable eq isEq) implies (operandVariable notEq null))
if (operandVariable is RealVariable) {
if (operandVariable.isReal()) {
flow.addImplication((expressionVariable eq isEq) implies (operandVariable typeEq any))
}
@@ -820,7 +823,7 @@ abstract class FirDataFlowAnalyzer<FLOW : Flow>(
?: return@let
val variable = variableStorage.getOrCreateVariable(flow, receiver)
if (variable is RealVariable) {
if (variable.isReal()) {
if (shouldFork) {
flow = logicSystem.forkFlow(flow)
}
@@ -138,7 +138,7 @@ class VariableStorage(private val session: FirSession) {
}
fun removeSyntheticVariable(variable: DataFlowVariable) {
if (variable !is SyntheticVariable) return
if (!variable.isSynthetic()) return
syntheticVariables.remove(variable.fir)
}