diff --git a/python/src/com/jetbrains/python/psi/impl/references/PyReferenceImpl.java b/python/src/com/jetbrains/python/psi/impl/references/PyReferenceImpl.java index 2523750b5419..b80b2ed18d9c 100644 --- a/python/src/com/jetbrains/python/psi/impl/references/PyReferenceImpl.java +++ b/python/src/com/jetbrains/python/psi/impl/references/PyReferenceImpl.java @@ -218,7 +218,10 @@ public class PyReferenceImpl implements PsiReferenceEx, PsiPolyVariantReference return resolveResult; } - private static boolean isInOwnScopeComprehension(PsiElement uexpr) { + private boolean isInOwnScopeComprehension(PsiElement uexpr) { + if (!myContext.getTypeEvalContext().maySwitchToAST(uexpr)) { + return false; + } PyComprehensionElement comprehensionElement = PsiTreeUtil.getParentOfType(uexpr, PyComprehensionElement.class); return comprehensionElement != null && PyUtil.isOwnScopeComprehension(comprehensionElement); } @@ -368,13 +371,8 @@ public class PyReferenceImpl implements PsiReferenceEx, PsiPolyVariantReference return resolved == referenceOwner && referenceOwner instanceof PyClass && !PyiUtil.isInsideStubAnnotation(myElement); } - private static boolean allInOwnScopeComprehensions(@NotNull Collection elements) { - for (PsiElement element : elements) { - if (!isInOwnScopeComprehension(element)) { - return false; - } - } - return true; + private boolean allInOwnScopeComprehensions(@NotNull Collection elements) { + return StreamEx.of(elements).allMatch(this::isInOwnScopeComprehension); } private static boolean allowsForwardOutgoingReferencesInClass(@NotNull PyQualifiedExpression element) { diff --git a/python/testData/resolve/multiFile/importAliasTargetReference/ImportAliasTargetReference.py b/python/testData/resolve/multiFile/importAliasTargetReference/ImportAliasTargetReference.py new file mode 100644 index 000000000000..90bececc9b62 --- /dev/null +++ b/python/testData/resolve/multiFile/importAliasTargetReference/ImportAliasTargetReference.py @@ -0,0 +1,2 @@ +from lib import foo as bar +# diff --git a/python/testData/resolve/multiFile/importAliasTargetReference/lib.py b/python/testData/resolve/multiFile/importAliasTargetReference/lib.py new file mode 100644 index 000000000000..5571fab06dc7 --- /dev/null +++ b/python/testData/resolve/multiFile/importAliasTargetReference/lib.py @@ -0,0 +1 @@ +foo = [1, 2, 3] diff --git a/python/testSrc/com/jetbrains/python/PyMultiFileResolveTest.java b/python/testSrc/com/jetbrains/python/PyMultiFileResolveTest.java index 106d7da8ec13..102083058c51 100644 --- a/python/testSrc/com/jetbrains/python/PyMultiFileResolveTest.java +++ b/python/testSrc/com/jetbrains/python/PyMultiFileResolveTest.java @@ -533,4 +533,8 @@ public class PyMultiFileResolveTest extends PyMultiFileResolveTestCase { final PyType type = typeEvalContext.getType((PyTypedElement) resolved); assertInstanceOf(type, PyClassType.class); } + + public void testImportAliasTargetReference() { + assertResolvesTo(PyTargetExpression.class, "bar"); + } } \ No newline at end of file