Extract separate FirCallArgumentsRenderer

This commit is contained in:
Mikhail Glukhikh
2022-07-08 11:25:15 +02:00
committed by Space
parent abfa33b200
commit 3fe35e6997
10 changed files with 96 additions and 73 deletions
@@ -30,7 +30,7 @@ import org.jetbrains.kotlin.fir.declarations.utils.superConeTypes
import org.jetbrains.kotlin.fir.expressions.FirCallableReferenceAccess import org.jetbrains.kotlin.fir.expressions.FirCallableReferenceAccess
import org.jetbrains.kotlin.fir.expressions.FirDelegatedConstructorCall import org.jetbrains.kotlin.fir.expressions.FirDelegatedConstructorCall
import org.jetbrains.kotlin.fir.expressions.FirGetClassCall import org.jetbrains.kotlin.fir.expressions.FirGetClassCall
import org.jetbrains.kotlin.fir.render import org.jetbrains.kotlin.fir.renderer.FirCallNoArgumentsRenderer
import org.jetbrains.kotlin.fir.renderer.FirRenderer import org.jetbrains.kotlin.fir.renderer.FirRenderer
import org.jetbrains.kotlin.fir.resolve.substitution.substitutorByMap import org.jetbrains.kotlin.fir.resolve.substitution.substitutorByMap
import org.jetbrains.kotlin.fir.resolve.toSymbol import org.jetbrains.kotlin.fir.resolve.toSymbol
@@ -161,7 +161,7 @@ internal class KtFirTypeProvider(
require(typeParameterSymbols.size == argumentTypes.size) { require(typeParameterSymbols.size == argumentTypes.size) {
val renderedSymbol = FirRenderer(mode = FirRenderer.RenderMode.NoBodies).with( val renderedSymbol = FirRenderer(mode = FirRenderer.RenderMode.NoBodies).with(
annotationRenderer = null, bodyRenderer = null annotationRenderer = null, bodyRenderer = null, callArgumentsRenderer = FirCallNoArgumentsRenderer()
).renderElementAsString(symbol.fir) ).renderElementAsString(symbol.fir)
"'$renderedSymbol' expects '${typeParameterSymbols.size}' type arguments " + "'$renderedSymbol' expects '${typeParameterSymbols.size}' type arguments " +
"but type '${this.renderForDebugging()}' has ${argumentTypes.size} type arguments." "but type '${this.renderForDebugging()}' has ${argumentTypes.size} type arguments."
@@ -14,10 +14,7 @@ import org.jetbrains.kotlin.fir.FirElement
import org.jetbrains.kotlin.fir.FirModuleData import org.jetbrains.kotlin.fir.FirModuleData
import org.jetbrains.kotlin.fir.declarations.utils.* import org.jetbrains.kotlin.fir.declarations.utils.*
import org.jetbrains.kotlin.fir.render import org.jetbrains.kotlin.fir.render
import org.jetbrains.kotlin.fir.renderer.ConeTypeRenderer import org.jetbrains.kotlin.fir.renderer.*
import org.jetbrains.kotlin.fir.renderer.FirAnnotationRenderer
import org.jetbrains.kotlin.fir.renderer.FirNoClassMemberRenderer
import org.jetbrains.kotlin.fir.renderer.FirRenderer
import org.jetbrains.kotlin.fir.renderer.FirRenderer.RenderMode.Companion.WithFqNames import org.jetbrains.kotlin.fir.renderer.FirRenderer.RenderMode.Companion.WithFqNames
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
import org.jetbrains.kotlin.fir.symbols.SymbolInternals import org.jetbrains.kotlin.fir.symbols.SymbolInternals
@@ -36,8 +33,8 @@ object FirDiagnosticRenderers {
).with( ).with(
typeRenderer = ConeTypeRenderer(), typeRenderer = ConeTypeRenderer(),
classMemberRenderer = FirNoClassMemberRenderer(), classMemberRenderer = FirNoClassMemberRenderer(),
annotationRenderer = FirAnnotationRenderer(),
bodyRenderer = null, bodyRenderer = null,
callArgumentsRenderer = FirCallNoArgumentsRenderer(),
).renderElementAsString(symbol.fir) ).renderElementAsString(symbol.fir)
is FirTypeParameterSymbol -> symbol.name.asString() is FirTypeParameterSymbol -> symbol.name.asString()
else -> "???" else -> "???"
@@ -11,6 +11,7 @@ import org.jetbrains.kotlin.fir.expressions.FirLoop
import org.jetbrains.kotlin.fir.expressions.FirWhileLoop import org.jetbrains.kotlin.fir.expressions.FirWhileLoop
import org.jetbrains.kotlin.fir.expressions.impl.FirElseIfTrueCondition import org.jetbrains.kotlin.fir.expressions.impl.FirElseIfTrueCondition
import org.jetbrains.kotlin.fir.render import org.jetbrains.kotlin.fir.render
import org.jetbrains.kotlin.fir.renderer.FirCallNoArgumentsRenderer
import org.jetbrains.kotlin.fir.renderer.FirRenderer import org.jetbrains.kotlin.fir.renderer.FirRenderer
fun CFGNode<*>.render(): String = fun CFGNode<*>.render(): String =
@@ -133,12 +134,7 @@ fun CFGNode<*>.render(): String =
// NB: renderer has a state, so we have to create it each time // NB: renderer has a state, so we have to create it each time
private val CfgRenderer private val CfgRenderer
get() = FirRenderer( get() = FirRenderer().with(annotationRenderer = null, callArgumentsRenderer = FirCallNoArgumentsRenderer())
mode = FirRenderer.RenderMode(
renderCallArguments = false,
renderCallableFqNames = false,
)
).with(annotationRenderer = null)
private fun FirFunction.name(): String = when (this) { private fun FirFunction.name(): String = when (this) {
is FirSimpleFunction -> name.asString() is FirSimpleFunction -> name.asString()
@@ -17,6 +17,7 @@ open class FirAnnotationRenderer {
internal lateinit var components: FirRendererComponents internal lateinit var components: FirRendererComponents
protected val visitor get() = components.visitor protected val visitor get() = components.visitor
protected val printer get() = components.printer protected val printer get() = components.printer
protected val callArgumentsRenderer get() = components.callArgumentsRenderer
fun render(annotationContainer: FirAnnotationContainer) { fun render(annotationContainer: FirAnnotationContainer) {
renderAnnotations(annotationContainer.annotations) renderAnnotations(annotationContainer.annotations)
@@ -37,11 +38,12 @@ open class FirAnnotationRenderer {
annotation.annotationTypeRef.accept(visitor) annotation.annotationTypeRef.accept(visitor)
when (annotation) { when (annotation) {
is FirAnnotationCall -> if (annotation.calleeReference.let { it is FirResolvedNamedReference || it is FirErrorNamedReference }) { is FirAnnotationCall -> if (annotation.calleeReference.let { it is FirResolvedNamedReference || it is FirErrorNamedReference }) {
annotation.renderArgumentMapping() callArgumentsRenderer.renderArgumentMapping(annotation.argumentMapping)
} else { } else {
visitor.visitCall(annotation) visitor.visitCall(annotation)
} }
else -> annotation.renderArgumentMapping() else -> callArgumentsRenderer.renderArgumentMapping(annotation.argumentMapping)
} }
if (annotation.useSiteTarget == AnnotationUseSiteTarget.FILE) { if (annotation.useSiteTarget == AnnotationUseSiteTarget.FILE) {
printer.println() printer.println()
@@ -49,12 +51,4 @@ open class FirAnnotationRenderer {
printer.print(" ") printer.print(" ")
} }
} }
protected open fun FirAnnotation.renderArgumentMapping() {
printer.print("(")
if (argumentMapping.mapping.isNotEmpty()) {
printer.print("...")
}
printer.print(")")
}
} }
@@ -6,16 +6,27 @@
package org.jetbrains.kotlin.fir.renderer package org.jetbrains.kotlin.fir.renderer
import org.jetbrains.kotlin.fir.FirElement import org.jetbrains.kotlin.fir.FirElement
import org.jetbrains.kotlin.fir.expressions.FirAnnotation import org.jetbrains.kotlin.fir.expressions.FirAnnotationArgumentMapping
import org.jetbrains.kotlin.fir.expressions.FirExpression
import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.name.Name
class FirAnnotationWithArgumentsRenderer() : FirAnnotationRenderer() { open class FirCallArgumentsRenderer {
override fun FirAnnotation.renderArgumentMapping() { internal lateinit var components: FirRendererComponents
protected val visitor get() = components.visitor
protected val printer get() = components.printer
open fun renderArgumentMapping(argumentMapping: FirAnnotationArgumentMapping) {
printer.print("(") printer.print("(")
argumentMapping.mapping.renderSeparated() argumentMapping.mapping.renderSeparated()
printer.print(")") printer.print(")")
} }
open fun renderArguments(arguments: List<FirExpression>) {
printer.print("(")
printer.renderSeparated(arguments, visitor)
printer.print(")")
}
private fun Map<Name, FirElement>.renderSeparated() { private fun Map<Name, FirElement>.renderSeparated() {
for ((index, element) in this.entries.withIndex()) { for ((index, element) in this.entries.withIndex()) {
val (name, argument) = element val (name, argument) = element
@@ -0,0 +1,28 @@
/*
* Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.fir.renderer
import org.jetbrains.kotlin.fir.expressions.FirAnnotation
import org.jetbrains.kotlin.fir.expressions.FirAnnotationArgumentMapping
import org.jetbrains.kotlin.fir.expressions.FirExpression
class FirCallNoArgumentsRenderer : FirCallArgumentsRenderer() {
override fun renderArgumentMapping(argumentMapping: FirAnnotationArgumentMapping) {
printer.print("(")
if (argumentMapping.mapping.isNotEmpty()) {
printer.print("...")
}
printer.print(")")
}
override fun renderArguments(arguments: List<FirExpression>) {
printer.print("(")
if (arguments.isNotEmpty()) {
printer.print("...")
}
printer.print(")")
}
}
@@ -5,6 +5,7 @@
package org.jetbrains.kotlin.fir.renderer package org.jetbrains.kotlin.fir.renderer
import org.jetbrains.kotlin.fir.FirElement
import org.jetbrains.kotlin.utils.Printer import org.jetbrains.kotlin.utils.Printer
open class FirPrinter(builder: StringBuilder) { open class FirPrinter(builder: StringBuilder) {
@@ -47,6 +48,25 @@ open class FirPrinter(builder: StringBuilder) {
println(rightBrace) println(rightBrace)
} }
internal fun renderSeparated(elements: List<FirElement>, visitor: FirRenderer.Visitor) {
for ((index, element) in elements.withIndex()) {
if (index > 0) {
print(", ")
}
element.accept(visitor)
}
}
internal fun renderSeparatedWithNewlines(elements: List<FirElement>, visitor: FirRenderer.Visitor) {
for ((index, element) in elements.withIndex()) {
if (index > 0) {
print(",")
newLine()
}
element.accept(visitor)
}
}
override fun toString(): String { override fun toString(): String {
return printer.toString() return printer.toString()
} }
@@ -39,6 +39,7 @@ open class FirRenderer private constructor(
components: FirComponentsImpl, components: FirComponentsImpl,
private val annotationRenderer: FirAnnotationRenderer?, private val annotationRenderer: FirAnnotationRenderer?,
private val bodyRenderer: FirBodyRenderer?, private val bodyRenderer: FirBodyRenderer?,
private val callArgumentsRenderer: FirCallArgumentsRenderer,
private val classMemberRenderer: FirClassMemberRenderer, private val classMemberRenderer: FirClassMemberRenderer,
private val declarationRenderer: FirDeclarationRenderer, private val declarationRenderer: FirDeclarationRenderer,
private val packageDirectiveRenderer: FirPackageDirectiveRenderer?, private val packageDirectiveRenderer: FirPackageDirectiveRenderer?,
@@ -58,6 +59,7 @@ open class FirRenderer private constructor(
components.visitor = visitor components.visitor = visitor
components.annotationRenderer = annotationRenderer components.annotationRenderer = annotationRenderer
components.bodyRenderer = bodyRenderer components.bodyRenderer = bodyRenderer
components.callArgumentsRenderer = callArgumentsRenderer
components.classMemberRenderer = classMemberRenderer components.classMemberRenderer = classMemberRenderer
components.declarationRenderer = declarationRenderer components.declarationRenderer = declarationRenderer
components.packageDirectiveRenderer = packageDirectiveRenderer components.packageDirectiveRenderer = packageDirectiveRenderer
@@ -66,6 +68,7 @@ open class FirRenderer private constructor(
components.printer = this components.printer = this
annotationRenderer?.components = components annotationRenderer?.components = components
bodyRenderer?.components = components bodyRenderer?.components = components
callArgumentsRenderer.components = components
classMemberRenderer.components = components classMemberRenderer.components = components
declarationRenderer.components = components declarationRenderer.components = components
packageDirectiveRenderer?.components = components packageDirectiveRenderer?.components = components
@@ -80,8 +83,9 @@ open class FirRenderer private constructor(
builder, builder,
mode, mode,
components, components,
FirAnnotationWithArgumentsRenderer(), FirAnnotationRenderer(),
FirBodyRenderer(), FirBodyRenderer(),
FirCallArgumentsRenderer(),
FirClassMemberRenderer(), FirClassMemberRenderer(),
FirDeclarationRenderer(), FirDeclarationRenderer(),
packageDirectiveRenderer = null, packageDirectiveRenderer = null,
@@ -93,13 +97,14 @@ open class FirRenderer private constructor(
fun with( fun with(
annotationRenderer: FirAnnotationRenderer? = this.annotationRenderer, annotationRenderer: FirAnnotationRenderer? = this.annotationRenderer,
bodyRenderer: FirBodyRenderer? = this.bodyRenderer, bodyRenderer: FirBodyRenderer? = this.bodyRenderer,
callArgumentsRenderer: FirCallArgumentsRenderer = this.callArgumentsRenderer,
classMemberRenderer: FirClassMemberRenderer = this.classMemberRenderer, classMemberRenderer: FirClassMemberRenderer = this.classMemberRenderer,
declarationRenderer: FirDeclarationRenderer = this.declarationRenderer, declarationRenderer: FirDeclarationRenderer = this.declarationRenderer,
packageDirectiveRenderer: FirPackageDirectiveRenderer? = this.packageDirectiveRenderer, packageDirectiveRenderer: FirPackageDirectiveRenderer? = this.packageDirectiveRenderer,
typeRenderer: ConeTypeRenderer = this.typeRenderer typeRenderer: ConeTypeRenderer = this.typeRenderer
): FirRenderer = FirRenderer( ): FirRenderer = FirRenderer(
builder, mode, FirComponentsImpl(), builder, mode, FirComponentsImpl(),
annotationRenderer, bodyRenderer, classMemberRenderer, annotationRenderer, bodyRenderer, callArgumentsRenderer, classMemberRenderer,
declarationRenderer, packageDirectiveRenderer, typeRenderer declarationRenderer, packageDirectiveRenderer, typeRenderer
) )
@@ -130,6 +135,8 @@ open class FirRenderer private constructor(
override var packageDirectiveRenderer: FirPackageDirectiveRenderer? = null override var packageDirectiveRenderer: FirPackageDirectiveRenderer? = null
override lateinit var callArgumentsRenderer: FirCallArgumentsRenderer
override lateinit var classMemberRenderer: FirClassMemberRenderer override lateinit var classMemberRenderer: FirClassMemberRenderer
override lateinit var declarationRenderer: FirDeclarationRenderer override lateinit var declarationRenderer: FirDeclarationRenderer
@@ -142,7 +149,6 @@ open class FirRenderer private constructor(
} }
data class RenderMode( data class RenderMode(
val renderCallArguments: Boolean,
val renderCallableFqNames: Boolean, val renderCallableFqNames: Boolean,
val renderPropertyAccessors: Boolean = true, val renderPropertyAccessors: Boolean = true,
val renderDefaultParameterValues: Boolean = true, val renderDefaultParameterValues: Boolean = true,
@@ -150,23 +156,19 @@ open class FirRenderer private constructor(
) { ) {
companion object { companion object {
val Normal = RenderMode( val Normal = RenderMode(
renderCallArguments = true,
renderCallableFqNames = false, renderCallableFqNames = false,
) )
val WithFqNames = RenderMode( val WithFqNames = RenderMode(
renderCallArguments = true,
renderCallableFqNames = true, renderCallableFqNames = true,
) )
val NoBodies = RenderMode( val NoBodies = RenderMode(
renderCallArguments = false,
renderCallableFqNames = false, renderCallableFqNames = false,
renderPropertyAccessors = false, renderPropertyAccessors = false,
) )
val DeclarationHeader = RenderMode( val DeclarationHeader = RenderMode(
renderCallArguments = false,
renderCallableFqNames = false, renderCallableFqNames = false,
renderPropertyAccessors = false, renderPropertyAccessors = false,
renderDefaultParameterValues = false, renderDefaultParameterValues = false,
@@ -175,25 +177,6 @@ open class FirRenderer private constructor(
} }
} }
private fun List<FirElement>.renderSeparated() {
for ((index, element) in this.withIndex()) {
if (index > 0) {
print(", ")
}
element.accept(visitor)
}
}
private fun List<FirElement>.renderSeparatedWithNewlines() {
for ((index, element) in this.withIndex()) {
if (index > 0) {
print(",")
newLine()
}
element.accept(visitor)
}
}
private fun List<ConeKotlinType>.renderTypesSeparated() { private fun List<ConeKotlinType>.renderTypesSeparated() {
for ((index, element) in this.withIndex()) { for ((index, element) in this.withIndex()) {
if (index > 0) { if (index > 0) {
@@ -206,7 +189,7 @@ open class FirRenderer private constructor(
private fun List<FirValueParameter>.renderParameters() { private fun List<FirValueParameter>.renderParameters() {
print("(") print("(")
renderSeparated() renderSeparated(this, visitor)
print(")") print(")")
} }
@@ -222,7 +205,7 @@ open class FirRenderer private constructor(
private fun renderContexts(contextReceivers: List<FirContextReceiver>) { private fun renderContexts(contextReceivers: List<FirContextReceiver>) {
if (contextReceivers.isEmpty()) return if (contextReceivers.isEmpty()) return
print("context(") print("context(")
contextReceivers.renderSeparated() renderSeparated(contextReceivers, visitor)
print(")") print(")")
newLine() newLine()
} }
@@ -260,7 +243,7 @@ open class FirRenderer private constructor(
private fun List<FirTypeParameterRef>.renderTypeParameters() { private fun List<FirTypeParameterRef>.renderTypeParameters() {
if (isNotEmpty()) { if (isNotEmpty()) {
print("<") print("<")
renderSeparated() renderSeparated(this, visitor)
print(">") print(">")
} }
} }
@@ -268,7 +251,7 @@ open class FirRenderer private constructor(
private fun List<FirTypeProjection>.renderTypeArguments() { private fun List<FirTypeProjection>.renderTypeArguments() {
if (isNotEmpty()) { if (isNotEmpty()) {
print("<") print("<")
renderSeparated() renderSeparated(this, visitor)
print(">") print(">")
} }
} }
@@ -276,7 +259,7 @@ open class FirRenderer private constructor(
fun renderSupertypes(regularClass: FirRegularClass) { fun renderSupertypes(regularClass: FirRegularClass) {
if (regularClass.superTypeRefs.isNotEmpty()) { if (regularClass.superTypeRefs.isNotEmpty()) {
print(" : ") print(" : ")
regularClass.superTypeRefs.renderSeparated() renderSeparated(regularClass.superTypeRefs, visitor)
} }
} }
@@ -496,7 +479,7 @@ open class FirRenderer private constructor(
override fun visitAnonymousObject(anonymousObject: FirAnonymousObject) { override fun visitAnonymousObject(anonymousObject: FirAnonymousObject) {
annotationRenderer?.render(anonymousObject) annotationRenderer?.render(anonymousObject)
print("object : ") print("object : ")
anonymousObject.superTypeRefs.renderSeparated() renderSeparated(anonymousObject.superTypeRefs, visitor)
classMemberRenderer.render(anonymousObject.declarations) classMemberRenderer.render(anonymousObject.declarations)
} }
@@ -680,7 +663,7 @@ open class FirRenderer private constructor(
if (meaningfulBounds.isNotEmpty()) { if (meaningfulBounds.isNotEmpty()) {
print(" : ") print(" : ")
meaningfulBounds.renderSeparated() renderSeparated(meaningfulBounds, visitor)
} }
} }
@@ -917,20 +900,12 @@ open class FirRenderer private constructor(
override fun visitVarargArgumentsExpression(varargArgumentsExpression: FirVarargArgumentsExpression) { override fun visitVarargArgumentsExpression(varargArgumentsExpression: FirVarargArgumentsExpression) {
print("vararg(") print("vararg(")
varargArgumentsExpression.arguments.renderSeparated() renderSeparated(varargArgumentsExpression.arguments, visitor)
print(")") print(")")
} }
override fun visitCall(call: FirCall) { override fun visitCall(call: FirCall) {
print("(") callArgumentsRenderer.renderArguments(call.arguments)
if (mode.renderCallArguments) {
call.arguments.renderSeparated()
} else {
if (call.arguments.isNotEmpty()) {
print("...")
}
}
print(")")
} }
override fun visitStringConcatenationCall(stringConcatenationCall: FirStringConcatenationCall) { override fun visitStringConcatenationCall(stringConcatenationCall: FirStringConcatenationCall) {
@@ -993,7 +968,7 @@ open class FirRenderer private constructor(
override fun visitFunctionTypeRef(functionTypeRef: FirFunctionTypeRef) { override fun visitFunctionTypeRef(functionTypeRef: FirFunctionTypeRef) {
if (functionTypeRef.contextReceiverTypeRefs.isNotEmpty()) { if (functionTypeRef.contextReceiverTypeRefs.isNotEmpty()) {
print("context(") print("context(")
functionTypeRef.contextReceiverTypeRefs.renderSeparated() renderSeparated(functionTypeRef.contextReceiverTypeRefs, visitor)
print(")") print(")")
} }
@@ -1030,7 +1005,7 @@ open class FirRenderer private constructor(
print(qualifier.name) print(qualifier.name)
if (qualifier.typeArgumentList.typeArguments.isNotEmpty()) { if (qualifier.typeArgumentList.typeArguments.isNotEmpty()) {
print("<") print("<")
qualifier.typeArgumentList.typeArguments.renderSeparated() renderSeparated(qualifier.typeArgumentList.typeArguments, visitor)
print(">") print(">")
} }
} }
@@ -1345,7 +1320,7 @@ open class FirRenderer private constructor(
newLine() newLine()
print("[Contract description]") print("[Contract description]")
renderInBraces("<", ">") { renderInBraces("<", ">") {
rawContractDescription.rawEffects.renderSeparatedWithNewlines() renderSeparatedWithNewlines(rawContractDescription.rawEffects, visitor)
newLine() newLine()
} }
} }
@@ -11,6 +11,7 @@ internal interface FirRendererComponents {
val declarationRenderer: FirDeclarationRenderer val declarationRenderer: FirDeclarationRenderer
val annotationRenderer: FirAnnotationRenderer? val annotationRenderer: FirAnnotationRenderer?
val bodyRenderer: FirBodyRenderer? val bodyRenderer: FirBodyRenderer?
val callArgumentsRenderer: FirCallArgumentsRenderer
val classMemberRenderer: FirClassMemberRenderer val classMemberRenderer: FirClassMemberRenderer
val packageDirectiveRenderer: FirPackageDirectiveRenderer? val packageDirectiveRenderer: FirPackageDirectiveRenderer?
val typeRenderer: ConeTypeRenderer val typeRenderer: ConeTypeRenderer
@@ -9,6 +9,7 @@ import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.declarations.FirCallableDeclaration import org.jetbrains.kotlin.fir.declarations.FirCallableDeclaration
import org.jetbrains.kotlin.fir.declarations.FirRegularClass import org.jetbrains.kotlin.fir.declarations.FirRegularClass
import org.jetbrains.kotlin.fir.render import org.jetbrains.kotlin.fir.render
import org.jetbrains.kotlin.fir.renderer.FirCallNoArgumentsRenderer
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.resolve.providers.symbolProvider import org.jetbrains.kotlin.fir.resolve.providers.symbolProvider
@@ -137,7 +138,7 @@ class FirScopeDumpHandler(testServices: TestServices) : FirAnalysisHandler(testS
private fun SmartPrinter.printInfo(declaration: FirCallableDeclaration, scope: FirTypeScope, counter: SymbolCounter) { private fun SmartPrinter.printInfo(declaration: FirCallableDeclaration, scope: FirTypeScope, counter: SymbolCounter) {
print("[${declaration.origin}]: ") print("[${declaration.origin}]: ")
val renderedDeclaration = FirRenderer(mode = FirRenderer.RenderMode.NoBodies).with( val renderedDeclaration = FirRenderer(mode = FirRenderer.RenderMode.NoBodies).with(
annotationRenderer = null, bodyRenderer = null annotationRenderer = null, bodyRenderer = null, callArgumentsRenderer = FirCallNoArgumentsRenderer()
).renderElementAsString(declaration).trim() ).renderElementAsString(declaration).trim()
print(renderedDeclaration) print(renderedDeclaration)
print(" from $scope") print(" from $scope")