JVM_IR: remove another redundant lowering

This commit is contained in:
pyos
2019-04-29 12:09:00 +02:00
committed by max-kammerer
parent c017ef9bc8
commit c77e8a8c2d
2 changed files with 0 additions and 48 deletions
@@ -59,7 +59,6 @@ val jvmPhases = namedIrFilePhase<JvmBackendContext>(
name = "IrLowering",
description = "IR lowering",
lower = expectDeclarationsRemovingPhase then
jvmCoercionToUnitPhase then
fileClassPhase then
kCallableNamePropertyPhase then
@@ -1,47 +0,0 @@
/*
* Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.backend.jvm.lower
import org.jetbrains.kotlin.backend.common.FileLoweringPass
import org.jetbrains.kotlin.backend.common.phaser.makeIrFilePhase
import org.jetbrains.kotlin.backend.jvm.JvmBackendContext
import org.jetbrains.kotlin.backend.jvm.JvmGeneratorExtensions
import org.jetbrains.kotlin.ir.declarations.IrFile
import org.jetbrains.kotlin.ir.expressions.IrCall
import org.jetbrains.kotlin.ir.expressions.IrExpression
import org.jetbrains.kotlin.ir.types.isSubtypeOfClass
import org.jetbrains.kotlin.ir.types.toKotlinType
import org.jetbrains.kotlin.ir.util.TypeTranslator
import org.jetbrains.kotlin.ir.util.coerceToUnitIfNeeded
import org.jetbrains.kotlin.ir.visitors.transformChildrenVoid
import org.jetbrains.kotlin.psi2ir.transformations.InsertImplicitCasts
internal val jvmCoercionToUnitPhase = makeIrFilePhase(
::JvmCoercionToUnitPatcher,
name = "JvmCoercionToUnit",
description = "Insert conversions to unit after IrCalls where needed"
)
class JvmCoercionToUnitPatcher(val context: JvmBackendContext) :
InsertImplicitCasts(
context.builtIns, context.irBuiltIns,
TypeTranslator(context.ir.symbols.externalSymbolTable, context.state.languageVersionSettings, context.builtIns),
JvmGeneratorExtensions.samConversion
),
FileLoweringPass {
override fun lower(irFile: IrFile) {
irFile.transformChildrenVoid(this)
}
override fun IrExpression.coerceToUnit(): IrExpression {
if (type.isSubtypeOfClass(context.irBuiltIns.unitClass) && this is IrCall) {
return coerceToUnitIfNeeded(symbol.owner.returnType.toKotlinType(), context.irBuiltIns)
}
return this
}
}