Use TerminatedChainBuilder for both java stream & sequences

This commit is contained in:
Vitaliy.Bibaev
2017-12-20 16:00:02 +03:00
committed by Yan Zhulanow
parent 416b15e42b
commit 50d30f3d8b
7 changed files with 58 additions and 26 deletions
@@ -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()))
}
@@ -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))
@@ -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))
@@ -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<KtCallExpression>,
private val callChecker: StreamCallChecker)
: KotlinChainBuilderBase(transformer) {
override val existenceChecker: ExistenceChecker = MyExistenceChecker()
override fun createChainsBuilder(): ChainBuilder = MyBuilderVisitor()
@@ -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.
}
@@ -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.
}
}
@@ -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.
}
}