More clear code
This commit is contained in:
+11
-6
@@ -85,8 +85,10 @@ object FindTransformationMatcher : TransformationMatcher {
|
|||||||
// we do not try to convert anything if the initializer is not compile-time constant because of possible side-effects
|
// we do not try to convert anything if the initializer is not compile-time constant because of possible side-effects
|
||||||
if (!initialization.initializer.isConstant()) return null
|
if (!initialization.initializer.isConstant()) return null
|
||||||
|
|
||||||
val generator = buildFindOperationGenerator(state.outerLoop, right, initialization.initializer, state.inputVariable,
|
val generator = buildFindOperationGenerator(state.outerLoop, state.inputVariable, state.indexVariable, filterTransformation,
|
||||||
state.indexVariable, filterTransformation, findFirst)
|
valueIfFound = right,
|
||||||
|
valueIfNotFound = initialization.initializer,
|
||||||
|
findFirst = findFirst)
|
||||||
?: return null
|
?: return null
|
||||||
|
|
||||||
val transformation = FindAndAssignTransformation(state.outerLoop, generator, initialization)
|
val transformation = FindAndAssignTransformation(state.outerLoop, generator, initialization)
|
||||||
@@ -101,8 +103,11 @@ object FindTransformationMatcher : TransformationMatcher {
|
|||||||
val returnValueInLoop = returnInLoop.returnedExpression ?: return null
|
val returnValueInLoop = returnInLoop.returnedExpression ?: return null
|
||||||
val returnValueAfterLoop = returnAfterLoop.returnedExpression ?: return null
|
val returnValueAfterLoop = returnAfterLoop.returnedExpression ?: return null
|
||||||
|
|
||||||
val generator = buildFindOperationGenerator(state.outerLoop, returnValueInLoop, returnValueAfterLoop,
|
val generator = buildFindOperationGenerator(state.outerLoop, state.inputVariable, state.indexVariable,
|
||||||
state.inputVariable, state.indexVariable, filterTransformation, findFirst = true)
|
filterTransformation,
|
||||||
|
valueIfFound = returnValueInLoop,
|
||||||
|
valueIfNotFound = returnValueAfterLoop,
|
||||||
|
findFirst = true)
|
||||||
?: return null
|
?: return null
|
||||||
|
|
||||||
val transformation = FindAndReturnTransformation(state.outerLoop, generator, returnAfterLoop)
|
val transformation = FindAndReturnTransformation(state.outerLoop, generator, returnAfterLoop)
|
||||||
@@ -212,11 +217,11 @@ object FindTransformationMatcher : TransformationMatcher {
|
|||||||
|
|
||||||
private fun buildFindOperationGenerator(
|
private fun buildFindOperationGenerator(
|
||||||
loop: KtForExpression,
|
loop: KtForExpression,
|
||||||
valueIfFound: KtExpression,
|
|
||||||
valueIfNotFound: KtExpression,
|
|
||||||
inputVariable: KtCallableDeclaration,
|
inputVariable: KtCallableDeclaration,
|
||||||
indexVariable: KtCallableDeclaration?,
|
indexVariable: KtCallableDeclaration?,
|
||||||
filterTransformation: FilterTransformation?,
|
filterTransformation: FilterTransformation?,
|
||||||
|
valueIfFound: KtExpression,
|
||||||
|
valueIfNotFound: KtExpression,
|
||||||
findFirst: Boolean
|
findFirst: Boolean
|
||||||
): FindOperationGenerator? {
|
): FindOperationGenerator? {
|
||||||
assert(valueIfFound.isPhysical)
|
assert(valueIfFound.isPhysical)
|
||||||
|
|||||||
Reference in New Issue
Block a user