Reduced amount of ResultTransformation implementations
This commit is contained in:
@@ -67,6 +67,19 @@ abstract class AssignToVariableResultTransformation(
|
||||
|
||||
return initializationStatement
|
||||
}
|
||||
|
||||
companion object {
|
||||
fun createDelegated(delegate: ResultTransformation, initialization: VariableInitialization): AssignToVariableResultTransformation {
|
||||
return object: AssignToVariableResultTransformation(delegate.loop, initialization) {
|
||||
override val presentation: String
|
||||
get() = delegate.presentation
|
||||
|
||||
override fun generateCode(chainedCallGenerator: ChainedCallGenerator): KtExpression {
|
||||
return delegate.generateCode(chainedCallGenerator)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class AssignSequenceTransformationResultTransformation(
|
||||
|
||||
+6
-51
@@ -206,7 +206,8 @@ class FilterToTransformation private constructor(
|
||||
): ResultTransformation {
|
||||
val initialization = targetCollection.detectInitializationBeforeLoop(loop, checkNoOtherUsagesInLoop = true)
|
||||
if (initialization != null && initialization.initializer.hasNoSideEffect()) {
|
||||
return AssignFilterToTransformation(loop, inputVariable, initialization, filter)
|
||||
val transformation = FilterToTransformation(loop, inputVariable, initialization.initializer, filter)
|
||||
return AssignToVariableResultTransformation.createDelegated(transformation, initialization)
|
||||
}
|
||||
else {
|
||||
return FilterToTransformation(loop, inputVariable, targetCollection, filter)
|
||||
@@ -215,22 +216,6 @@ class FilterToTransformation private constructor(
|
||||
}
|
||||
}
|
||||
|
||||
class AssignFilterToTransformation(
|
||||
loop: KtForExpression,
|
||||
private val inputVariable: KtCallableDeclaration,
|
||||
targetCollectionInitialization: VariableInitialization,
|
||||
private val filter: KtExpression
|
||||
) : AssignToVariableResultTransformation(loop, targetCollectionInitialization) {
|
||||
|
||||
override val presentation: String
|
||||
get() = "filterTo(){}"
|
||||
|
||||
override fun generateCode(chainedCallGenerator: ChainedCallGenerator): KtExpression {
|
||||
val lambda = generateLambda(inputVariable, filter)
|
||||
return chainedCallGenerator.generate("filterTo($0) $1:'{}'", initialization.initializer, lambda)
|
||||
}
|
||||
}
|
||||
|
||||
class MapToTransformation private constructor(
|
||||
loop: KtForExpression,
|
||||
private val inputVariable: KtCallableDeclaration,
|
||||
@@ -255,7 +240,8 @@ class MapToTransformation private constructor(
|
||||
): ResultTransformation {
|
||||
val initialization = targetCollection.detectInitializationBeforeLoop(loop, checkNoOtherUsagesInLoop = true)
|
||||
if (initialization != null && initialization.initializer.hasNoSideEffect()) {
|
||||
return AssignMapToTransformation(loop, inputVariable, initialization, mapping)
|
||||
val transformation = MapToTransformation(loop, inputVariable, initialization.initializer, mapping)
|
||||
return AssignToVariableResultTransformation.createDelegated(transformation, initialization)
|
||||
}
|
||||
else {
|
||||
return MapToTransformation(loop, inputVariable, targetCollection, mapping)
|
||||
@@ -264,22 +250,6 @@ class MapToTransformation private constructor(
|
||||
}
|
||||
}
|
||||
|
||||
class AssignMapToTransformation(
|
||||
loop: KtForExpression,
|
||||
private val inputVariable: KtCallableDeclaration,
|
||||
targetCollectionInitialization: VariableInitialization,
|
||||
private val mapping: KtExpression
|
||||
) : AssignToVariableResultTransformation(loop, targetCollectionInitialization) {
|
||||
|
||||
override val presentation: String
|
||||
get() = "mapTo(){}"
|
||||
|
||||
override fun generateCode(chainedCallGenerator: ChainedCallGenerator): KtExpression {
|
||||
val lambda = generateLambda(inputVariable, mapping)
|
||||
return chainedCallGenerator.generate("mapTo($0) $1:'{}'", initialization.initializer, lambda)
|
||||
}
|
||||
}
|
||||
|
||||
class FlatMapToTransformation private constructor(
|
||||
loop: KtForExpression,
|
||||
private val inputVariable: KtCallableDeclaration,
|
||||
@@ -304,7 +274,8 @@ class FlatMapToTransformation private constructor(
|
||||
): ResultTransformation {
|
||||
val initialization = targetCollection.detectInitializationBeforeLoop(loop, checkNoOtherUsagesInLoop = true)
|
||||
if (initialization != null && initialization.initializer.hasNoSideEffect()) {
|
||||
return AssignFlatMapToTransformation(loop, inputVariable, initialization, transform)
|
||||
val transformation = FlatMapToTransformation(loop, inputVariable, initialization.initializer, transform)
|
||||
return AssignToVariableResultTransformation.createDelegated(transformation, initialization)
|
||||
}
|
||||
else {
|
||||
return FlatMapToTransformation(loop, inputVariable, targetCollection, transform)
|
||||
@@ -313,22 +284,6 @@ class FlatMapToTransformation private constructor(
|
||||
}
|
||||
}
|
||||
|
||||
class AssignFlatMapToTransformation(
|
||||
loop: KtForExpression,
|
||||
private val inputVariable: KtCallableDeclaration,
|
||||
targetCollectionInitialization: VariableInitialization,
|
||||
private val transform: KtExpression
|
||||
) : AssignToVariableResultTransformation(loop, targetCollectionInitialization) {
|
||||
|
||||
override val presentation: String
|
||||
get() = "flatMapTo(){}"
|
||||
|
||||
override fun generateCode(chainedCallGenerator: ChainedCallGenerator): KtExpression {
|
||||
val lambda = generateLambda(inputVariable, transform)
|
||||
return chainedCallGenerator.generate("flatMapTo($0) $1:'{}'", initialization.initializer, lambda)
|
||||
}
|
||||
}
|
||||
|
||||
class AssignToListTransformation(
|
||||
loop: KtForExpression,
|
||||
initialization: VariableInitialization
|
||||
|
||||
Reference in New Issue
Block a user