From 0a2e21407b455ca40b8d4ff059a340e5c11246d1 Mon Sep 17 00:00:00 2001 From: Dmitry Batrak Date: Tue, 2 Feb 2016 15:16:40 +0300 Subject: [PATCH] inserting paired brace for lambda body (following IDEA-CR-8127) --- .../codeInsight/editorActions/JavaTypedHandler.java | 7 ++++--- .../typing/insertPairedBraceForLambdaBody_after.java | 5 +++++ .../typing/insertPairedBraceForLambdaBody_before.java | 5 +++++ .../testSrc/com/intellij/codeInsight/JavaTypingTest.java | 4 ++++ 4 files changed, 18 insertions(+), 3 deletions(-) create mode 100644 java/java-tests/testData/codeInsight/typing/insertPairedBraceForLambdaBody_after.java create mode 100644 java/java-tests/testData/codeInsight/typing/insertPairedBraceForLambdaBody_before.java diff --git a/java/java-impl/src/com/intellij/codeInsight/editorActions/JavaTypedHandler.java b/java/java-impl/src/com/intellij/codeInsight/editorActions/JavaTypedHandler.java index 9a9c5c228828..19b3f35b51bc 100644 --- a/java/java-impl/src/com/intellij/codeInsight/editorActions/JavaTypedHandler.java +++ b/java/java-impl/src/com/intellij/codeInsight/editorActions/JavaTypedHandler.java @@ -142,9 +142,10 @@ public class JavaTypedHandler extends TypedHandlerDelegate { }, "Insert block statement", null); return Result.STOP; } - - if (leaf != null && PsiTreeUtil.getParentOfType(PsiTreeUtil.prevVisibleLeaf(leaf), PsiNewExpression.class, true, - PsiCodeBlock.class, PsiMember.class) != null) { + + PsiElement prevLeaf = leaf == null ? null : PsiTreeUtil.prevVisibleLeaf(leaf); + if (PsiUtil.isJavaToken(prevLeaf, JavaTokenType.ARROW) || + PsiTreeUtil.getParentOfType(prevLeaf, PsiNewExpression.class, true, PsiCodeBlock.class, PsiMember.class) != null) { return Result.CONTINUE; } diff --git a/java/java-tests/testData/codeInsight/typing/insertPairedBraceForLambdaBody_after.java b/java/java-tests/testData/codeInsight/typing/insertPairedBraceForLambdaBody_after.java new file mode 100644 index 000000000000..d3b03330460d --- /dev/null +++ b/java/java-tests/testData/codeInsight/typing/insertPairedBraceForLambdaBody_after.java @@ -0,0 +1,5 @@ +class A { + void m() { + javax.swing.SwingUtilities.invokeLater(() -> {}); + } +} \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/typing/insertPairedBraceForLambdaBody_before.java b/java/java-tests/testData/codeInsight/typing/insertPairedBraceForLambdaBody_before.java new file mode 100644 index 000000000000..abbf6ac52639 --- /dev/null +++ b/java/java-tests/testData/codeInsight/typing/insertPairedBraceForLambdaBody_before.java @@ -0,0 +1,5 @@ +class A { + void m() { + javax.swing.SwingUtilities.invokeLater(() -> ); + } +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/JavaTypingTest.java b/java/java-tests/testSrc/com/intellij/codeInsight/JavaTypingTest.java index b1f2f9c80c97..9da3d9d82d1f 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/JavaTypingTest.java +++ b/java/java-tests/testSrc/com/intellij/codeInsight/JavaTypingTest.java @@ -98,6 +98,10 @@ public class JavaTypingTest extends LightPlatformCodeInsightFixtureTestCase { doTest('{'); } + public void testInsertPairedBraceForLambdaBody() { + doTest('{'); + } + private void doTest(char c) { myFixture.configureByFile(getTestName(true) + "_before.java"); myFixture.type(c);