AA: add analyzeWithKtModule API for analyzing without KtElement
This commit is contained in:
committed by
Ilya Kirillov
parent
ef0160c026
commit
7b038860b5
+11
@@ -16,6 +16,7 @@ import org.jetbrains.kotlin.analysis.api.InvalidWayOfUsingAnalysisSession
|
||||
import org.jetbrains.kotlin.analysis.api.KtAnalysisSession
|
||||
import org.jetbrains.kotlin.analysis.api.KtAnalysisSessionProvider
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.KtSymbol
|
||||
import org.jetbrains.kotlin.analysis.project.structure.KtModule
|
||||
import org.jetbrains.kotlin.analysis.api.tokens.KtLifetimeToken
|
||||
import org.jetbrains.kotlin.analysis.api.tokens.KtLifetimeTokenFactory
|
||||
import org.jetbrains.kotlin.psi.KtElement
|
||||
@@ -29,6 +30,8 @@ abstract class CachingKtAnalysisSessionProvider<State : Any>(private val project
|
||||
protected abstract fun getFirResolveSession(contextElement: KtElement): State
|
||||
protected abstract fun getFirResolveSession(contextSymbol: KtSymbol): State
|
||||
|
||||
protected abstract fun getFirResolveSession(contextModule: KtModule): State
|
||||
|
||||
protected abstract fun createAnalysisSession(
|
||||
firResolveSession: State,
|
||||
token: KtLifetimeToken,
|
||||
@@ -43,6 +46,14 @@ abstract class CachingKtAnalysisSessionProvider<State : Any>(private val project
|
||||
}
|
||||
}
|
||||
|
||||
final override fun getAnalysisSessionByModule(ktModule: KtModule, factory: KtLifetimeTokenFactory): KtAnalysisSession {
|
||||
val firResolveSession = getFirResolveSession(ktModule)
|
||||
return cache.getAnalysisSession(firResolveSession to factory.identifier) {
|
||||
val validityToken = factory.create(project)
|
||||
createAnalysisSession(firResolveSession, validityToken)
|
||||
}
|
||||
}
|
||||
|
||||
final override fun getAnalysisSessionBySymbol(contextSymbol: KtSymbol): KtAnalysisSession {
|
||||
val firResolveSession = getFirResolveSession(contextSymbol)
|
||||
val token = contextSymbol.token
|
||||
|
||||
Reference in New Issue
Block a user