correct isReferenceTo() for references to files (PY-1514)

This commit is contained in:
Dmitry Jemerov
2010-08-17 21:35:51 +04:00
parent da0aadddc1
commit a72557562b
3 changed files with 12 additions and 0 deletions
@@ -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)) {
+3
View File
@@ -0,0 +1,3 @@
import r<caret>e
x = re.compile('')
@@ -59,6 +59,11 @@ public class PyFindUsagesTest extends PyLightFixtureTestCase {
assertUsages(usages);
}
public void testImports() { // PY-1514
final Collection<UsageInfo> usages = myFixture.testFindUsages("findUsages/Imports.py");
assertUsages(usages, "import <caret>re", "<caret>re.compile");
}
private void assertUsages(Collection<UsageInfo> usages, String... usageTexts) {
assertEquals(usageTexts.length, usages.size());
List<UsageInfo> sortedUsages = new ArrayList<UsageInfo>(usages);