Add flag -Xno-new-java-annotation-targets

Do not generate TYPE_USE/TYPE_PARAMETER Java annotation targets when
this flag is specified.

 #KT-53712 Fixed
This commit is contained in:
Alexander Udalov
2022-08-26 01:03:37 +02:00
parent a09fd45ade
commit 690322b203
13 changed files with 88 additions and 7 deletions
@@ -43,6 +43,8 @@ private class AdditionalClassAnnotationLowering(private val context: JvmBackendC
context.state.jvmBackendClassResolver.resolveToClassDescriptors(
Type.getObjectType("java/lang/invoke/LambdaMetafactory")
).isNotEmpty()
private val noNewJavaAnnotationTargets =
context.state.noNewJavaAnnotationTargets || !isCompilingAgainstJdk8OrLater
override fun lower(irClass: IrClass) {
if (!irClass.isAnnotationClass) return
@@ -113,8 +115,8 @@ private class AdditionalClassAnnotationLowering(private val context: JvmBackendC
private fun mapTarget(target: KotlinTarget): IrEnumEntry? =
when (target) {
KotlinTarget.TYPE_PARAMETER -> symbols.typeParameterTarget.takeUnless { isCompilingAgainstJdk8OrLater }
KotlinTarget.TYPE -> symbols.typeUseTarget.takeUnless { isCompilingAgainstJdk8OrLater }
KotlinTarget.TYPE_PARAMETER -> symbols.typeParameterTarget.takeUnless { noNewJavaAnnotationTargets }
KotlinTarget.TYPE -> symbols.typeUseTarget.takeUnless { noNewJavaAnnotationTargets }
else -> symbols.jvmTargetMap[target]
}