mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Fixed resolve for nested comprehensions (PY-6316)
This commit is contained in:
@@ -147,9 +147,12 @@ public class PyReferenceImpl implements PsiReferenceEx, PsiPolyVariantReference
|
||||
PsiElement definition = instruction.getElement();
|
||||
NameDefiner definer = null;
|
||||
// TODO: This check may slow down resolving, but it is the current solution to the comprehension scopes problem
|
||||
final PyComprehensionElement defComprh = PsiTreeUtil.getParentOfType(definition, PyComprehensionElement.class);
|
||||
if (defComprh != null && defComprh != PsiTreeUtil.getParentOfType(element, PyComprehensionElement.class)) {
|
||||
continue;
|
||||
final PyComprehensionElement definitionComprehension = PsiTreeUtil.getParentOfType(definition, PyComprehensionElement.class);
|
||||
if (definitionComprehension != null) {
|
||||
final PyComprehensionElement elementComprehension = PsiTreeUtil.getParentOfType(element, PyComprehensionElement.class);
|
||||
if (elementComprehension == null || !PsiTreeUtil.isAncestor(definitionComprehension, elementComprehension, false)) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
if (definition instanceof NameDefiner && !(definition instanceof PsiNamedElement)) {
|
||||
definer = (NameDefiner)definition;
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
def f(xs, ys):
|
||||
return [[(x, y) for y in ys] for x in xs]
|
||||
+5
@@ -97,6 +97,11 @@ public class PyUnresolvedReferencesInspectionTest extends PyTestCase {
|
||||
doTest();
|
||||
}
|
||||
|
||||
// PY-6316
|
||||
public void testNestedComprehensions() {
|
||||
doTest();
|
||||
}
|
||||
|
||||
private void doMultiFileTest() {
|
||||
myFixture.copyFileToProject("inspections/PyUnresolvedReferencesInspection/__init__.py", "PyUnresolvedReferencesInspection/__init__.py");
|
||||
myFixture.copyFileToProject("inspections/PyUnresolvedReferencesInspection/" + getTestName(true) + ".py",
|
||||
|
||||
Reference in New Issue
Block a user