[FIR] Make rendering of properties for diagnostics more user-friendly
#KT-60137 Fixed
This commit is contained in:
committed by
Space Team
parent
b5ea059861
commit
ed6948959c
@@ -6,6 +6,7 @@
|
||||
package org.jetbrains.kotlin.fir.renderer
|
||||
|
||||
import org.jetbrains.kotlin.fir.declarations.FirFunction
|
||||
import org.jetbrains.kotlin.fir.declarations.FirVariable
|
||||
import org.jetbrains.kotlin.fir.expressions.FirBlock
|
||||
import org.jetbrains.kotlin.fir.expressions.FirDelegatedConstructorCall
|
||||
import org.jetbrains.kotlin.fir.expressions.FirLazyBlock
|
||||
@@ -23,6 +24,17 @@ class FirBodyRenderer {
|
||||
renderBody(function.body)
|
||||
}
|
||||
|
||||
fun render(variable: FirVariable) {
|
||||
variable.initializer?.let {
|
||||
printer.print(" = ")
|
||||
it.accept(visitor)
|
||||
}
|
||||
variable.delegate?.let {
|
||||
printer.print("by ")
|
||||
it.accept(visitor)
|
||||
}
|
||||
}
|
||||
|
||||
fun renderBody(block: FirBlock?, additionalStatements: List<FirStatement> = emptyList()) {
|
||||
if (block == null) return
|
||||
when (block) {
|
||||
|
||||
@@ -10,7 +10,9 @@ import org.jetbrains.kotlin.fir.declarations.impl.FirErrorConstructor
|
||||
import org.jetbrains.kotlin.fir.isCatchParameter
|
||||
import org.jetbrains.kotlin.util.capitalizeDecapitalize.toLowerCaseAsciiOnly
|
||||
|
||||
open class FirDeclarationRenderer {
|
||||
open class FirDeclarationRenderer(
|
||||
private val localVariablePrefix: String = "l",
|
||||
) {
|
||||
|
||||
internal lateinit var components: FirRendererComponents
|
||||
protected val printer get() = components.printer
|
||||
@@ -40,7 +42,7 @@ open class FirDeclarationRenderer {
|
||||
if (declaration.isCatchParameter == true) {
|
||||
""
|
||||
} else {
|
||||
val prefix = if (declaration.isLocal) "l" else ""
|
||||
val prefix = if (declaration.isLocal) localVariablePrefix else ""
|
||||
prefix + if (declaration.isVal) "val" else "var"
|
||||
}
|
||||
}
|
||||
@@ -61,4 +63,4 @@ open class FirDeclarationRenderer {
|
||||
|
||||
protected open fun FirDeclaration.renderDeclarationAttributes() {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -305,14 +305,7 @@ class FirRenderer(
|
||||
|
||||
override fun visitVariable(variable: FirVariable) {
|
||||
visitCallableDeclaration(variable)
|
||||
variable.initializer?.let {
|
||||
print(" = ")
|
||||
it.accept(this)
|
||||
}
|
||||
variable.delegate?.let {
|
||||
print("by ")
|
||||
it.accept(this)
|
||||
}
|
||||
bodyRenderer?.render(variable)
|
||||
}
|
||||
|
||||
override fun visitField(field: FirField) {
|
||||
|
||||
Reference in New Issue
Block a user