@@ -25,6 +25,7 @@ import com.intellij.openapi.project.DumbService
25
25
import com.intellij.openapi.roots.libraries.LibraryUtil
26
26
import com.intellij.openapi.ui.MessageType
27
27
import com.intellij.psi.PsiElement
28
+ import com.intellij.psi.PsiFile
28
29
import com.intellij.psi.search.GlobalSearchScope
29
30
import com.intellij.psi.search.searches.ReferencesSearch
30
31
import com.intellij.psi.util.PsiTreeUtil
@@ -49,12 +50,13 @@ import org.jetbrains.kotlin.idea.util.application.runReadAction
49
50
import org.jetbrains.kotlin.load.java.JvmAbi
50
51
import org.jetbrains.kotlin.name.Name
51
52
import org.jetbrains.kotlin.psi.*
52
- import org.jetbrains.kotlin.psi.psiUtil.getStrictParentOfType
53
53
import org.jetbrains.kotlin.psi.psiUtil.parents
54
+ import org.jetbrains.kotlin.psi.psiUtil.parentsWithSelf
54
55
import org.jetbrains.kotlin.resolve.BindingContext
55
56
import org.jetbrains.kotlin.resolve.DescriptorToSourceUtils
56
57
import org.jetbrains.kotlin.resolve.calls.callUtil.getResolvedCall
57
58
import org.jetbrains.kotlin.resolve.inline.InlineUtil
59
+ import org.jetbrains.kotlin.resolve.scopes.LexicalScope
58
60
import org.jetbrains.kotlin.resolve.source.getPsi
59
61
import org.jetbrains.kotlin.utils.addToStdlib.firstIsInstanceOrNull
60
62
@@ -219,7 +221,7 @@ class DebuggerClassNameProvider(val myDebugProcess: DebugProcess, val scopes: Li
219
221
}?.first
220
222
} ? : return emptyList()
221
223
222
- val lexicalScope = context[ BindingContext . LEXICAL_SCOPE , inlineCall] ? : return emptyList()
224
+ val lexicalScope = runReadAction { inlineCall.getExpressionResolutionScope(context) } ? : return emptyList()
223
225
val baseClassName = classNamesForPosition(inlineCall, false ).firstOrNull() ? : return emptyList()
224
226
225
227
val resolvedCall = runReadAction { inlineCall.getResolvedCall(context) } ? : return emptyList()
@@ -424,4 +426,11 @@ private fun String.substringIndex(): String {
424
426
return substringBeforeLast(" $" ) + " $"
425
427
}
426
428
return this
429
+ }
430
+
431
+ private fun KtCallExpression.getExpressionResolutionScope (bindingContext : BindingContext ): LexicalScope ? {
432
+ return parentsWithSelf
433
+ .takeWhile { it !is KtClassBody && it !is KtBlockExpression && it !is PsiFile }
434
+ .map { if (it is KtElement ) bindingContext[BindingContext .LEXICAL_SCOPE , it] else null }
435
+ .firstOrNull { it != null }
427
436
}
0 commit comments