[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.KtAnalysisSession
import org.jetbrains.kotlin.analysis.api.renderer.types.KtTypeRenderer import org.jetbrains.kotlin.analysis.api.renderer.types.KtTypeRenderer
import org.jetbrains.kotlin.analysis.api.types.KtClassType 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.KtNonErrorClassType
import org.jetbrains.kotlin.analysis.api.types.KtType
import org.jetbrains.kotlin.analysis.utils.printer.PrettyPrinter import org.jetbrains.kotlin.analysis.utils.printer.PrettyPrinter
import org.jetbrains.kotlin.renderer.render import org.jetbrains.kotlin.renderer.render
@@ -19,19 +21,14 @@ public interface KtClassTypeQualifierRenderer {
public object WITH_SHORT_NAMES : KtClassTypeQualifierRenderer { public object WITH_SHORT_NAMES : KtClassTypeQualifierRenderer {
context(KtAnalysisSession, KtTypeRenderer) context(KtAnalysisSession, KtTypeRenderer)
override fun renderClassTypeQualifier(type: KtClassType, printer: PrettyPrinter) { 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 { public object WITH_SHORT_NAMES_WITH_NESTED_CLASSIFIERS : KtClassTypeQualifierRenderer {
context(KtAnalysisSession, KtTypeRenderer) context(KtAnalysisSession, KtTypeRenderer)
override fun renderClassTypeQualifier(type: KtClassType, printer: PrettyPrinter): Unit = printer { override fun renderClassTypeQualifier(type: KtClassType, printer: PrettyPrinter): Unit = printer {
printCollection(type.qualifiers, separator = ".") { qualifier -> printCollection(type.qualifiers, separator = ".") { qualifier -> qualifier.render(type, printer) }
typeNameRenderer.renderName(qualifier.name, type, printer)
printCollectionIfNotEmpty(qualifier.typeArguments, prefix = "<", postfix = ">") {
typeProjectionRenderer.renderTypeProjection(it, this)
}
}
} }
} }
@@ -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)
}
}