Minor: CallGenerator is StatementGeneratorExtension.
This commit is contained in:
committed by
Dmitry Petrov
parent
8d86c0a2dd
commit
415265276a
+3
-3
@@ -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,
|
||||
|
||||
+3
-5
@@ -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)
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user