From 19f629068668fd734118fb901a14a7524bc7eda6 Mon Sep 17 00:00:00 2001 From: Alexander Podkhalyuzin Date: Mon, 25 Mar 2019 14:21:13 +0300 Subject: [PATCH] Fixed selection in case of empty class body #KT-30597 Fixed --- .../editor/wordSelection/KotlinClassMemberSelectioner.kt | 5 ++++- idea/testData/wordSelection/Class/0.kt | 3 +++ idea/testData/wordSelection/Class/1.kt | 3 +++ idea/testData/wordSelection/Class/2.kt | 3 +++ idea/tests/org/jetbrains/kotlin/idea/WordSelectionTest.java | 4 ++++ 5 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 idea/testData/wordSelection/Class/0.kt create mode 100644 idea/testData/wordSelection/Class/1.kt create mode 100644 idea/testData/wordSelection/Class/2.kt diff --git a/idea/src/org/jetbrains/kotlin/idea/editor/wordSelection/KotlinClassMemberSelectioner.kt b/idea/src/org/jetbrains/kotlin/idea/editor/wordSelection/KotlinClassMemberSelectioner.kt index 32feac4b452..7c00edde4cf 100644 --- a/idea/src/org/jetbrains/kotlin/idea/editor/wordSelection/KotlinClassMemberSelectioner.kt +++ b/idea/src/org/jetbrains/kotlin/idea/editor/wordSelection/KotlinClassMemberSelectioner.kt @@ -24,7 +24,10 @@ class KotlinClassMemberSelectioner : ExtendWordSelectionHandlerBase() { val lastChild = parent.lastChild ?: return null val startElement = firstChild.getNextSiblingIgnoringWhitespace() ?: firstChild val endElement = lastChild.getPrevSiblingIgnoringWhitespace() ?: lastChild - val textRange = TextRange(startElement.textRange.startOffset, endElement.textRange.endOffset) + val startOffset = startElement.textRange.startOffset + val endOffset = endElement.textRange.endOffset + if (startOffset >= endOffset) return null + val textRange = TextRange(startOffset, endOffset) return expandToWholeLinesWithBlanks(editorText, textRange) } } \ No newline at end of file diff --git a/idea/testData/wordSelection/Class/0.kt b/idea/testData/wordSelection/Class/0.kt new file mode 100644 index 00000000000..50b547b5120 --- /dev/null +++ b/idea/testData/wordSelection/Class/0.kt @@ -0,0 +1,3 @@ +class SimpleClass { + +} \ No newline at end of file diff --git a/idea/testData/wordSelection/Class/1.kt b/idea/testData/wordSelection/Class/1.kt new file mode 100644 index 00000000000..137138ff46b --- /dev/null +++ b/idea/testData/wordSelection/Class/1.kt @@ -0,0 +1,3 @@ +class SimpleClass { + +} \ No newline at end of file diff --git a/idea/testData/wordSelection/Class/2.kt b/idea/testData/wordSelection/Class/2.kt new file mode 100644 index 00000000000..a0e07bf6186 --- /dev/null +++ b/idea/testData/wordSelection/Class/2.kt @@ -0,0 +1,3 @@ +class SimpleClass { + +} \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/WordSelectionTest.java b/idea/tests/org/jetbrains/kotlin/idea/WordSelectionTest.java index 7f31fdaffa5..99139690080 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/WordSelectionTest.java +++ b/idea/tests/org/jetbrains/kotlin/idea/WordSelectionTest.java @@ -112,6 +112,10 @@ public class WordSelectionTest extends KotlinLightCodeInsightFixtureTestCase { doTest(); } + public void testClass() { + doTest(); + } + public void testDeclarationWithComment1() { doTest(); } public void testDeclarationWithComment2() { doTest(); } public void testDeclarationWithComment3() { doTest(); }