[FIR] Rename FirArraySetCall to FirAugmentedArraySetCall

This commit is contained in:
Dmitriy Novozhilov
2020-03-18 11:17:50 +03:00
parent 2b986194fb
commit f85022532d
12 changed files with 49 additions and 49 deletions
@@ -1257,8 +1257,8 @@ class Fir2IrVisitor(
} }
} }
override fun visitArraySetCall(arraySetCall: FirArraySetCall, data: Any?): IrElement { override fun visitAugmentedArraySetCall(augmentedArraySetCall: FirAugmentedArraySetCall, data: Any?): IrElement {
return arraySetCall.convertWithOffsets { startOffset, endOffset -> return augmentedArraySetCall.convertWithOffsets { startOffset, endOffset ->
IrErrorCallExpressionImpl( IrErrorCallExpressionImpl(
startOffset, endOffset, typeConverter.unitType, startOffset, endOffset, typeConverter.unitType,
"FirArraySetCall (resolve isn't supported yet)" "FirArraySetCall (resolve isn't supported yet)"
@@ -479,7 +479,7 @@ abstract class BaseFirBuilder<T>(val baseSession: FirSession, val context: Conte
return if (operation == FirOperation.ASSIGN) { return if (operation == FirOperation.ASSIGN) {
this.convert() this.convert()
} else { } else {
generateArraySetCall(baseSource, operation, rhs, convert) generateAugmentedArraySetCall(baseSource, operation, rhs, convert)
} }
} }
@@ -506,13 +506,13 @@ abstract class BaseFirBuilder<T>(val baseSession: FirSession, val context: Conte
} }
} }
private fun T.generateArraySetCall( private fun T.generateAugmentedArraySetCall(
baseSource: FirSourceElement?, baseSource: FirSourceElement?,
operation: FirOperation, operation: FirOperation,
rhs: T?, rhs: T?,
convert: T.() -> FirExpression convert: T.() -> FirExpression
): FirStatement { ): FirStatement {
return buildArraySetCall { return buildAugmentedArraySetCall {
source = baseSource source = baseSource
this.operation = operation this.operation = operation
assignCall = generateAugmentedCallForAugmentedArraySetCall(operation, rhs, convert) assignCall = generateAugmentedCallForAugmentedArraySetCall(operation, rhs, convert)
@@ -169,8 +169,8 @@ open class FirBodyResolveTransformer(
return expressionsTransformer.transformDelegatedConstructorCall(delegatedConstructorCall, data) return expressionsTransformer.transformDelegatedConstructorCall(delegatedConstructorCall, data)
} }
override fun transformArraySetCall(arraySetCall: FirArraySetCall, data: ResolutionMode): CompositeTransformResult<FirStatement> { override fun transformAugmentedArraySetCall(augmentedArraySetCall: FirAugmentedArraySetCall, data: ResolutionMode): CompositeTransformResult<FirStatement> {
return expressionsTransformer.transformArraySetCall(arraySetCall, data) return expressionsTransformer.transformAugmentedArraySetCall(augmentedArraySetCall, data)
} }
// ------------------------------------- Declarations ------------------------------------- // ------------------------------------- Declarations -------------------------------------
@@ -629,13 +629,13 @@ class FirExpressionsResolveTransformer(transformer: FirBodyResolveTransformer) :
} }
@OptIn(ExperimentalStdlibApi::class) @OptIn(ExperimentalStdlibApi::class)
override fun transformArraySetCall(arraySetCall: FirArraySetCall, data: ResolutionMode): CompositeTransformResult<FirStatement> { override fun transformAugmentedArraySetCall(augmentedArraySetCall: FirAugmentedArraySetCall, data: ResolutionMode): CompositeTransformResult<FirStatement> {
assert(arraySetCall.operation in FirOperation.ASSIGNMENTS) assert(augmentedArraySetCall.operation in FirOperation.ASSIGNMENTS)
assert(arraySetCall.operation != FirOperation.ASSIGN) assert(augmentedArraySetCall.operation != FirOperation.ASSIGN)
val operatorName = FirOperationNameConventions.ASSIGNMENTS.getValue(arraySetCall.operation) val operatorName = FirOperationNameConventions.ASSIGNMENTS.getValue(augmentedArraySetCall.operation)
val firstCalls = with(arraySetCall.setGetBlock.statements.last() as FirFunctionCall) setCall@{ val firstCalls = with(augmentedArraySetCall.setGetBlock.statements.last() as FirFunctionCall) setCall@{
buildList { buildList {
add(this@setCall) add(this@setCall)
with(arguments.last() as FirFunctionCall) plusCall@{ with(arguments.last() as FirFunctionCall) plusCall@{
@@ -645,25 +645,25 @@ class FirExpressionsResolveTransformer(transformer: FirBodyResolveTransformer) :
} }
} }
val secondCalls = listOf( val secondCalls = listOf(
arraySetCall.assignCall, augmentedArraySetCall.assignCall,
arraySetCall.assignCall.explicitReceiver as FirFunctionCall augmentedArraySetCall.assignCall.explicitReceiver as FirFunctionCall
) )
val firstResult = withLocalScopeCleanup { val firstResult = withLocalScopeCleanup {
arraySetCall.setGetBlock.transformSingle(transformer, ResolutionMode.ContextIndependent) augmentedArraySetCall.setGetBlock.transformSingle(transformer, ResolutionMode.ContextIndependent)
} }
val secondResult = arraySetCall.assignCall.transformSingle(transformer, ResolutionMode.ContextIndependent) val secondResult = augmentedArraySetCall.assignCall.transformSingle(transformer, ResolutionMode.ContextIndependent)
val firstSucceed = firstCalls.all { it.typeRef !is FirErrorTypeRef } val firstSucceed = firstCalls.all { it.typeRef !is FirErrorTypeRef }
val secondSucceed = secondCalls.all { it.typeRef !is FirErrorTypeRef } val secondSucceed = secondCalls.all { it.typeRef !is FirErrorTypeRef }
val result: FirStatement = when { val result: FirStatement = when {
firstSucceed && secondSucceed -> { firstSucceed && secondSucceed -> {
arraySetCall.also { augmentedArraySetCall.also {
it.replaceCalleeReference( it.replaceCalleeReference(
buildErrorNamedReference { buildErrorNamedReference {
// TODO: add better diagnostic // TODO: add better diagnostic
source = arraySetCall.source source = augmentedArraySetCall.source
diagnostic = FirAmbiguityError(operatorName, emptyList()) diagnostic = FirAmbiguityError(operatorName, emptyList())
} }
) )
@@ -672,10 +672,10 @@ class FirExpressionsResolveTransformer(transformer: FirBodyResolveTransformer) :
firstSucceed -> firstResult firstSucceed -> firstResult
secondSucceed -> secondResult secondSucceed -> secondResult
else -> { else -> {
arraySetCall.also { augmentedArraySetCall.also {
it.replaceCalleeReference( it.replaceCalleeReference(
buildErrorNamedReference { buildErrorNamedReference {
source = arraySetCall.source source = augmentedArraySetCall.source
diagnostic = FirUnresolvedNameError(operatorName) diagnostic = FirUnresolvedNameError(operatorName)
} }
) )
@@ -15,7 +15,7 @@ import org.jetbrains.kotlin.fir.visitors.*
* DO NOT MODIFY IT MANUALLY * DO NOT MODIFY IT MANUALLY
*/ */
abstract class FirArraySetCall : FirPureAbstractElement(), FirStatement { abstract class FirAugmentedArraySetCall : FirPureAbstractElement(), FirStatement {
abstract override val source: FirSourceElement? abstract override val source: FirSourceElement?
abstract override val annotations: List<FirAnnotationCall> abstract override val annotations: List<FirAnnotationCall>
abstract val assignCall: FirFunctionCall abstract val assignCall: FirFunctionCall
@@ -23,7 +23,7 @@ abstract class FirArraySetCall : FirPureAbstractElement(), FirStatement {
abstract val operation: FirOperation abstract val operation: FirOperation
abstract val calleeReference: FirReference abstract val calleeReference: FirReference
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitArraySetCall(this, data) override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitAugmentedArraySetCall(this, data)
abstract fun replaceCalleeReference(newCalleeReference: FirReference) abstract fun replaceCalleeReference(newCalleeReference: FirReference)
} }
@@ -10,11 +10,11 @@ import org.jetbrains.kotlin.fir.FirSourceElement
import org.jetbrains.kotlin.fir.builder.FirAnnotationContainerBuilder import org.jetbrains.kotlin.fir.builder.FirAnnotationContainerBuilder
import org.jetbrains.kotlin.fir.builder.FirBuilderDsl import org.jetbrains.kotlin.fir.builder.FirBuilderDsl
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
import org.jetbrains.kotlin.fir.expressions.FirArraySetCall import org.jetbrains.kotlin.fir.expressions.FirAugmentedArraySetCall
import org.jetbrains.kotlin.fir.expressions.FirBlock import org.jetbrains.kotlin.fir.expressions.FirBlock
import org.jetbrains.kotlin.fir.expressions.FirFunctionCall import org.jetbrains.kotlin.fir.expressions.FirFunctionCall
import org.jetbrains.kotlin.fir.expressions.FirOperation import org.jetbrains.kotlin.fir.expressions.FirOperation
import org.jetbrains.kotlin.fir.expressions.impl.FirArraySetCallImpl import org.jetbrains.kotlin.fir.expressions.impl.FirAugmentedArraySetCallImpl
import org.jetbrains.kotlin.fir.references.FirReference import org.jetbrains.kotlin.fir.references.FirReference
import org.jetbrains.kotlin.fir.references.impl.FirStubReference import org.jetbrains.kotlin.fir.references.impl.FirStubReference
import org.jetbrains.kotlin.fir.visitors.* import org.jetbrains.kotlin.fir.visitors.*
@@ -25,7 +25,7 @@ import org.jetbrains.kotlin.fir.visitors.*
*/ */
@FirBuilderDsl @FirBuilderDsl
class FirArraySetCallBuilder : FirAnnotationContainerBuilder { class FirAugmentedArraySetCallBuilder : FirAnnotationContainerBuilder {
override var source: FirSourceElement? = null override var source: FirSourceElement? = null
override val annotations: MutableList<FirAnnotationCall> = mutableListOf() override val annotations: MutableList<FirAnnotationCall> = mutableListOf()
lateinit var assignCall: FirFunctionCall lateinit var assignCall: FirFunctionCall
@@ -33,8 +33,8 @@ class FirArraySetCallBuilder : FirAnnotationContainerBuilder {
lateinit var operation: FirOperation lateinit var operation: FirOperation
var calleeReference: FirReference = FirStubReference var calleeReference: FirReference = FirStubReference
override fun build(): FirArraySetCall { override fun build(): FirAugmentedArraySetCall {
return FirArraySetCallImpl( return FirAugmentedArraySetCallImpl(
source, source,
annotations, annotations,
assignCall, assignCall,
@@ -47,9 +47,9 @@ class FirArraySetCallBuilder : FirAnnotationContainerBuilder {
} }
@OptIn(ExperimentalContracts::class) @OptIn(ExperimentalContracts::class)
inline fun buildArraySetCall(init: FirArraySetCallBuilder.() -> Unit): FirArraySetCall { inline fun buildAugmentedArraySetCall(init: FirAugmentedArraySetCallBuilder.() -> Unit): FirAugmentedArraySetCall {
contract { contract {
callsInPlace(init, kotlin.contracts.InvocationKind.EXACTLY_ONCE) callsInPlace(init, kotlin.contracts.InvocationKind.EXACTLY_ONCE)
} }
return FirArraySetCallBuilder().apply(init).build() return FirAugmentedArraySetCallBuilder().apply(init).build()
} }
@@ -7,7 +7,7 @@ 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.FirArraySetCall import org.jetbrains.kotlin.fir.expressions.FirAugmentedArraySetCall
import org.jetbrains.kotlin.fir.expressions.FirBlock import org.jetbrains.kotlin.fir.expressions.FirBlock
import org.jetbrains.kotlin.fir.expressions.FirFunctionCall import org.jetbrains.kotlin.fir.expressions.FirFunctionCall
import org.jetbrains.kotlin.fir.expressions.FirOperation import org.jetbrains.kotlin.fir.expressions.FirOperation
@@ -19,14 +19,14 @@ import org.jetbrains.kotlin.fir.visitors.*
* DO NOT MODIFY IT MANUALLY * DO NOT MODIFY IT MANUALLY
*/ */
internal class FirArraySetCallImpl( internal class FirAugmentedArraySetCallImpl(
override val source: FirSourceElement?, override val source: FirSourceElement?,
override val annotations: MutableList<FirAnnotationCall>, override val annotations: MutableList<FirAnnotationCall>,
override var assignCall: FirFunctionCall, override var assignCall: FirFunctionCall,
override var setGetBlock: FirBlock, override var setGetBlock: FirBlock,
override val operation: FirOperation, override val operation: FirOperation,
override var calleeReference: FirReference, override var calleeReference: FirReference,
) : FirArraySetCall() { ) : FirAugmentedArraySetCall() {
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) { override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
annotations.forEach { it.accept(visitor, data) } annotations.forEach { it.accept(visitor, data) }
assignCall.accept(visitor, data) assignCall.accept(visitor, data)
@@ -34,7 +34,7 @@ internal class FirArraySetCallImpl(
calleeReference.accept(visitor, data) calleeReference.accept(visitor, data)
} }
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirArraySetCallImpl { override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirAugmentedArraySetCallImpl {
annotations.transformInplace(transformer, data) annotations.transformInplace(transformer, data)
assignCall = assignCall.transformSingle(transformer, data) assignCall = assignCall.transformSingle(transformer, data)
setGetBlock = setGetBlock.transformSingle(transformer, data) setGetBlock = setGetBlock.transformSingle(transformer, data)
@@ -74,7 +74,7 @@ import org.jetbrains.kotlin.fir.expressions.FirQualifiedAccessWithoutCallee
import org.jetbrains.kotlin.fir.expressions.FirQualifiedAccess import org.jetbrains.kotlin.fir.expressions.FirQualifiedAccess
import org.jetbrains.kotlin.fir.expressions.FirCheckNotNullCall import org.jetbrains.kotlin.fir.expressions.FirCheckNotNullCall
import org.jetbrains.kotlin.fir.expressions.FirArrayOfCall import org.jetbrains.kotlin.fir.expressions.FirArrayOfCall
import org.jetbrains.kotlin.fir.expressions.FirArraySetCall import org.jetbrains.kotlin.fir.expressions.FirAugmentedArraySetCall
import org.jetbrains.kotlin.fir.expressions.FirClassReferenceExpression import org.jetbrains.kotlin.fir.expressions.FirClassReferenceExpression
import org.jetbrains.kotlin.fir.expressions.FirErrorExpression import org.jetbrains.kotlin.fir.expressions.FirErrorExpression
import org.jetbrains.kotlin.fir.declarations.FirErrorFunction import org.jetbrains.kotlin.fir.declarations.FirErrorFunction
@@ -403,8 +403,8 @@ abstract class FirTransformer<in D> : FirVisitor<CompositeTransformResult<FirEle
return transformElement(arrayOfCall, data) return transformElement(arrayOfCall, data)
} }
open fun transformArraySetCall(arraySetCall: FirArraySetCall, data: D): CompositeTransformResult<FirStatement> { open fun transformAugmentedArraySetCall(augmentedArraySetCall: FirAugmentedArraySetCall, data: D): CompositeTransformResult<FirStatement> {
return transformElement(arraySetCall, data) return transformElement(augmentedArraySetCall, data)
} }
open fun transformClassReferenceExpression(classReferenceExpression: FirClassReferenceExpression, data: D): CompositeTransformResult<FirStatement> { open fun transformClassReferenceExpression(classReferenceExpression: FirClassReferenceExpression, data: D): CompositeTransformResult<FirStatement> {
@@ -863,8 +863,8 @@ abstract class FirTransformer<in D> : FirVisitor<CompositeTransformResult<FirEle
return transformArrayOfCall(arrayOfCall, data) return transformArrayOfCall(arrayOfCall, data)
} }
final override fun visitArraySetCall(arraySetCall: FirArraySetCall, data: D): CompositeTransformResult<FirStatement> { final override fun visitAugmentedArraySetCall(augmentedArraySetCall: FirAugmentedArraySetCall, data: D): CompositeTransformResult<FirStatement> {
return transformArraySetCall(arraySetCall, data) return transformAugmentedArraySetCall(augmentedArraySetCall, data)
} }
final override fun visitClassReferenceExpression(classReferenceExpression: FirClassReferenceExpression, data: D): CompositeTransformResult<FirStatement> { final override fun visitClassReferenceExpression(classReferenceExpression: FirClassReferenceExpression, data: D): CompositeTransformResult<FirStatement> {
@@ -74,7 +74,7 @@ import org.jetbrains.kotlin.fir.expressions.FirQualifiedAccessWithoutCallee
import org.jetbrains.kotlin.fir.expressions.FirQualifiedAccess import org.jetbrains.kotlin.fir.expressions.FirQualifiedAccess
import org.jetbrains.kotlin.fir.expressions.FirCheckNotNullCall import org.jetbrains.kotlin.fir.expressions.FirCheckNotNullCall
import org.jetbrains.kotlin.fir.expressions.FirArrayOfCall import org.jetbrains.kotlin.fir.expressions.FirArrayOfCall
import org.jetbrains.kotlin.fir.expressions.FirArraySetCall import org.jetbrains.kotlin.fir.expressions.FirAugmentedArraySetCall
import org.jetbrains.kotlin.fir.expressions.FirClassReferenceExpression import org.jetbrains.kotlin.fir.expressions.FirClassReferenceExpression
import org.jetbrains.kotlin.fir.expressions.FirErrorExpression import org.jetbrains.kotlin.fir.expressions.FirErrorExpression
import org.jetbrains.kotlin.fir.declarations.FirErrorFunction import org.jetbrains.kotlin.fir.declarations.FirErrorFunction
@@ -265,7 +265,7 @@ abstract class FirVisitor<out R, in D> {
open fun visitArrayOfCall(arrayOfCall: FirArrayOfCall, data: D): R = visitElement(arrayOfCall, data) open fun visitArrayOfCall(arrayOfCall: FirArrayOfCall, data: D): R = visitElement(arrayOfCall, data)
open fun visitArraySetCall(arraySetCall: FirArraySetCall, data: D): R = visitElement(arraySetCall, data) open fun visitAugmentedArraySetCall(augmentedArraySetCall: FirAugmentedArraySetCall, data: D): R = visitElement(augmentedArraySetCall, data)
open fun visitClassReferenceExpression(classReferenceExpression: FirClassReferenceExpression, data: D): R = visitElement(classReferenceExpression, data) open fun visitClassReferenceExpression(classReferenceExpression: FirClassReferenceExpression, data: D): R = visitElement(classReferenceExpression, data)
@@ -74,7 +74,7 @@ import org.jetbrains.kotlin.fir.expressions.FirQualifiedAccessWithoutCallee
import org.jetbrains.kotlin.fir.expressions.FirQualifiedAccess import org.jetbrains.kotlin.fir.expressions.FirQualifiedAccess
import org.jetbrains.kotlin.fir.expressions.FirCheckNotNullCall import org.jetbrains.kotlin.fir.expressions.FirCheckNotNullCall
import org.jetbrains.kotlin.fir.expressions.FirArrayOfCall import org.jetbrains.kotlin.fir.expressions.FirArrayOfCall
import org.jetbrains.kotlin.fir.expressions.FirArraySetCall import org.jetbrains.kotlin.fir.expressions.FirAugmentedArraySetCall
import org.jetbrains.kotlin.fir.expressions.FirClassReferenceExpression import org.jetbrains.kotlin.fir.expressions.FirClassReferenceExpression
import org.jetbrains.kotlin.fir.expressions.FirErrorExpression import org.jetbrains.kotlin.fir.expressions.FirErrorExpression
import org.jetbrains.kotlin.fir.declarations.FirErrorFunction import org.jetbrains.kotlin.fir.declarations.FirErrorFunction
@@ -401,8 +401,8 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
visitElement(arrayOfCall) visitElement(arrayOfCall)
} }
open fun visitArraySetCall(arraySetCall: FirArraySetCall) { open fun visitAugmentedArraySetCall(augmentedArraySetCall: FirAugmentedArraySetCall) {
visitElement(arraySetCall) visitElement(augmentedArraySetCall)
} }
open fun visitClassReferenceExpression(classReferenceExpression: FirClassReferenceExpression) { open fun visitClassReferenceExpression(classReferenceExpression: FirClassReferenceExpression) {
@@ -861,8 +861,8 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
visitArrayOfCall(arrayOfCall) visitArrayOfCall(arrayOfCall)
} }
final override fun visitArraySetCall(arraySetCall: FirArraySetCall, data: Nothing?) { final override fun visitAugmentedArraySetCall(augmentedArraySetCall: FirAugmentedArraySetCall, data: Nothing?) {
visitArraySetCall(arraySetCall) visitAugmentedArraySetCall(augmentedArraySetCall)
} }
final override fun visitClassReferenceExpression(classReferenceExpression: FirClassReferenceExpression, data: Nothing?) { final override fun visitClassReferenceExpression(classReferenceExpression: FirClassReferenceExpression, data: Nothing?) {
@@ -997,10 +997,10 @@ class FirRenderer(builder: StringBuilder, private val mode: RenderMode = RenderM
visitAssignment(FirOperation.ASSIGN, variableAssignment.rValue) visitAssignment(FirOperation.ASSIGN, variableAssignment.rValue)
} }
override fun visitArraySetCall(arraySetCall: FirArraySetCall) { override fun visitAugmentedArraySetCall(augmentedArraySetCall: FirAugmentedArraySetCall) {
arraySetCall.annotations.renderAnnotations() augmentedArraySetCall.annotations.renderAnnotations()
print("ArraySet:[") print("ArraySet:[")
arraySetCall.assignCall.accept(this) augmentedArraySetCall.assignCall.accept(this)
print("]") print("]")
} }
@@ -89,7 +89,7 @@ object FirTreeBuilder : AbstractFirTreeBuilder() {
val checkNotNullCall = element("CheckNotNullCall", Expression, expression, call, resolvable) val checkNotNullCall = element("CheckNotNullCall", Expression, expression, call, resolvable)
val arrayOfCall = element("ArrayOfCall", Expression, expression, call) val arrayOfCall = element("ArrayOfCall", Expression, expression, call)
val arraySetCall = element("ArraySetCall", Expression, statement) val arraySetCall = element("AugmentedArraySetCall", Expression, statement)
val classReferenceExpression = element("ClassReferenceExpression", Expression, expression) val classReferenceExpression = element("ClassReferenceExpression", Expression, expression)
val errorExpression = element("ErrorExpression", Expression, expression, diagnosticHolder) val errorExpression = element("ErrorExpression", Expression, expression, diagnosticHolder)
val errorFunction = element("ErrorFunction", Declaration, function, diagnosticHolder) val errorFunction = element("ErrorFunction", Declaration, function, diagnosticHolder)