From 37e40267fe6840fb66456f9338ce3fe1bed14d1d Mon Sep 17 00:00:00 2001 From: Valentin Kipyatkov Date: Tue, 23 Dec 2014 22:57:59 +0300 Subject: [PATCH] KT-6521 Expand selection works wrong on a call inside for loop's range KT-6518 Extend selection not working for expression in if #KT-6521 Fixed #KT-6518 Fixed --- .../compiler/CompileKotlinAgainstKotlinTestGenerated.java | 1 + .../plugin/editor/wordSelection/KotlinWordSelectionFilter.kt | 2 +- idea/testData/wordSelection/ForRange/0.kt | 5 +++++ idea/testData/wordSelection/ForRange/1.kt | 5 +++++ idea/testData/wordSelection/ForRange/2.kt | 5 +++++ idea/testData/wordSelection/ForRange/3.kt | 5 +++++ idea/testData/wordSelection/IfCondition/0.kt | 5 +++++ idea/testData/wordSelection/IfCondition/1.kt | 5 +++++ idea/testData/wordSelection/IfCondition/2.kt | 5 +++++ idea/testData/wordSelection/IfCondition/3.kt | 5 +++++ idea/tests/org/jetbrains/jet/plugin/WordSelectionTest.java | 4 ++++ 11 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 idea/testData/wordSelection/ForRange/0.kt create mode 100644 idea/testData/wordSelection/ForRange/1.kt create mode 100644 idea/testData/wordSelection/ForRange/2.kt create mode 100644 idea/testData/wordSelection/ForRange/3.kt create mode 100644 idea/testData/wordSelection/IfCondition/0.kt create mode 100644 idea/testData/wordSelection/IfCondition/1.kt create mode 100644 idea/testData/wordSelection/IfCondition/2.kt create mode 100644 idea/testData/wordSelection/IfCondition/3.kt diff --git a/compiler/tests/org/jetbrains/jet/jvm/compiler/CompileKotlinAgainstKotlinTestGenerated.java b/compiler/tests/org/jetbrains/jet/jvm/compiler/CompileKotlinAgainstKotlinTestGenerated.java index 5667ff30b07..ca3ae9287df 100644 --- a/compiler/tests/org/jetbrains/jet/jvm/compiler/CompileKotlinAgainstKotlinTestGenerated.java +++ b/compiler/tests/org/jetbrains/jet/jvm/compiler/CompileKotlinAgainstKotlinTestGenerated.java @@ -19,6 +19,7 @@ package org.jetbrains.jet.jvm.compiler; import com.intellij.testFramework.TestDataPath; import org.jetbrains.jet.JUnit3RunnerWithInners; import org.jetbrains.jet.JetTestUtils; +import org.jetbrains.jet.test.InnerTestClasses; import org.jetbrains.jet.test.TestMetadata; import org.junit.runner.RunWith; diff --git a/idea/src/org/jetbrains/jet/plugin/editor/wordSelection/KotlinWordSelectionFilter.kt b/idea/src/org/jetbrains/jet/plugin/editor/wordSelection/KotlinWordSelectionFilter.kt index 9b9c7f20e59..19b3d405664 100644 --- a/idea/src/org/jetbrains/jet/plugin/editor/wordSelection/KotlinWordSelectionFilter.kt +++ b/idea/src/org/jetbrains/jet/plugin/editor/wordSelection/KotlinWordSelectionFilter.kt @@ -29,7 +29,7 @@ public class KotlinWordSelectionFilter : Condition{ if (KotlinListSelectioner.canSelect(e)) return false if (e is JetContainerNode) return false - if (e.getParent().getFirstChild().getNextSibling() == null) return false // skip nodes with the same range as their parent + if (e.getParent().getFirstChild().getNextSibling() == null && e.getParent() !is JetContainerNode) return false // skip nodes with the same range as their parent return when (e.getNode().getElementType()) { BLOCK, LITERAL_STRING_TEMPLATE_ENTRY -> false diff --git a/idea/testData/wordSelection/ForRange/0.kt b/idea/testData/wordSelection/ForRange/0.kt new file mode 100644 index 00000000000..5a4953190c2 --- /dev/null +++ b/idea/testData/wordSelection/ForRange/0.kt @@ -0,0 +1,5 @@ +fun foo() { + for (i in 1..10) { + + } +} \ No newline at end of file diff --git a/idea/testData/wordSelection/ForRange/1.kt b/idea/testData/wordSelection/ForRange/1.kt new file mode 100644 index 00000000000..f37761854bb --- /dev/null +++ b/idea/testData/wordSelection/ForRange/1.kt @@ -0,0 +1,5 @@ +fun foo() { + for (i in 1..10) { + + } +} \ No newline at end of file diff --git a/idea/testData/wordSelection/ForRange/2.kt b/idea/testData/wordSelection/ForRange/2.kt new file mode 100644 index 00000000000..abb4563296b --- /dev/null +++ b/idea/testData/wordSelection/ForRange/2.kt @@ -0,0 +1,5 @@ +fun foo() { + for (i in 1..10) { + + } +} \ No newline at end of file diff --git a/idea/testData/wordSelection/ForRange/3.kt b/idea/testData/wordSelection/ForRange/3.kt new file mode 100644 index 00000000000..77991bee2e0 --- /dev/null +++ b/idea/testData/wordSelection/ForRange/3.kt @@ -0,0 +1,5 @@ +fun foo() { + for (i in 1..10) { + + } +} \ No newline at end of file diff --git a/idea/testData/wordSelection/IfCondition/0.kt b/idea/testData/wordSelection/IfCondition/0.kt new file mode 100644 index 00000000000..e2dd00b1451 --- /dev/null +++ b/idea/testData/wordSelection/IfCondition/0.kt @@ -0,0 +1,5 @@ +fun foo() { + if (!a) { + bar() + } +} \ No newline at end of file diff --git a/idea/testData/wordSelection/IfCondition/1.kt b/idea/testData/wordSelection/IfCondition/1.kt new file mode 100644 index 00000000000..f768fa8bc2d --- /dev/null +++ b/idea/testData/wordSelection/IfCondition/1.kt @@ -0,0 +1,5 @@ +fun foo() { + if (!a) { + bar() + } +} \ No newline at end of file diff --git a/idea/testData/wordSelection/IfCondition/2.kt b/idea/testData/wordSelection/IfCondition/2.kt new file mode 100644 index 00000000000..48e9295237e --- /dev/null +++ b/idea/testData/wordSelection/IfCondition/2.kt @@ -0,0 +1,5 @@ +fun foo() { + if (!a) { + bar() + } +} \ No newline at end of file diff --git a/idea/testData/wordSelection/IfCondition/3.kt b/idea/testData/wordSelection/IfCondition/3.kt new file mode 100644 index 00000000000..d6b5b63df08 --- /dev/null +++ b/idea/testData/wordSelection/IfCondition/3.kt @@ -0,0 +1,5 @@ +fun foo() { + if (!a) { + bar() + } +} \ No newline at end of file diff --git a/idea/tests/org/jetbrains/jet/plugin/WordSelectionTest.java b/idea/tests/org/jetbrains/jet/plugin/WordSelectionTest.java index 994cdf4e2e4..3c794fbf402 100644 --- a/idea/tests/org/jetbrains/jet/plugin/WordSelectionTest.java +++ b/idea/tests/org/jetbrains/jet/plugin/WordSelectionTest.java @@ -55,6 +55,10 @@ public class WordSelectionTest extends JetLightCodeInsightFixtureTestCase { public void testTemplateStringLiteral2() { doTest(); } public void testTemplateStringLiteral3() { doTest(); } + public void testForRange() { doTest(); } + + public void testIfCondition() { doTest(); } + private void doTest() { String dirName = getTestName(false);