From 50d30f3d8ba255d24452b50151247abf6e123fe9 Mon Sep 17 00:00:00 2001 From: "Vitaliy.Bibaev" Date: Wed, 20 Dec 2017 16:00:02 +0300 Subject: [PATCH] Use TerminatedChainBuilder for both java stream & sequences --- .../java/JavaStandardLibrarySupportProvider.kt | 8 ++++++-- .../lib/java/StreamExLibrarySupportProvider.kt | 7 +++++-- .../sequence/KotlinSequenceSupportProvider.kt | 9 +++++++-- ...ainBuilder.kt => TerminatedChainBuilder.kt} | 7 ++++--- .../psi/sequence/KotlinSequenceChainBuilder.kt | 17 ----------------- .../kotlin/psi/sequence/SequenceCallChecker.kt | 18 ++++++++++++++++++ .../psi/sequence/SequenceTypeExtractor.kt | 18 ++++++++++++++++++ 7 files changed, 58 insertions(+), 26 deletions(-) rename idea/idea-jvm/src/com/intellij/debugger/streams/kotlin/psi/impl/{KotlinJavaStreamChainBuilder.kt => TerminatedChainBuilder.kt} (89%) delete mode 100644 idea/idea-jvm/src/com/intellij/debugger/streams/kotlin/psi/sequence/KotlinSequenceChainBuilder.kt create mode 100644 idea/idea-jvm/src/com/intellij/debugger/streams/kotlin/psi/sequence/SequenceCallChecker.kt create mode 100644 idea/idea-jvm/src/com/intellij/debugger/streams/kotlin/psi/sequence/SequenceTypeExtractor.kt diff --git a/idea/idea-jvm/src/com/intellij/debugger/streams/kotlin/lib/java/JavaStandardLibrarySupportProvider.kt b/idea/idea-jvm/src/com/intellij/debugger/streams/kotlin/lib/java/JavaStandardLibrarySupportProvider.kt index db67ff57e27..1f4ce0e187e 100644 --- a/idea/idea-jvm/src/com/intellij/debugger/streams/kotlin/lib/java/JavaStandardLibrarySupportProvider.kt +++ b/idea/idea-jvm/src/com/intellij/debugger/streams/kotlin/lib/java/JavaStandardLibrarySupportProvider.kt @@ -2,8 +2,10 @@ package com.intellij.debugger.streams.kotlin.lib.java import com.intellij.debugger.streams.kotlin.lib.LibraryUtil -import com.intellij.debugger.streams.kotlin.psi.impl.KotlinJavaStreamChainBuilder +import com.intellij.debugger.streams.kotlin.psi.impl.KotlinChainTransformerImpl import com.intellij.debugger.streams.kotlin.psi.impl.PackageBasedCallChecker +import com.intellij.debugger.streams.kotlin.psi.impl.TerminatedChainBuilder +import com.intellij.debugger.streams.kotlin.psi.java.JavaStreamChainTypeExtractor import com.intellij.debugger.streams.kotlin.trace.dsl.JavaPeekCallFactory import com.intellij.debugger.streams.kotlin.trace.dsl.KotlinStatementFactory import com.intellij.debugger.streams.kotlin.trace.impl.KotlinTraceExpressionBuilder @@ -20,7 +22,9 @@ import com.intellij.openapi.project.Project */ class JavaStandardLibrarySupportProvider : LibrarySupportProvider { private companion object { - val builder = KotlinJavaStreamChainBuilder(PackageBasedCallChecker("java.util.stream")) + val builder = TerminatedChainBuilder( + KotlinChainTransformerImpl(JavaStreamChainTypeExtractor()), + PackageBasedCallChecker("java.util.stream")) val support = StandardLibrarySupport() val dsl = DslImpl(KotlinStatementFactory(JavaPeekCallFactory())) } diff --git a/idea/idea-jvm/src/com/intellij/debugger/streams/kotlin/lib/java/StreamExLibrarySupportProvider.kt b/idea/idea-jvm/src/com/intellij/debugger/streams/kotlin/lib/java/StreamExLibrarySupportProvider.kt index e5a7b0028d0..9771d5fe96f 100644 --- a/idea/idea-jvm/src/com/intellij/debugger/streams/kotlin/lib/java/StreamExLibrarySupportProvider.kt +++ b/idea/idea-jvm/src/com/intellij/debugger/streams/kotlin/lib/java/StreamExLibrarySupportProvider.kt @@ -2,8 +2,10 @@ package com.intellij.debugger.streams.kotlin.lib.java import com.intellij.debugger.streams.kotlin.lib.LibraryUtil -import com.intellij.debugger.streams.kotlin.psi.impl.KotlinJavaStreamChainBuilder +import com.intellij.debugger.streams.kotlin.psi.impl.KotlinChainTransformerImpl import com.intellij.debugger.streams.kotlin.psi.impl.PackageBasedCallChecker +import com.intellij.debugger.streams.kotlin.psi.impl.TerminatedChainBuilder +import com.intellij.debugger.streams.kotlin.psi.java.JavaStreamChainTypeExtractor import com.intellij.debugger.streams.kotlin.trace.dsl.JavaPeekCallFactory import com.intellij.debugger.streams.kotlin.trace.dsl.KotlinStatementFactory import com.intellij.debugger.streams.kotlin.trace.impl.KotlinTraceExpressionBuilder @@ -20,7 +22,8 @@ import com.intellij.openapi.project.Project */ class StreamExLibrarySupportProvider : LibrarySupportProvider { private companion object { - val streamChainBuilder = KotlinJavaStreamChainBuilder(PackageBasedCallChecker("one.util.streamex")) + val streamChainBuilder = TerminatedChainBuilder(KotlinChainTransformerImpl(JavaStreamChainTypeExtractor()), + PackageBasedCallChecker("one.util.streamex")) val support = StreamExLibrarySupport() val dsl = DslImpl(KotlinStatementFactory(JavaPeekCallFactory())) val expressionBuilder = KotlinTraceExpressionBuilder(dsl, support.createHandlerFactory(dsl)) diff --git a/idea/idea-jvm/src/com/intellij/debugger/streams/kotlin/lib/sequence/KotlinSequenceSupportProvider.kt b/idea/idea-jvm/src/com/intellij/debugger/streams/kotlin/lib/sequence/KotlinSequenceSupportProvider.kt index eaabca3328d..63782e303a8 100644 --- a/idea/idea-jvm/src/com/intellij/debugger/streams/kotlin/lib/sequence/KotlinSequenceSupportProvider.kt +++ b/idea/idea-jvm/src/com/intellij/debugger/streams/kotlin/lib/sequence/KotlinSequenceSupportProvider.kt @@ -2,7 +2,10 @@ package com.intellij.debugger.streams.kotlin.lib.sequence import com.intellij.debugger.streams.kotlin.lib.LibraryUtil -import com.intellij.debugger.streams.kotlin.psi.sequence.KotlinSequenceChainBuilder +import com.intellij.debugger.streams.kotlin.psi.impl.KotlinChainTransformerImpl +import com.intellij.debugger.streams.kotlin.psi.impl.TerminatedChainBuilder +import com.intellij.debugger.streams.kotlin.psi.sequence.SequenceCallChecker +import com.intellij.debugger.streams.kotlin.psi.sequence.SequenceTypeExtractor import com.intellij.debugger.streams.kotlin.trace.dsl.KotlinCollectionsPeekCallFactory import com.intellij.debugger.streams.kotlin.trace.dsl.KotlinStatementFactory import com.intellij.debugger.streams.kotlin.trace.impl.KotlinTraceExpressionBuilder @@ -20,7 +23,9 @@ class KotlinSequenceSupportProvider : LibrarySupportProvider { override fun getLanguageId(): String = LibraryUtil.KOTLIN_LANGUAGE_ID private companion object { - val builder: StreamChainBuilder = KotlinSequenceChainBuilder() + val builder: StreamChainBuilder = TerminatedChainBuilder( + KotlinChainTransformerImpl(SequenceTypeExtractor()), + SequenceCallChecker()) val support = KotlinSequencesSupport() val dsl = DslImpl(KotlinStatementFactory(KotlinCollectionsPeekCallFactory())) val expressionBuilder = KotlinTraceExpressionBuilder(dsl, support.createHandlerFactory(dsl)) diff --git a/idea/idea-jvm/src/com/intellij/debugger/streams/kotlin/psi/impl/KotlinJavaStreamChainBuilder.kt b/idea/idea-jvm/src/com/intellij/debugger/streams/kotlin/psi/impl/TerminatedChainBuilder.kt similarity index 89% rename from idea/idea-jvm/src/com/intellij/debugger/streams/kotlin/psi/impl/KotlinJavaStreamChainBuilder.kt rename to idea/idea-jvm/src/com/intellij/debugger/streams/kotlin/psi/impl/TerminatedChainBuilder.kt index 673aaf348ee..3b535e8722f 100644 --- a/idea/idea-jvm/src/com/intellij/debugger/streams/kotlin/psi/impl/KotlinJavaStreamChainBuilder.kt +++ b/idea/idea-jvm/src/com/intellij/debugger/streams/kotlin/psi/impl/TerminatedChainBuilder.kt @@ -2,16 +2,17 @@ package com.intellij.debugger.streams.kotlin.psi.impl import com.intellij.debugger.streams.kotlin.psi.StreamCallChecker -import com.intellij.debugger.streams.kotlin.psi.java.JavaStreamChainTypeExtractor import com.intellij.debugger.streams.kotlin.psi.previousCall +import com.intellij.debugger.streams.psi.ChainTransformer import org.jetbrains.kotlin.psi.KtCallExpression import java.util.* /** * @author Vitaliy.Bibaev */ -class KotlinJavaStreamChainBuilder(private val callChecker: StreamCallChecker) - : KotlinChainBuilderBase(KotlinChainTransformerImpl(JavaStreamChainTypeExtractor())) { +open class TerminatedChainBuilder(transformer: ChainTransformer, + private val callChecker: StreamCallChecker) + : KotlinChainBuilderBase(transformer) { override val existenceChecker: ExistenceChecker = MyExistenceChecker() override fun createChainsBuilder(): ChainBuilder = MyBuilderVisitor() diff --git a/idea/idea-jvm/src/com/intellij/debugger/streams/kotlin/psi/sequence/KotlinSequenceChainBuilder.kt b/idea/idea-jvm/src/com/intellij/debugger/streams/kotlin/psi/sequence/KotlinSequenceChainBuilder.kt deleted file mode 100644 index de4a54feb30..00000000000 --- a/idea/idea-jvm/src/com/intellij/debugger/streams/kotlin/psi/sequence/KotlinSequenceChainBuilder.kt +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2000-2017 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. -package com.intellij.debugger.streams.kotlin.psi.sequence - -import com.intellij.debugger.streams.kotlin.psi.impl.KotlinChainBuilderBase -import com.intellij.debugger.streams.kotlin.psi.impl.KotlinChainTransformerImpl - -/** - * @author Vitaliy.Bibaev - */ -class KotlinSequenceChainBuilder : KotlinChainBuilderBase(KotlinChainTransformerImpl(TODO())) { - override fun createChainsBuilder(): ChainBuilder { - TODO("not implemented") //To change body of created functions use File | Settings | File Templates. - } - - override val existenceChecker: ExistenceChecker - get() = TODO("not implemented") //To change initializer of created properties use File | Settings | File Templates. -} \ No newline at end of file diff --git a/idea/idea-jvm/src/com/intellij/debugger/streams/kotlin/psi/sequence/SequenceCallChecker.kt b/idea/idea-jvm/src/com/intellij/debugger/streams/kotlin/psi/sequence/SequenceCallChecker.kt new file mode 100644 index 00000000000..081a026f0df --- /dev/null +++ b/idea/idea-jvm/src/com/intellij/debugger/streams/kotlin/psi/sequence/SequenceCallChecker.kt @@ -0,0 +1,18 @@ +// Copyright 2000-2017 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +package com.intellij.debugger.streams.kotlin.psi.sequence + +import com.intellij.debugger.streams.kotlin.psi.StreamCallChecker +import org.jetbrains.kotlin.psi.KtCallExpression + +/** + * @author Vitaliy.Bibaev + */ +class SequenceCallChecker : StreamCallChecker { + override fun isIntermediateCall(expression: KtCallExpression): Boolean { + TODO("not implemented") //To change body of created functions use File | Settings | File Templates. + } + + override fun isTerminationCall(expression: KtCallExpression): Boolean { + TODO("not implemented") //To change body of created functions use File | Settings | File Templates. + } +} \ No newline at end of file diff --git a/idea/idea-jvm/src/com/intellij/debugger/streams/kotlin/psi/sequence/SequenceTypeExtractor.kt b/idea/idea-jvm/src/com/intellij/debugger/streams/kotlin/psi/sequence/SequenceTypeExtractor.kt new file mode 100644 index 00000000000..7c21f0d6f4e --- /dev/null +++ b/idea/idea-jvm/src/com/intellij/debugger/streams/kotlin/psi/sequence/SequenceTypeExtractor.kt @@ -0,0 +1,18 @@ +// Copyright 2000-2017 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +package com.intellij.debugger.streams.kotlin.psi.sequence + +import com.intellij.debugger.streams.kotlin.psi.CallTypeExtractor +import org.jetbrains.kotlin.psi.KtCallExpression + +/** + * @author Vitaliy.Bibaev + */ +class SequenceTypeExtractor : CallTypeExtractor { + override fun extractIntermediateCallTypes(call: KtCallExpression): CallTypeExtractor.IntermediateCallTypes { + TODO("not implemented") //To change body of created functions use File | Settings | File Templates. + } + + override fun extractTerminalCallTypes(call: KtCallExpression): CallTypeExtractor.TerminatorCallTypes { + TODO("not implemented") //To change body of created functions use File | Settings | File Templates. + } +} \ No newline at end of file