Use new utility method for getting lexical scope
It's expected that for call expressing some nearest parent will have lexical scope written in binding context. Under this circumstances it's refactoring.
This commit is contained in:
@@ -25,7 +25,6 @@ import com.intellij.openapi.project.DumbService
|
||||
import com.intellij.openapi.roots.libraries.LibraryUtil
|
||||
import com.intellij.openapi.ui.MessageType
|
||||
import com.intellij.psi.PsiElement
|
||||
import com.intellij.psi.PsiFile
|
||||
import com.intellij.psi.search.GlobalSearchScope
|
||||
import com.intellij.psi.search.searches.ReferencesSearch
|
||||
import com.intellij.psi.util.PsiTreeUtil
|
||||
@@ -47,16 +46,15 @@ import org.jetbrains.kotlin.idea.debugger.evaluate.KotlinDebuggerCaches.Computed
|
||||
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.idea.util.getResolutionScope
|
||||
import org.jetbrains.kotlin.load.java.JvmAbi
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.psi.*
|
||||
import org.jetbrains.kotlin.psi.psiUtil.parents
|
||||
import org.jetbrains.kotlin.psi.psiUtil.parentsWithSelf
|
||||
import org.jetbrains.kotlin.resolve.BindingContext
|
||||
import org.jetbrains.kotlin.resolve.DescriptorToSourceUtils
|
||||
import org.jetbrains.kotlin.resolve.calls.callUtil.getResolvedCall
|
||||
import org.jetbrains.kotlin.resolve.inline.InlineUtil
|
||||
import org.jetbrains.kotlin.resolve.scopes.LexicalScope
|
||||
import org.jetbrains.kotlin.resolve.scopes.LexicalScopeKind
|
||||
import org.jetbrains.kotlin.resolve.source.getPsi
|
||||
import org.jetbrains.kotlin.utils.addToStdlib.firstIsInstanceOrNull
|
||||
@@ -222,7 +220,7 @@ class DebuggerClassNameProvider(val myDebugProcess: DebugProcess, val scopes: Li
|
||||
}?.first
|
||||
} ?: return emptyList()
|
||||
|
||||
val lexicalScope = runReadAction { inlineCall.getExpressionResolutionScope(context) } ?: return emptyList()
|
||||
val lexicalScope = runReadAction { inlineCall.getResolutionScope(context) } ?: return emptyList()
|
||||
val baseClassName = classNamesForPosition(inlineCall, false).firstOrNull() ?: return emptyList()
|
||||
|
||||
val resolvedCall = runReadAction { inlineCall.getResolvedCall(context) } ?: return emptyList()
|
||||
@@ -431,11 +429,4 @@ private fun String.substringIndex(): String {
|
||||
return substringBeforeLast("$") + "$"
|
||||
}
|
||||
return this
|
||||
}
|
||||
|
||||
private fun KtCallExpression.getExpressionResolutionScope(bindingContext: BindingContext): LexicalScope? {
|
||||
return parentsWithSelf
|
||||
.takeWhile { it !is KtClassBody && it !is KtBlockExpression && it !is PsiFile }
|
||||
.map { if (it is KtElement) bindingContext[BindingContext.LEXICAL_SCOPE, it] else null }
|
||||
.firstOrNull { it != null }
|
||||
}
|
||||
Reference in New Issue
Block a user