[AA] replace KtCallableReceiverTypeRenderer with KtCallableReceiverRenderer

^KT-54417
This commit is contained in:
Dmitrii Gridin
2022-11-14 16:35:32 +01:00
committed by Space Team
parent 032026278c
commit b672949820
4 changed files with 17 additions and 14 deletions
@@ -49,7 +49,7 @@ public class KtDeclarationRenderer private constructor(
public val accessorBodyRenderer: KtPropertyAccessorBodyRenderer,
public val returnTypeRenderer: KtCallableReturnTypeRenderer,
public val receiverTyperRenderer: KtCallableReceiverTypeRenderer,
public val callableReceiverRenderer: KtCallableReceiverRenderer,
public val valueParametersRenderer: KtCallableParameterRenderer,
public val typeParametersRenderer: KtTypeParametersRenderer,
@@ -131,7 +131,7 @@ public class KtDeclarationRenderer private constructor(
this.accessorBodyRenderer = renderer.accessorBodyRenderer
this.returnTypeRenderer = renderer.returnTypeRenderer
this.receiverTyperRenderer = renderer.receiverTyperRenderer
this.callableReceiverRenderer = renderer.callableReceiverRenderer
this.valueParametersRenderer = renderer.valueParametersRenderer
this.typeParametersRenderer = renderer.typeParametersRenderer
@@ -196,7 +196,7 @@ public class KtDeclarationRenderer private constructor(
public lateinit var accessorBodyRenderer: KtPropertyAccessorBodyRenderer
public lateinit var returnTypeRenderer: KtCallableReturnTypeRenderer
public lateinit var receiverTyperRenderer: KtCallableReceiverTypeRenderer
public lateinit var callableReceiverRenderer: KtCallableReceiverRenderer
public lateinit var valueParametersRenderer: KtCallableParameterRenderer
public lateinit var typeParametersRenderer: KtTypeParametersRenderer
@@ -250,7 +250,7 @@ public class KtDeclarationRenderer private constructor(
accessorBodyRenderer,
returnTypeRenderer,
receiverTyperRenderer,
callableReceiverRenderer,
valueParametersRenderer,
typeParametersRenderer,
@@ -73,7 +73,7 @@ public object KtDeclarationRendererForSource {
singleTypeParameterRenderer = KtSingleTypeParameterSymbolRenderer.WITHOUT_BOUNDS
propertyAccessorsRenderer = KtPropertyAccessorsRenderer.NO_DEFAULT
receiverTyperRenderer = KtCallableReceiverTypeRenderer.WITH_IN_APPROXIMATION
callableReceiverRenderer = KtCallableReceiverRenderer.AS_TYPE_WITH_IN_APPROXIMATION
returnTypeRenderer = KtCallableReturnTypeRenderer.WITH_OUT_APPROXIMATION
typeRenderer = KtTypeRendererForSource.WITH_QUALIFIED_NAMES
@@ -7,20 +7,19 @@ package org.jetbrains.kotlin.analysis.api.renderer.declarations.renderers.callab
import org.jetbrains.kotlin.analysis.api.KtAnalysisSession
import org.jetbrains.kotlin.analysis.api.renderer.declarations.KtDeclarationRenderer
import org.jetbrains.kotlin.analysis.api.symbols.KtCallableSymbol
import org.jetbrains.kotlin.analysis.api.symbols.receiverType
import org.jetbrains.kotlin.analysis.api.symbols.KtReceiverParameterSymbol
import org.jetbrains.kotlin.analysis.utils.printer.PrettyPrinter
import org.jetbrains.kotlin.types.Variance
public interface KtCallableReceiverTypeRenderer {
public interface KtCallableReceiverRenderer {
context(KtAnalysisSession, KtDeclarationRenderer)
public fun renderReceiverType(symbol: KtCallableSymbol, printer: PrettyPrinter)
public fun renderReceiver(symbol: KtReceiverParameterSymbol, printer: PrettyPrinter)
public object WITH_IN_APPROXIMATION : KtCallableReceiverTypeRenderer {
public object AS_TYPE_WITH_IN_APPROXIMATION : KtCallableReceiverRenderer {
context(KtAnalysisSession, KtDeclarationRenderer)
override fun renderReceiverType(symbol: KtCallableSymbol, printer: PrettyPrinter) {
val receiverType = symbol.receiverType?.let { declarationTypeApproximator.approximateType(it, Variance.IN_VARIANCE) } ?: return
override fun renderReceiver(symbol: KtReceiverParameterSymbol, printer: PrettyPrinter) {
val receiverType = declarationTypeApproximator.approximateType(symbol.type, Variance.IN_VARIANCE)
typeRenderer.renderType(receiverType, printer)
}
}
}
}
@@ -27,7 +27,11 @@ public interface KtCallableSignatureRender {
},
{ typeParametersRenderer.renderTypeParameters(symbol, printer) },
{
withSuffix(".") { receiverTyperRenderer.renderReceiverType(symbol, printer) }
val receiverSymbol = symbol.receiverParameter
if (receiverSymbol != null) {
withSuffix(".") { callableReceiverRenderer.renderReceiver(receiverSymbol, printer) }
}
if (symbol is KtNamedSymbol) {
nameRenderer.renderName(symbol, printer)
}