mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-18 09:34:34 +07:00
resolve target expression to self if trying to resolve it got a result in another file (e.g. builtins) (PY-4256)
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
package com.jetbrains.python.psi.impl;
|
||||
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiElementResolveResult;
|
||||
import com.intellij.psi.ResolveResult;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
@@ -21,7 +22,15 @@ public class PyTargetReference extends PyReferenceImpl {
|
||||
@Override
|
||||
public ResolveResult[] multiResolve(boolean incompleteCode) {
|
||||
final ResolveResult[] results = super.multiResolve(incompleteCode);
|
||||
if (results.length > 0) {
|
||||
boolean resolvedToAnotherFile = false;
|
||||
for (ResolveResult result : results) {
|
||||
final PsiElement element = result.getElement();
|
||||
if (element != null && element.getContainingFile() != myElement.getContainingFile()) {
|
||||
resolvedToAnotherFile = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (results.length > 0 && !resolvedToAnotherFile) {
|
||||
return results;
|
||||
}
|
||||
// resolve to self if no other target found
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
str = "foo"
|
||||
#<ref>
|
||||
@@ -413,4 +413,8 @@ public class PyResolveTest extends PyResolveTestCase {
|
||||
public void testSuperclassResolveScope() { // PY-3554
|
||||
assertResolvesTo(PyClass.class, "date", "datetime.py");
|
||||
}
|
||||
|
||||
public void testDontResolveTargetToBuiltins() { // PY-4256
|
||||
assertResolvesTo(PyTargetExpression.class, "str");
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user