FIR IDE/UAST: introduce UAST-specific version of analyse

This commit is contained in:
Jinseong Jeon
2021-06-04 22:37:03 -07:00
committed by teamcityserver
parent 1517fd0ca0
commit 0db510ad8b
2 changed files with 16 additions and 6 deletions
@@ -10,6 +10,7 @@ import com.intellij.openapi.application.ApplicationManager
import com.intellij.openapi.components.service
import com.intellij.openapi.progress.ProgressIndicator
import com.intellij.openapi.progress.Task
import org.jetbrains.kotlin.idea.frontend.api.tokens.AlwaysAccessibleValidityTokenFactory
import org.jetbrains.kotlin.idea.frontend.api.tokens.ReadActionConfinementValidityTokenFactory
import org.jetbrains.kotlin.idea.frontend.api.tokens.ValidityTokenFactory
import org.jetbrains.kotlin.idea.util.application.runReadAction
@@ -92,6 +93,16 @@ inline fun <R> analyseWithCustomToken(
): R =
contextElement.project.service<KtAnalysisSessionProvider>().analyse(contextElement, tokenFactory, action)
/**
* UAST-specific version of [analyse] that executes the given [action] in [KtAnalysisSession] context
*/
@OptIn(InvalidWayOfUsingAnalysisSession::class)
inline fun <R> analyseForUast(
contextElement: KtElement,
action: KtAnalysisSession.() -> R
): R =
analyseWithCustomToken(contextElement, AlwaysAccessibleValidityTokenFactory, action)
@OptIn(InvalidWayOfUsingAnalysisSession::class)
inline fun <R> analyseInDependedAnalysisSession(
originalFile: KtFile,
@@ -137,4 +148,4 @@ inline fun <R> analyseInModalWindow(
}
task.queue()
return task.result
}
}