Run inline usages search in debugger under progress indicator (KT-19974)
#KT-19974 Fixed
This commit is contained in:
@@ -17,8 +17,8 @@
|
|||||||
package org.jetbrains.kotlin.idea.debugger
|
package org.jetbrains.kotlin.idea.debugger
|
||||||
|
|
||||||
import com.intellij.debugger.engine.DebugProcess
|
import com.intellij.debugger.engine.DebugProcess
|
||||||
import com.intellij.openapi.application.ModalityState
|
|
||||||
import com.intellij.openapi.application.ex.ApplicationManagerEx
|
import com.intellij.openapi.application.ex.ApplicationManagerEx
|
||||||
|
import com.intellij.openapi.progress.EmptyProgressIndicator
|
||||||
import com.intellij.openapi.progress.ProgressManager
|
import com.intellij.openapi.progress.ProgressManager
|
||||||
import com.intellij.openapi.ui.MessageType
|
import com.intellij.openapi.ui.MessageType
|
||||||
import com.intellij.psi.PsiElement
|
import com.intellij.psi.PsiElement
|
||||||
@@ -27,15 +27,16 @@ import com.intellij.psi.search.searches.ReferencesSearch
|
|||||||
import com.intellij.xdebugger.impl.XDebugSessionImpl
|
import com.intellij.xdebugger.impl.XDebugSessionImpl
|
||||||
import org.jetbrains.kotlin.descriptors.FunctionDescriptor
|
import org.jetbrains.kotlin.descriptors.FunctionDescriptor
|
||||||
import org.jetbrains.kotlin.descriptors.PropertyDescriptor
|
import org.jetbrains.kotlin.descriptors.PropertyDescriptor
|
||||||
import org.jetbrains.kotlin.idea.search.usagesSearch.isImportUsage
|
|
||||||
import org.jetbrains.kotlin.idea.util.ProjectRootsUtil
|
|
||||||
import org.jetbrains.kotlin.idea.util.application.runReadAction
|
|
||||||
import org.jetbrains.kotlin.psi.*
|
|
||||||
import org.jetbrains.kotlin.resolve.BindingContext
|
|
||||||
import org.jetbrains.kotlin.resolve.inline.InlineUtil
|
|
||||||
import org.jetbrains.kotlin.idea.debugger.DebuggerClassNameProvider.Companion.getRelevantElement
|
import org.jetbrains.kotlin.idea.debugger.DebuggerClassNameProvider.Companion.getRelevantElement
|
||||||
import org.jetbrains.kotlin.idea.debugger.evaluate.KotlinDebuggerCaches
|
import org.jetbrains.kotlin.idea.debugger.evaluate.KotlinDebuggerCaches
|
||||||
import org.jetbrains.kotlin.idea.debugger.evaluate.KotlinDebuggerCaches.ComputedClassNames
|
import org.jetbrains.kotlin.idea.debugger.evaluate.KotlinDebuggerCaches.ComputedClassNames
|
||||||
|
import org.jetbrains.kotlin.idea.search.usagesSearch.isImportUsage
|
||||||
|
import org.jetbrains.kotlin.idea.util.ProjectRootsUtil
|
||||||
|
import org.jetbrains.kotlin.idea.util.application.runReadAction
|
||||||
|
import org.jetbrains.kotlin.psi.KtDeclaration
|
||||||
|
import org.jetbrains.kotlin.psi.KtElement
|
||||||
|
import org.jetbrains.kotlin.resolve.BindingContext
|
||||||
|
import org.jetbrains.kotlin.resolve.inline.InlineUtil
|
||||||
|
|
||||||
class InlineCallableUsagesSearcher(
|
class InlineCallableUsagesSearcher(
|
||||||
private val myDebugProcess: DebugProcess,
|
private val myDebugProcess: DebugProcess,
|
||||||
@@ -66,19 +67,15 @@ class InlineCallableUsagesSearcher(
|
|||||||
|
|
||||||
var isSuccess = true
|
var isSuccess = true
|
||||||
val applicationEx = ApplicationManagerEx.getApplicationEx()
|
val applicationEx = ApplicationManagerEx.getApplicationEx()
|
||||||
if (!applicationEx.isUnitTestMode && (!applicationEx.holdsReadLock() || applicationEx.isDispatchThread)) {
|
if (applicationEx.isDispatchThread) {
|
||||||
applicationEx.invokeAndWait(
|
isSuccess = ProgressManager.getInstance().runProcessWithProgressSynchronously(
|
||||||
{
|
task,
|
||||||
isSuccess = ProgressManager.getInstance().runProcessWithProgressSynchronously(
|
"Compute class names for declaration $declarationName",
|
||||||
task,
|
true,
|
||||||
"Compute class names for declaration $declarationName",
|
myDebugProcess.project)
|
||||||
true,
|
|
||||||
myDebugProcess.project)
|
|
||||||
}, ModalityState.NON_MODAL)
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// Pooled thread with read lock. Can't invoke task under UI progress, so call it directly.
|
ProgressManager.getInstance().runProcess(task, EmptyProgressIndicator())
|
||||||
task.run()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!isSuccess) {
|
if (!isSuccess) {
|
||||||
|
|||||||
Reference in New Issue
Block a user