JVM IR: don't generate ACC_FINAL on DefaultImpls methods
To replicate behavior of old backend
This commit is contained in:
@@ -515,6 +515,7 @@ fun createStaticFunctionWithReceivers(
|
|||||||
oldFunction: IrFunction,
|
oldFunction: IrFunction,
|
||||||
dispatchReceiverType: IrType? = oldFunction.dispatchReceiverParameter?.type,
|
dispatchReceiverType: IrType? = oldFunction.dispatchReceiverParameter?.type,
|
||||||
origin: IrDeclarationOrigin = oldFunction.origin,
|
origin: IrDeclarationOrigin = oldFunction.origin,
|
||||||
|
modality: Modality = Modality.FINAL,
|
||||||
copyBody: Boolean = true
|
copyBody: Boolean = true
|
||||||
): IrSimpleFunction {
|
): IrSimpleFunction {
|
||||||
val descriptor = WrappedSimpleFunctionDescriptor(Annotations.EMPTY, oldFunction.descriptor.source)
|
val descriptor = WrappedSimpleFunctionDescriptor(Annotations.EMPTY, oldFunction.descriptor.source)
|
||||||
@@ -524,7 +525,7 @@ fun createStaticFunctionWithReceivers(
|
|||||||
IrSimpleFunctionSymbolImpl(descriptor),
|
IrSimpleFunctionSymbolImpl(descriptor),
|
||||||
name,
|
name,
|
||||||
oldFunction.visibility,
|
oldFunction.visibility,
|
||||||
Modality.FINAL,
|
modality,
|
||||||
oldFunction.returnType,
|
oldFunction.returnType,
|
||||||
isInline = oldFunction.isInline,
|
isInline = oldFunction.isInline,
|
||||||
isExternal = false, isTailrec = false, isSuspend = false
|
isExternal = false, isTailrec = false, isSuspend = false
|
||||||
|
|||||||
+3
-1
@@ -151,7 +151,9 @@ class JvmDeclarationFactory(
|
|||||||
interfaceFun.origin != IrDeclarationOrigin.FAKE_OVERRIDE -> interfaceFun.origin
|
interfaceFun.origin != IrDeclarationOrigin.FAKE_OVERRIDE -> interfaceFun.origin
|
||||||
interfaceFun.resolveFakeOverride()!!.origin.isSynthetic -> JvmLoweredDeclarationOrigin.DEFAULT_IMPLS_BRIDGE_TO_SYNTHETIC
|
interfaceFun.resolveFakeOverride()!!.origin.isSynthetic -> JvmLoweredDeclarationOrigin.DEFAULT_IMPLS_BRIDGE_TO_SYNTHETIC
|
||||||
else -> JvmLoweredDeclarationOrigin.DEFAULT_IMPLS_BRIDGE
|
else -> JvmLoweredDeclarationOrigin.DEFAULT_IMPLS_BRIDGE
|
||||||
}
|
},
|
||||||
|
// Old backend doesn't generate ACC_FINAL on DefaultImpls methods.
|
||||||
|
modality = Modality.OPEN
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user