Don't highlight unused parameter in module __getattr__ (PY-28017)

This commit is contained in:
Semyon Proshev
2018-01-22 21:43:36 +03:00
parent 5137658450
commit 36f657d77b
3 changed files with 13 additions and 3 deletions
@@ -15,6 +15,7 @@
*/
package com.jetbrains.python.inspections;
import com.google.common.collect.ImmutableMap;
import com.intellij.codeInsight.controlflow.ControlFlowUtil;
import com.intellij.codeInsight.controlflow.Instruction;
import com.intellij.codeInspection.*;
@@ -193,9 +194,11 @@ public class PyUnusedLocalInspectionVisitor extends PyInspectionVisitor {
final PyFunction function = (PyFunction)owner;
final String functionName = function.getName();
return !PyNames.INIT.equals(functionName) &&
function.getContainingClass() != null &&
PyNames.getBuiltinMethods(LanguageLevel.forElement(function)).containsKey(functionName);
final LanguageLevel level = LanguageLevel.forElement(function);
final ImmutableMap<String, PyNames.BuiltinDescription> builtinMethods =
function.getContainingClass() != null ? PyNames.getBuiltinMethods(level) : PyNames.getModuleBuiltinMethods(level);
return !PyNames.INIT.equals(functionName) && builtinMethods.containsKey(functionName);
}
return false;
@@ -0,0 +1,2 @@
def __getattr__(name):
pass
@@ -96,6 +96,11 @@ public class PyUnusedLocalInspectionTest extends PyInspectionTestCase {
doTest();
}
// PY-28017
public void testModuleGetAttr() {
runWithLanguageLevel(LanguageLevel.PYTHON37, this::doTest);
}
@NotNull
@Override
protected Class<? extends PyInspection> getInspectionClass() {