FIR IDE/UAST: introduce UAST-specific version of analyse
This commit is contained in:
committed by
teamcityserver
parent
1517fd0ca0
commit
0db510ad8b
+12
-1
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user