[FIR] Desugar increment/decrement in body resolve phase
The expression needs to be resolved first to determine if there is a receiver that needs to be extracted to a temporary variable. Also, the special case for prefix increment/decrement on local variable without delegates requires resolution to check if the variable is local. ^KT-56771 Fixed ^KT-56659 Fixed
This commit is contained in:
committed by
Space Team
parent
5ecf9cce25
commit
3b9724d20e
+1
@@ -104,6 +104,7 @@ object FirTreeBuilder : AbstractFirTreeBuilder() {
|
||||
val comparisonExpression by element(Expression, expression)
|
||||
val typeOperatorCall by element(Expression, expression, call)
|
||||
val assignmentOperatorStatement by element(Expression, statement)
|
||||
val incrementDecrementExpression by element(Expression, expression)
|
||||
val equalityOperatorCall by element(Expression, expression, call)
|
||||
val whenExpression by element(Expression, expression, resolvable)
|
||||
val whenBranch by element(Expression)
|
||||
|
||||
+2
@@ -317,6 +317,8 @@ object ImplementationConfigurator : AbstractFirTreeImplementationConfigurator()
|
||||
|
||||
impl(assignmentOperatorStatement)
|
||||
|
||||
impl(incrementDecrementExpression)
|
||||
|
||||
impl(equalityOperatorCall) {
|
||||
default("typeRef", "FirImplicitBooleanTypeRef(null)")
|
||||
useTypes(implicitBooleanTypeRefType)
|
||||
|
||||
+7
@@ -254,6 +254,13 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
|
||||
+field("rightArgument", expression).withTransform()
|
||||
}
|
||||
|
||||
incrementDecrementExpression.configure {
|
||||
+booleanField("isPrefix")
|
||||
+field("operationName", nameType)
|
||||
+field("expression", expression)
|
||||
+field("operationSource", sourceElementType, nullable = true)
|
||||
}
|
||||
|
||||
equalityOperatorCall.configure {
|
||||
+field("operation", operationType)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user