Fixed unresolved reference in list comprehension inside default value of parameter (PY-7516)

This commit is contained in:
Andrey Vlasovskikh
2012-09-10 18:24:31 +04:00
parent 9a859a4e65
commit 617613da83
3 changed files with 18 additions and 0 deletions
@@ -177,6 +177,17 @@ public class ScopeImpl implements Scope {
super.visitPyNonlocalStatement(node);
}
@Override
public void visitPyFunction(PyFunction node) {
for (PyParameter parameter : node.getParameterList().getParameters()) {
final PyExpression defaultValue = parameter.getDefaultValue();
if (defaultValue != null) {
defaultValue.accept(this);
}
}
super.visitPyFunction(node);
}
@Override
public void visitPyElement(PyElement node) {
if (node instanceof PsiNamedElement && !(node instanceof PyKeywordArgument)) {
@@ -0,0 +1,2 @@
def f(x=[i for i in [1, 2, 3]]): # i is resolved in file scope to i
return x
@@ -221,6 +221,11 @@ public class PyUnresolvedReferencesInspectionTest extends PyTestCase {
});
}
// PY-7516
public void testComprehensionInParameterValue() {
doTest();
}
private void doTest() {
myFixture.configureByFile(TEST_DIRECTORY + getTestName(true) + ".py");
myFixture.enableInspections(PyUnresolvedReferencesInspection.class);