From e747d52bf53ce6c49d7237708339a475ec792157 Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Thu, 18 May 2017 13:16:29 +0300 Subject: [PATCH] create method from usage: treat polyadic expressions as for completion by containing expression (IDEA-151432) --- .../daemon/impl/quickfix/CreateFromUsageUtils.java | 2 +- .../createMethodFromUsage/afterPolyadicExpression.java | 10 ++++++++++ .../beforePolyadicExpression.java | 6 ++++++ 3 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createMethodFromUsage/afterPolyadicExpression.java create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createMethodFromUsage/beforePolyadicExpression.java diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/CreateFromUsageUtils.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/CreateFromUsageUtils.java index 8ea47ee40156..12cc4c32ef6a 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/CreateFromUsageUtils.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/CreateFromUsageUtils.java @@ -581,7 +581,7 @@ public class CreateFromUsageUtils { PsiExpressionList expressionList = ObjectUtils .tryCast(PsiUtil.skipParenthesizedExprUp(isAssignmentToFunctionalExpression ? parent.getParent() : parent), PsiExpressionList.class); - boolean forCompletion = expressionList != null; + boolean forCompletion = expressionList != null || parent.getParent() instanceof PsiPolyadicExpression; ExpectedTypeInfo[] someExpectedTypes = ExpectedTypesProvider.getExpectedTypes(expr, forCompletion); if (someExpectedTypes.length > 0) { Comparator comparator = expectedTypesComparator; diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createMethodFromUsage/afterPolyadicExpression.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createMethodFromUsage/afterPolyadicExpression.java new file mode 100644 index 000000000000..41c663eb22f5 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createMethodFromUsage/afterPolyadicExpression.java @@ -0,0 +1,10 @@ +// "Create method 'f'" "true" +class Test { + { + long l = f(1) + f(2); + } + + private long f(int i) { + return 0; + } +} \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createMethodFromUsage/beforePolyadicExpression.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createMethodFromUsage/beforePolyadicExpression.java new file mode 100644 index 000000000000..0496ebf9403a --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createMethodFromUsage/beforePolyadicExpression.java @@ -0,0 +1,6 @@ +// "Create method 'f'" "true" +class Test { + { + long l = f(1) + f(2); + } +} \ No newline at end of file