From 2c18695de086bba808a7df1e09d25c43aa0d0bf6 Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Tue, 9 Feb 2016 12:30:05 +0100 Subject: [PATCH] generate constructor: do not insert new line if member would be generated in another place (IDEA-151327) --- .../generation/GenerateMembersHandlerBase.java | 4 +++- .../codeInsight/generateConstructor/afterNewLine.java | 8 ++++++++ .../codeInsight/generateConstructor/beforeNewLine.java | 4 ++++ .../com/intellij/codeInsight/GenerateConstructorTest.java | 1 + 4 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 java/java-tests/testData/codeInsight/generateConstructor/afterNewLine.java create mode 100644 java/java-tests/testData/codeInsight/generateConstructor/beforeNewLine.java diff --git a/java/java-impl/src/com/intellij/codeInsight/generation/GenerateMembersHandlerBase.java b/java/java-impl/src/com/intellij/codeInsight/generation/GenerateMembersHandlerBase.java index bcb82e77cde1..8e674adca489 100644 --- a/java/java-impl/src/com/intellij/codeInsight/generation/GenerateMembersHandlerBase.java +++ b/java/java-impl/src/com/intellij/codeInsight/generation/GenerateMembersHandlerBase.java @@ -124,7 +124,9 @@ public abstract class GenerateMembersHandlerBase implements CodeInsightActionHan CharSequence docText = document.getCharsSequence(); String textBeforeCaret = docText.subSequence(lineStartOffset, offset).toString(); final String afterCaret = docText.subSequence(offset, document.getLineEndOffset(line)).toString(); - if (textBeforeCaret.trim().length() > 0 && StringUtil.isEmptyOrSpaces(afterCaret) && !editor.getSelectionModel().hasSelection()) { + final PsiElement lBrace = aClass.getLBrace(); + if (textBeforeCaret.trim().length() > 0 && StringUtil.isEmptyOrSpaces(afterCaret) && + (lBrace == null || lBrace.getTextOffset() < offset) && !editor.getSelectionModel().hasSelection()) { EnterAction.insertNewLineAtCaret(editor); PsiDocumentManager.getInstance(project).commitDocument(document); offset = editor.getCaretModel().getOffset(); diff --git a/java/java-tests/testData/codeInsight/generateConstructor/afterNewLine.java b/java/java-tests/testData/codeInsight/generateConstructor/afterNewLine.java new file mode 100644 index 000000000000..f4f308f79d05 --- /dev/null +++ b/java/java-tests/testData/codeInsight/generateConstructor/afterNewLine.java @@ -0,0 +1,8 @@ +class Test +{ + private int i; + + public Test(int i) { + this.i = i; + } +} diff --git a/java/java-tests/testData/codeInsight/generateConstructor/beforeNewLine.java b/java/java-tests/testData/codeInsight/generateConstructor/beforeNewLine.java new file mode 100644 index 000000000000..5339402d3ec2 --- /dev/null +++ b/java/java-tests/testData/codeInsight/generateConstructor/beforeNewLine.java @@ -0,0 +1,4 @@ +class Test +{ + private int i; +} diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/GenerateConstructorTest.java b/java/java-tests/testSrc/com/intellij/codeInsight/GenerateConstructorTest.java index ff8283f95238..76a4ef1d869b 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/GenerateConstructorTest.java +++ b/java/java-tests/testSrc/com/intellij/codeInsight/GenerateConstructorTest.java @@ -46,6 +46,7 @@ public class GenerateConstructorTest extends LightCodeInsightFixtureTestCase { } public void testAbstractClass() { doTest(); } + public void testNewLine() { doTest(); } public void testPackageLocalClass() { doTest(); } public void testPrivateClass() { doTest(); } public void testBoundComments() { doTest(); }