From dd8a7010f03feecd1a4ffc5bc9899c01b2e81377 Mon Sep 17 00:00:00 2001 From: Ivan Kylchik Date: Sat, 20 Feb 2021 16:14:51 +0300 Subject: [PATCH] [VISUALIZER] Forbid to render unary minus for integer literals --- .../jetbrains/kotlin/compiler/visualizer/FirVisualizer.kt | 4 ++++ .../jetbrains/kotlin/compiler/visualizer/PsiVisualizer.kt | 8 ++++++++ .../testData/uncommonCases/resultFiles/dataClass.kt | 7 +++---- 3 files changed, 15 insertions(+), 4 deletions(-) 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 13aff49e35f..7bf4ed3bf65 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 @@ -297,6 +297,10 @@ class FirVisualizer(private val firFile: FirFile) : BaseRenderer() { override fun visitClassLiteralExpression(expression: KtClassLiteralExpression) { expression.firstOfTypeWithRender() } + + override fun visitPrefixExpression(expression: KtPrefixExpression) { + expression.firstOfTypeWithRender>(expression.baseExpression) ?: super.visitPrefixExpression(expression) + } } inner class FirRenderer : FirVisitor() { 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 9875bd98dec..6a9a92ebe66 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 @@ -233,6 +233,14 @@ class PsiVisualizer(private val file: KtFile, analysisResult: AnalysisResult) : addAnnotation(descriptorRenderer.render(it.type.constructor.declarationDescriptor!!), expression) } ?: super.visitClassLiteralExpression(expression) } + + override fun visitPrefixExpression(expression: KtPrefixExpression) { + val opName = expression.operationReference.getReferencedName() + if (expression.baseExpression?.node?.elementType == KtNodeTypes.INTEGER_CONSTANT && opName == "-") { + return expression.baseExpression!!.accept(this) + } + super.visitPrefixExpression(expression) + } } inner class PsiDescriptorRenderer( diff --git a/compiler/visualizer/testData/uncommonCases/resultFiles/dataClass.kt b/compiler/visualizer/testData/uncommonCases/resultFiles/dataClass.kt index 0d997016347..e6803708c0f 100644 --- a/compiler/visualizer/testData/uncommonCases/resultFiles/dataClass.kt +++ b/compiler/visualizer/testData/uncommonCases/resultFiles/dataClass.kt @@ -23,10 +23,9 @@ fun main() { val a = Vector(1, 2) // Vector // │ constructor Vector(Int, Int) -// │ │ fun (Int).unaryMinus(): Int -// │ │ │Int -// │ │ ││ Int -// │ │ ││ │ +// │ │ Int +// │ │ │ Int +// │ │ │ │ val b = Vector(-1, 10) // fun io/println(Any?): Unit