[FIR] Fix exponential analysis of augmented array access calls
^KT-50861 Fixed
This commit is contained in:
committed by
teamcity
parent
c4735f9f29
commit
ade2307345
@@ -21,7 +21,6 @@ abstract class FirAugmentedArraySetCall : FirPureAbstractElement(), FirStatement
|
||||
abstract override val annotations: List<FirAnnotation>
|
||||
abstract val lhsGetCall: FirFunctionCall
|
||||
abstract val rhs: FirExpression
|
||||
abstract val rhs2: FirExpression
|
||||
abstract val operation: FirOperation
|
||||
abstract val calleeReference: FirReference
|
||||
abstract val arrayAccessSource: KtSourceElement?
|
||||
|
||||
-2
@@ -30,7 +30,6 @@ class FirAugmentedArraySetCallBuilder : FirAnnotationContainerBuilder {
|
||||
override val annotations: MutableList<FirAnnotation> = mutableListOf()
|
||||
lateinit var lhsGetCall: FirFunctionCall
|
||||
lateinit var rhs: FirExpression
|
||||
lateinit var rhs2: FirExpression
|
||||
lateinit var operation: FirOperation
|
||||
var calleeReference: FirReference = FirStubReference
|
||||
var arrayAccessSource: KtSourceElement? = null
|
||||
@@ -41,7 +40,6 @@ class FirAugmentedArraySetCallBuilder : FirAnnotationContainerBuilder {
|
||||
annotations,
|
||||
lhsGetCall,
|
||||
rhs,
|
||||
rhs2,
|
||||
operation,
|
||||
calleeReference,
|
||||
arrayAccessSource,
|
||||
|
||||
-3
@@ -24,7 +24,6 @@ internal class FirAugmentedArraySetCallImpl(
|
||||
override val annotations: MutableList<FirAnnotation>,
|
||||
override var lhsGetCall: FirFunctionCall,
|
||||
override var rhs: FirExpression,
|
||||
override var rhs2: FirExpression,
|
||||
override val operation: FirOperation,
|
||||
override var calleeReference: FirReference,
|
||||
override val arrayAccessSource: KtSourceElement?,
|
||||
@@ -33,7 +32,6 @@ internal class FirAugmentedArraySetCallImpl(
|
||||
annotations.forEach { it.accept(visitor, data) }
|
||||
lhsGetCall.accept(visitor, data)
|
||||
rhs.accept(visitor, data)
|
||||
rhs2.accept(visitor, data)
|
||||
calleeReference.accept(visitor, data)
|
||||
}
|
||||
|
||||
@@ -41,7 +39,6 @@ internal class FirAugmentedArraySetCallImpl(
|
||||
transformAnnotations(transformer, data)
|
||||
lhsGetCall = lhsGetCall.transform(transformer, data)
|
||||
rhs = rhs.transform(transformer, data)
|
||||
rhs2 = rhs2.transform(transformer, data)
|
||||
calleeReference = calleeReference.transform(transformer, data)
|
||||
return this
|
||||
}
|
||||
|
||||
@@ -11,6 +11,7 @@ import org.jetbrains.kotlin.descriptors.Modality
|
||||
import org.jetbrains.kotlin.descriptors.Visibilities
|
||||
import org.jetbrains.kotlin.fakeElement
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin
|
||||
import org.jetbrains.kotlin.fir.declarations.FirProperty
|
||||
import org.jetbrains.kotlin.fir.declarations.FirVariable
|
||||
import org.jetbrains.kotlin.fir.declarations.builder.buildProperty
|
||||
import org.jetbrains.kotlin.fir.declarations.impl.FirDeclarationStatusImpl
|
||||
@@ -25,11 +26,14 @@ import org.jetbrains.kotlin.fir.types.builder.buildImplicitTypeRef
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
|
||||
fun FirVariable.toQualifiedAccess(): FirQualifiedAccessExpression = buildPropertyAccessExpression {
|
||||
val fakeSource = this@toQualifiedAccess.source?.fakeElement(KtFakeSourceElementKind.ReferenceInAtomicQualifiedAccess)
|
||||
source = fakeSource
|
||||
calleeReference = buildResolvedNamedReference {
|
||||
source = this@toQualifiedAccess.source?.fakeElement(KtFakeSourceElementKind.ReferenceInAtomicQualifiedAccess)
|
||||
source = fakeSource
|
||||
name = this@toQualifiedAccess.name
|
||||
resolvedSymbol = this@toQualifiedAccess.symbol
|
||||
}
|
||||
typeRef = this@toQualifiedAccess.returnTypeRef
|
||||
}
|
||||
|
||||
fun generateTemporaryVariable(
|
||||
@@ -39,7 +43,7 @@ fun generateTemporaryVariable(
|
||||
initializer: FirExpression,
|
||||
typeRef: FirTypeRef? = null,
|
||||
extractedAnnotations: Collection<FirAnnotation>? = null,
|
||||
): FirVariable =
|
||||
): FirProperty =
|
||||
buildProperty {
|
||||
this.source = source
|
||||
this.moduleData = moduleData
|
||||
@@ -66,7 +70,7 @@ fun generateTemporaryVariable(
|
||||
specialName: String,
|
||||
initializer: FirExpression,
|
||||
extractedAnnotations: Collection<FirAnnotation>? = null,
|
||||
): FirVariable =
|
||||
): FirProperty =
|
||||
generateTemporaryVariable(
|
||||
moduleData,
|
||||
source,
|
||||
|
||||
-1
@@ -463,7 +463,6 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
|
||||
augmentedArraySetCall.configure {
|
||||
+field("lhsGetCall", functionCall)
|
||||
+field("rhs", expression)
|
||||
+field("rhs2", expression)
|
||||
+field("operation", operationType)
|
||||
// Used for resolution errors reporting in case
|
||||
+field("calleeReference", reference, withReplace = true)
|
||||
|
||||
Reference in New Issue
Block a user