From 4569c83dc6a5e26e7ceaa7f47b133101bf4111b7 Mon Sep 17 00:00:00 2001 From: Ekaterina Tuzova Date: Wed, 14 May 2014 14:39:28 +0400 Subject: [PATCH] fixed PY-12369 Code Inspection fails for negative default parameter --- .../PyArgumentEqualDefaultInspection.java | 13 ++++++++----- .../PyArgumentEqualDefaultInspection/test.py | 6 ++++++ 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/python/src/com/jetbrains/python/inspections/PyArgumentEqualDefaultInspection.java b/python/src/com/jetbrains/python/inspections/PyArgumentEqualDefaultInspection.java index 2f694b69179b..0a6ff6e716aa 100644 --- a/python/src/com/jetbrains/python/inspections/PyArgumentEqualDefaultInspection.java +++ b/python/src/com/jetbrains/python/inspections/PyArgumentEqualDefaultInspection.java @@ -127,11 +127,8 @@ public class PyArgumentEqualDefaultInspection extends PyInspection { } private boolean isEqual(PyExpression key, PyExpression defaultValue) { - if (key instanceof PyNumericLiteralExpression && defaultValue instanceof PyNumericLiteralExpression) { - if (key.getText().equals(defaultValue.getText())) - return true; - } - if (key instanceof PyBinaryExpression && defaultValue instanceof PyBinaryExpression) { + if (isBothInstanceOf(key, defaultValue, PyNumericLiteralExpression.class) || + isBothInstanceOf(key, defaultValue, PyPrefixExpression.class) || isBothInstanceOf(key, defaultValue, PyBinaryExpression.class)) { if (key.getText().equals(defaultValue.getText())) return true; } @@ -155,5 +152,11 @@ public class PyArgumentEqualDefaultInspection extends PyInspection { } return false; } + + private static boolean isBothInstanceOf(@NotNull final PyExpression key, + @NotNull final PyExpression defaultValue, + @NotNull final Class clazz) { + return clazz.isInstance(key) && clazz.isInstance(defaultValue); + } } } diff --git a/python/testData/inspections/PyArgumentEqualDefaultInspection/test.py b/python/testData/inspections/PyArgumentEqualDefaultInspection/test.py index b75341f4e48a..c53ac2b7a07c 100644 --- a/python/testData/inspections/PyArgumentEqualDefaultInspection/test.py +++ b/python/testData/inspections/PyArgumentEqualDefaultInspection/test.py @@ -73,3 +73,9 @@ def a(foo=1*1024): a( 1024*1024) + +def f1(value=-1): + print(value) + +def f2(): + f1(value =-2) \ No newline at end of file