From 0823c1528acd10c70807ee3b92f61e4993302991 Mon Sep 17 00:00:00 2001 From: Valentin Kipyatkov Date: Thu, 2 Oct 2014 19:06:26 +0400 Subject: [PATCH] Fixed 2 bugs in Join Lines --- .../joinLines/JoinDeclarationAndAssignmentHandler.kt | 9 +++++++-- .../declarationAndAssignment/blankLineBetween.kt | 5 +++++ .../blankLineBetween.kt.after | 4 ++++ .../declarationAndAssignment/commentBetween.kt | 5 +++++ .../declarationAndAssignment/commentBetween.kt.after | 4 ++++ .../declarations/JoinLinesTestGenerated.java | 12 ++++++++++++ 6 files changed, 37 insertions(+), 2 deletions(-) create mode 100644 idea/testData/joinLines/declarationAndAssignment/blankLineBetween.kt create mode 100644 idea/testData/joinLines/declarationAndAssignment/blankLineBetween.kt.after create mode 100644 idea/testData/joinLines/declarationAndAssignment/commentBetween.kt create mode 100644 idea/testData/joinLines/declarationAndAssignment/commentBetween.kt.after diff --git a/idea/src/org/jetbrains/jet/plugin/joinLines/JoinDeclarationAndAssignmentHandler.kt b/idea/src/org/jetbrains/jet/plugin/joinLines/JoinDeclarationAndAssignmentHandler.kt index 67e0cf01986..0725f0b4275 100644 --- a/idea/src/org/jetbrains/jet/plugin/joinLines/JoinDeclarationAndAssignmentHandler.kt +++ b/idea/src/org/jetbrains/jet/plugin/joinLines/JoinDeclarationAndAssignmentHandler.kt @@ -29,6 +29,7 @@ import org.jetbrains.jet.lang.psi.JetSimpleNameExpression import com.intellij.psi.PsiWhiteSpace import com.intellij.psi.PsiComment import org.jetbrains.jet.lexer.JetTokens +import com.intellij.openapi.util.text.StringUtil public class JoinDeclarationAndAssignmentHandler : JoinRawLinesHandlerDelegate { @@ -72,6 +73,10 @@ public class JoinDeclarationAndAssignmentHandler : JoinRawLinesHandlerDelegate { property.getParent()!!.deleteChildRange(property.getNextSibling(), assignment) //TODO: should we delete range? } - private fun isToSkip(element: PsiElement) - = element is PsiWhiteSpace || element is PsiComment || element.getNode()!!.getElementType() == JetTokens.SEMICOLON + private fun isToSkip(element: PsiElement): Boolean { + return when (element) { + is PsiWhiteSpace -> StringUtil.getLineBreakCount(element.getText()!!) <= 1 // do not skip blank line + else -> element.getNode()!!.getElementType() == JetTokens.SEMICOLON + } + } } \ No newline at end of file diff --git a/idea/testData/joinLines/declarationAndAssignment/blankLineBetween.kt b/idea/testData/joinLines/declarationAndAssignment/blankLineBetween.kt new file mode 100644 index 00000000000..be747719c08 --- /dev/null +++ b/idea/testData/joinLines/declarationAndAssignment/blankLineBetween.kt @@ -0,0 +1,5 @@ +fun foo() { + val v: Int + + v = 10 +} \ No newline at end of file diff --git a/idea/testData/joinLines/declarationAndAssignment/blankLineBetween.kt.after b/idea/testData/joinLines/declarationAndAssignment/blankLineBetween.kt.after new file mode 100644 index 00000000000..e668e6714e3 --- /dev/null +++ b/idea/testData/joinLines/declarationAndAssignment/blankLineBetween.kt.after @@ -0,0 +1,4 @@ +fun foo() { + val v: Int + v = 10 +} \ No newline at end of file diff --git a/idea/testData/joinLines/declarationAndAssignment/commentBetween.kt b/idea/testData/joinLines/declarationAndAssignment/commentBetween.kt new file mode 100644 index 00000000000..d7ee891f00a --- /dev/null +++ b/idea/testData/joinLines/declarationAndAssignment/commentBetween.kt @@ -0,0 +1,5 @@ +fun foo() { + val v: Int + // variable v + v = 10 +} \ No newline at end of file diff --git a/idea/testData/joinLines/declarationAndAssignment/commentBetween.kt.after b/idea/testData/joinLines/declarationAndAssignment/commentBetween.kt.after new file mode 100644 index 00000000000..078dd2d49bc --- /dev/null +++ b/idea/testData/joinLines/declarationAndAssignment/commentBetween.kt.after @@ -0,0 +1,4 @@ +fun foo() { + val v: Int // variable v + v = 10 +} \ No newline at end of file diff --git a/idea/tests/org/jetbrains/jet/plugin/intentions/declarations/JoinLinesTestGenerated.java b/idea/tests/org/jetbrains/jet/plugin/intentions/declarations/JoinLinesTestGenerated.java index 732b58bb445..a6d72b6fcb1 100644 --- a/idea/tests/org/jetbrains/jet/plugin/intentions/declarations/JoinLinesTestGenerated.java +++ b/idea/tests/org/jetbrains/jet/plugin/intentions/declarations/JoinLinesTestGenerated.java @@ -45,6 +45,18 @@ public class JoinLinesTestGenerated extends AbstractJoinLinesTest { JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("idea/testData/joinLines/declarationAndAssignment"), Pattern.compile("^(.+)\\.kt$"), true); } + @TestMetadata("blankLineBetween.kt") + public void testBlankLineBetween() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/joinLines/declarationAndAssignment/blankLineBetween.kt"); + doTest(fileName); + } + + @TestMetadata("commentBetween.kt") + public void testCommentBetween() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/joinLines/declarationAndAssignment/commentBetween.kt"); + doTest(fileName); + } + @TestMetadata("longInit.kt") public void testLongInit() throws Exception { String fileName = JetTestUtils.navigationMetadata("idea/testData/joinLines/declarationAndAssignment/longInit.kt");