Analysis API: recreate analysis session when not found by resolve state

This commit is contained in:
Ilya Kirillov
2021-09-23 10:30:40 +02:00
parent 0915dac1f9
commit d63c136854
7 changed files with 15 additions and 13 deletions
@@ -33,7 +33,6 @@ abstract class CachingKtAnalysisSessionProvider<State : Any>(private val project
protected abstract fun createAnalysisSession(
resolveState: State,
validityToken: ValidityToken,
contextElement: KtElement
): KtAnalysisSession
@InvalidWayOfUsingAnalysisSession
@@ -41,7 +40,7 @@ abstract class CachingKtAnalysisSessionProvider<State : Any>(private val project
val resolveState = getResolveState(contextElement)
return cache.getAnalysisSession(resolveState to factory.identifier) {
val validityToken = factory.create(project)
createAnalysisSession(resolveState, validityToken, contextElement)
createAnalysisSession(resolveState, validityToken)
}
}
@@ -49,7 +48,7 @@ abstract class CachingKtAnalysisSessionProvider<State : Any>(private val project
val resolveState = getResolveState(contextSymbol)
val token = contextSymbol.token
return getCachedAnalysisSession(resolveState, token)
?: error("analysis session was not found for ${contextSymbol::class}, symbol.isValid=${contextSymbol.isValid()}")
?: createAnalysisSession(resolveState, contextSymbol.token)
}
private fun getCachedAnalysisSession(resolveState: State, token: ValidityToken): KtAnalysisSession? {