[FIR] Fix all usages of annotations due to new FirAnnotation hierarchy
This commit is contained in:
committed by
teamcityserver
parent
2e7564a21e
commit
5769d42248
@@ -26,6 +26,7 @@ import org.jetbrains.kotlin.fir.symbols.impl.FirNamedFunctionSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol
|
||||
import org.jetbrains.kotlin.fir.types.*
|
||||
import org.jetbrains.kotlin.fir.visitors.FirVisitorVoid
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.name.SpecialNames
|
||||
import org.jetbrains.kotlin.name.StandardClassIds
|
||||
import org.jetbrains.kotlin.types.Variance
|
||||
@@ -938,6 +939,10 @@ class FirRenderer(builder: StringBuilder, private val mode: RenderMode = RenderM
|
||||
print(")")
|
||||
}
|
||||
|
||||
override fun visitAnnotationCall(annotationCall: FirAnnotationCall) {
|
||||
visitAnnotation(annotationCall)
|
||||
}
|
||||
|
||||
override fun visitAnnotation(annotation: FirAnnotation) {
|
||||
print("@")
|
||||
annotation.useSiteTarget?.let {
|
||||
@@ -945,7 +950,14 @@ class FirRenderer(builder: StringBuilder, private val mode: RenderMode = RenderM
|
||||
print(":")
|
||||
}
|
||||
annotation.annotationTypeRef.accept(this)
|
||||
visitCall(annotation)
|
||||
when (annotation) {
|
||||
is FirAnnotationCall -> if (annotation.calleeReference.let { it is FirResolvedNamedReference || it is FirErrorNamedReference }) {
|
||||
annotation.renderArgumentMapping()
|
||||
} else {
|
||||
visitCall(annotation)
|
||||
}
|
||||
else -> annotation.renderArgumentMapping()
|
||||
}
|
||||
if (annotation.useSiteTarget == AnnotationUseSiteTarget.FILE) {
|
||||
println()
|
||||
} else {
|
||||
@@ -953,6 +965,29 @@ class FirRenderer(builder: StringBuilder, private val mode: RenderMode = RenderM
|
||||
}
|
||||
}
|
||||
|
||||
private fun FirAnnotation.renderArgumentMapping() {
|
||||
print("(")
|
||||
if (mode.renderCallArguments) {
|
||||
argumentMapping.mapping.renderSeparated()
|
||||
} else {
|
||||
if (argumentMapping.mapping.isNotEmpty()) {
|
||||
print("...")
|
||||
}
|
||||
}
|
||||
print(")")
|
||||
}
|
||||
|
||||
private fun Map<Name, FirElement>.renderSeparated() {
|
||||
for ((index, element) in this.entries.withIndex()) {
|
||||
val (name, argument) = element
|
||||
if (index > 0) {
|
||||
print(", ")
|
||||
}
|
||||
print("$name = ")
|
||||
argument.accept(this@FirRenderer)
|
||||
}
|
||||
}
|
||||
|
||||
override fun visitDelegatedConstructorCall(delegatedConstructorCall: FirDelegatedConstructorCall) {
|
||||
val dispatchReceiver = delegatedConstructorCall.dispatchReceiver
|
||||
if (dispatchReceiver !is FirNoReceiverExpression) {
|
||||
|
||||
+11
@@ -9,6 +9,7 @@ import org.jetbrains.kotlin.fir.FirElement
|
||||
import org.jetbrains.kotlin.fir.FirSourceElement
|
||||
import org.jetbrains.kotlin.fir.expressions.FirAnnotationArgumentMapping
|
||||
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
||||
import org.jetbrains.kotlin.fir.expressions.unwrapArgument
|
||||
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
||||
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
@@ -36,3 +37,13 @@ object FirEmptyAnnotationArgumentMapping : FirAnnotationArgumentMapping() {
|
||||
return this
|
||||
}
|
||||
}
|
||||
|
||||
fun FirResolvedArgumentList.toAnnotationArgumentMapping(): FirAnnotationArgumentMapping {
|
||||
return FirAnnotationArgumentMappingImpl(
|
||||
source = null,
|
||||
mapping = mapping.entries.associateBy(
|
||||
keySelector = { it.value.name },
|
||||
valueTransform = { it.key.unwrapArgument() }
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user