diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/source/tree/java/ReplaceExpressionUtil.java b/java/java-psi-impl/src/com/intellij/psi/impl/source/tree/java/ReplaceExpressionUtil.java index f131c759a008..6d61f609d3a1 100644 --- a/java/java-psi-impl/src/com/intellij/psi/impl/source/tree/java/ReplaceExpressionUtil.java +++ b/java/java-psi-impl/src/com/intellij/psi/impl/source/tree/java/ReplaceExpressionUtil.java @@ -64,7 +64,7 @@ public class ReplaceExpressionUtil { else if (i == JavaElementType.POSTFIX_EXPRESSION) { return priority <= parentPriority; } - else if (i == JavaElementType.REFERENCE_EXPRESSION) { + else if (i == JavaElementType.REFERENCE_EXPRESSION || i == JavaElementType.METHOD_REF_EXPRESSION) { return priority < parentPriority; } else if (i == JavaElementType.METHOD_CALL_EXPRESSION) { @@ -87,8 +87,7 @@ public class ReplaceExpressionUtil { i == JavaElementType.THIS_EXPRESSION || i == JavaElementType.SUPER_EXPRESSION || i == JavaElementType.CLASS_OBJECT_ACCESS_EXPRESSION || - i == JavaElementType.LAMBDA_EXPRESSION || - i == JavaElementType.METHOD_REF_EXPRESSION ) { + i == JavaElementType.LAMBDA_EXPRESSION) { return false; } diff --git a/java/java-tests/testData/refactoring/inlineLocal/ParenthesisAroundInlinedLambda.java b/java/java-tests/testData/refactoring/inlineLocal/ParenthesisAroundInlinedLambda.java new file mode 100644 index 000000000000..5869854c63ab --- /dev/null +++ b/java/java-tests/testData/refactoring/inlineLocal/ParenthesisAroundInlinedLambda.java @@ -0,0 +1,12 @@ +class Test { + interface Task { + void doit(); + } + + class SuperClient { + public static void main(String[] args) { + Task t = () -> System.out.println("hello"); + Runnable r = t::doit; + } + } +} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/inlineLocal/ParenthesisAroundInlinedLambda.java.after b/java/java-tests/testData/refactoring/inlineLocal/ParenthesisAroundInlinedLambda.java.after new file mode 100644 index 000000000000..a6ff7242d731 --- /dev/null +++ b/java/java-tests/testData/refactoring/inlineLocal/ParenthesisAroundInlinedLambda.java.after @@ -0,0 +1,11 @@ +class Test { + interface Task { + void doit(); + } + + class SuperClient { + public static void main(String[] args) { + Runnable r = ((Task) () -> System.out.println("hello"))::doit; + } + } +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/refactoring/inline/InlineLocalTest.java b/java/java-tests/testSrc/com/intellij/refactoring/inline/InlineLocalTest.java index ad8cab1ad24c..8fc191d8616e 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/inline/InlineLocalTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/inline/InlineLocalTest.java @@ -248,6 +248,10 @@ public class InlineLocalTest extends LightCodeInsightTestCase { doTest(true); } + public void testParenthesisAroundInlinedLambda() throws Exception { + doTest(true); + } + public void testArrayAccessPriority() throws Exception { doTest(true); }