FIR2IR: filter correct use-site target for value parameter annotations.
This commit is contained in:
committed by
Mikhail Glukhikh
parent
76e679a6ca
commit
e844c59e7e
+12
@@ -9,6 +9,7 @@ import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget
|
||||
import org.jetbrains.kotlin.fir.FirAnnotationContainer
|
||||
import org.jetbrains.kotlin.fir.backend.Fir2IrVisitor
|
||||
import org.jetbrains.kotlin.fir.declarations.FirProperty
|
||||
import org.jetbrains.kotlin.fir.declarations.FirValueParameter
|
||||
import org.jetbrains.kotlin.ir.declarations.*
|
||||
import org.jetbrains.kotlin.ir.expressions.IrConstructorCall
|
||||
import org.jetbrains.kotlin.ir.util.isPropertyField
|
||||
@@ -22,6 +23,17 @@ internal class AnnotationGenerator(private val visitor: Fir2IrVisitor) {
|
||||
}
|
||||
}
|
||||
|
||||
fun generate(irValueParameter: IrValueParameter, firValueParameter: FirValueParameter, isInConstructor: Boolean) {
|
||||
irValueParameter.annotations +=
|
||||
firValueParameter.annotations
|
||||
.filter {
|
||||
it.useSiteTarget == null || !isInConstructor || it.useSiteTarget == AnnotationUseSiteTarget.CONSTRUCTOR_PARAMETER
|
||||
}
|
||||
.mapNotNull {
|
||||
it.accept(visitor, null) as? IrConstructorCall
|
||||
}
|
||||
}
|
||||
|
||||
fun generate(irProperty: IrProperty, property: FirProperty) {
|
||||
irProperty.annotations +=
|
||||
property.annotations
|
||||
|
||||
+1
-1
@@ -100,7 +100,7 @@ internal class ClassMemberGenerator(
|
||||
}
|
||||
for ((valueParameter, firValueParameter) in valueParameters.zip(firFunction.valueParameters)) {
|
||||
valueParameter.setDefaultValue(firValueParameter)
|
||||
annotationGenerator.generate(valueParameter, firValueParameter)
|
||||
annotationGenerator.generate(valueParameter, firValueParameter, irFunction is IrConstructor)
|
||||
}
|
||||
annotationGenerator.generate(irFunction, firFunction)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user