[FIR] Get rid of operation in FirVariableAssignment
`FirVariableAssignment` is creates only for expressions `x = y` For other assign operators there is a `FirOperatorCall`
This commit is contained in:
@@ -639,9 +639,7 @@ class HtmlFirDump internal constructor(private var linkResolver: FirLinkResolver
|
|||||||
private fun FlowContent.generate(variableAssignment: FirVariableAssignment) {
|
private fun FlowContent.generate(variableAssignment: FirVariableAssignment) {
|
||||||
generateReceiver(variableAssignment)
|
generateReceiver(variableAssignment)
|
||||||
generate(variableAssignment.lValue)
|
generate(variableAssignment.lValue)
|
||||||
+" "
|
+" = "
|
||||||
+variableAssignment.operation.operator
|
|
||||||
+" "
|
|
||||||
generate(variableAssignment.rValue)
|
generate(variableAssignment.rValue)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -471,8 +471,8 @@ abstract class BaseFirBuilder<T>(val session: FirSession, val context: Context =
|
|||||||
arguments += value
|
arguments += value
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
require(operation == FirOperation.ASSIGN)
|
||||||
return FirVariableAssignmentImpl(source, false, value, operation).apply {
|
return FirVariableAssignmentImpl(source, false, value).apply {
|
||||||
lValue = initializeLValue(this@generateAssignment) { convert() as? FirQualifiedAccess }
|
lValue = initializeLValue(this@generateAssignment) { convert() as? FirQualifiedAccess }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -246,7 +246,7 @@ class FirExpressionsResolveTransformer(transformer: FirBodyResolveTransformer) :
|
|||||||
operatorCallReference == null || (!lhsIsVar && !assignIsError) -> resolvedAssignCall.compose()
|
operatorCallReference == null || (!lhsIsVar && !assignIsError) -> resolvedAssignCall.compose()
|
||||||
assignCallReference == null -> {
|
assignCallReference == null -> {
|
||||||
val assignment =
|
val assignment =
|
||||||
FirVariableAssignmentImpl(operatorCall.source, false, resolvedOperatorCall, FirOperation.ASSIGN).apply {
|
FirVariableAssignmentImpl(operatorCall.source, false, resolvedOperatorCall).apply {
|
||||||
lValue = if (lhsIsVar)
|
lValue = if (lhsIsVar)
|
||||||
lhsReference!!
|
lhsReference!!
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -928,7 +928,7 @@ class FirRenderer(builder: StringBuilder) : FirVisitorVoid() {
|
|||||||
visitQualifiedAccess(variableAssignment)
|
visitQualifiedAccess(variableAssignment)
|
||||||
variableAssignment.lValue.accept(this)
|
variableAssignment.lValue.accept(this)
|
||||||
print(" ")
|
print(" ")
|
||||||
visitAssignment(variableAssignment.operation, variableAssignment.rValue)
|
visitAssignment(FirOperation.ASSIGN, variableAssignment.rValue)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun visitArraySetCall(arraySetCall: FirArraySetCall) {
|
override fun visitArraySetCall(arraySetCall: FirArraySetCall) {
|
||||||
|
|||||||
@@ -25,7 +25,6 @@ abstract class FirVariableAssignment : FirPureAbstractElement(), FirQualifiedAcc
|
|||||||
abstract override val calleeReference: FirReference
|
abstract override val calleeReference: FirReference
|
||||||
abstract val lValue: FirReference
|
abstract val lValue: FirReference
|
||||||
abstract val rValue: FirExpression
|
abstract val rValue: FirExpression
|
||||||
abstract val operation: FirOperation
|
|
||||||
|
|
||||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitVariableAssignment(this, data)
|
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitVariableAssignment(this, data)
|
||||||
|
|
||||||
|
|||||||
+1
-3
@@ -8,7 +8,6 @@ package org.jetbrains.kotlin.fir.expressions.impl
|
|||||||
import org.jetbrains.kotlin.fir.FirSourceElement
|
import org.jetbrains.kotlin.fir.FirSourceElement
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
|
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
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.expressions.FirVariableAssignment
|
||||||
import org.jetbrains.kotlin.fir.impl.FirAbstractAnnotatedElement
|
import org.jetbrains.kotlin.fir.impl.FirAbstractAnnotatedElement
|
||||||
import org.jetbrains.kotlin.fir.references.FirReference
|
import org.jetbrains.kotlin.fir.references.FirReference
|
||||||
@@ -22,8 +21,7 @@ import org.jetbrains.kotlin.fir.visitors.*
|
|||||||
class FirVariableAssignmentImpl(
|
class FirVariableAssignmentImpl(
|
||||||
override val source: FirSourceElement?,
|
override val source: FirSourceElement?,
|
||||||
override var safe: Boolean,
|
override var safe: Boolean,
|
||||||
override var rValue: FirExpression,
|
override var rValue: FirExpression
|
||||||
override var operation: FirOperation
|
|
||||||
) : FirVariableAssignment(), FirModifiableQualifiedAccess, FirAbstractAnnotatedElement {
|
) : FirVariableAssignment(), FirModifiableQualifiedAccess, FirAbstractAnnotatedElement {
|
||||||
override val annotations: MutableList<FirAnnotationCall> = mutableListOf()
|
override val annotations: MutableList<FirAnnotationCall> = mutableListOf()
|
||||||
override var explicitReceiver: FirExpression? = null
|
override var explicitReceiver: FirExpression? = null
|
||||||
|
|||||||
-1
@@ -383,7 +383,6 @@ object ImplementationConfigurator : AbstractFirTreeImplementationConfigurator()
|
|||||||
|
|
||||||
impl(variableAssignment) {
|
impl(variableAssignment) {
|
||||||
parents += modifiableQualifiedAccess
|
parents += modifiableQualifiedAccess
|
||||||
isMutable("operation")
|
|
||||||
lateinit("calleeReference")
|
lateinit("calleeReference")
|
||||||
defaultNoReceivers()
|
defaultNoReceivers()
|
||||||
|
|
||||||
|
|||||||
-1
@@ -439,7 +439,6 @@ object NodeConfigurator : AbstractFieldConfigurator() {
|
|||||||
variableAssignment.configure {
|
variableAssignment.configure {
|
||||||
+field("lValue", reference)
|
+field("lValue", reference)
|
||||||
+field("rValue", expression).withTransform()
|
+field("rValue", expression).withTransform()
|
||||||
+field("operation", operationType)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
whenSubjectExpression.configure {
|
whenSubjectExpression.configure {
|
||||||
|
|||||||
+1
-1
@@ -445,7 +445,7 @@ class FirVisualizer(private val firFile: FirFile) : BaseRenderer() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun visitVariableAssignment(variableAssignment: FirVariableAssignment, data: StringBuilder) {
|
override fun visitVariableAssignment(variableAssignment: FirVariableAssignment, data: StringBuilder) {
|
||||||
data.append("qualified access: \"${variableAssignment.operation}\"")
|
data.append("variable assignment")
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun visitStarProjection(starProjection: FirStarProjection, data: StringBuilder) {
|
override fun visitStarProjection(starProjection: FirStarProjection, data: StringBuilder) {
|
||||||
|
|||||||
Reference in New Issue
Block a user