From 18dc6524043a059249056bec61fda6f3c7e57781 Mon Sep 17 00:00:00 2001 From: Dmitriy Novozhilov Date: Thu, 7 Nov 2019 14:46:10 +0300 Subject: [PATCH] [FIR] Get rid of `operation` in `FirVariableAssignment` `FirVariableAssignment` is creates only for expressions `x = y` For other assign operators there is a `FirOperatorCall` --- .../fir/dump/src/org/jetbrains/kotlin/fir/dump/HtmlFirDump.kt | 4 +--- .../src/org/jetbrains/kotlin/fir/builder/BaseFirBuilder.kt | 4 ++-- .../body/resolve/FirExpressionsResolveTransformer.kt | 2 +- compiler/fir/tree/src/org/jetbrains/kotlin/fir/FirRenderer.kt | 2 +- .../jetbrains/kotlin/fir/expressions/FirVariableAssignment.kt | 1 - .../kotlin/fir/expressions/impl/FirVariableAssignmentImpl.kt | 4 +--- .../kotlin/fir/tree/generator/ImplementationConfigurator.kt | 1 - .../jetbrains/kotlin/fir/tree/generator/NodeConfigurator.kt | 1 - .../org/jetbrains/kotlin/compiler/visualizer/FirVisualizer.kt | 2 +- 9 files changed, 7 insertions(+), 14 deletions(-) diff --git a/compiler/fir/dump/src/org/jetbrains/kotlin/fir/dump/HtmlFirDump.kt b/compiler/fir/dump/src/org/jetbrains/kotlin/fir/dump/HtmlFirDump.kt index a2c5a0bd41c..5caa6e8d71e 100644 --- a/compiler/fir/dump/src/org/jetbrains/kotlin/fir/dump/HtmlFirDump.kt +++ b/compiler/fir/dump/src/org/jetbrains/kotlin/fir/dump/HtmlFirDump.kt @@ -639,9 +639,7 @@ class HtmlFirDump internal constructor(private var linkResolver: FirLinkResolver private fun FlowContent.generate(variableAssignment: FirVariableAssignment) { generateReceiver(variableAssignment) generate(variableAssignment.lValue) - +" " - +variableAssignment.operation.operator - +" " + +" = " generate(variableAssignment.rValue) } diff --git a/compiler/fir/psi2fir/src/org/jetbrains/kotlin/fir/builder/BaseFirBuilder.kt b/compiler/fir/psi2fir/src/org/jetbrains/kotlin/fir/builder/BaseFirBuilder.kt index e7aab52e2d2..a904ad4935b 100644 --- a/compiler/fir/psi2fir/src/org/jetbrains/kotlin/fir/builder/BaseFirBuilder.kt +++ b/compiler/fir/psi2fir/src/org/jetbrains/kotlin/fir/builder/BaseFirBuilder.kt @@ -471,8 +471,8 @@ abstract class BaseFirBuilder(val session: FirSession, val context: Context = arguments += value } } - - return FirVariableAssignmentImpl(source, false, value, operation).apply { + require(operation == FirOperation.ASSIGN) + return FirVariableAssignmentImpl(source, false, value).apply { lValue = initializeLValue(this@generateAssignment) { convert() as? FirQualifiedAccess } } } diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirExpressionsResolveTransformer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirExpressionsResolveTransformer.kt index 8eb4f9783f8..ac70f41e089 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirExpressionsResolveTransformer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirExpressionsResolveTransformer.kt @@ -246,7 +246,7 @@ class FirExpressionsResolveTransformer(transformer: FirBodyResolveTransformer) : operatorCallReference == null || (!lhsIsVar && !assignIsError) -> resolvedAssignCall.compose() assignCallReference == null -> { val assignment = - FirVariableAssignmentImpl(operatorCall.source, false, resolvedOperatorCall, FirOperation.ASSIGN).apply { + FirVariableAssignmentImpl(operatorCall.source, false, resolvedOperatorCall).apply { lValue = if (lhsIsVar) lhsReference!! else diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/FirRenderer.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/FirRenderer.kt index ce2e7eb6926..13cc794a367 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/FirRenderer.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/FirRenderer.kt @@ -928,7 +928,7 @@ class FirRenderer(builder: StringBuilder) : FirVisitorVoid() { visitQualifiedAccess(variableAssignment) variableAssignment.lValue.accept(this) print(" ") - visitAssignment(variableAssignment.operation, variableAssignment.rValue) + visitAssignment(FirOperation.ASSIGN, variableAssignment.rValue) } override fun visitArraySetCall(arraySetCall: FirArraySetCall) { diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirVariableAssignment.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirVariableAssignment.kt index 6e8d7fa3f28..03be491f112 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirVariableAssignment.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirVariableAssignment.kt @@ -25,7 +25,6 @@ abstract class FirVariableAssignment : FirPureAbstractElement(), FirQualifiedAcc abstract override val calleeReference: FirReference abstract val lValue: FirReference abstract val rValue: FirExpression - abstract val operation: FirOperation override fun accept(visitor: FirVisitor, data: D): R = visitor.visitVariableAssignment(this, data) diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirVariableAssignmentImpl.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirVariableAssignmentImpl.kt index 1af1072f46d..2cb55bc9b34 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirVariableAssignmentImpl.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirVariableAssignmentImpl.kt @@ -8,7 +8,6 @@ package org.jetbrains.kotlin.fir.expressions.impl import org.jetbrains.kotlin.fir.FirSourceElement import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirExpression -import org.jetbrains.kotlin.fir.expressions.FirOperation import org.jetbrains.kotlin.fir.expressions.FirVariableAssignment import org.jetbrains.kotlin.fir.impl.FirAbstractAnnotatedElement import org.jetbrains.kotlin.fir.references.FirReference @@ -22,8 +21,7 @@ import org.jetbrains.kotlin.fir.visitors.* class FirVariableAssignmentImpl( override val source: FirSourceElement?, override var safe: Boolean, - override var rValue: FirExpression, - override var operation: FirOperation + override var rValue: FirExpression ) : FirVariableAssignment(), FirModifiableQualifiedAccess, FirAbstractAnnotatedElement { override val annotations: MutableList = mutableListOf() override var explicitReceiver: FirExpression? = null diff --git a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/ImplementationConfigurator.kt b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/ImplementationConfigurator.kt index a379dbd2db4..1ff7af0beeb 100644 --- a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/ImplementationConfigurator.kt +++ b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/ImplementationConfigurator.kt @@ -383,7 +383,6 @@ object ImplementationConfigurator : AbstractFirTreeImplementationConfigurator() impl(variableAssignment) { parents += modifiableQualifiedAccess - isMutable("operation") lateinit("calleeReference") defaultNoReceivers() diff --git a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/NodeConfigurator.kt b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/NodeConfigurator.kt index 6d8b35d8bfa..1d4eb4d1848 100644 --- a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/NodeConfigurator.kt +++ b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/NodeConfigurator.kt @@ -439,7 +439,6 @@ object NodeConfigurator : AbstractFieldConfigurator() { variableAssignment.configure { +field("lValue", reference) +field("rValue", expression).withTransform() - +field("operation", operationType) } whenSubjectExpression.configure { 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 6af0d787795..8238d82e8e0 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 @@ -445,7 +445,7 @@ class FirVisualizer(private val firFile: FirFile) : BaseRenderer() { } override fun visitVariableAssignment(variableAssignment: FirVariableAssignment, data: StringBuilder) { - data.append("qualified access: \"${variableAssignment.operation}\"") + data.append("variable assignment") } override fun visitStarProjection(starProjection: FirStarProjection, data: StringBuilder) {