Get rid of mode argument in FirElement.render(withType)

This commit is contained in:
Mikhail Glukhikh
2022-07-07 08:40:46 +02:00
committed by Space
parent 7c27e6f843
commit abfa33b200
7 changed files with 16 additions and 19 deletions
@@ -29,7 +29,6 @@ import org.jetbrains.kotlin.fir.declarations.impl.FirOuterClassTypeParameterRef
import org.jetbrains.kotlin.fir.java.declarations.FirJavaField import org.jetbrains.kotlin.fir.java.declarations.FirJavaField
import org.jetbrains.kotlin.fir.renderer.FirDeclarationRendererWithResolvePhase import org.jetbrains.kotlin.fir.renderer.FirDeclarationRendererWithResolvePhase
import org.jetbrains.kotlin.fir.renderer.FirRenderer import org.jetbrains.kotlin.fir.renderer.FirRenderer
import org.jetbrains.kotlin.fir.renderer.FirRenderer.RenderMode.Companion.Normal
import org.jetbrains.kotlin.fir.resolve.getContainingClass import org.jetbrains.kotlin.fir.resolve.getContainingClass
import org.jetbrains.kotlin.fir.resolve.getSymbolByLookupTag import org.jetbrains.kotlin.fir.resolve.getSymbolByLookupTag
import org.jetbrains.kotlin.fir.resolve.inference.ConeTypeParameterBasedTypeVariable import org.jetbrains.kotlin.fir.resolve.inference.ConeTypeParameterBasedTypeVariable
@@ -585,10 +584,9 @@ internal class KtSymbolByFirBuilder constructor(
returns() implies requirement returns() implies requirement
} }
require(requirement) { require(requirement) {
// TODO: renderWithTypes!!!
val renderedSymbol = FirRenderer().with( val renderedSymbol = FirRenderer().with(
declarationRenderer = FirDeclarationRendererWithResolvePhase() declarationRenderer = FirDeclarationRendererWithResolvePhase()
).renderElementAsString(firSymbol.fir) ).renderElementWithTypeAsString(firSymbol.fir)
"Cannot build ${S::class.simpleName} for $renderedSymbol}" "Cannot build ${S::class.simpleName} for $renderedSymbol}"
} }
} }
@@ -23,7 +23,6 @@ import org.jetbrains.kotlin.fir.declarations.FirTypeParameterRefsOwner
import org.jetbrains.kotlin.fir.psi import org.jetbrains.kotlin.fir.psi
import org.jetbrains.kotlin.fir.renderer.FirDeclarationRendererWithResolvePhase import org.jetbrains.kotlin.fir.renderer.FirDeclarationRendererWithResolvePhase
import org.jetbrains.kotlin.fir.renderer.FirRenderer import org.jetbrains.kotlin.fir.renderer.FirRenderer
import org.jetbrains.kotlin.fir.renderer.FirRenderer.RenderMode.Companion.Normal
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
import org.jetbrains.kotlin.fir.symbols.ensureResolved import org.jetbrains.kotlin.fir.symbols.ensureResolved
import org.jetbrains.kotlin.fir.symbols.impl.* import org.jetbrains.kotlin.fir.symbols.impl.*
@@ -33,10 +32,9 @@ import org.jetbrains.kotlin.psi.KtDeclaration
internal fun FirCallableSymbol<*>.invalidModalityError(): Nothing { internal fun FirCallableSymbol<*>.invalidModalityError(): Nothing {
// TODO: renderWithTypes!!!
val rendered = FirRenderer().with( val rendered = FirRenderer().with(
declarationRenderer = FirDeclarationRendererWithResolvePhase() declarationRenderer = FirDeclarationRendererWithResolvePhase()
).renderElementAsString(fir) ).renderElementWithTypeAsString(fir)
error( error(
"""|Symbol modality should not be null, looks like the FIR symbol was not properly resolved """|Symbol modality should not be null, looks like the FIR symbol was not properly resolved
| |
@@ -10,7 +10,6 @@ import org.jetbrains.kotlin.analysis.low.level.api.fir.ideSessionComponents
import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.declarations.FirDeclaration import org.jetbrains.kotlin.fir.declarations.FirDeclaration
import org.jetbrains.kotlin.fir.renderWithType import org.jetbrains.kotlin.fir.renderWithType
import org.jetbrains.kotlin.fir.renderer.FirRenderer.RenderMode.Companion.Normal
import org.jetbrains.kotlin.fir.resolve.providers.symbolProvider import org.jetbrains.kotlin.fir.resolve.providers.symbolProvider
import org.jetbrains.kotlin.fir.scopes.FirScope import org.jetbrains.kotlin.fir.scopes.FirScope
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
@@ -54,7 +53,7 @@ internal fun FirBasedSymbol<*>.createSignature(): IdSignature =
internal fun FirDeclaration.createSignature(): IdSignature { internal fun FirDeclaration.createSignature(): IdSignature {
val signatureComposer = moduleData.session.ideSessionComponents.signatureComposer val signatureComposer = moduleData.session.ideSessionComponents.signatureComposer
return signatureComposer.composeSignature(this) return signatureComposer.composeSignature(this)
?: error("Could not compose signature for ${this.renderWithType(Normal)}, looks like it is private or local") ?: error("Could not compose signature for ${this.renderWithType()}, looks like it is private or local")
} }
internal fun KtFirAnalysisSession.getClassLikeSymbol(classId: ClassId) = internal fun KtFirAnalysisSession.getClassLikeSymbol(classId: ClassId) =
@@ -15,7 +15,6 @@ import org.jetbrains.kotlin.fir.builder.PsiHandlingMode
import org.jetbrains.kotlin.fir.builder.RawFirBuilder import org.jetbrains.kotlin.fir.builder.RawFirBuilder
import org.jetbrains.kotlin.fir.declarations.* import org.jetbrains.kotlin.fir.declarations.*
import org.jetbrains.kotlin.fir.psi import org.jetbrains.kotlin.fir.psi
import org.jetbrains.kotlin.fir.render
import org.jetbrains.kotlin.fir.renderer.FirRenderer import org.jetbrains.kotlin.fir.renderer.FirRenderer
import org.jetbrains.kotlin.fir.resolve.ScopeSession import org.jetbrains.kotlin.fir.resolve.ScopeSession
import org.jetbrains.kotlin.fir.scopes.FirContainingNamesAwareScope import org.jetbrains.kotlin.fir.scopes.FirContainingNamesAwareScope
@@ -127,7 +126,7 @@ abstract class AbstractPartialRawFirBuilderTestCase : AbstractLowLevelApiSingleF
null null
) )
val firDump = firElement.render(FirRenderer.RenderMode.WithFqNames) val firDump = FirRenderer(mode = FirRenderer.RenderMode.WithFqNames).renderElementAsString(firElement)
JUnit5Assertions.assertEqualsToTestDataFileSibling(firDump) JUnit5Assertions.assertEqualsToTestDataFileSibling(firDump)
} }
@@ -20,8 +20,8 @@ import org.jetbrains.kotlin.fir.symbols.impl.FirFileSymbol
import org.jetbrains.kotlin.psi.KtElement import org.jetbrains.kotlin.psi.KtElement
internal fun FirElement.renderWithClassName(renderMode: FirRenderer.RenderMode = FirRenderer.RenderMode.Normal): String = internal fun FirElement.renderWithClassName(): String =
"${this::class.simpleName} `${render(renderMode)}`" "${this::class.simpleName} `${render()}`"
internal fun FirBasedSymbol<*>.name(): String = when (this) { internal fun FirBasedSymbol<*>.name(): String = when (this) {
@@ -80,11 +80,8 @@ val FirReference.resolvedSymbol: FirBasedSymbol<*>? get() = resolved?.resolvedSy
val FirContextReceiver.labelName: Name? get() = customLabelName ?: labelNameFromTypeRef val FirContextReceiver.labelName: Name? get() = customLabelName ?: labelNameFromTypeRef
fun FirElement.renderWithType(mode: FirRenderer.RenderMode = FirRenderer.RenderMode.Normal): String = buildString { fun FirElement.renderWithType(): String =
append(this@renderWithType) FirRenderer().renderElementWithTypeAsString(this)
append(": ")
FirRenderer(this, mode).renderElementAsString(this@renderWithType)
}
fun FirElement.render(mode: FirRenderer.RenderMode = FirRenderer.RenderMode.Normal): String = fun FirElement.render(): String =
FirRenderer(mode = mode).renderElementAsString(this) FirRenderer().renderElementAsString(this)
@@ -108,6 +108,12 @@ open class FirRenderer private constructor(
return toString() return toString()
} }
fun renderElementWithTypeAsString(element: FirElement): String {
print(element)
print(": ")
return renderElementAsString(element)
}
fun renderAsCallableDeclarationString(callableDeclaration: FirCallableDeclaration): String { fun renderAsCallableDeclarationString(callableDeclaration: FirCallableDeclaration): String {
visitor.visitCallableDeclaration(callableDeclaration) visitor.visitCallableDeclaration(callableDeclaration)
return toString() return toString()