diff --git a/compiler/visualizer/render-fir/src/org/jetbrains/kotlin/compiler/visualizer/FirVisualizer.kt b/compiler/visualizer/render-fir/src/org/jetbrains/kotlin/compiler/visualizer/FirVisualizer.kt index 60665ebba69..278b1b9ded4 100644 --- a/compiler/visualizer/render-fir/src/org/jetbrains/kotlin/compiler/visualizer/FirVisualizer.kt +++ b/compiler/visualizer/render-fir/src/org/jetbrains/kotlin/compiler/visualizer/FirVisualizer.kt @@ -278,7 +278,8 @@ class FirVisualizer(private val firFile: FirFile) : BaseRenderer() { inner class FirRenderer : FirVisitor() { private val session = firFile.session - private val filePackage = firFile.packageFqName.toString().replace(".", "/") + private val filePackage = firFile.packageFqName.toString() + private val filePackageWithSlash = filePackage.replace(".", "/") private val symbolProvider = firFile.session.symbolProvider private fun FirTypeRef.renderWithNativeRenderer(): String { @@ -288,17 +289,13 @@ class FirVisualizer(private val firFile: FirFile) : BaseRenderer() { }.replace("R|", "").replace("|", "") } - private fun removeCurrentFilePackage(fqName: String): String { - val withoutPackage = when { - fqName.startsWith(filePackage) && !fqName.substring(filePackage.length + 1).contains("/") -> - fqName.replaceFirst("$filePackage/", "") - else -> fqName - } + private fun String.removeCurrentFilePackage(): String { + val withoutPackage = this.replaceFirst("$filePackage.", "").replaceFirst("$filePackageWithSlash/", "") return withoutPackage.let { if (it.startsWith("/")) it.substring(1) else it } } - private fun ClassId.getWithoutCurrentPackage() = removeCurrentFilePackage(this.asString()) + private fun ClassId.getWithoutCurrentPackage() = this.asString().removeCurrentFilePackage() private fun renderListInTriangles(list: List, data: StringBuilder, withSpace: Boolean = false) { if (list.isNotEmpty()) { @@ -495,7 +492,7 @@ class FirVisualizer(private val firFile: FirFile) : BaseRenderer() { } override fun visitResolvedTypeRef(resolvedTypeRef: FirResolvedTypeRef, data: StringBuilder) { - data.append(resolvedTypeRef.renderWithNativeRenderer()) + data.append((resolvedTypeRef.delegatedTypeRef ?: resolvedTypeRef).renderWithNativeRenderer().removeCurrentFilePackage()) val coneType = resolvedTypeRef.type if (coneType is ConeClassLikeType) { val original = coneType.directExpansionType(session) @@ -518,8 +515,9 @@ class FirVisualizer(private val firFile: FirFile) : BaseRenderer() { val id = when (symbol) { is FirCallableSymbol<*> -> { val callableId = symbol.callableId - val idWithPackage = callableId.toString().replaceFirst(".${callableId.callableName}", "") - removeCurrentFilePackage(idWithPackage) + callableId.toString() + .replaceFirst(".${callableId.callableName}", "") + .removeCurrentFilePackage() } is FirClassLikeSymbol<*> -> symbol.classId.getWithoutCurrentPackage() else -> "" @@ -529,10 +527,7 @@ class FirVisualizer(private val firFile: FirFile) : BaseRenderer() { if (variable !is FirValueParameter) { if (variable.isVar) data.append("var ") else if (variable.isVal) data.append("val ") } - data.append(id) - - data.append(": ") - variable.returnTypeRef.accept(this, data) + data.append(id).append(": ").append(variable.returnTypeRef.render()) } when (symbol) { @@ -560,7 +555,7 @@ class FirVisualizer(private val firFile: FirFile) : BaseRenderer() { } data.append(symbol.callableId.callableName).append(": ") - symbol.fir.returnTypeRef.accept(this, data) + data.append(symbol.fir.returnTypeRef.render()) } } diff --git a/compiler/visualizer/render-psi/src/org/jetbrains/kotlin/compiler/visualizer/PsiVisualizer.kt b/compiler/visualizer/render-psi/src/org/jetbrains/kotlin/compiler/visualizer/PsiVisualizer.kt index d7ef3ef2671..7b7142afb19 100644 --- a/compiler/visualizer/render-psi/src/org/jetbrains/kotlin/compiler/visualizer/PsiVisualizer.kt +++ b/compiler/visualizer/render-psi/src/org/jetbrains/kotlin/compiler/visualizer/PsiVisualizer.kt @@ -353,11 +353,12 @@ class PsiVisualizer(private val file: KtFile, analysisResult: AnalysisResult) : } override fun visitPackageFragmentDescriptor(descriptor: PackageFragmentDescriptor, data: StringBuilder) { - data.append("package-fragment ${renderFqName(descriptor, removeCurrentPackage = false)}") + //data.append("package-fragment ${renderFqName(descriptor, removeCurrentPackage = false)}") } override fun visitPackageViewDescriptor(descriptor: PackageViewDescriptor, data: StringBuilder) { - data.append("package ${renderFqName(descriptor, removeCurrentPackage = false)}") + // don't render package because support the same logic in fir is very hard + //data.append("package ${renderFqName(descriptor, removeCurrentPackage = false)}") } override fun visitVariableDescriptor(variable: VariableDescriptor, data: StringBuilder) { diff --git a/compiler/visualizer/testData/rawBuilder/declarations/complexTypes.kt b/compiler/visualizer/testData/rawBuilder/declarations/complexTypes.kt index d093f4d7f25..17b17a2fdac 100644 --- a/compiler/visualizer/testData/rawBuilder/declarations/complexTypes.kt +++ b/compiler/visualizer/testData/rawBuilder/declarations/complexTypes.kt @@ -9,9 +9,7 @@ class C { interface Test { // C.D, *> -// │ package a -// │ │ package a/b -// │ │ │ class C collections/List<*> -// │ │ │ │ │ +// │ class C collections/List<*> +// │ │ │ val x: a.b.C.D, *> } diff --git a/compiler/visualizer/testData/rawBuilder/declarations/contracts/oldSyntax/contractDescription.kt b/compiler/visualizer/testData/rawBuilder/declarations/contracts/oldSyntax/contractDescription.kt index 5a26778c832..c0be54fe85c 100644 --- a/compiler/visualizer/testData/rawBuilder/declarations/contracts/oldSyntax/contractDescription.kt +++ b/compiler/visualizer/testData/rawBuilder/declarations/contracts/oldSyntax/contractDescription.kt @@ -15,8 +15,8 @@ fun test_1() { fun test_2() { // fun contracts/contract(contracts/ContractBuilder.() -> Unit): Unit -// package kotlin │ contract@0 -// │ │ │ +// │ contract@0 +// │ │ kotlin.contracts.contract { // this@0 // fun (contracts/ContractBuilder).callsInPlace(Function, contracts/InvocationKind = ...): contracts/CallsInPlace @@ -51,8 +51,8 @@ var test_3: Int = 1 // │ set(value) { // fun contracts/contract(contracts/ContractBuilder.() -> Unit): Unit -// package kotlin │ contract@0 -// │ │ │ +// │ contract@0 +// │ │ kotlin.contracts.contract { // this@0 // fun (contracts/ContractBuilder).callsInPlace(Function, contracts/InvocationKind = ...): contracts/CallsInPlace diff --git a/compiler/visualizer/testData/rawBuilder/declarations/delegates.kt b/compiler/visualizer/testData/rawBuilder/declarations/delegates.kt index 914e9297e90..220b0f54a82 100644 --- a/compiler/visualizer/testData/rawBuilder/declarations/delegates.kt +++ b/compiler/visualizer/testData/rawBuilder/declarations/delegates.kt @@ -1,9 +1,4 @@ -// FIR_IGNORE -// package kotlin -// │ import kotlin.properties.ReadWriteProperty -// package kotlin -// │ import kotlin.reflect.KProperty // fun lazy(() -> Int): Lazy diff --git a/compiler/visualizer/testData/rawBuilder/declarations/typeParameterVsNested.kt b/compiler/visualizer/testData/rawBuilder/declarations/typeParameterVsNested.kt index a5991ad262f..eead669754d 100644 --- a/compiler/visualizer/testData/rawBuilder/declarations/typeParameterVsNested.kt +++ b/compiler/visualizer/testData/rawBuilder/declarations/typeParameterVsNested.kt @@ -18,9 +18,8 @@ abstract class My { abstract val y: My.T // [ERROR : T] -// │ package test -// │ │ class My -// │ │ │ +// │ class My +// │ │ abstract val z: test.My.T // [ERROR : T] diff --git a/compiler/visualizer/testData/rawBuilder/expressions/classReference.kt b/compiler/visualizer/testData/rawBuilder/expressions/classReference.kt index 12a3bb61961..59253717f19 100644 --- a/compiler/visualizer/testData/rawBuilder/expressions/classReference.kt +++ b/compiler/visualizer/testData/rawBuilder/expressions/classReference.kt @@ -8,8 +8,6 @@ fun test() { // class A // │ A::class -// package test -// │ test.A::class // constructor A() // │ @@ -18,8 +16,8 @@ fun test() { // class A val reflect/KClass.java: java/lang/Class // │ │ A::class.java -// package test val reflect/KClass.java: java/lang/Class -// │ │ +// val reflect/KClass.java: java/lang/Class +// │ test.A::class.java // constructor A() // │ val reflect/KClass.java: java/lang/Class diff --git a/compiler/visualizer/testData/uncommonCases/resultFiles/lists.kt b/compiler/visualizer/testData/uncommonCases/resultFiles/lists.kt index c61aead81ea..ce9f321ae3c 100644 --- a/compiler/visualizer/testData/uncommonCases/resultFiles/lists.kt +++ b/compiler/visualizer/testData/uncommonCases/resultFiles/lists.kt @@ -9,14 +9,10 @@ package org.jetbrains.kotlin.test // │ │ │ │ │ val listOfInt = listOf(1, 2, 3) // java/util/ArrayList -// │ package java -// │ │ constructor java/util/ArrayList() -// │ │ │ +// │ constructor java/util/ArrayList() +// │ │ val javaList = java.util.ArrayList() -// package java -// │ package java/util -// │ │ fun move(): java.util.ArrayList { // Int val listOfInt: collections/List // │ │