AA: add analyzeWithKtModule API for analyzing without KtElement
This commit is contained in:
committed by
Ilya Kirillov
parent
ef0160c026
commit
7b038860b5
+16
-1
@@ -15,8 +15,9 @@ import com.intellij.openapi.util.Computable
|
||||
import org.jetbrains.annotations.TestOnly
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.KtSymbol
|
||||
import org.jetbrains.kotlin.analysis.api.tokens.KtAlwaysAccessibleLifetimeTokenFactory
|
||||
import org.jetbrains.kotlin.analysis.api.tokens.ReadActionConfinementValidityTokenFactoryFactory
|
||||
import org.jetbrains.kotlin.analysis.api.tokens.KtLifetimeTokenFactory
|
||||
import org.jetbrains.kotlin.analysis.api.tokens.ReadActionConfinementValidityTokenFactoryFactory
|
||||
import org.jetbrains.kotlin.analysis.project.structure.KtModule
|
||||
import org.jetbrains.kotlin.psi.KtElement
|
||||
import org.jetbrains.kotlin.psi.KtFile
|
||||
|
||||
@@ -42,6 +43,9 @@ public abstract class KtAnalysisSessionProvider : Disposable {
|
||||
@InvalidWayOfUsingAnalysisSession
|
||||
public abstract fun getAnalysisSessionBySymbol(contextSymbol: KtSymbol): KtAnalysisSession
|
||||
|
||||
@InvalidWayOfUsingAnalysisSession
|
||||
public abstract fun getAnalysisSessionByModule(ktModule: KtModule, factory: KtLifetimeTokenFactory): KtAnalysisSession
|
||||
|
||||
@InvalidWayOfUsingAnalysisSession
|
||||
public inline fun <R> analyzeWithSymbolAsContext(
|
||||
contextSymbol: KtSymbol,
|
||||
@@ -173,3 +177,14 @@ public inline fun <R> analyseInModalWindow(
|
||||
task.queue()
|
||||
return task.result
|
||||
}
|
||||
|
||||
@OptIn(InvalidWayOfUsingAnalysisSession::class)
|
||||
public inline fun <R> analyzeWithKtModule(
|
||||
ktModule: KtModule,
|
||||
tokenFactory: KtLifetimeTokenFactory,
|
||||
crossinline action: KtAnalysisSession.() -> R
|
||||
): R {
|
||||
checkNotNull(ktModule.project)
|
||||
val sessionProvider = KtAnalysisSessionProvider.getInstance(ktModule.project!!)
|
||||
return sessionProvider.getAnalysisSessionByModule(ktModule, tokenFactory).action()
|
||||
}
|
||||
Reference in New Issue
Block a user