From 1f56dab2e2b1843f71441a13ffa1d78fad335892 Mon Sep 17 00:00:00 2001 From: Dennis Ushakov Date: Sun, 16 May 2010 14:23:03 +0400 Subject: [PATCH] PY-994 don't put parenthesis if putting into non-expression element --- .../refactoring/PyReplaceExpressionUtil.java | 17 ++++++++++------- .../refactoring/inlinelocal/py994.after.py | 3 +++ .../refactoring/inlinelocal/py994.before.py | 4 ++++ .../python/refactoring/PyInlineLocalTest.java | 4 ++++ 4 files changed, 21 insertions(+), 7 deletions(-) create mode 100644 python/testData/refactoring/inlinelocal/py994.after.py create mode 100644 python/testData/refactoring/inlinelocal/py994.before.py diff --git a/python/src/com/jetbrains/python/refactoring/PyReplaceExpressionUtil.java b/python/src/com/jetbrains/python/refactoring/PyReplaceExpressionUtil.java index 0cb8423bc81f..6366e2336a7f 100644 --- a/python/src/com/jetbrains/python/refactoring/PyReplaceExpressionUtil.java +++ b/python/src/com/jetbrains/python/refactoring/PyReplaceExpressionUtil.java @@ -16,18 +16,21 @@ public class PyReplaceExpressionUtil implements PyElementTypes { public static boolean isNeedParenthesis(@NotNull final PyElement oldExpr, @NotNull final PyElement newExpr) { final PyElement parentExpr = (PyElement)oldExpr.getParent(); + if (!(parentExpr instanceof PyExpression)) { + return false; + } int newPriority = getExpressionPriority(newExpr); int parentPriority = getExpressionPriority(parentExpr); if (parentPriority > newPriority) { - return true; - } else if (parentPriority == newPriority && parentPriority != 0) { - if (parentExpr instanceof PyBinaryExpression) { - PyBinaryExpression binaryExpression = (PyBinaryExpression) parentExpr; - if (isNotAssociative(binaryExpression) && oldExpr.equals(binaryExpression.getRightExpression())) { - return true; - } + return true; + } else if (parentPriority == newPriority && parentPriority != 0) { + if (parentExpr instanceof PyBinaryExpression) { + PyBinaryExpression binaryExpression = (PyBinaryExpression)parentExpr; + if (isNotAssociative(binaryExpression) && oldExpr.equals(binaryExpression.getRightExpression())) { + return true; } } + } return false; } diff --git a/python/testData/refactoring/inlinelocal/py994.after.py b/python/testData/refactoring/inlinelocal/py994.after.py new file mode 100644 index 000000000000..393bb3e15efa --- /dev/null +++ b/python/testData/refactoring/inlinelocal/py994.after.py @@ -0,0 +1,3 @@ +class C: + def foo(self): + return Conference() \ No newline at end of file diff --git a/python/testData/refactoring/inlinelocal/py994.before.py b/python/testData/refactoring/inlinelocal/py994.before.py new file mode 100644 index 000000000000..58b24ebe9d69 --- /dev/null +++ b/python/testData/refactoring/inlinelocal/py994.before.py @@ -0,0 +1,4 @@ +class C: + def foo(self): + conf = Conference() + return conf \ No newline at end of file diff --git a/python/testSrc/com/jetbrains/python/refactoring/PyInlineLocalTest.java b/python/testSrc/com/jetbrains/python/refactoring/PyInlineLocalTest.java index f18845fe59e9..18edd4372ff0 100644 --- a/python/testSrc/com/jetbrains/python/refactoring/PyInlineLocalTest.java +++ b/python/testSrc/com/jetbrains/python/refactoring/PyInlineLocalTest.java @@ -55,4 +55,8 @@ public class PyInlineLocalTest extends LightMarkedTestCase { public void testMultiple() throws Exception { doTest(); } + + public void testPy994() throws Exception { + doTest(); + } }