From bdc52bba4d33d2a43e9502a733c535637175f8e8 Mon Sep 17 00:00:00 2001 From: "alexey.afanasiev" Date: Tue, 31 Jan 2017 15:41:56 +0300 Subject: [PATCH] IDEA-167189 Incorrect inspection for Ratpack's Promise.next() --- .../transformations/AsBooleanTransformation.java | 5 ++++- .../transformations/BinaryTransformation.java | 5 +++-- .../transformations/PutAtTransformation.java | 5 +++-- .../transformations/UnaryTransformation.java | 4 +++- .../plugins/groovy/inspections/GrChangeToOperatorTest.groovy | 3 +++ 5 files changed, 16 insertions(+), 6 deletions(-) diff --git a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/codeInspection/changeToOperator/transformations/AsBooleanTransformation.java b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/codeInspection/changeToOperator/transformations/AsBooleanTransformation.java index b76e16eed4f6..e7a802788057 100644 --- a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/codeInspection/changeToOperator/transformations/AsBooleanTransformation.java +++ b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/codeInspection/changeToOperator/transformations/AsBooleanTransformation.java @@ -63,7 +63,10 @@ class AsBooleanTransformation extends Transformation { @Override public boolean couldApplyInternal(@NotNull GrMethodCall methodCall, @NotNull Options options) { - return getBase(methodCall) != null && methodCall.getExpressionArguments().length == 0 && getPrefix(methodCall, options) != null; + return getBase(methodCall) != null + && methodCall.getExpressionArguments().length == 0 + && getPrefix(methodCall, options) != null + && methodCall.getClosureArguments().length == 0; } @Override diff --git a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/codeInspection/changeToOperator/transformations/BinaryTransformation.java b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/codeInspection/changeToOperator/transformations/BinaryTransformation.java index 2864b04d6216..491313477b9c 100644 --- a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/codeInspection/changeToOperator/transformations/BinaryTransformation.java +++ b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/codeInspection/changeToOperator/transformations/BinaryTransformation.java @@ -42,7 +42,8 @@ abstract class BinaryTransformation extends Transformation { @Override public boolean couldApplyInternal(@NotNull GrMethodCall methodCall, @NotNull Options options) { - GrExpression[] arguments = methodCall.getExpressionArguments(); - return getBase(methodCall) != null && arguments.length == 1; + return getBase(methodCall) != null + && methodCall.getExpressionArguments().length == 1 + && methodCall.getClosureArguments().length == 0; } } diff --git a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/codeInspection/changeToOperator/transformations/PutAtTransformation.java b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/codeInspection/changeToOperator/transformations/PutAtTransformation.java index adb1db9b82b2..952368e09640 100644 --- a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/codeInspection/changeToOperator/transformations/PutAtTransformation.java +++ b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/codeInspection/changeToOperator/transformations/PutAtTransformation.java @@ -39,8 +39,9 @@ class PutAtTransformation extends Transformation { @Override public boolean couldApplyInternal(@NotNull GrMethodCall methodCall, @NotNull Options options) { - GrExpression[] arguments = methodCall.getExpressionArguments(); - return getBase(methodCall) != null && arguments.length == 2; + return getBase(methodCall) != null + && methodCall.getExpressionArguments().length == 2 + && methodCall.getClosureArguments().length == 0; } @Override diff --git a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/codeInspection/changeToOperator/transformations/UnaryTransformation.java b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/codeInspection/changeToOperator/transformations/UnaryTransformation.java index 394c0882c06d..bddf713c88c8 100644 --- a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/codeInspection/changeToOperator/transformations/UnaryTransformation.java +++ b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/codeInspection/changeToOperator/transformations/UnaryTransformation.java @@ -40,7 +40,9 @@ public class UnaryTransformation extends Transformation { @Override public boolean couldApplyInternal(@NotNull GrMethodCall methodCall, @NotNull Options options) { - return getBase(methodCall)!= null && methodCall.getExpressionArguments().length == 0; + return getBase(methodCall)!= null + && methodCall.getExpressionArguments().length == 0 + && methodCall.getClosureArguments().length == 0; } @Override diff --git a/plugins/groovy/test/org/jetbrains/plugins/groovy/inspections/GrChangeToOperatorTest.groovy b/plugins/groovy/test/org/jetbrains/plugins/groovy/inspections/GrChangeToOperatorTest.groovy index 75a0006a599d..7585f0e59920 100644 --- a/plugins/groovy/test/org/jetbrains/plugins/groovy/inspections/GrChangeToOperatorTest.groovy +++ b/plugins/groovy/test/org/jetbrains/plugins/groovy/inspections/GrChangeToOperatorTest.groovy @@ -156,6 +156,8 @@ class Operators { doTest "a.rightShift(b, 1)" doTest "a.rightShiftUnsigned(b, 1)" doTest "a.asType(b, 1)" + doTest "a.next {return 1}" + doTest "a.plus(1) {return 1}" } void testComplexBinaryExpression() { @@ -250,6 +252,7 @@ class Operators { doTest "a.getAt(a, b)" doTest "a.putAt(b)" doTest "a.putAt(b, b, b)" + doTest "a.putAt(b,b) {b}" } void testWithoutAdditionalParenthesesOption() {