mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
WEB-74742 TypeScript: run isProjectContext check in read action.
(cherry picked from commit 753194566a4febfcb3f03cfb2bb6b3fb684c1a3d) IJ-CR-193044 GitOrigin-RevId: 09e57cdeeeb5ec5770f46d5b7ceb6d453cab93f1
This commit is contained in:
committed by
intellij-monorepo-bot
parent
b5aa6a9dee
commit
9481cefbd9
@@ -11,6 +11,7 @@ import com.intellij.polySymbols.context.impl.PolyContextImpl
|
||||
import com.intellij.polySymbols.context.impl.PolyContextProviderExtensionCollector
|
||||
import com.intellij.polySymbols.context.impl.findPolyContext
|
||||
import com.intellij.psi.PsiElement
|
||||
import com.intellij.util.concurrency.annotations.RequiresReadLock
|
||||
import org.jetbrains.annotations.TestOnly
|
||||
|
||||
interface PolyContext {
|
||||
@@ -41,10 +42,12 @@ interface PolyContext {
|
||||
val PKG_MANAGER_SYMFONY_BUNDLES: String = "symfony-bundles"
|
||||
|
||||
@JvmStatic
|
||||
@RequiresReadLock
|
||||
fun get(kind: PolyContextKind, location: VirtualFile, project: Project): PolyContextName? =
|
||||
findPolyContext(kind, location, project)
|
||||
|
||||
@JvmStatic
|
||||
@RequiresReadLock
|
||||
fun get(kind: PolyContextKind, location: PsiElement): PolyContextName? =
|
||||
findPolyContext(kind, location)
|
||||
|
||||
|
||||
@@ -48,6 +48,7 @@ import com.intellij.psi.PsiFile
|
||||
import com.intellij.psi.util.CachedValue
|
||||
import com.intellij.psi.util.CachedValueProvider
|
||||
import com.intellij.psi.util.CachedValuesManager
|
||||
import com.intellij.util.concurrency.ThreadingAssertions
|
||||
import com.intellij.util.concurrency.annotations.RequiresReadLock
|
||||
import com.intellij.util.containers.ContainerUtil
|
||||
import com.intellij.util.lazyUnsafe
|
||||
@@ -90,6 +91,7 @@ private fun findPolyContext(kind: PolyContextKind, locationInfo: LocationInfo):
|
||||
?: withContextChangeCheck(kind, locationInfo)
|
||||
|
||||
private fun <T> forPsiLocation(location: PsiElement, action: (LocationInfo) -> T): T? {
|
||||
ThreadingAssertions.assertReadAccess()
|
||||
if (!location.isValid) return null
|
||||
val project = location.project
|
||||
val psiFile = location.takeIf { it !is PsiDirectory }
|
||||
@@ -111,6 +113,7 @@ private fun <T> forVfsLocation(
|
||||
psiFile: PsiFile? = null,
|
||||
action: (LocationInfo) -> T,
|
||||
): T? {
|
||||
ThreadingAssertions.assertReadAccess()
|
||||
ProgressManager.checkCanceled()
|
||||
if (project.isDisposed) return null
|
||||
val virtualFile = findOriginalFile(location)?.takeIf { it.isInLocalFileSystem }
|
||||
|
||||
Reference in New Issue
Block a user