mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-01-05 01:50:56 +07:00
comprehension element defines a separate scope (PY-1618)
This commit is contained in:
@@ -299,8 +299,8 @@ public class PyReferenceImpl implements PsiReferenceEx, PsiPolyVariantReference
|
||||
final String elementName = ((PsiNamedElement)element).getName();
|
||||
if ((Comparing.equal(myElement.getReferencedName(), elementName) || PyNames.INIT.equals(elementName)) && !haveQualifiers(element)) {
|
||||
if (element instanceof PyParameter || element instanceof PyTargetExpression) {
|
||||
PsiElement ourContainer = PsiTreeUtil.getParentOfType(getElement(), PsiNamedElement.class, PyLambdaExpression.class);
|
||||
PsiElement theirContainer = PsiTreeUtil.getParentOfType(element, PsiNamedElement.class, PyLambdaExpression.class);
|
||||
PsiElement ourContainer = PsiTreeUtil.getParentOfType(getElement(), PsiNamedElement.class, PyLambdaExpression.class, PyComprehensionElement.class);
|
||||
PsiElement theirContainer = PsiTreeUtil.getParentOfType(element, PsiNamedElement.class, PyLambdaExpression.class, PyComprehensionElement.class);
|
||||
if (ourContainer != null && ourContainer == theirContainer) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
parameter_lists_copy = [m for m in parameter_lists]
|
||||
for <caret>m in parameter_lists_copy:
|
||||
if param_index >= len(m.GetParameters()):
|
||||
parameter_lists.remove(m)
|
||||
@@ -0,0 +1,3 @@
|
||||
foo = 2
|
||||
elements = [x for x in range(5) if x == foo]
|
||||
print f<caret>oo
|
||||
@@ -0,0 +1,3 @@
|
||||
bar = 2
|
||||
elements = [x for x in range(5) if x == bar]
|
||||
print bar
|
||||
@@ -0,0 +1,4 @@
|
||||
parameter_lists_copy = [m for m in parameter_lists]
|
||||
for bar in parameter_lists_copy:
|
||||
if param_index >= len(bar.GetParameters()):
|
||||
parameter_lists.remove(bar)
|
||||
@@ -41,6 +41,14 @@ public class PyRenameTest extends PyLightFixtureTestCase {
|
||||
doTest("_x");
|
||||
}
|
||||
|
||||
public void testRenameLocalWithComprehension() { // PY-1618
|
||||
doTest("bar");
|
||||
}
|
||||
|
||||
public void testRenameLocalWithComprehension2() { // PY-1618
|
||||
doTest("bar");
|
||||
}
|
||||
|
||||
private void doTest(final String newName) {
|
||||
myFixture.configureByFile("refactoring/rename/" + getTestName(true) + ".py");
|
||||
myFixture.renameElementAtCaret(newName);
|
||||
|
||||
Reference in New Issue
Block a user