mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-01-06 11:50:54 +07:00
PY-17933: Rename refactoring: cannot find reference to attribute defined in another file
Code only checked functions. Attributes were ignored. GitOrigin-RevId: a1792463fa31c55aed469e2e0c60218aceab16cf
This commit is contained in:
committed by
intellij-monorepo-bot
parent
cb415e77f2
commit
9409409a90
@@ -31,6 +31,7 @@ import com.intellij.psi.search.ProjectScope;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.psi.util.QualifiedName;
|
||||
import com.intellij.util.ArrayUtil;
|
||||
import com.intellij.util.ObjectUtils;
|
||||
import com.intellij.util.PlatformIcons;
|
||||
import com.intellij.util.ProcessingContext;
|
||||
import com.jetbrains.python.PyNames;
|
||||
@@ -441,13 +442,13 @@ public class PyQualifiedReference extends PyReferenceImpl {
|
||||
if (resolveContext.getTypeEvalContext().getOrigin() == null) {
|
||||
final PsiFile containingFile = myElement.getContainingFile();
|
||||
if (containingFile instanceof StubBasedPsiElement) {
|
||||
assert ((StubBasedPsiElement)containingFile).getStub() == null : "Stub origin for type eval context in isReferenceTo()";
|
||||
assert ((StubBasedPsiElement<?>)containingFile).getStub() == null : "Stub origin for type eval context in isReferenceTo()";
|
||||
}
|
||||
final TypeEvalContext context = TypeEvalContext.codeAnalysis(containingFile.getProject(), containingFile);
|
||||
resolveContext = resolveContext.withTypeEvalContext(context);
|
||||
}
|
||||
if (element instanceof PyFunction && Comparing.equal(referencedName, ((PyFunction)element).getName()) &&
|
||||
!PyUtil.isInitOrNewMethod(element)) {
|
||||
PyElement pyElement = ObjectUtils.tryCast(element, PyElement.class);
|
||||
if (pyElement != null && Comparing.equal(referencedName, pyElement.getName()) && !PyUtil.isInitOrNewMethod(element)) {
|
||||
final PyExpression qualifier = myElement.getQualifier();
|
||||
if (qualifier != null) {
|
||||
final PyType qualifierType = resolveContext.getTypeEvalContext().getType(qualifier);
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
class Foo:
|
||||
def __init__(self):
|
||||
self.unique_some_identi<caret>fier = 12
|
||||
|
||||
def foo(q):
|
||||
s = q.unique_some_identifier
|
||||
@@ -33,6 +33,10 @@ public class PyFindUsagesTest extends PyTestCase {
|
||||
final Collection<UsageInfo> usages = myFixture.testFindUsages("findUsages/ImplicitlyResolvedUsages.py");
|
||||
assertEquals(1, usages.size());
|
||||
}
|
||||
public void testImplicitlyResolvedFieldUsages() {
|
||||
final Collection<UsageInfo> usages = myFixture.testFindUsages("findUsages/ImplicitlyResolvedFieldUsages.py");
|
||||
assertEquals(2, usages.size());
|
||||
}
|
||||
|
||||
public void testQualifiedVsUnqualifiedUsages() { // PY-939
|
||||
final Collection<UsageInfo> usages = myFixture.testFindUsages("findUsages/QualifiedVsUnqualifiedUsages.py");
|
||||
|
||||
Reference in New Issue
Block a user