diff --git a/java/java-tests/testData/codeInsight/joinLines/AtEOF.java b/java/java-tests/testData/codeInsight/joinLines/AtEOF.java new file mode 100644 index 000000000000..bae30540f0a2 --- /dev/null +++ b/java/java-tests/testData/codeInsight/joinLines/AtEOF.java @@ -0,0 +1,5 @@ +class Foo { + void test() { + } + // this test must have a single newline at the end-of-file +} diff --git a/java/java-tests/testData/codeInsight/joinLines/AtEOF_after.java b/java/java-tests/testData/codeInsight/joinLines/AtEOF_after.java new file mode 100644 index 000000000000..5bbe526f4265 --- /dev/null +++ b/java/java-tests/testData/codeInsight/joinLines/AtEOF_after.java @@ -0,0 +1,5 @@ +class Foo { + void test() { + } + // this test must have a single newline at the end-of-file +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/java/codeInsight/JoinLinesTest.java b/java/java-tests/testSrc/com/intellij/java/codeInsight/JoinLinesTest.java index 9dcfd5e1c15b..fb43f84a420e 100644 --- a/java/java-tests/testSrc/com/intellij/java/codeInsight/JoinLinesTest.java +++ b/java/java-tests/testSrc/com/intellij/java/codeInsight/JoinLinesTest.java @@ -16,13 +16,11 @@ package com.intellij.java.codeInsight; import com.intellij.JavaTestUtil; -import com.intellij.application.options.CodeStyle; import com.intellij.ide.DataManager; import com.intellij.lang.java.JavaLanguage; import com.intellij.openapi.actionSystem.IdeActions; import com.intellij.openapi.editor.actionSystem.EditorActionHandler; import com.intellij.openapi.editor.actionSystem.EditorActionManager; -import com.intellij.psi.codeStyle.CodeStyleSettings; import com.intellij.psi.codeStyle.CodeStyleSettingsManager; import com.intellij.psi.codeStyle.CommonCodeStyleSettings; import com.intellij.testFramework.LightJavaCodeInsightTestCase; @@ -64,6 +62,7 @@ public class JoinLinesTest extends LightJavaCodeInsightTestCase { public void testIfChainNoBraces() { doTest(); } public void testIfChainElse() { doTest(); } public void testIfChainSelection() { doTest(); } + public void testAtEOF() { doTest(); } public void testSCR3493() { CommonCodeStyleSettings settings = getJavaSettings(); diff --git a/platform/lang-impl/src/com/intellij/codeInsight/editorActions/JoinLinesHandler.java b/platform/lang-impl/src/com/intellij/codeInsight/editorActions/JoinLinesHandler.java index a012d2a99c64..ce13e38d8b37 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/editorActions/JoinLinesHandler.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/editorActions/JoinLinesHandler.java @@ -340,7 +340,7 @@ public class JoinLinesHandler extends EditorActionHandler { RangeMarker marker = markers.get(i); if (!marker.isValid()) continue; int end = StringUtil.skipWhitespaceForward(text, marker.getStartOffset()); - int spacesToCreate = text.charAt(end) == '\n' ? 0 : + int spacesToCreate = end == text.length() || text.charAt(end) == '\n' ? 0 : model == null ? 1 : formatter.getSpacingForBlockAtOffset(model, end); spacesToAdd[i] = spacesToCreate < 0 ? 1 : spacesToCreate; }