Minor: CallGenerator is StatementGeneratorExtension.

This commit is contained in:
Dmitry Petrov
2016-08-29 17:38:12 +03:00
committed by Dmitry Petrov
parent 8d86c0a2dd
commit 415265276a
3 changed files with 7 additions and 15 deletions
@@ -52,7 +52,7 @@ class AssignmentGenerator(statementGenerator: StatementGenerator) : StatementGen
val opCall = statementGenerator.pregenerateCall(opResolvedCall)
opCall.setExplicitReceiverValue(irLValue)
opCall.irValueArgumentsByIndex[0] = statementGenerator.generateExpression(ktRight)
val irOpCall = CallGenerator(this).generateCall(expression, opCall, irOperator)
val irOpCall = CallGenerator(statementGenerator).generateCall(expression, opCall, irOperator)
if (isSimpleAssignment) {
// Set( Op( Get(), RHS ) )
@@ -76,7 +76,7 @@ class AssignmentGenerator(statementGenerator: StatementGenerator) : StatementGen
// VAR tmp = [lhs].inc()
val opCall = statementGenerator.pregenerateCall(opResolvedCall)
opCall.setExplicitReceiverValue(irLValue)
val irOpCall = CallGenerator(this).generateCall(expression, opCall, irOperator)
val irOpCall = CallGenerator(statementGenerator).generateCall(expression, opCall, irOperator)
val irTmp = statementGenerator.scope.createTemporaryVariable(irOpCall)
irBlock.addStatement(irTmp)
@@ -105,7 +105,7 @@ class AssignmentGenerator(statementGenerator: StatementGenerator) : StatementGen
// [lhs] = tmp.inc()
val opCall = statementGenerator.pregenerateCall(opResolvedCall)
opCall.setExplicitReceiverValue(VariableLValue(irTmp))
val irOpCall = CallGenerator(this).generateCall(expression, opCall, irOperator)
val irOpCall = CallGenerator(statementGenerator).generateCall(expression, opCall, irOperator)
irBlock.addStatement(irLValue.store(irOpCall))
// ^ tmp
@@ -33,13 +33,7 @@ import org.jetbrains.kotlin.resolve.calls.model.ResolvedValueArgument
import org.jetbrains.kotlin.types.KotlinType
import java.util.*
class CallGenerator(
override val context: GeneratorContext,
override val scope: Scope
) : GeneratorWithScope {
constructor(parent: GeneratorWithScope) : this(parent.context, parent.scope)
class CallGenerator(statementGenerator: StatementGenerator): StatementGeneratorExtension(statementGenerator) {
fun generateCall(
startOffset: Int,
endOffset: Int,
@@ -138,7 +138,7 @@ class OperatorExpressionGenerator(statementGenerator: StatementGenerator) : Stat
private fun generateInOperator(expression: KtBinaryExpression, irOperator: IrOperator): IrExpression {
val containsCall = getResolvedCall(expression)!!
val irContainsCall = CallGenerator(this).generateCall(expression, statementGenerator.pregenerateCall(containsCall), irOperator)
val irContainsCall = CallGenerator(statementGenerator).generateCall(expression, statementGenerator.pregenerateCall(containsCall), irOperator)
return when (irOperator) {
IrOperator.IN ->
@@ -194,7 +194,7 @@ class OperatorExpressionGenerator(statementGenerator: StatementGenerator) : Stat
private fun generateComparisonOperator(expression: KtBinaryExpression, irOperator: IrOperator): IrExpression {
val compareToCall = getResolvedCall(expression)!!
val irCompareToCall = CallGenerator(this).generateCall(expression, statementGenerator.pregenerateCall(compareToCall), irOperator)
val irCompareToCall = CallGenerator(statementGenerator).generateCall(expression, statementGenerator.pregenerateCall(compareToCall), irOperator)
val compareToZeroDescriptor = when (irOperator) {
IrOperator.LT -> context.irBuiltIns.lt0
@@ -210,7 +210,7 @@ class OperatorExpressionGenerator(statementGenerator: StatementGenerator) : Stat
private fun generateBinaryOperatorAsCall(expression: KtBinaryExpression, irOperator: IrOperator?): IrExpression {
val operatorCall = getResolvedCall(expression)!!
return CallGenerator(this).generateCall(expression, statementGenerator.pregenerateCall(operatorCall), irOperator)
return CallGenerator(statementGenerator).generateCall(expression, statementGenerator.pregenerateCall(operatorCall), irOperator)
}
@@ -241,6 +241,4 @@ class OperatorExpressionGenerator(statementGenerator: StatementGenerator) : Stat
val resolvedCall = getResolvedCall(expression)!!
return CallGenerator(statementGenerator).generateCall(expression, statementGenerator.pregenerateCall(resolvedCall), irOperator)
}
}