mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
fix Unresolved reference inspection in Evaluate expression (PY-14309)
We should pass fake context for element in code fragment in order to resolve it.
This commit is contained in:
@@ -15,6 +15,7 @@
|
||||
*/
|
||||
package com.jetbrains.python.debugger;
|
||||
|
||||
import com.google.common.annotations.VisibleForTesting;
|
||||
import com.intellij.openapi.editor.Document;
|
||||
import com.intellij.openapi.fileEditor.FileDocumentManager;
|
||||
import com.intellij.openapi.fileTypes.FileType;
|
||||
@@ -55,7 +56,8 @@ public class PyDebuggerEditorsProvider extends XDebuggerEditorsProvider {
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private static PsiElement getContextElement(final Project project, XSourcePosition sourcePosition) {
|
||||
@VisibleForTesting
|
||||
public static PsiElement getContextElement(final Project project, XSourcePosition sourcePosition) {
|
||||
if (sourcePosition != null) {
|
||||
final Document document = FileDocumentManager.getInstance().getDocument(sourcePosition.getFile());
|
||||
final PsiFile psiFile = PsiDocumentManager.getInstance(project).getPsiFile(document);
|
||||
@@ -68,7 +70,7 @@ public class PyDebuggerEditorsProvider extends XDebuggerEditorsProvider {
|
||||
if (element != null && !(element instanceof PsiWhiteSpace || element instanceof PsiComment)) {
|
||||
return PyPsiUtils.getStatement(element);
|
||||
}
|
||||
offset = element.getTextRange().getEndOffset() + 1;
|
||||
offset = element.getTextRange().getEndOffset();
|
||||
}
|
||||
while (offset < lineEndOffset);
|
||||
}
|
||||
|
||||
@@ -269,8 +269,8 @@ public class PyReferenceImpl implements PsiReferenceEx, PsiPolyVariantReference
|
||||
uexpr = null;
|
||||
}
|
||||
else if (owner == originalOwner && !scope.isGlobal(referencedName)) {
|
||||
final List<ReadWriteInstruction> instructions = PyDefUseUtil.getLatestDefs(owner, referencedName, myElement, false);
|
||||
final ResolveResultList latest = resolveToLatestDefs(instructions, myElement, referencedName);
|
||||
final List<ReadWriteInstruction> instructions = PyDefUseUtil.getLatestDefs(owner, referencedName, realContext, false);
|
||||
final ResolveResultList latest = resolveToLatestDefs(instructions, realContext, referencedName);
|
||||
if (!latest.isEmpty()) {
|
||||
return latest;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user