JVM IR: don't generate ACC_FINAL on DefaultImpls methods

To replicate behavior of old backend
This commit is contained in:
Alexander Udalov
2019-07-10 21:13:25 +02:00
parent 6f785ec881
commit 815ff3c860
2 changed files with 5 additions and 2 deletions
@@ -515,6 +515,7 @@ fun createStaticFunctionWithReceivers(
oldFunction: IrFunction,
dispatchReceiverType: IrType? = oldFunction.dispatchReceiverParameter?.type,
origin: IrDeclarationOrigin = oldFunction.origin,
modality: Modality = Modality.FINAL,
copyBody: Boolean = true
): IrSimpleFunction {
val descriptor = WrappedSimpleFunctionDescriptor(Annotations.EMPTY, oldFunction.descriptor.source)
@@ -524,7 +525,7 @@ fun createStaticFunctionWithReceivers(
IrSimpleFunctionSymbolImpl(descriptor),
name,
oldFunction.visibility,
Modality.FINAL,
modality,
oldFunction.returnType,
isInline = oldFunction.isInline,
isExternal = false, isTailrec = false, isSuspend = false
@@ -151,7 +151,9 @@ class JvmDeclarationFactory(
interfaceFun.origin != IrDeclarationOrigin.FAKE_OVERRIDE -> interfaceFun.origin
interfaceFun.resolveFakeOverride()!!.origin.isSynthetic -> JvmLoweredDeclarationOrigin.DEFAULT_IMPLS_BRIDGE_TO_SYNTHETIC
else -> JvmLoweredDeclarationOrigin.DEFAULT_IMPLS_BRIDGE
}
},
// Old backend doesn't generate ACC_FINAL on DefaultImpls methods.
modality = Modality.OPEN
)
}
}