Extract separate ConeIdRenderer and get rid of FirRenderer.RenderMode
This commit is contained in:
@@ -0,0 +1,19 @@
|
||||
/*
|
||||
* 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.name.CallableId
|
||||
import org.jetbrains.kotlin.name.ClassId
|
||||
|
||||
class ConeIdFullRenderer : ConeIdRenderer() {
|
||||
override fun renderClassId(classId: ClassId) {
|
||||
builder.append(classId.asString())
|
||||
}
|
||||
|
||||
override fun renderCallableId(callableId: CallableId) {
|
||||
builder.append(callableId)
|
||||
}
|
||||
}
|
||||
+5
-7
@@ -5,15 +5,13 @@
|
||||
|
||||
package org.jetbrains.kotlin.fir.renderer
|
||||
|
||||
import org.jetbrains.kotlin.name.CallableId
|
||||
import org.jetbrains.kotlin.name.ClassId
|
||||
|
||||
open class ConeTypeRendererWithFqNames() : ConeTypeRenderer() {
|
||||
abstract class ConeIdRenderer {
|
||||
|
||||
constructor(builder: StringBuilder) : this() {
|
||||
this.builder = builder
|
||||
}
|
||||
lateinit var builder: StringBuilder
|
||||
|
||||
override fun ClassId.render() {
|
||||
builder.append(asString())
|
||||
}
|
||||
abstract fun renderClassId(classId: ClassId)
|
||||
abstract fun renderCallableId(callableId: CallableId)
|
||||
}
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
/*
|
||||
* 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.name.CallableId
|
||||
import org.jetbrains.kotlin.name.ClassId
|
||||
|
||||
class ConeIdRendererForDebugging : ConeIdRenderer() {
|
||||
override fun renderClassId(classId: ClassId) {
|
||||
builder.append(classId.asString())
|
||||
}
|
||||
|
||||
override fun renderCallableId(callableId: CallableId) {
|
||||
builder.append(callableId.callableName)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
/*
|
||||
* 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.name.CallableId
|
||||
import org.jetbrains.kotlin.name.ClassId
|
||||
|
||||
open class ConeIdShortRenderer : ConeIdRenderer() {
|
||||
override fun renderClassId(classId: ClassId) {
|
||||
builder.append(classId.relativeClassName.asString())
|
||||
}
|
||||
|
||||
override fun renderCallableId(callableId: CallableId) {
|
||||
builder.append(callableId.callableName)
|
||||
}
|
||||
}
|
||||
@@ -7,16 +7,18 @@ package org.jetbrains.kotlin.fir.renderer
|
||||
|
||||
import org.jetbrains.kotlin.builtins.functions.FunctionClassKind
|
||||
import org.jetbrains.kotlin.fir.types.*
|
||||
import org.jetbrains.kotlin.name.ClassId
|
||||
import kotlin.contracts.ExperimentalContracts
|
||||
import kotlin.contracts.contract
|
||||
|
||||
open class ConeTypeRenderer() {
|
||||
|
||||
lateinit var builder: StringBuilder
|
||||
lateinit var idRenderer: ConeIdRenderer
|
||||
|
||||
constructor(builder: StringBuilder) : this() {
|
||||
constructor(builder: StringBuilder, idRenderer: ConeIdRenderer) : this() {
|
||||
this.builder = builder
|
||||
this.idRenderer = idRenderer
|
||||
idRenderer.builder = builder
|
||||
}
|
||||
|
||||
open fun renderAsPossibleFunctionType(
|
||||
@@ -137,7 +139,7 @@ open class ConeTypeRenderer() {
|
||||
}
|
||||
|
||||
private fun ConeClassLikeType.render() {
|
||||
lookupTag.classId.render()
|
||||
idRenderer.renderClassId(lookupTag.classId)
|
||||
if (typeArguments.isEmpty()) return
|
||||
builder.append("<")
|
||||
for ((index, typeArgument) in typeArguments.withIndex()) {
|
||||
@@ -149,10 +151,6 @@ open class ConeTypeRenderer() {
|
||||
builder.append(">")
|
||||
}
|
||||
|
||||
protected open fun ClassId.render() {
|
||||
builder.append(relativeClassName.asString())
|
||||
}
|
||||
|
||||
private fun ConeFlexibleType.render() {
|
||||
val lowerBound = lowerBound
|
||||
val upperBound = upperBound
|
||||
|
||||
+3
-1
@@ -8,10 +8,12 @@ package org.jetbrains.kotlin.fir.renderer
|
||||
import org.jetbrains.kotlin.fir.types.ConeKotlinType
|
||||
import org.jetbrains.kotlin.fir.types.ConeTypeProjection
|
||||
|
||||
class ConeTypeRendererForDebugging() : ConeTypeRendererWithFqNames() {
|
||||
class ConeTypeRendererForDebugging() : ConeTypeRenderer() {
|
||||
|
||||
constructor(builder: StringBuilder) : this() {
|
||||
this.builder = builder
|
||||
this.idRenderer = ConeIdRendererForDebugging()
|
||||
idRenderer.builder = builder
|
||||
}
|
||||
|
||||
override fun renderAsPossibleFunctionType(type: ConeKotlinType, renderType: ConeTypeProjection.() -> Unit) {
|
||||
|
||||
@@ -6,9 +6,7 @@
|
||||
package org.jetbrains.kotlin.fir.types
|
||||
|
||||
import org.jetbrains.kotlin.builtins.functions.FunctionClassKind
|
||||
import org.jetbrains.kotlin.fir.renderer.ConeTypeRenderer
|
||||
import org.jetbrains.kotlin.fir.renderer.ConeTypeRendererForDebugging
|
||||
import org.jetbrains.kotlin.fir.renderer.ConeTypeRendererWithFqNames
|
||||
import org.jetbrains.kotlin.fir.renderer.*
|
||||
import org.jetbrains.kotlin.fir.types.impl.ConeClassLikeTypeImpl
|
||||
import org.jetbrains.kotlin.name.ClassId
|
||||
import org.jetbrains.kotlin.types.Variance
|
||||
@@ -128,13 +126,13 @@ fun ConeKotlinType.renderForDebugging(): String {
|
||||
|
||||
fun ConeKotlinType.renderReadable(): String {
|
||||
val builder = StringBuilder()
|
||||
ConeTypeRenderer(builder).render(this)
|
||||
ConeTypeRenderer(builder, idRenderer = ConeIdShortRenderer()).render(this)
|
||||
return builder.toString()
|
||||
}
|
||||
|
||||
fun ConeKotlinType.renderReadableWithFqNames(): String {
|
||||
val builder = StringBuilder()
|
||||
ConeTypeRendererWithFqNames(builder).render(this)
|
||||
ConeTypeRenderer(builder, idRenderer = ConeIdRendererForDebugging()).render(this)
|
||||
return builder.toString()
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user