KAPT+IR: Support -Xjvm-default modes

This commit is contained in:
Mikhael Bogdanov
2022-02-11 14:34:30 +01:00
parent 00f2b83b84
commit ea2bf3c867
6 changed files with 15 additions and 7 deletions
@@ -53,9 +53,22 @@ class BodyGenerator(
private val loopTable = HashMap<KtLoopExpression, IrLoop>()
fun generateFunctionBody(ktBody: KtExpression): IrBody {
val irBlockBody = context.irFactory.createBlockBody(ktBody.startOffsetSkippingComments, ktBody.endOffset)
if (context.configuration.skipBodies) {
val irBody =
IrErrorExpressionImpl(
ktBody.startOffsetSkippingComments,
ktBody.endOffset,
context.irBuiltIns.nothingType,
ktBody::class.java.simpleName
)
irBlockBody.statements.add(generateReturnExpression(irBody.endOffset, irBody.endOffset, irBody))
return irBlockBody
}
val statementGenerator = createStatementGenerator()
val irBlockBody = context.irFactory.createBlockBody(ktBody.startOffsetSkippingComments, ktBody.endOffset)
if (ktBody is KtBlockExpression) {
statementGenerator.generateStatements(ktBody.statements, irBlockBody)
} else {
@@ -49,8 +49,7 @@ class FunctionGenerator(declarationGenerator: DeclarationGenerator) : Declaratio
origin,
getOrFail(BindingContext.FUNCTION, ktFunction)
) {
if (context.configuration.skipBodies) null
else ktFunction.bodyExpression?.let { generateFunctionBody(it) }
ktFunction.bodyExpression?.let { generateFunctionBody(it) }
}
fun generateLambdaFunctionDeclaration(ktFunction: KtFunctionLiteral): IrSimpleFunction {
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JVM_IR
// !JVM_DEFAULT_MODE: all
interface Foo {
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JVM_IR
// !JVM_DEFAULT_MODE: all-compatibility
interface Foo {
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JVM_IR
// !JVM_DEFAULT_MODE: disable
interface Foo {
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JVM_IR
// !JVM_DEFAULT_MODE: enable
interface Foo {