From 7c95af9b524dcefa8d35c1d158f61ced8d07fe40 Mon Sep 17 00:00:00 2001 From: Valentina Kiryushkina Date: Wed, 23 Dec 2015 14:16:19 +0300 Subject: [PATCH] #PY-16228 fixed Enable PyArgumentEqualDefaultInspection for decorators --- .../PyArgumentEqualDefaultInspection.java | 12 ++++++++++++ .../PyArgumentEqualDefaultInspection/test.py | 9 ++++++++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/python/src/com/jetbrains/python/inspections/PyArgumentEqualDefaultInspection.java b/python/src/com/jetbrains/python/inspections/PyArgumentEqualDefaultInspection.java index cd06a6d19e81..97992f65e46e 100644 --- a/python/src/com/jetbrains/python/inspections/PyArgumentEqualDefaultInspection.java +++ b/python/src/com/jetbrains/python/inspections/PyArgumentEqualDefaultInspection.java @@ -80,6 +80,18 @@ public class PyArgumentEqualDefaultInspection extends PyInspection { checkArguments(node, node.getArguments()); } + @Override + public void visitPyDecoratorList(final PyDecoratorList node) { + PyDecorator[] decorators = node.getDecorators(); + + for (PyDecorator decorator: decorators) { + if (decorator.hasArgumentList()) { + PyExpression[] arguments = decorator.getArguments(); + checkArguments(decorator, arguments); + } + } + } + private static boolean hasSpecialCasedDefaults(PyCallable callable, PsiElement anchor) { final String name = callable.getName(); final PyBuiltinCache cache = PyBuiltinCache.getInstance(anchor); diff --git a/python/testData/inspections/PyArgumentEqualDefaultInspection/test.py b/python/testData/inspections/PyArgumentEqualDefaultInspection/test.py index c53ac2b7a07c..27fc83beadbb 100644 --- a/python/testData/inspections/PyArgumentEqualDefaultInspection/test.py +++ b/python/testData/inspections/PyArgumentEqualDefaultInspection/test.py @@ -78,4 +78,11 @@ def f1(value=-1): print(value) def f2(): - f1(value =-2) \ No newline at end of file + f1(value =-2) + +def decorator(arg='baz'): + return lambda x: x + +@decorator(arg='baz') +def f: + pass \ No newline at end of file