From bde34b45e7f330891768b49ce5adf3aae6071ea2 Mon Sep 17 00:00:00 2001 From: "Vitaliy.Bibaev" Date: Fri, 22 Dec 2017 15:15:11 +0300 Subject: [PATCH] Add 'asSequence' operation support --- .../lib/sequence/KotlinSequencesSupport.kt | 2 +- .../exec/sequence/outs/asSequence.out | 32 +++++++++++++++++++ .../exec/sequence/src/misc/AsSequence.kt | 6 ++++ .../exec/sequence/MiscOperationsTest.kt | 2 ++ .../exec/sequence/OperationsTestCase.kt | 4 +-- 5 files changed, 43 insertions(+), 3 deletions(-) create mode 100644 idea/testData/debugger/sequence/exec/sequence/outs/asSequence.out create mode 100644 idea/testData/debugger/sequence/exec/sequence/src/misc/AsSequence.kt diff --git a/idea/idea-jvm/src/com/intellij/debugger/streams/kotlin/lib/sequence/KotlinSequencesSupport.kt b/idea/idea-jvm/src/com/intellij/debugger/streams/kotlin/lib/sequence/KotlinSequencesSupport.kt index a513ca07270..7c5b40f76e7 100644 --- a/idea/idea-jvm/src/com/intellij/debugger/streams/kotlin/lib/sequence/KotlinSequencesSupport.kt +++ b/idea/idea-jvm/src/com/intellij/debugger/streams/kotlin/lib/sequence/KotlinSequencesSupport.kt @@ -16,7 +16,7 @@ import com.intellij.debugger.streams.trace.impl.handler.unified.DistinctTraceHan class KotlinSequencesSupport : LibrarySupportBase() { init { addIntermediateOperationsSupport(*filterOperations("filter", "filterNot", "filterIndexed", - "filterIsInstance", "drop", "dropWhile", "minus", "minusElement", "take", "takeWhile", "onEach")) + "filterIsInstance", "drop", "dropWhile", "minus", "minusElement", "take", "takeWhile", "onEach", "asSequence")) addIntermediateOperationsSupport(*mapOperations("map", "mapIndexed", "requireNoNulls", "withIndex", "zip", "constrainOnce")) diff --git a/idea/testData/debugger/sequence/exec/sequence/outs/asSequence.out b/idea/testData/debugger/sequence/exec/sequence/outs/asSequence.out new file mode 100644 index 00000000000..49097331bd4 --- /dev/null +++ b/idea/testData/debugger/sequence/exec/sequence/outs/asSequence.out @@ -0,0 +1,32 @@ +LineBreakpoint created at AsSequence.kt:5 +Run Java +Connected to the target VM +AsSequence.kt:5 +sequenceOf(1, 2, 3) +.asSequence() +.count() +asSequence + before: 1,3,5 + after: 2,4,6 +count + before: 2,4,6 + after: nothing +mappings for asSequence + direct: + 1 -> 2 + 3 -> 4 + 5 -> 6 + reverse: + 1 <- 2 + 3 <- 4 + 5 <- 6 +mappings for count + direct: + 2 -> nothing + 4 -> nothing + 6 -> nothing + reverse: + empty +Disconnected from the target VM + +Process finished with exit code 0 diff --git a/idea/testData/debugger/sequence/exec/sequence/src/misc/AsSequence.kt b/idea/testData/debugger/sequence/exec/sequence/src/misc/AsSequence.kt new file mode 100644 index 00000000000..414328eb163 --- /dev/null +++ b/idea/testData/debugger/sequence/exec/sequence/src/misc/AsSequence.kt @@ -0,0 +1,6 @@ +package misc + +fun main(args: Array) { + // Breakpoint! + sequenceOf(1, 2, 3).asSequence().count() +} \ No newline at end of file diff --git a/idea/tests/com/intellij/debugger/streams/kotlin/exec/sequence/MiscOperationsTest.kt b/idea/tests/com/intellij/debugger/streams/kotlin/exec/sequence/MiscOperationsTest.kt index 39a44ac6990..64739329ad0 100644 --- a/idea/tests/com/intellij/debugger/streams/kotlin/exec/sequence/MiscOperationsTest.kt +++ b/idea/tests/com/intellij/debugger/streams/kotlin/exec/sequence/MiscOperationsTest.kt @@ -25,4 +25,6 @@ class MiscOperationsTest : OperationsTestCase("misc") { fun testWindowedWithPartial() = doTestWithResult() fun testWindowedWithBigStep() = doTestWithResult() fun testWindowedWithStep() = doTestWithResult() + + fun testAsSequence() = doTestWithResult() } \ No newline at end of file diff --git a/idea/tests/com/intellij/debugger/streams/kotlin/exec/sequence/OperationsTestCase.kt b/idea/tests/com/intellij/debugger/streams/kotlin/exec/sequence/OperationsTestCase.kt index 38f00236a2b..0f2da898eeb 100644 --- a/idea/tests/com/intellij/debugger/streams/kotlin/exec/sequence/OperationsTestCase.kt +++ b/idea/tests/com/intellij/debugger/streams/kotlin/exec/sequence/OperationsTestCase.kt @@ -9,8 +9,8 @@ abstract class OperationsTestCase(private val packageName: String) : KotlinTrace override val appName: String = "sequence" override val librarySupport: LibrarySupportProvider = KotlinSequenceSupportProvider() - fun doTestWithResult() = doTest(false, fullyQualifiedClassName()) - fun doTestWithoutResult() = doTest(true, fullyQualifiedClassName()) + protected fun doTestWithResult() = doTest(false, fullyQualifiedClassName()) + protected fun doTestWithoutResult() = doTest(true, fullyQualifiedClassName()) private fun fullyQualifiedClassName() = "$packageName.${getTestName(false)}" } \ No newline at end of file