JVM_IR: copy code from JvmDefaultParameterInjector to JvmTailrecLowering

Some weird edge case for inline classes wrapping primitives?
This commit is contained in:
pyos
2021-09-28 13:23:33 +02:00
committed by Mikhael Bogdanov
parent cb505d1101
commit 73adcd7b62
2 changed files with 27 additions and 33 deletions
@@ -8,14 +8,20 @@ package org.jetbrains.kotlin.backend.jvm.lower
import org.jetbrains.kotlin.backend.common.lower.TailrecLowering
import org.jetbrains.kotlin.backend.jvm.JvmBackendContext
import org.jetbrains.kotlin.backend.jvm.JvmLoweredStatementOrigin
import org.jetbrains.kotlin.backend.jvm.ir.defaultValue
import org.jetbrains.kotlin.config.LanguageFeature
import org.jetbrains.kotlin.config.languageVersionSettings
import org.jetbrains.kotlin.ir.expressions.IrExpression
import org.jetbrains.kotlin.ir.expressions.IrFunctionReference
import org.jetbrains.kotlin.ir.types.IrType
class JvmTailrecLowering(context: JvmBackendContext) : TailrecLowering(context) {
override fun useProperComputationOrderOfTailrecDefaultParameters(): Boolean =
override val useProperComputationOrderOfTailrecDefaultParameters: Boolean =
context.ir.context.configuration.languageVersionSettings.supportsFeature(LanguageFeature.ProperComputationOrderOfTailrecDefaultParameters)
override fun followFunctionReference(reference: IrFunctionReference): Boolean =
reference.origin == JvmLoweredStatementOrigin.INLINE_LAMBDA
override fun nullConst(startOffset: Int, endOffset: Int, type: IrType): IrExpression =
type.defaultValue(startOffset, endOffset, context as JvmBackendContext)
}