diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/CallAndReferenceGenerator.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/CallAndReferenceGenerator.kt index 59089c6a341..56262cf7de8 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/CallAndReferenceGenerator.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/CallAndReferenceGenerator.kt @@ -18,6 +18,7 @@ import org.jetbrains.kotlin.fir.references.FirReference import org.jetbrains.kotlin.fir.references.FirResolvedNamedReference import org.jetbrains.kotlin.fir.references.FirSuperReference import org.jetbrains.kotlin.fir.render +import org.jetbrains.kotlin.fir.resolve.buildUseSiteMemberScope import org.jetbrains.kotlin.fir.resolve.calls.isFunctional import org.jetbrains.kotlin.fir.resolve.inference.isBuiltinFunctionalType import org.jetbrains.kotlin.fir.resolve.inference.isSuspendFunctionType @@ -428,6 +429,18 @@ class CallAndReferenceGenerator( val irClass = symbol.owner val irConstructor = (annotationCall.toResolvedCallableSymbol() as? FirConstructorSymbol)?.let { this.declarationStorage.getIrConstructorSymbol(it) + } ?: run { + // Fallback for FirReferencePlaceholderForResolvedAnnotations from jar + val fir = coneType.lookupTag.toSymbol(session)?.fir as? FirClass<*> + var constructorSymbol: FirConstructorSymbol? = null + fir?.buildUseSiteMemberScope(session, scopeSession)?.processDeclaredConstructors { + if (it.fir.isPrimary && constructorSymbol == null) { + constructorSymbol = it + } + } + constructorSymbol?.let { + this.declarationStorage.getIrConstructorSymbol(it) + } } if (irConstructor == null) { IrErrorCallExpressionImpl(startOffset, endOffset, type, "No annotation constructor found: ${irClass.name}") diff --git a/compiler/testData/codegen/box/annotations/typeAnnotations/typeUseAnnotation.kt b/compiler/testData/codegen/box/annotations/typeAnnotations/typeUseAnnotation.kt index 7e5037333dd..a9f24c24c2d 100644 --- a/compiler/testData/codegen/box/annotations/typeAnnotations/typeUseAnnotation.kt +++ b/compiler/testData/codegen/box/annotations/typeAnnotations/typeUseAnnotation.kt @@ -1,6 +1,5 @@ // KOTLIN_CONFIGURATION_FLAGS: +JVM.EMIT_JVM_TYPE_ANNOTATIONS // TARGET_BACKEND: JVM -// IGNORE_BACKEND_FIR: JVM_IR // JVM_TARGET: 1.8 // WITH_REFLECT // FULL_JDK diff --git a/compiler/testData/codegen/box/polymorphicSignature/anonymousSubclass.kt b/compiler/testData/codegen/box/polymorphicSignature/anonymousSubclass.kt index 2ab5d53fed3..f7021339d05 100644 --- a/compiler/testData/codegen/box/polymorphicSignature/anonymousSubclass.kt +++ b/compiler/testData/codegen/box/polymorphicSignature/anonymousSubclass.kt @@ -1,5 +1,4 @@ // !LANGUAGE: +PolymorphicSignature -// IGNORE_BACKEND_FIR: JVM_IR // TARGET_BACKEND: JVM // FULL_JDK // SKIP_JDK6 diff --git a/compiler/testData/codegen/box/polymorphicSignature/invoke.kt b/compiler/testData/codegen/box/polymorphicSignature/invoke.kt index c0080712fdd..430058ef018 100644 --- a/compiler/testData/codegen/box/polymorphicSignature/invoke.kt +++ b/compiler/testData/codegen/box/polymorphicSignature/invoke.kt @@ -1,5 +1,4 @@ // !LANGUAGE: +PolymorphicSignature -// IGNORE_BACKEND_FIR: JVM_IR // TARGET_BACKEND: JVM // FULL_JDK // SKIP_JDK6 diff --git a/compiler/testData/codegen/box/polymorphicSignature/invokeExact.kt b/compiler/testData/codegen/box/polymorphicSignature/invokeExact.kt index d5bad50b81f..f35887e014c 100644 --- a/compiler/testData/codegen/box/polymorphicSignature/invokeExact.kt +++ b/compiler/testData/codegen/box/polymorphicSignature/invokeExact.kt @@ -1,5 +1,4 @@ // !LANGUAGE: +PolymorphicSignature -// IGNORE_BACKEND_FIR: JVM_IR // TARGET_BACKEND: JVM // FULL_JDK // SKIP_JDK6 diff --git a/compiler/testData/codegen/box/polymorphicSignature/invokeExactWithInlineClass.kt b/compiler/testData/codegen/box/polymorphicSignature/invokeExactWithInlineClass.kt index 60f528a629b..bd41ed50af3 100644 --- a/compiler/testData/codegen/box/polymorphicSignature/invokeExactWithInlineClass.kt +++ b/compiler/testData/codegen/box/polymorphicSignature/invokeExactWithInlineClass.kt @@ -1,5 +1,4 @@ // !LANGUAGE: +PolymorphicSignature -// IGNORE_BACKEND_FIR: JVM_IR // TARGET_BACKEND: JVM // FULL_JDK // SKIP_JDK6