Minor: constructor IrExpressionBodyImpl(IrExpression)

This commit is contained in:
Dmitry Petrov
2017-02-27 18:54:34 +03:00
parent e66c2621af
commit 045a12ddc6
5 changed files with 7 additions and 9 deletions
@@ -194,7 +194,7 @@ class EnumClassLowering(val context: JvmBackendContext) : ClassLoweringPass {
return IrFieldImpl( return IrFieldImpl(
enumEntry.startOffset, enumEntry.endOffset, JvmLoweredDeclarationOrigin.FIELD_FOR_ENUM_ENTRY, enumEntry.startOffset, enumEntry.endOffset, JvmLoweredDeclarationOrigin.FIELD_FOR_ENUM_ENTRY,
fieldPropertyDescriptor, fieldPropertyDescriptor,
IrExpressionBodyImpl(enumEntryInitializer.startOffset, enumEntryInitializer.endOffset, enumEntryInitializer) IrExpressionBodyImpl(enumEntryInitializer)
) )
} }
@@ -45,7 +45,7 @@ class BodyGenerator(val scopeOwner: DeclarationDescriptor, override val context:
val ktDefaultValue = ktParameter.defaultValue ?: continue val ktDefaultValue = ktParameter.defaultValue ?: continue
val valueParameter = getOrFail(BindingContext.VALUE_PARAMETER, ktParameter) as? ValueParameterDescriptor ?: continue val valueParameter = getOrFail(BindingContext.VALUE_PARAMETER, ktParameter) as? ValueParameterDescriptor ?: continue
val irDefaultValue = statementGenerator.generateExpression(ktDefaultValue) val irDefaultValue = statementGenerator.generateExpression(ktDefaultValue)
irFunction.putDefault(valueParameter, IrExpressionBodyImpl(ktDefaultValue.startOffset, ktDefaultValue.endOffset, irDefaultValue)) irFunction.putDefault(valueParameter, IrExpressionBodyImpl(irDefaultValue))
} }
} }
@@ -64,8 +64,7 @@ class BodyGenerator(val scopeOwner: DeclarationDescriptor, override val context:
} }
fun generatePropertyInitializerBody(ktInitializer: KtExpression): IrExpressionBody = fun generatePropertyInitializerBody(ktInitializer: KtExpression): IrExpressionBody =
IrExpressionBodyImpl(ktInitializer.startOffset, ktInitializer.endOffset, IrExpressionBodyImpl(createStatementGenerator().generateExpression(ktInitializer))
createStatementGenerator().generateExpression(ktInitializer))
fun generateLambdaBody(ktFun: KtFunctionLiteral): IrBody { fun generateLambdaBody(ktFun: KtFunctionLiteral): IrBody {
val statementGenerator = createStatementGenerator() val statementGenerator = createStatementGenerator()
@@ -60,7 +60,7 @@ class PropertyGenerator(val declarationGenerator: DeclarationGenerator) : Genera
val irField = IrFieldImpl(ktParameter.startOffset, ktParameter.endOffset, IrDeclarationOrigin.PROPERTY_BACKING_FIELD, propertyDescriptor) val irField = IrFieldImpl(ktParameter.startOffset, ktParameter.endOffset, IrDeclarationOrigin.PROPERTY_BACKING_FIELD, propertyDescriptor)
val irGetParameter = IrGetValueImpl(ktParameter.startOffset, ktParameter.endOffset, val irGetParameter = IrGetValueImpl(ktParameter.startOffset, ktParameter.endOffset,
valueParameterDescriptor, IrStatementOrigin.INITIALIZE_PROPERTY_FROM_PARAMETER) valueParameterDescriptor, IrStatementOrigin.INITIALIZE_PROPERTY_FROM_PARAMETER)
irField.initializer = IrExpressionBodyImpl(ktParameter.startOffset, ktParameter.endOffset, irGetParameter) irField.initializer = IrExpressionBodyImpl(irGetParameter)
irProperty.backingField = irField irProperty.backingField = irField
val getter = propertyDescriptor.getter ?: val getter = propertyDescriptor.getter ?:
@@ -27,6 +27,8 @@ class IrExpressionBodyImpl(startOffset: Int, endOffset: Int) : IrElementBase(sta
this.expression = expression this.expression = expression
} }
constructor(expression: IrExpression) : this(expression.startOffset, expression.endOffset, expression)
override lateinit var expression: IrExpression override lateinit var expression: IrExpression
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R = override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
@@ -178,10 +178,7 @@ open class DeepCopyIrTree : IrElementTransformerVoid() {
throw IllegalArgumentException("Unsupported body type: $body") throw IllegalArgumentException("Unsupported body type: $body")
override fun visitExpressionBody(body: IrExpressionBody): IrExpressionBody = override fun visitExpressionBody(body: IrExpressionBody): IrExpressionBody =
IrExpressionBodyImpl( IrExpressionBodyImpl(body.expression.transform(this, null))
body.startOffset, body.endOffset,
body.expression.transform(this, null)
)
override fun visitBlockBody(body: IrBlockBody): IrBlockBody = override fun visitBlockBody(body: IrBlockBody): IrBlockBody =
IrBlockBodyImpl( IrBlockBodyImpl(