mirror of
https://gitflic.ru/project/openide/openide.git
synced 2025-12-16 22:51:17 +07:00
PY-27004: Use multiResolve to check if Python refs match
This commit is contained in:
committed by
Andrey Vlasovskikh
parent
a9248797ae
commit
2cee9b66a0
@@ -545,17 +545,22 @@ public class PyReferenceImpl implements PsiReferenceEx, PsiPolyVariantReference
|
||||
}
|
||||
}
|
||||
|
||||
final PsiElement resolveResult = resolve();
|
||||
if (resolveResult == element) {
|
||||
return true;
|
||||
}
|
||||
PsiElement[] resolveResults =
|
||||
StreamEx.of(multiResolve(false)).filter(result -> !(result instanceof ImplicitResolveResult)).map(result -> result.getElement())
|
||||
.nonNull().toArray(PsiElement[]::new);
|
||||
|
||||
if (!haveQualifiers(element) && ourScopeOwner != null && theirScopeOwner != null) {
|
||||
if (resolvesToSameGlobal(element, elementName, ourScopeOwner, theirScopeOwner, resolveResult)) return true;
|
||||
}
|
||||
for (PsiElement resolveResult : resolveResults) {
|
||||
if (resolveResult == element) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (resolvesToWrapper(element, resolveResult)) {
|
||||
return true;
|
||||
if (!haveQualifiers(element) && ourScopeOwner != null && theirScopeOwner != null) {
|
||||
if (resolvesToSameGlobal(element, elementName, ourScopeOwner, theirScopeOwner, resolveResult)) return true;
|
||||
}
|
||||
|
||||
if (resolvesToWrapper(element, resolveResult)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (element instanceof PyExpression) {
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
from ConstImportedFromAnotherFileDefiner import SOME_CONST
|
||||
|
||||
print ( SOME_CONST)
|
||||
@@ -0,0 +1,6 @@
|
||||
SOME_CONST = False
|
||||
|
||||
if some_cond:
|
||||
SOME_CONST = True
|
||||
|
||||
print (<caret>SOME_CONST)
|
||||
@@ -190,6 +190,13 @@ public class PyFindUsagesTest extends PyTestCase {
|
||||
assertEmpty(myFixture.testFindUsages("findUsages/FunctionUsagesWithSameNameDecorator.py"));
|
||||
}
|
||||
|
||||
// PY-27004
|
||||
public void testConstImportedFromAnotherFile() {
|
||||
assertEquals(5,
|
||||
myFixture.testFindUsages("findUsages/ConstImportedFromAnotherFileDefiner.py", "findUsages/ConstImportedFromAnotherFile.py")
|
||||
.size());
|
||||
}
|
||||
|
||||
private Collection<UsageInfo> findMultiFileUsages(String filename) {
|
||||
final String testName = getTestName(false);
|
||||
myFixture.copyDirectoryToProject("findUsages/" + testName, "");
|
||||
|
||||
Reference in New Issue
Block a user