FIR2IR: fix annotations conversion for precompiled functions

fixes the case then the function being inlined is taken
from the binaries compiled on the previous iteration, and therefore
should be treated similarly to a fun from a library.
This commit is contained in:
Ilya Chernikov
2022-03-13 16:22:25 +01:00
committed by teamcity
parent aa0386276d
commit 6ae55a98cd
2 changed files with 5 additions and 1 deletions
@@ -1481,7 +1481,9 @@ class Fir2IrDeclarationStorage(
private fun IrMutableAnnotationContainer.convertAnnotationsForNonDeclaredMembers(
firAnnotationContainer: FirAnnotationContainer, origin: IrDeclarationOrigin,
) {
if ((firAnnotationContainer as? FirDeclaration)?.isFromLibrary == true || origin == IrDeclarationOrigin.FAKE_OVERRIDE) {
if ((firAnnotationContainer as? FirDeclaration)?.let { it.isFromLibrary || it.isPrecompiled } == true
|| origin == IrDeclarationOrigin.FAKE_OVERRIDE
) {
annotationGenerator.generate(this, firAnnotationContainer)
}
}
@@ -50,6 +50,8 @@ inline val FirDeclaration.isJava: Boolean
get() = origin == FirDeclarationOrigin.Java
inline val FirDeclaration.isFromLibrary: Boolean
get() = origin == FirDeclarationOrigin.Library
inline val FirDeclaration.isPrecompiled: Boolean
get() = origin == FirDeclarationOrigin.Precompiled
inline val FirDeclaration.isSynthetic: Boolean
get() = origin == FirDeclarationOrigin.Synthetic