From 83ff1a2ef34d05228d4483beaa862c18e936a107 Mon Sep 17 00:00:00 2001 From: Dmitry Petrov Date: Mon, 3 Jul 2017 17:25:24 +0300 Subject: [PATCH] Minor: refactor ForInProgressionExpressionLoopGenerator initialization --- ...ForInProgressionExpressionLoopGenerator.kt | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/forLoop/ForInProgressionExpressionLoopGenerator.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/forLoop/ForInProgressionExpressionLoopGenerator.kt index 4fb43ad8948..bd2acc1c30e 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/forLoop/ForInProgressionExpressionLoopGenerator.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/forLoop/ForInProgressionExpressionLoopGenerator.kt @@ -27,35 +27,35 @@ import org.jetbrains.org.objectweb.asm.Type class ForInProgressionExpressionLoopGenerator(codegen: ExpressionCodegen, forExpression: KtForExpression) : AbstractForInProgressionOrRangeLoopGenerator(codegen, forExpression) { - private var incrementVar: Int = 0 - private var incrementType: Type? = null + private val loopRangeType = bindingContext.getType(forExpression.loopRange!!)!! + private val asmLoopRangeType = codegen.asmType(loopRangeType) + private var incrementVar: Int = -1 + private val incrementType: Type + + init { + val incrementProp = loopRangeType.memberScope.getContributedVariables(Name.identifier("step"), NoLookupLocation.FROM_BACKEND) + assert(incrementProp.size == 1) { loopRangeType.toString() + " " + incrementProp.size } + incrementType = codegen.asmType(incrementProp.iterator().next().type) + } override fun beforeLoop() { super.beforeLoop() incrementVar = createLoopTempVariable(asmElementType) - val loopRangeType = bindingContext.getType(forExpression.loopRange!!)!! - val asmLoopRangeType = codegen.asmType(loopRangeType) - - val incrementProp = loopRangeType.memberScope.getContributedVariables(Name.identifier("step"), NoLookupLocation.FROM_BACKEND) - assert(incrementProp.size == 1) { loopRangeType.toString() + " " + incrementProp.size } - incrementType = codegen.asmType(incrementProp.iterator().next().type) - codegen.gen(forExpression.loopRange, asmLoopRangeType) v.dup() v.dup() - generateRangeOrProgressionProperty(asmLoopRangeType, "getFirst", asmElementType, loopParameterType, - loopParameterVar) + generateRangeOrProgressionProperty(asmLoopRangeType, "getFirst", asmElementType, loopParameterType, loopParameterVar) generateRangeOrProgressionProperty(asmLoopRangeType, "getLast", asmElementType, asmElementType, endVar) - generateRangeOrProgressionProperty(asmLoopRangeType, "getStep", incrementType!!, incrementType!!, incrementVar) + generateRangeOrProgressionProperty(asmLoopRangeType, "getStep", incrementType, incrementType, incrementVar) } override fun checkEmptyLoop(loopExit: Label) { loopParameter().put(asmElementType, v) v.load(endVar, asmElementType) - v.load(incrementVar, incrementType!!) + v.load(incrementVar, incrementType) val negativeIncrement = Label() val afterIf = Label()