[AA] Properly render type arguments in short name renderer

Render type arguments for short names without nested qualifier.
This commit is contained in:
Bart van Helvert
2023-06-20 13:56:25 +02:00
committed by Space Team
parent 26dbeb9b6f
commit 807df9a120
@@ -8,7 +8,9 @@ package org.jetbrains.kotlin.analysis.api.renderer.types.renderers
import org.jetbrains.kotlin.analysis.api.KtAnalysisSession
import org.jetbrains.kotlin.analysis.api.renderer.types.KtTypeRenderer
import org.jetbrains.kotlin.analysis.api.types.KtClassType
import org.jetbrains.kotlin.analysis.api.types.KtClassTypeQualifier
import org.jetbrains.kotlin.analysis.api.types.KtNonErrorClassType
import org.jetbrains.kotlin.analysis.api.types.KtType
import org.jetbrains.kotlin.analysis.utils.printer.PrettyPrinter
import org.jetbrains.kotlin.renderer.render
@@ -19,19 +21,14 @@ public interface KtClassTypeQualifierRenderer {
public object WITH_SHORT_NAMES : KtClassTypeQualifierRenderer {
context(KtAnalysisSession, KtTypeRenderer)
override fun renderClassTypeQualifier(type: KtClassType, printer: PrettyPrinter) {
typeNameRenderer.renderName(type.qualifiers.last().name, type, printer)
type.qualifiers.last().render(type, printer)
}
}
public object WITH_SHORT_NAMES_WITH_NESTED_CLASSIFIERS : KtClassTypeQualifierRenderer {
context(KtAnalysisSession, KtTypeRenderer)
override fun renderClassTypeQualifier(type: KtClassType, printer: PrettyPrinter): Unit = printer {
printCollection(type.qualifiers, separator = ".") { qualifier ->
typeNameRenderer.renderName(qualifier.name, type, printer)
printCollectionIfNotEmpty(qualifier.typeArguments, prefix = "<", postfix = ">") {
typeProjectionRenderer.renderTypeProjection(it, this)
}
}
printCollection(type.qualifiers, separator = ".") { qualifier -> qualifier.render(type, printer) }
}
}
@@ -49,3 +46,11 @@ public interface KtClassTypeQualifierRenderer {
}
}
}
context(KtAnalysisSession, KtTypeRenderer)
private fun KtClassTypeQualifier.render(type: KtType, printer: PrettyPrinter) = printer {
typeNameRenderer.renderName(name, type, printer)
printCollectionIfNotEmpty(typeArguments, prefix = "<", postfix = ">") {
typeProjectionRenderer.renderTypeProjection(it, this)
}
}