Transformation not necessary has real input variable
This commit is contained in:
@@ -37,7 +37,6 @@ interface ChainedCallGenerator {
|
|||||||
* Base interface for recognized transformations of the sequence. Should always be either [SequenceTransformation] or [ResultTransformation]
|
* Base interface for recognized transformations of the sequence. Should always be either [SequenceTransformation] or [ResultTransformation]
|
||||||
*/
|
*/
|
||||||
interface Transformation {
|
interface Transformation {
|
||||||
val inputVariable: KtCallableDeclaration
|
|
||||||
val loop: KtForExpression
|
val loop: KtForExpression
|
||||||
|
|
||||||
val presentation: String
|
val presentation: String
|
||||||
|
|||||||
+22
-26
@@ -33,9 +33,9 @@ import org.jetbrains.kotlin.renderer.render
|
|||||||
|
|
||||||
class AddToCollectionTransformation(
|
class AddToCollectionTransformation(
|
||||||
loop: KtForExpression,
|
loop: KtForExpression,
|
||||||
inputVariable: KtCallableDeclaration,
|
private val inputVariable: KtCallableDeclaration,
|
||||||
private val targetCollection: KtExpression
|
private val targetCollection: KtExpression
|
||||||
) : ReplaceLoopResultTransformation(loop, inputVariable) {
|
) : ReplaceLoopResultTransformation(loop) {
|
||||||
|
|
||||||
override fun mergeWithPrevious(previousTransformation: SequenceTransformation): ResultTransformation? {
|
override fun mergeWithPrevious(previousTransformation: SequenceTransformation): ResultTransformation? {
|
||||||
return when (previousTransformation) {
|
return when (previousTransformation) {
|
||||||
@@ -120,7 +120,7 @@ class AddToCollectionTransformation(
|
|||||||
when {
|
when {
|
||||||
canChangeInitializerType(collectionInitialization, KotlinBuiltIns.FQ_NAMES.list, state.outerLoop) -> {
|
canChangeInitializerType(collectionInitialization, KotlinBuiltIns.FQ_NAMES.list, state.outerLoop) -> {
|
||||||
val transformation = if (argumentIsInputVariable) {
|
val transformation = if (argumentIsInputVariable) {
|
||||||
AssignToListTransformation(state.outerLoop, state.inputVariable, collectionInitialization)
|
AssignToListTransformation(state.outerLoop, collectionInitialization)
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
val mapTransformation = MapTransformation(state.outerLoop, state.inputVariable, addOperationArgument)
|
val mapTransformation = MapTransformation(state.outerLoop, state.inputVariable, addOperationArgument)
|
||||||
@@ -131,7 +131,7 @@ class AddToCollectionTransformation(
|
|||||||
|
|
||||||
canChangeInitializerType(collectionInitialization, KotlinBuiltIns.FQ_NAMES.mutableList, state.outerLoop) -> {
|
canChangeInitializerType(collectionInitialization, KotlinBuiltIns.FQ_NAMES.mutableList, state.outerLoop) -> {
|
||||||
if (argumentIsInputVariable) {
|
if (argumentIsInputVariable) {
|
||||||
val transformation = AssignToMutableListTransformation(state.outerLoop, state.inputVariable, collectionInitialization)
|
val transformation = AssignToMutableListTransformation(state.outerLoop, collectionInitialization)
|
||||||
return ResultTransformationMatch(transformation)
|
return ResultTransformationMatch(transformation)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -141,11 +141,11 @@ class AddToCollectionTransformation(
|
|||||||
CollectionKind.SET -> {
|
CollectionKind.SET -> {
|
||||||
val assignToSetTransformation = when {
|
val assignToSetTransformation = when {
|
||||||
canChangeInitializerType(collectionInitialization, KotlinBuiltIns.FQ_NAMES.set, state.outerLoop) -> {
|
canChangeInitializerType(collectionInitialization, KotlinBuiltIns.FQ_NAMES.set, state.outerLoop) -> {
|
||||||
AssignToSetTransformation(state.outerLoop, state.inputVariable/*TODO: it's not correct and it looks like not all transformations should have inputVariable*/, collectionInitialization)
|
AssignToSetTransformation(state.outerLoop, collectionInitialization)
|
||||||
}
|
}
|
||||||
|
|
||||||
canChangeInitializerType(collectionInitialization, KotlinBuiltIns.FQ_NAMES.mutableSet, state.outerLoop) -> {
|
canChangeInitializerType(collectionInitialization, KotlinBuiltIns.FQ_NAMES.mutableSet, state.outerLoop) -> {
|
||||||
AssignToMutableSetTransformation(state.outerLoop, state.inputVariable, collectionInitialization)
|
AssignToMutableSetTransformation(state.outerLoop, collectionInitialization)
|
||||||
}
|
}
|
||||||
|
|
||||||
else -> return null
|
else -> return null
|
||||||
@@ -178,10 +178,10 @@ class AddToCollectionTransformation(
|
|||||||
|
|
||||||
class FilterToTransformation private constructor(
|
class FilterToTransformation private constructor(
|
||||||
loop: KtForExpression,
|
loop: KtForExpression,
|
||||||
inputVariable: KtCallableDeclaration,
|
private val inputVariable: KtCallableDeclaration,
|
||||||
private val targetCollection: KtExpression,
|
private val targetCollection: KtExpression,
|
||||||
private val filter: KtExpression
|
private val filter: KtExpression
|
||||||
) : ReplaceLoopResultTransformation(loop, inputVariable) {
|
) : ReplaceLoopResultTransformation(loop) {
|
||||||
|
|
||||||
override val presentation: String
|
override val presentation: String
|
||||||
get() = "filterTo(){}"
|
get() = "filterTo(){}"
|
||||||
@@ -211,10 +211,10 @@ class FilterToTransformation private constructor(
|
|||||||
|
|
||||||
class AssignFilterToTransformation(
|
class AssignFilterToTransformation(
|
||||||
loop: KtForExpression,
|
loop: KtForExpression,
|
||||||
inputVariable: KtCallableDeclaration,
|
private val inputVariable: KtCallableDeclaration,
|
||||||
targetCollectionInitialization: VariableInitialization,
|
targetCollectionInitialization: VariableInitialization,
|
||||||
private val filter: KtExpression
|
private val filter: KtExpression
|
||||||
) : AssignToVariableResultTransformation(loop, inputVariable, targetCollectionInitialization) {
|
) : AssignToVariableResultTransformation(loop, targetCollectionInitialization) {
|
||||||
|
|
||||||
override val presentation: String
|
override val presentation: String
|
||||||
get() = "filterTo(){}"
|
get() = "filterTo(){}"
|
||||||
@@ -227,10 +227,10 @@ class AssignFilterToTransformation(
|
|||||||
|
|
||||||
class MapToTransformation private constructor(
|
class MapToTransformation private constructor(
|
||||||
loop: KtForExpression,
|
loop: KtForExpression,
|
||||||
inputVariable: KtCallableDeclaration,
|
private val inputVariable: KtCallableDeclaration,
|
||||||
private val targetCollection: KtExpression,
|
private val targetCollection: KtExpression,
|
||||||
private val mapping: KtExpression
|
private val mapping: KtExpression
|
||||||
) : ReplaceLoopResultTransformation(loop, inputVariable) {
|
) : ReplaceLoopResultTransformation(loop) {
|
||||||
|
|
||||||
override val presentation: String
|
override val presentation: String
|
||||||
get() = "mapTo(){}"
|
get() = "mapTo(){}"
|
||||||
@@ -260,10 +260,10 @@ class MapToTransformation private constructor(
|
|||||||
|
|
||||||
class AssignMapToTransformation(
|
class AssignMapToTransformation(
|
||||||
loop: KtForExpression,
|
loop: KtForExpression,
|
||||||
inputVariable: KtCallableDeclaration,
|
private val inputVariable: KtCallableDeclaration,
|
||||||
targetCollectionInitialization: VariableInitialization,
|
targetCollectionInitialization: VariableInitialization,
|
||||||
private val mapping: KtExpression
|
private val mapping: KtExpression
|
||||||
) : AssignToVariableResultTransformation(loop, inputVariable, targetCollectionInitialization) {
|
) : AssignToVariableResultTransformation(loop, targetCollectionInitialization) {
|
||||||
|
|
||||||
override val presentation: String
|
override val presentation: String
|
||||||
get() = "mapTo(){}"
|
get() = "mapTo(){}"
|
||||||
@@ -276,10 +276,10 @@ class AssignMapToTransformation(
|
|||||||
|
|
||||||
class FlatMapToTransformation private constructor(
|
class FlatMapToTransformation private constructor(
|
||||||
loop: KtForExpression,
|
loop: KtForExpression,
|
||||||
inputVariable: KtCallableDeclaration,
|
private val inputVariable: KtCallableDeclaration,
|
||||||
private val targetCollection: KtExpression,
|
private val targetCollection: KtExpression,
|
||||||
private val transform: KtExpression
|
private val transform: KtExpression
|
||||||
) : ReplaceLoopResultTransformation(loop, inputVariable) {
|
) : ReplaceLoopResultTransformation(loop) {
|
||||||
|
|
||||||
override val presentation: String
|
override val presentation: String
|
||||||
get() = "flatMapTo(){}"
|
get() = "flatMapTo(){}"
|
||||||
@@ -309,10 +309,10 @@ class FlatMapToTransformation private constructor(
|
|||||||
|
|
||||||
class AssignFlatMapToTransformation(
|
class AssignFlatMapToTransformation(
|
||||||
loop: KtForExpression,
|
loop: KtForExpression,
|
||||||
inputVariable: KtCallableDeclaration,
|
private val inputVariable: KtCallableDeclaration,
|
||||||
targetCollectionInitialization: VariableInitialization,
|
targetCollectionInitialization: VariableInitialization,
|
||||||
private val transform: KtExpression
|
private val transform: KtExpression
|
||||||
) : AssignToVariableResultTransformation(loop, inputVariable, targetCollectionInitialization) {
|
) : AssignToVariableResultTransformation(loop, targetCollectionInitialization) {
|
||||||
|
|
||||||
override val presentation: String
|
override val presentation: String
|
||||||
get() = "flatMapTo(){}"
|
get() = "flatMapTo(){}"
|
||||||
@@ -325,9 +325,8 @@ class AssignFlatMapToTransformation(
|
|||||||
|
|
||||||
class AssignToListTransformation(
|
class AssignToListTransformation(
|
||||||
loop: KtForExpression,
|
loop: KtForExpression,
|
||||||
inputVariable: KtCallableDeclaration,
|
|
||||||
initialization: VariableInitialization
|
initialization: VariableInitialization
|
||||||
) : AssignToVariableResultTransformation(loop, inputVariable, initialization) {
|
) : AssignToVariableResultTransformation(loop, initialization) {
|
||||||
|
|
||||||
override val presentation: String
|
override val presentation: String
|
||||||
get() = "toList()"
|
get() = "toList()"
|
||||||
@@ -344,9 +343,8 @@ class AssignToListTransformation(
|
|||||||
|
|
||||||
class AssignToMutableListTransformation(
|
class AssignToMutableListTransformation(
|
||||||
loop: KtForExpression,
|
loop: KtForExpression,
|
||||||
inputVariable: KtCallableDeclaration,
|
|
||||||
initialization: VariableInitialization
|
initialization: VariableInitialization
|
||||||
) : AssignToVariableResultTransformation(loop, inputVariable, initialization) {
|
) : AssignToVariableResultTransformation(loop, initialization) {
|
||||||
|
|
||||||
override val presentation: String
|
override val presentation: String
|
||||||
get() = "toMutableList()"
|
get() = "toMutableList()"
|
||||||
@@ -358,9 +356,8 @@ class AssignToMutableListTransformation(
|
|||||||
|
|
||||||
class AssignToSetTransformation(
|
class AssignToSetTransformation(
|
||||||
loop: KtForExpression,
|
loop: KtForExpression,
|
||||||
inputVariable: KtCallableDeclaration,
|
|
||||||
initialization: VariableInitialization
|
initialization: VariableInitialization
|
||||||
) : AssignToVariableResultTransformation(loop, inputVariable, initialization) {
|
) : AssignToVariableResultTransformation(loop, initialization) {
|
||||||
|
|
||||||
override val presentation: String
|
override val presentation: String
|
||||||
get() = "toSet()"
|
get() = "toSet()"
|
||||||
@@ -372,9 +369,8 @@ class AssignToSetTransformation(
|
|||||||
|
|
||||||
class AssignToMutableSetTransformation(
|
class AssignToMutableSetTransformation(
|
||||||
loop: KtForExpression,
|
loop: KtForExpression,
|
||||||
inputVariable: KtCallableDeclaration,
|
|
||||||
initialization: VariableInitialization
|
initialization: VariableInitialization
|
||||||
) : AssignToVariableResultTransformation(loop, inputVariable, initialization) {
|
) : AssignToVariableResultTransformation(loop, initialization) {
|
||||||
|
|
||||||
override val presentation: String
|
override val presentation: String
|
||||||
get() = "toMutableSet()"
|
get() = "toMutableSet()"
|
||||||
|
|||||||
+2
-2
@@ -28,10 +28,10 @@ import org.jetbrains.kotlin.psi.*
|
|||||||
|
|
||||||
class CountTransformation(
|
class CountTransformation(
|
||||||
loop: KtForExpression,
|
loop: KtForExpression,
|
||||||
inputVariable: KtCallableDeclaration,
|
private val inputVariable: KtCallableDeclaration,
|
||||||
initialization: VariableInitialization,
|
initialization: VariableInitialization,
|
||||||
private val filter: KtExpression?
|
private val filter: KtExpression?
|
||||||
) : AssignToVariableResultTransformation(loop, inputVariable, initialization) {
|
) : AssignToVariableResultTransformation(loop, initialization) {
|
||||||
|
|
||||||
override fun mergeWithPrevious(previousTransformation: SequenceTransformation): ResultTransformation? {
|
override fun mergeWithPrevious(previousTransformation: SequenceTransformation): ResultTransformation? {
|
||||||
if (previousTransformation !is FilterTransformation) return null
|
if (previousTransformation !is FilterTransformation) return null
|
||||||
|
|||||||
+7
-5
@@ -22,22 +22,24 @@ import org.jetbrains.kotlin.idea.caches.resolve.analyze
|
|||||||
import org.jetbrains.kotlin.idea.intentions.loopToCallChain.*
|
import org.jetbrains.kotlin.idea.intentions.loopToCallChain.*
|
||||||
import org.jetbrains.kotlin.idea.intentions.loopToCallChain.sequence.FilterTransformation
|
import org.jetbrains.kotlin.idea.intentions.loopToCallChain.sequence.FilterTransformation
|
||||||
import org.jetbrains.kotlin.lexer.KtTokens
|
import org.jetbrains.kotlin.lexer.KtTokens
|
||||||
import org.jetbrains.kotlin.psi.*
|
import org.jetbrains.kotlin.psi.KtBinaryExpression
|
||||||
|
import org.jetbrains.kotlin.psi.KtBreakExpression
|
||||||
|
import org.jetbrains.kotlin.psi.KtExpression
|
||||||
|
import org.jetbrains.kotlin.psi.KtForExpression
|
||||||
import org.jetbrains.kotlin.resolve.constants.evaluate.ConstantExpressionEvaluator
|
import org.jetbrains.kotlin.resolve.constants.evaluate.ConstantExpressionEvaluator
|
||||||
import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
|
import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
|
||||||
|
|
||||||
class FindAndAssignTransformation(
|
class FindAndAssignTransformation(
|
||||||
loop: KtForExpression,
|
loop: KtForExpression,
|
||||||
inputVariable: KtCallableDeclaration,
|
|
||||||
private val generator: FindOperatorGenerator,
|
private val generator: FindOperatorGenerator,
|
||||||
initialization: VariableInitialization,
|
initialization: VariableInitialization,
|
||||||
private val filter: KtExpression? = null
|
private val filter: KtExpression? = null
|
||||||
) : AssignToVariableResultTransformation(loop, inputVariable, initialization) {
|
) : AssignToVariableResultTransformation(loop, initialization) {
|
||||||
|
|
||||||
override fun mergeWithPrevious(previousTransformation: SequenceTransformation): ResultTransformation? {
|
override fun mergeWithPrevious(previousTransformation: SequenceTransformation): ResultTransformation? {
|
||||||
if (previousTransformation !is FilterTransformation) return null
|
if (previousTransformation !is FilterTransformation) return null
|
||||||
assert(filter == null) { "Should not happen because no 2 consecutive FilterTransformation's possible"}
|
assert(filter == null) { "Should not happen because no 2 consecutive FilterTransformation's possible"}
|
||||||
return FindAndAssignTransformation(loop, previousTransformation.inputVariable, generator, initialization, previousTransformation.effectiveCondition())
|
return FindAndAssignTransformation(loop, generator, initialization, previousTransformation.effectiveCondition())
|
||||||
}
|
}
|
||||||
|
|
||||||
override val presentation: String
|
override val presentation: String
|
||||||
@@ -102,7 +104,7 @@ class FindAndAssignTransformation(
|
|||||||
|
|
||||||
val generator = buildFindOperationGenerator(right, initialization.initializer, state.inputVariable, findFirst) ?: return null
|
val generator = buildFindOperationGenerator(right, initialization.initializer, state.inputVariable, findFirst) ?: return null
|
||||||
|
|
||||||
val transformation = FindAndAssignTransformation(state.outerLoop, state.inputVariable, generator, initialization)
|
val transformation = FindAndAssignTransformation(state.outerLoop, generator, initialization)
|
||||||
return ResultTransformationMatch(transformation)
|
return ResultTransformationMatch(transformation)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-4
@@ -18,7 +18,6 @@ package org.jetbrains.kotlin.idea.intentions.loopToCallChain.result
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.idea.intentions.loopToCallChain.*
|
import org.jetbrains.kotlin.idea.intentions.loopToCallChain.*
|
||||||
import org.jetbrains.kotlin.idea.intentions.loopToCallChain.sequence.FilterTransformation
|
import org.jetbrains.kotlin.idea.intentions.loopToCallChain.sequence.FilterTransformation
|
||||||
import org.jetbrains.kotlin.psi.KtCallableDeclaration
|
|
||||||
import org.jetbrains.kotlin.psi.KtExpression
|
import org.jetbrains.kotlin.psi.KtExpression
|
||||||
import org.jetbrains.kotlin.psi.KtForExpression
|
import org.jetbrains.kotlin.psi.KtForExpression
|
||||||
import org.jetbrains.kotlin.psi.KtReturnExpression
|
import org.jetbrains.kotlin.psi.KtReturnExpression
|
||||||
@@ -26,7 +25,6 @@ import org.jetbrains.kotlin.psi.psiUtil.PsiChildRange
|
|||||||
|
|
||||||
class FindAndReturnTransformation(
|
class FindAndReturnTransformation(
|
||||||
override val loop: KtForExpression,
|
override val loop: KtForExpression,
|
||||||
override val inputVariable: KtCallableDeclaration,
|
|
||||||
private val generator: FindOperatorGenerator,
|
private val generator: FindOperatorGenerator,
|
||||||
private val endReturn: KtReturnExpression,
|
private val endReturn: KtReturnExpression,
|
||||||
private val filter: KtExpression? = null
|
private val filter: KtExpression? = null
|
||||||
@@ -35,7 +33,7 @@ class FindAndReturnTransformation(
|
|||||||
override fun mergeWithPrevious(previousTransformation: SequenceTransformation): ResultTransformation? {
|
override fun mergeWithPrevious(previousTransformation: SequenceTransformation): ResultTransformation? {
|
||||||
if (previousTransformation !is FilterTransformation) return null
|
if (previousTransformation !is FilterTransformation) return null
|
||||||
assert(filter == null) { "Should not happen because no 2 consecutive FilterTransformation's possible"}
|
assert(filter == null) { "Should not happen because no 2 consecutive FilterTransformation's possible"}
|
||||||
return FindAndReturnTransformation(loop, previousTransformation.inputVariable, generator, endReturn, previousTransformation.effectiveCondition())
|
return FindAndReturnTransformation(loop, generator, endReturn, previousTransformation.effectiveCondition())
|
||||||
}
|
}
|
||||||
|
|
||||||
override val commentSavingRange = PsiChildRange(loop.unwrapIfLabeled(), endReturn)
|
override val commentSavingRange = PsiChildRange(loop.unwrapIfLabeled(), endReturn)
|
||||||
@@ -85,7 +83,7 @@ class FindAndReturnTransformation(
|
|||||||
|
|
||||||
val generator = buildFindOperationGenerator(returnValueInLoop, returnValueAfterLoop, state.inputVariable, findFirst = true) ?: return null
|
val generator = buildFindOperationGenerator(returnValueInLoop, returnValueAfterLoop, state.inputVariable, findFirst = true) ?: return null
|
||||||
|
|
||||||
val transformation = FindAndReturnTransformation(state.outerLoop, state.inputVariable, generator, returnAfterLoop)
|
val transformation = FindAndReturnTransformation(state.outerLoop, generator, returnAfterLoop)
|
||||||
return ResultTransformationMatch(transformation)
|
return ResultTransformationMatch(transformation)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+4
-8
@@ -25,7 +25,7 @@ import org.jetbrains.kotlin.psi.psiUtil.blockExpressionsOrSingle
|
|||||||
|
|
||||||
class FilterTransformation(
|
class FilterTransformation(
|
||||||
override val loop: KtForExpression,
|
override val loop: KtForExpression,
|
||||||
override val inputVariable: KtCallableDeclaration,
|
val inputVariable: KtCallableDeclaration,
|
||||||
val condition: KtExpression,
|
val condition: KtExpression,
|
||||||
val isInverse: Boolean
|
val isInverse: Boolean
|
||||||
) : SequenceTransformation {
|
) : SequenceTransformation {
|
||||||
@@ -105,7 +105,7 @@ class FilterTransformation(
|
|||||||
) {
|
) {
|
||||||
val typeRef = effectiveCondition.typeReference
|
val typeRef = effectiveCondition.typeReference
|
||||||
if (typeRef != null) {
|
if (typeRef != null) {
|
||||||
return FilterIsInstanceTransformation(loop, inputVariable, typeRef)
|
return FilterIsInstanceTransformation(loop, typeRef)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -114,7 +114,7 @@ class FilterTransformation(
|
|||||||
&& effectiveCondition.right.isNullExpression()
|
&& effectiveCondition.right.isNullExpression()
|
||||||
&& effectiveCondition.left.isSimpleName(inputVariable.nameAsSafeName)
|
&& effectiveCondition.left.isSimpleName(inputVariable.nameAsSafeName)
|
||||||
) {
|
) {
|
||||||
return FilterNotNullTransformation(loop, inputVariable)
|
return FilterNotNullTransformation(loop)
|
||||||
}
|
}
|
||||||
|
|
||||||
return FilterTransformation(loop, inputVariable, condition, isInverse)
|
return FilterTransformation(loop, inputVariable, condition, isInverse)
|
||||||
@@ -124,7 +124,6 @@ class FilterTransformation(
|
|||||||
|
|
||||||
class FilterIsInstanceTransformation(
|
class FilterIsInstanceTransformation(
|
||||||
override val loop: KtForExpression,
|
override val loop: KtForExpression,
|
||||||
override val inputVariable: KtCallableDeclaration,
|
|
||||||
private val type: KtTypeReference
|
private val type: KtTypeReference
|
||||||
) : SequenceTransformation {
|
) : SequenceTransformation {
|
||||||
|
|
||||||
@@ -139,10 +138,7 @@ class FilterIsInstanceTransformation(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class FilterNotNullTransformation(
|
class FilterNotNullTransformation(override val loop: KtForExpression) : SequenceTransformation {
|
||||||
override val loop: KtForExpression,
|
|
||||||
override val inputVariable: KtCallableDeclaration
|
|
||||||
) : SequenceTransformation {
|
|
||||||
|
|
||||||
override val affectsIndex: Boolean
|
override val affectsIndex: Boolean
|
||||||
get() = true
|
get() = true
|
||||||
|
|||||||
+1
-1
@@ -27,7 +27,7 @@ import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
|
|||||||
|
|
||||||
class FlatMapTransformation(
|
class FlatMapTransformation(
|
||||||
override val loop: KtForExpression,
|
override val loop: KtForExpression,
|
||||||
override val inputVariable: KtCallableDeclaration,
|
val inputVariable: KtCallableDeclaration,
|
||||||
val transform: KtExpression
|
val transform: KtExpression
|
||||||
) : SequenceTransformation {
|
) : SequenceTransformation {
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -24,7 +24,7 @@ import org.jetbrains.kotlin.psi.KtProperty
|
|||||||
|
|
||||||
class MapTransformation(
|
class MapTransformation(
|
||||||
override val loop: KtForExpression,
|
override val loop: KtForExpression,
|
||||||
override val inputVariable: KtCallableDeclaration,
|
val inputVariable: KtCallableDeclaration,
|
||||||
val mapping: KtExpression
|
val mapping: KtExpression
|
||||||
) : SequenceTransformation {
|
) : SequenceTransformation {
|
||||||
|
|
||||||
|
|||||||
@@ -312,10 +312,7 @@ fun KtExpression.detectInitializationBeforeLoop(loop: KtForExpression): Variable
|
|||||||
return VariableInitialization(variable, assignment, initializer)
|
return VariableInitialization(variable, assignment, initializer)
|
||||||
}
|
}
|
||||||
|
|
||||||
abstract class ReplaceLoopResultTransformation(
|
abstract class ReplaceLoopResultTransformation(override val loop: KtForExpression): ResultTransformation {
|
||||||
override val loop: KtForExpression,
|
|
||||||
final override val inputVariable: KtCallableDeclaration
|
|
||||||
): ResultTransformation {
|
|
||||||
|
|
||||||
override val commentSavingRange = PsiChildRange.singleElement(loop.unwrapIfLabeled())
|
override val commentSavingRange = PsiChildRange.singleElement(loop.unwrapIfLabeled())
|
||||||
|
|
||||||
@@ -328,7 +325,6 @@ abstract class ReplaceLoopResultTransformation(
|
|||||||
|
|
||||||
abstract class AssignToVariableResultTransformation(
|
abstract class AssignToVariableResultTransformation(
|
||||||
override val loop: KtForExpression,
|
override val loop: KtForExpression,
|
||||||
final override val inputVariable: KtCallableDeclaration,
|
|
||||||
protected val initialization: VariableInitialization
|
protected val initialization: VariableInitialization
|
||||||
) : ResultTransformation {
|
) : ResultTransformation {
|
||||||
|
|
||||||
@@ -353,7 +349,7 @@ abstract class AssignToVariableResultTransformation(
|
|||||||
class AssignSequenceTransformationResultTransformation(
|
class AssignSequenceTransformationResultTransformation(
|
||||||
private val sequenceTransformation: SequenceTransformation,
|
private val sequenceTransformation: SequenceTransformation,
|
||||||
initialization: VariableInitialization
|
initialization: VariableInitialization
|
||||||
) : AssignToVariableResultTransformation(sequenceTransformation.loop, sequenceTransformation.inputVariable, initialization) {
|
) : AssignToVariableResultTransformation(sequenceTransformation.loop, initialization) {
|
||||||
|
|
||||||
override val presentation: String
|
override val presentation: String
|
||||||
get() = sequenceTransformation.presentation
|
get() = sequenceTransformation.presentation
|
||||||
|
|||||||
Reference in New Issue
Block a user