KAPT+IR: Support -Xjvm-default modes
This commit is contained in:
@@ -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 {
|
||||
|
||||
+1
-2
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user