From a72557562ba0679215ea2fac64f602e7cd3ca3dd Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Tue, 17 Aug 2010 20:38:50 +0400 Subject: [PATCH] correct isReferenceTo() for references to files (PY-1514) --- .../src/com/jetbrains/python/psi/impl/PyReferenceImpl.java | 4 ++++ python/testData/findUsages/Imports.py | 3 +++ python/testSrc/com/jetbrains/python/PyFindUsagesTest.java | 5 +++++ 3 files changed, 12 insertions(+) create mode 100644 python/testData/findUsages/Imports.py diff --git a/python/src/com/jetbrains/python/psi/impl/PyReferenceImpl.java b/python/src/com/jetbrains/python/psi/impl/PyReferenceImpl.java index 72b57a8700cf..700835240b37 100644 --- a/python/src/com/jetbrains/python/psi/impl/PyReferenceImpl.java +++ b/python/src/com/jetbrains/python/psi/impl/PyReferenceImpl.java @@ -291,6 +291,10 @@ public class PyReferenceImpl implements PsiReferenceEx, PsiPolyVariantReference } public boolean isReferenceTo(PsiElement element) { + if (element instanceof PsiFileSystemItem) { + // may be import via alias, so don't check if names match, do simple resolve check instead + return resolve() == element; + } if (element instanceof PsiNamedElement) { final String elementName = ((PsiNamedElement)element).getName(); if ((Comparing.equal(myElement.getReferencedName(), elementName) || PyNames.INIT.equals(elementName)) && !haveQualifiers(element)) { diff --git a/python/testData/findUsages/Imports.py b/python/testData/findUsages/Imports.py new file mode 100644 index 000000000000..24f172b01af6 --- /dev/null +++ b/python/testData/findUsages/Imports.py @@ -0,0 +1,3 @@ +import re + +x = re.compile('') diff --git a/python/testSrc/com/jetbrains/python/PyFindUsagesTest.java b/python/testSrc/com/jetbrains/python/PyFindUsagesTest.java index e80f0333962e..9cca0d6bdf03 100644 --- a/python/testSrc/com/jetbrains/python/PyFindUsagesTest.java +++ b/python/testSrc/com/jetbrains/python/PyFindUsagesTest.java @@ -59,6 +59,11 @@ public class PyFindUsagesTest extends PyLightFixtureTestCase { assertUsages(usages); } + public void testImports() { // PY-1514 + final Collection usages = myFixture.testFindUsages("findUsages/Imports.py"); + assertUsages(usages, "import re", "re.compile"); + } + private void assertUsages(Collection usages, String... usageTexts) { assertEquals(usageTexts.length, usages.size()); List sortedUsages = new ArrayList(usages);