Analysis API: Use stub FirDataFlowAnalyzer when getting candidates.
This commit is contained in:
committed by
Ilya Kirillov
parent
3f3873dc50
commit
f1623347d8
+32
-1
@@ -7,9 +7,17 @@ package org.jetbrains.kotlin.analysis.low.level.api.fir.resolver
|
||||
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
||||
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
||||
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
||||
import org.jetbrains.kotlin.fir.resolve.dfa.FirDataFlowAnalyzer
|
||||
import org.jetbrains.kotlin.fir.resolve.dfa.LogicSystem
|
||||
import org.jetbrains.kotlin.fir.resolve.dfa.PersistentFlow
|
||||
import org.jetbrains.kotlin.fir.resolve.dfa.PropertyStability
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.BodyResolveContext
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirAbstractBodyResolveTransformer
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirBodyResolveTransformer
|
||||
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||
import org.jetbrains.kotlin.fir.types.ConeKotlinType
|
||||
|
||||
internal fun createStubBodyResolveComponents(firSession: FirSession): FirAbstractBodyResolveTransformer.BodyResolveTransformerComponents {
|
||||
val scopeSession = ScopeSession()
|
||||
@@ -22,10 +30,33 @@ internal fun createStubBodyResolveComponents(firSession: FirSession): FirAbstrac
|
||||
scopeSession = scopeSession,
|
||||
)
|
||||
|
||||
return FirAbstractBodyResolveTransformer.BodyResolveTransformerComponents(
|
||||
return StubBodyResolveTransformerComponents(
|
||||
firSession,
|
||||
scopeSession,
|
||||
stubBodyResolveTransformer,
|
||||
stubBodyResolveTransformer.context,
|
||||
)
|
||||
}
|
||||
|
||||
private class StubBodyResolveTransformerComponents(
|
||||
session: FirSession,
|
||||
scopeSession: ScopeSession,
|
||||
transformer: FirBodyResolveTransformer,
|
||||
context: BodyResolveContext
|
||||
) : FirAbstractBodyResolveTransformer.BodyResolveTransformerComponents(
|
||||
session,
|
||||
scopeSession,
|
||||
transformer,
|
||||
context,
|
||||
) {
|
||||
override val dataFlowAnalyzer: FirDataFlowAnalyzer<*>
|
||||
get() = object : FirDataFlowAnalyzer<PersistentFlow>(this@StubBodyResolveTransformerComponents, context.dataFlowAnalyzerContext) {
|
||||
override val logicSystem: LogicSystem<PersistentFlow>
|
||||
get() = error("Should not be called")
|
||||
|
||||
override fun getTypeUsingSmartcastInfo(
|
||||
symbol: FirBasedSymbol<*>,
|
||||
expression: FirExpression
|
||||
): Pair<PropertyStability, MutableList<ConeKotlinType>>? = null
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user