Run inline usages search in debugger under progress indicator (KT-19974)

#KT-19974 Fixed
This commit is contained in:
Nikolay Krasko
2017-09-14 19:12:39 +03:00
parent bbf4c56c06
commit aa442860c2
@@ -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) {