[FIR] FirRenderer: render receiver annotation
^KT-54417
This commit is contained in:
committed by
Space Team
parent
649bf92d98
commit
40c64c672d
+3
-3
@@ -1,10 +1,10 @@
|
||||
public final class A : R|kotlin/Any| {
|
||||
public final fun R|kotlin/String|.myLength(@R|test/Ann|() q: R|kotlin/String|): R|kotlin/Int|
|
||||
public final fun @RECEIVER:R|test/Ann|() R|kotlin/String|.myLength(@R|test/Ann|() q: R|kotlin/String|): R|kotlin/Int|
|
||||
|
||||
public final val R|kotlin/String|.myLength2: R|kotlin/Int|
|
||||
public final val @RECEIVER:R|test/Ann|() R|kotlin/String|.myLength2: R|kotlin/Int|
|
||||
public get(): R|kotlin/Int|
|
||||
|
||||
public final var R|kotlin/String|.myLength3: R|kotlin/Int|
|
||||
public final var @RECEIVER:R|test/Ann|() R|kotlin/String|.myLength3: R|kotlin/Int|
|
||||
public get(): R|kotlin/Int|
|
||||
public set(v: R|kotlin/Int|): R|kotlin/Unit|
|
||||
|
||||
|
||||
@@ -19,22 +19,23 @@ open class FirAnnotationRenderer {
|
||||
protected val printer get() = components.printer
|
||||
protected val callArgumentsRenderer get() = components.callArgumentsRenderer
|
||||
|
||||
fun render(annotationContainer: FirAnnotationContainer) {
|
||||
renderAnnotations(annotationContainer.annotations)
|
||||
fun render(annotationContainer: FirAnnotationContainer, explicitAnnotationUseSiteTarget: AnnotationUseSiteTarget? = null) {
|
||||
renderAnnotations(annotationContainer.annotations, explicitAnnotationUseSiteTarget)
|
||||
}
|
||||
|
||||
internal fun renderAnnotations(annotations: List<FirAnnotation>) {
|
||||
internal fun renderAnnotations(annotations: List<FirAnnotation>, explicitAnnotationUseSiteTarget: AnnotationUseSiteTarget? = null) {
|
||||
for (annotation in annotations) {
|
||||
renderAnnotation(annotation)
|
||||
renderAnnotation(annotation, explicitAnnotationUseSiteTarget)
|
||||
}
|
||||
}
|
||||
|
||||
internal fun renderAnnotation(annotation: FirAnnotation) {
|
||||
internal fun renderAnnotation(annotation: FirAnnotation, explicitAnnotationUseSiteTarget: AnnotationUseSiteTarget? = null) {
|
||||
printer.print("@")
|
||||
annotation.useSiteTarget?.let {
|
||||
(explicitAnnotationUseSiteTarget ?: annotation.useSiteTarget)?.let {
|
||||
printer.print(it.name)
|
||||
printer.print(":")
|
||||
}
|
||||
|
||||
annotation.annotationTypeRef.accept(visitor)
|
||||
when (annotation) {
|
||||
is FirAnnotationCall -> if (annotation.calleeReference.let { it is FirResolvedNamedReference || it is FirErrorNamedReference }) {
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
|
||||
package org.jetbrains.kotlin.fir.renderer
|
||||
|
||||
import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget
|
||||
import org.jetbrains.kotlin.fir.*
|
||||
import org.jetbrains.kotlin.fir.contracts.FirContractDescription
|
||||
import org.jetbrains.kotlin.fir.contracts.FirEffectDeclaration
|
||||
@@ -182,6 +183,7 @@ class FirRenderer(
|
||||
val receiverParameter = callableDeclaration.receiverParameter
|
||||
print(" ")
|
||||
if (receiverParameter != null) {
|
||||
annotationRenderer?.render(receiverParameter, AnnotationUseSiteTarget.RECEIVER)
|
||||
receiverParameter.type.accept(this)
|
||||
print(".")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user