diff --git a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/BodyGenerator.kt b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/BodyGenerator.kt index a5fe89c5cab..adfcd3d41bc 100644 --- a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/BodyGenerator.kt +++ b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/BodyGenerator.kt @@ -53,9 +53,22 @@ class BodyGenerator( private val loopTable = HashMap() 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 { diff --git a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/FunctionGenerator.kt b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/FunctionGenerator.kt index 0b068dbcae1..1587d1e962d 100644 --- a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/FunctionGenerator.kt +++ b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/FunctionGenerator.kt @@ -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 { diff --git a/plugins/kapt3/kapt3-compiler/testData/converter/jvmDefaultAll.kt b/plugins/kapt3/kapt3-compiler/testData/converter/jvmDefaultAll.kt index 6bbbabe8791..0246b4ae567 100644 --- a/plugins/kapt3/kapt3-compiler/testData/converter/jvmDefaultAll.kt +++ b/plugins/kapt3/kapt3-compiler/testData/converter/jvmDefaultAll.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // !JVM_DEFAULT_MODE: all interface Foo { diff --git a/plugins/kapt3/kapt3-compiler/testData/converter/jvmDefaultAllCompatibility.kt b/plugins/kapt3/kapt3-compiler/testData/converter/jvmDefaultAllCompatibility.kt index ab82e4439a4..2824f661bdd 100644 --- a/plugins/kapt3/kapt3-compiler/testData/converter/jvmDefaultAllCompatibility.kt +++ b/plugins/kapt3/kapt3-compiler/testData/converter/jvmDefaultAllCompatibility.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // !JVM_DEFAULT_MODE: all-compatibility interface Foo { diff --git a/plugins/kapt3/kapt3-compiler/testData/converter/jvmDefaultDisable.kt b/plugins/kapt3/kapt3-compiler/testData/converter/jvmDefaultDisable.kt index 83f11358bc3..ea328e598dc 100644 --- a/plugins/kapt3/kapt3-compiler/testData/converter/jvmDefaultDisable.kt +++ b/plugins/kapt3/kapt3-compiler/testData/converter/jvmDefaultDisable.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // !JVM_DEFAULT_MODE: disable interface Foo { diff --git a/plugins/kapt3/kapt3-compiler/testData/converter/jvmDefaultEnable.kt b/plugins/kapt3/kapt3-compiler/testData/converter/jvmDefaultEnable.kt index b0e4efbdb01..59d095b8860 100644 --- a/plugins/kapt3/kapt3-compiler/testData/converter/jvmDefaultEnable.kt +++ b/plugins/kapt3/kapt3-compiler/testData/converter/jvmDefaultEnable.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // !JVM_DEFAULT_MODE: enable interface Foo {