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:
Elizaveta Shashkova
2015-02-18 20:32:32 +03:00
parent 0ed3a9ef82
commit cdbf2521b6
2 changed files with 6 additions and 4 deletions
@@ -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;
}