FirRenderer: partially get rid of RenderMode
This commit is contained in:
+7
-1
@@ -27,7 +27,9 @@ import org.jetbrains.kotlin.fir.declarations.*
|
||||
import org.jetbrains.kotlin.fir.declarations.impl.FirFieldImpl
|
||||
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
|
||||
@@ -583,7 +585,11 @@ internal class KtSymbolByFirBuilder constructor(
|
||||
returns() implies requirement
|
||||
}
|
||||
require(requirement) {
|
||||
"Cannot build ${S::class.simpleName} for ${firSymbol.fir.renderWithType(FirRenderer.RenderMode.WithResolvePhases)}"
|
||||
// TODO: renderWithTypes!!!
|
||||
val renderedSymbol = FirRenderer().with(
|
||||
declarationRenderer = FirDeclarationRendererWithResolvePhase()
|
||||
).renderElementAsString(firSymbol.fir)
|
||||
"Cannot build ${S::class.simpleName} for $renderedSymbol}"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+4
-1
@@ -160,7 +160,10 @@ internal class KtFirTypeProvider(
|
||||
?: this.typeArguments.mapNotNull { it.type })
|
||||
|
||||
require(typeParameterSymbols.size == argumentTypes.size) {
|
||||
"'${symbol.fir.render(FirRenderer.RenderMode.NoBodies)}' expects '${typeParameterSymbols.size}' type arguments " +
|
||||
val renderedSymbol = FirRenderer(mode = FirRenderer.RenderMode.NoBodies).with(
|
||||
annotationRenderer = null, bodyRenderer = null
|
||||
).renderElementAsString(symbol.fir)
|
||||
"'$renderedSymbol' expects '${typeParameterSymbols.size}' type arguments " +
|
||||
"but type '${this.renderForDebugging()}' has ${argumentTypes.size} type arguments."
|
||||
}
|
||||
|
||||
|
||||
+7
-2
@@ -21,8 +21,9 @@ import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
||||
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
||||
import org.jetbrains.kotlin.fir.declarations.FirTypeParameterRefsOwner
|
||||
import org.jetbrains.kotlin.fir.psi
|
||||
import org.jetbrains.kotlin.fir.renderWithType
|
||||
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.*
|
||||
@@ -32,10 +33,14 @@ import org.jetbrains.kotlin.psi.KtDeclaration
|
||||
|
||||
|
||||
internal fun FirCallableSymbol<*>.invalidModalityError(): Nothing {
|
||||
// TODO: renderWithTypes!!!
|
||||
val rendered = FirRenderer().with(
|
||||
declarationRenderer = FirDeclarationRendererWithResolvePhase()
|
||||
).renderElementAsString(fir)
|
||||
error(
|
||||
"""|Symbol modality should not be null, looks like the FIR symbol was not properly resolved
|
||||
|
|
||||
|${fir.renderWithType(FirRenderer.RenderMode.WithResolvePhases)}
|
||||
|$rendered
|
||||
|
|
||||
|${(fir.psi as? KtDeclaration)?.getElementTextInContext()}""".trimMargin()
|
||||
)
|
||||
|
||||
+2
-2
@@ -10,7 +10,7 @@ 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
|
||||
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 +54,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(FirRenderer.RenderMode.WithResolvePhases)}, looks like it is private or local")
|
||||
?: error("Could not compose signature for ${this.renderWithType(Normal)}, looks like it is private or local")
|
||||
}
|
||||
|
||||
internal fun KtFirAnalysisSession.getClassLikeSymbol(classId: ClassId) =
|
||||
|
||||
+4
-4
@@ -12,7 +12,7 @@ import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
||||
import org.jetbrains.kotlin.fir.declarations.FirFile
|
||||
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
||||
import org.jetbrains.kotlin.fir.realPsi
|
||||
import org.jetbrains.kotlin.fir.render
|
||||
import org.jetbrains.kotlin.fir.renderer.FirDeclarationRendererWithAttributesAndResolvePhase
|
||||
import org.jetbrains.kotlin.fir.renderer.FirRenderer
|
||||
import org.jetbrains.kotlin.fir.symbols.ensureResolved
|
||||
import org.jetbrains.kotlin.fir.visitors.FirVisitorVoid
|
||||
@@ -51,8 +51,8 @@ abstract class AbstractFirLazyDeclarationResolveTest : AbstractLowLevelApiSingle
|
||||
}
|
||||
|
||||
override fun doTestByFileStructure(ktFile: KtFile, moduleStructure: TestModuleStructure, testServices: TestServices) {
|
||||
val rendererOption = FirRenderer.RenderMode.WithDeclarationAttributes.copy(renderDeclarationResolvePhase = true)
|
||||
val resultBuilder = StringBuilder()
|
||||
val renderer = FirRenderer(resultBuilder).with(declarationRenderer = FirDeclarationRendererWithAttributesAndResolvePhase())
|
||||
resolveWithClearCaches(ktFile) { firResolveSession ->
|
||||
check(firResolveSession is LLFirSourceResolveSession)
|
||||
val declarationToResolve = firResolveSession
|
||||
@@ -63,7 +63,7 @@ abstract class AbstractFirLazyDeclarationResolveTest : AbstractLowLevelApiSingle
|
||||
declarationToResolve.ensureResolved(currentPhase)
|
||||
val firFile = firResolveSession.getOrBuildFirFile(ktFile)
|
||||
resultBuilder.append("\n${currentPhase.name}:\n")
|
||||
resultBuilder.append(firFile.render(rendererOption))
|
||||
renderer.renderElementAsString(firFile)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -72,7 +72,7 @@ abstract class AbstractFirLazyDeclarationResolveTest : AbstractLowLevelApiSingle
|
||||
val firFile = firResolveSession.getOrBuildFirFile(ktFile)
|
||||
firFile.ensureResolved(FirResolvePhase.BODY_RESOLVE)
|
||||
resultBuilder.append("\nFILE RAW TO BODY:\n")
|
||||
resultBuilder.append(firFile.render(rendererOption))
|
||||
renderer.renderElementAsString(firFile)
|
||||
}
|
||||
|
||||
testServices.assertions.assertEqualsToTestDataFileSibling(resultBuilder.toString())
|
||||
|
||||
+5
-2
@@ -8,8 +8,9 @@ package org.jetbrains.kotlin.analysis.low.level.api.fir
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LowLevelFirApiFacadeForResolveOnAir
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.state.LLFirSourceResolveSession
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.test.base.AbstractLowLevelApiSingleFileTest
|
||||
import org.jetbrains.kotlin.fir.render
|
||||
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.psi.KtAnnotated
|
||||
import org.jetbrains.kotlin.psi.KtElement
|
||||
import org.jetbrains.kotlin.psi.KtFile
|
||||
@@ -35,7 +36,9 @@ abstract class AbstractFirOnAirResolveTest : AbstractLowLevelApiSingleFileTest()
|
||||
resolveWithClearCaches(ktFile) { firResolveSession ->
|
||||
check(firResolveSession is LLFirSourceResolveSession)
|
||||
val firElement = LowLevelFirApiFacadeForResolveOnAir.onAirResolveElement(firResolveSession, place, onAir)
|
||||
val rendered = firElement.render(FirRenderer.RenderMode.WithResolvePhases)
|
||||
val rendered = FirRenderer().with(
|
||||
declarationRenderer = FirDeclarationRendererWithResolvePhase()
|
||||
).renderElementAsString(firElement)
|
||||
testServices.assertions.assertEqualsToTestDataFileSibling(rendered)
|
||||
}
|
||||
}
|
||||
|
||||
+2
-5
@@ -13,6 +13,7 @@ import org.jetbrains.kotlin.analysis.test.framework.services.expressionMarkerPro
|
||||
import org.jetbrains.kotlin.fir.FirElement
|
||||
import org.jetbrains.kotlin.fir.declarations.FirImport
|
||||
import org.jetbrains.kotlin.fir.render
|
||||
import org.jetbrains.kotlin.fir.renderer.FirPackageDirectiveRenderer
|
||||
import org.jetbrains.kotlin.fir.renderer.FirRenderer
|
||||
import org.jetbrains.kotlin.psi.KtElement
|
||||
import org.jetbrains.kotlin.psi.KtFile
|
||||
@@ -59,13 +60,9 @@ abstract class AbstractGetOrBuildFirTest : AbstractLowLevelApiSingleFileTest() {
|
||||
private fun render(firElement: FirElement?): String = when (firElement) {
|
||||
null -> "null"
|
||||
is FirImport -> "import ${firElement.importedFqName}"
|
||||
else -> firElement.render(renderingMode)
|
||||
else -> FirRenderer().with(packageDirectiveRenderer = FirPackageDirectiveRenderer()).renderElementAsString(firElement)
|
||||
}
|
||||
|
||||
private val renderingMode = FirRenderer.RenderMode.Normal.copy(
|
||||
renderPackageDirective = true,
|
||||
)
|
||||
|
||||
private object Directives : SimpleDirectivesContainer() {
|
||||
val LOOK_UP_FOR_ELEMENT_OF_TYPE by stringDirective("LOOK_UP_FOR_ELEMENT_OF_TYPE")
|
||||
}
|
||||
|
||||
+5
-2
@@ -9,8 +9,9 @@ import org.jetbrains.kotlin.analysis.low.level.api.fir.api.getOrBuildFirOfType
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.resolveWithClearCaches
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.test.base.AbstractLowLevelApiSingleFileTest
|
||||
import org.jetbrains.kotlin.fir.declarations.FirFile
|
||||
import org.jetbrains.kotlin.fir.render
|
||||
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.psi.KtFile
|
||||
import org.jetbrains.kotlin.test.services.TestModuleStructure
|
||||
import org.jetbrains.kotlin.test.services.TestServices
|
||||
@@ -20,7 +21,9 @@ abstract class AbstractInnerDeclarationsResolvePhaseTest : AbstractLowLevelApiSi
|
||||
override fun doTestByFileStructure(ktFile: KtFile, moduleStructure: TestModuleStructure, testServices: TestServices) {
|
||||
resolveWithClearCaches(ktFile) { firResolveSession ->
|
||||
val firFile = ktFile.getOrBuildFirOfType<FirFile>(firResolveSession)
|
||||
val actual = firFile.render(FirRenderer.RenderMode.WithResolvePhases)
|
||||
val actual = FirRenderer().with(
|
||||
declarationRenderer = FirDeclarationRendererWithResolvePhase()
|
||||
).renderElementAsString(firFile)
|
||||
testServices.assertions.assertEqualsToTestDataFileSibling(actual, extension = ".fir.txt")
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user