diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/KtSymbolByFirBuilder.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/KtSymbolByFirBuilder.kt index 26b534048e1..d31ad5f1e64 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/KtSymbolByFirBuilder.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/KtSymbolByFirBuilder.kt @@ -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.renderer.FirDeclarationRendererWithResolvePhase 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.getSymbolByLookupTag import org.jetbrains.kotlin.fir.resolve.inference.ConeTypeParameterBasedTypeVariable @@ -585,10 +584,9 @@ internal class KtSymbolByFirBuilder constructor( returns() implies requirement } require(requirement) { - // TODO: renderWithTypes!!! val renderedSymbol = FirRenderer().with( declarationRenderer = FirDeclarationRendererWithResolvePhase() - ).renderElementAsString(firSymbol.fir) + ).renderElementWithTypeAsString(firSymbol.fir) "Cannot build ${S::class.simpleName} for $renderedSymbol}" } } diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/firSymbolUtils.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/firSymbolUtils.kt index b9a6ea152a1..74083232c58 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/firSymbolUtils.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/firSymbolUtils.kt @@ -23,7 +23,6 @@ import org.jetbrains.kotlin.fir.declarations.FirTypeParameterRefsOwner import org.jetbrains.kotlin.fir.psi import org.jetbrains.kotlin.fir.renderer.FirDeclarationRendererWithResolvePhase 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.ensureResolved import org.jetbrains.kotlin.fir.symbols.impl.* @@ -33,10 +32,9 @@ import org.jetbrains.kotlin.psi.KtDeclaration internal fun FirCallableSymbol<*>.invalidModalityError(): Nothing { - // TODO: renderWithTypes!!! val rendered = FirRenderer().with( declarationRenderer = FirDeclarationRendererWithResolvePhase() - ).renderElementAsString(fir) + ).renderElementWithTypeAsString(fir) error( """|Symbol modality should not be null, looks like the FIR symbol was not properly resolved | diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/pointerUtils.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/pointerUtils.kt index d82dd4ecbca..58f7903cd71 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/pointerUtils.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/pointerUtils.kt @@ -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.declarations.FirDeclaration 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.scopes.FirScope import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol @@ -54,7 +53,7 @@ internal fun FirBasedSymbol<*>.createSignature(): IdSignature = internal fun FirDeclaration.createSignature(): IdSignature { val signatureComposer = moduleData.session.ideSessionComponents.signatureComposer 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) = diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/AbstractPartialRawFirBuilderTestCase.kt b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/AbstractPartialRawFirBuilderTestCase.kt index bc52f42f38f..9d181e72faa 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/AbstractPartialRawFirBuilderTestCase.kt +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/AbstractPartialRawFirBuilderTestCase.kt @@ -15,7 +15,6 @@ import org.jetbrains.kotlin.fir.builder.PsiHandlingMode import org.jetbrains.kotlin.fir.builder.RawFirBuilder import org.jetbrains.kotlin.fir.declarations.* import org.jetbrains.kotlin.fir.psi -import org.jetbrains.kotlin.fir.render import org.jetbrains.kotlin.fir.renderer.FirRenderer import org.jetbrains.kotlin.fir.resolve.ScopeSession import org.jetbrains.kotlin.fir.scopes.FirContainingNamesAwareScope @@ -127,7 +126,7 @@ abstract class AbstractPartialRawFirBuilderTestCase : AbstractLowLevelApiSingleF null ) - val firDump = firElement.render(FirRenderer.RenderMode.WithFqNames) + val firDump = FirRenderer(mode = FirRenderer.RenderMode.WithFqNames).renderElementAsString(firElement) JUnit5Assertions.assertEqualsToTestDataFileSibling(firDump) } diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/firTestUtils.kt b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/firTestUtils.kt index 78951b6fabd..ac11f019cbe 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/firTestUtils.kt +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/firTestUtils.kt @@ -20,8 +20,8 @@ import org.jetbrains.kotlin.fir.symbols.impl.FirFileSymbol import org.jetbrains.kotlin.psi.KtElement -internal fun FirElement.renderWithClassName(renderMode: FirRenderer.RenderMode = FirRenderer.RenderMode.Normal): String = - "${this::class.simpleName} `${render(renderMode)}`" +internal fun FirElement.renderWithClassName(): String = + "${this::class.simpleName} `${render()}`" internal fun FirBasedSymbol<*>.name(): String = when (this) { diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/Utils.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/Utils.kt index dc513baa3fc..a43e5d1d714 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/Utils.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/Utils.kt @@ -80,11 +80,8 @@ val FirReference.resolvedSymbol: FirBasedSymbol<*>? get() = resolved?.resolvedSy val FirContextReceiver.labelName: Name? get() = customLabelName ?: labelNameFromTypeRef -fun FirElement.renderWithType(mode: FirRenderer.RenderMode = FirRenderer.RenderMode.Normal): String = buildString { - append(this@renderWithType) - append(": ") - FirRenderer(this, mode).renderElementAsString(this@renderWithType) -} +fun FirElement.renderWithType(): String = + FirRenderer().renderElementWithTypeAsString(this) -fun FirElement.render(mode: FirRenderer.RenderMode = FirRenderer.RenderMode.Normal): String = - FirRenderer(mode = mode).renderElementAsString(this) +fun FirElement.render(): String = + FirRenderer().renderElementAsString(this) diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/renderer/FirRenderer.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/renderer/FirRenderer.kt index 3cf771b85a7..8a1051d5e12 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/renderer/FirRenderer.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/renderer/FirRenderer.kt @@ -108,6 +108,12 @@ open class FirRenderer private constructor( return toString() } + fun renderElementWithTypeAsString(element: FirElement): String { + print(element) + print(": ") + return renderElementAsString(element) + } + fun renderAsCallableDeclarationString(callableDeclaration: FirCallableDeclaration): String { visitor.visitCallableDeclaration(callableDeclaration) return toString()