KAPT+IR: Support -Xjvm-default modes
This commit is contained in:
@@ -53,9 +53,22 @@ class BodyGenerator(
|
|||||||
private val loopTable = HashMap<KtLoopExpression, IrLoop>()
|
private val loopTable = HashMap<KtLoopExpression, IrLoop>()
|
||||||
|
|
||||||
fun generateFunctionBody(ktBody: KtExpression): IrBody {
|
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 statementGenerator = createStatementGenerator()
|
||||||
|
|
||||||
val irBlockBody = context.irFactory.createBlockBody(ktBody.startOffsetSkippingComments, ktBody.endOffset)
|
|
||||||
if (ktBody is KtBlockExpression) {
|
if (ktBody is KtBlockExpression) {
|
||||||
statementGenerator.generateStatements(ktBody.statements, irBlockBody)
|
statementGenerator.generateStatements(ktBody.statements, irBlockBody)
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
+1
-2
@@ -49,8 +49,7 @@ class FunctionGenerator(declarationGenerator: DeclarationGenerator) : Declaratio
|
|||||||
origin,
|
origin,
|
||||||
getOrFail(BindingContext.FUNCTION, ktFunction)
|
getOrFail(BindingContext.FUNCTION, ktFunction)
|
||||||
) {
|
) {
|
||||||
if (context.configuration.skipBodies) null
|
ktFunction.bodyExpression?.let { generateFunctionBody(it) }
|
||||||
else ktFunction.bodyExpression?.let { generateFunctionBody(it) }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fun generateLambdaFunctionDeclaration(ktFunction: KtFunctionLiteral): IrSimpleFunction {
|
fun generateLambdaFunctionDeclaration(ktFunction: KtFunctionLiteral): IrSimpleFunction {
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
// IGNORE_BACKEND: JVM_IR
|
|
||||||
// !JVM_DEFAULT_MODE: all
|
// !JVM_DEFAULT_MODE: all
|
||||||
|
|
||||||
interface Foo {
|
interface Foo {
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
// IGNORE_BACKEND: JVM_IR
|
|
||||||
// !JVM_DEFAULT_MODE: all-compatibility
|
// !JVM_DEFAULT_MODE: all-compatibility
|
||||||
|
|
||||||
interface Foo {
|
interface Foo {
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
// IGNORE_BACKEND: JVM_IR
|
|
||||||
// !JVM_DEFAULT_MODE: disable
|
// !JVM_DEFAULT_MODE: disable
|
||||||
|
|
||||||
interface Foo {
|
interface Foo {
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
// IGNORE_BACKEND: JVM_IR
|
|
||||||
// !JVM_DEFAULT_MODE: enable
|
// !JVM_DEFAULT_MODE: enable
|
||||||
|
|
||||||
interface Foo {
|
interface Foo {
|
||||||
|
|||||||
Reference in New Issue
Block a user