FIR: Allow selector of safe calls to be a FirStatement
It's necessary to allow a?.b += v be interpreted as a?.(b += v) But currently FirAssignmentOperatorStatement is not FirQualifiedAccess ^KT-41034 In Progress
This commit is contained in:
+2
-2
@@ -966,7 +966,7 @@ abstract class BaseFirBuilder<T>(val baseSession: FirSession, val context: Conte
|
||||
value: FirExpression,
|
||||
annotations: List<FirAnnotation>
|
||||
): FirSafeCallExpression {
|
||||
val nestedAccess = safeCallNonAssignment.regularQualifiedAccess
|
||||
val nestedAccess = safeCallNonAssignment.selector as FirQualifiedAccess
|
||||
|
||||
val assignment = buildVariableAssignment {
|
||||
source = baseSource
|
||||
@@ -976,7 +976,7 @@ abstract class BaseFirBuilder<T>(val baseSession: FirSession, val context: Conte
|
||||
this.annotations += annotations
|
||||
}
|
||||
|
||||
safeCallNonAssignment.replaceRegularQualifiedAccess(
|
||||
safeCallNonAssignment.replaceSelector(
|
||||
assignment
|
||||
)
|
||||
|
||||
|
||||
+1
-2
@@ -43,7 +43,6 @@ import org.jetbrains.kotlin.fir.types.impl.*
|
||||
import org.jetbrains.kotlin.lexer.KtTokens
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.name.SpecialNames
|
||||
import org.jetbrains.kotlin.psi.KtAnnotated
|
||||
import org.jetbrains.kotlin.types.ConstantValueKind
|
||||
import org.jetbrains.kotlin.types.expressions.OperatorConventions
|
||||
import org.jetbrains.kotlin.util.OperatorNameConventions
|
||||
@@ -583,7 +582,7 @@ fun FirQualifiedAccess.wrapWithSafeCall(receiver: FirExpression, source: KtSourc
|
||||
this.checkedSubjectRef = FirExpressionRef<FirCheckedSafeCallSubject>().apply {
|
||||
bind(checkedSafeCallSubject)
|
||||
}
|
||||
this.regularQualifiedAccess = this@wrapWithSafeCall
|
||||
this.selector = this@wrapWithSafeCall
|
||||
this.source = source
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user