[FIR] List for unresolved effects to resolved contract node
This commit is contained in:
+2
@@ -7,6 +7,7 @@ package org.jetbrains.kotlin.fir.contracts
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.fir.FirSourceElement
|
import org.jetbrains.kotlin.fir.FirSourceElement
|
||||||
import org.jetbrains.kotlin.fir.contracts.description.ConeEffectDeclaration
|
import org.jetbrains.kotlin.fir.contracts.description.ConeEffectDeclaration
|
||||||
|
import org.jetbrains.kotlin.fir.expressions.FirStatement
|
||||||
import org.jetbrains.kotlin.fir.visitors.*
|
import org.jetbrains.kotlin.fir.visitors.*
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -17,6 +18,7 @@ import org.jetbrains.kotlin.fir.visitors.*
|
|||||||
abstract class FirResolvedContractDescription : FirContractDescription() {
|
abstract class FirResolvedContractDescription : FirContractDescription() {
|
||||||
abstract override val source: FirSourceElement?
|
abstract override val source: FirSourceElement?
|
||||||
abstract val effects: List<ConeEffectDeclaration>
|
abstract val effects: List<ConeEffectDeclaration>
|
||||||
|
abstract val unresolvedEffects: List<FirStatement>
|
||||||
|
|
||||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitResolvedContractDescription(this, data)
|
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitResolvedContractDescription(this, data)
|
||||||
}
|
}
|
||||||
|
|||||||
+3
@@ -11,6 +11,7 @@ import org.jetbrains.kotlin.fir.builder.FirBuilderDsl
|
|||||||
import org.jetbrains.kotlin.fir.contracts.FirResolvedContractDescription
|
import org.jetbrains.kotlin.fir.contracts.FirResolvedContractDescription
|
||||||
import org.jetbrains.kotlin.fir.contracts.description.ConeEffectDeclaration
|
import org.jetbrains.kotlin.fir.contracts.description.ConeEffectDeclaration
|
||||||
import org.jetbrains.kotlin.fir.contracts.impl.FirResolvedContractDescriptionImpl
|
import org.jetbrains.kotlin.fir.contracts.impl.FirResolvedContractDescriptionImpl
|
||||||
|
import org.jetbrains.kotlin.fir.expressions.FirStatement
|
||||||
import org.jetbrains.kotlin.fir.visitors.*
|
import org.jetbrains.kotlin.fir.visitors.*
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -22,11 +23,13 @@ import org.jetbrains.kotlin.fir.visitors.*
|
|||||||
class FirResolvedContractDescriptionBuilder {
|
class FirResolvedContractDescriptionBuilder {
|
||||||
var source: FirSourceElement? = null
|
var source: FirSourceElement? = null
|
||||||
val effects: MutableList<ConeEffectDeclaration> = mutableListOf()
|
val effects: MutableList<ConeEffectDeclaration> = mutableListOf()
|
||||||
|
val unresolvedEffects: MutableList<FirStatement> = mutableListOf()
|
||||||
|
|
||||||
fun build(): FirResolvedContractDescription {
|
fun build(): FirResolvedContractDescription {
|
||||||
return FirResolvedContractDescriptionImpl(
|
return FirResolvedContractDescriptionImpl(
|
||||||
source,
|
source,
|
||||||
effects,
|
effects,
|
||||||
|
unresolvedEffects,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+6
-1
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.fir.contracts.impl
|
|||||||
import org.jetbrains.kotlin.fir.FirSourceElement
|
import org.jetbrains.kotlin.fir.FirSourceElement
|
||||||
import org.jetbrains.kotlin.fir.contracts.FirResolvedContractDescription
|
import org.jetbrains.kotlin.fir.contracts.FirResolvedContractDescription
|
||||||
import org.jetbrains.kotlin.fir.contracts.description.ConeEffectDeclaration
|
import org.jetbrains.kotlin.fir.contracts.description.ConeEffectDeclaration
|
||||||
|
import org.jetbrains.kotlin.fir.expressions.FirStatement
|
||||||
import org.jetbrains.kotlin.fir.visitors.*
|
import org.jetbrains.kotlin.fir.visitors.*
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -18,10 +19,14 @@ import org.jetbrains.kotlin.fir.visitors.*
|
|||||||
internal class FirResolvedContractDescriptionImpl(
|
internal class FirResolvedContractDescriptionImpl(
|
||||||
override val source: FirSourceElement?,
|
override val source: FirSourceElement?,
|
||||||
override val effects: MutableList<ConeEffectDeclaration>,
|
override val effects: MutableList<ConeEffectDeclaration>,
|
||||||
|
override val unresolvedEffects: MutableList<FirStatement>,
|
||||||
) : FirResolvedContractDescription() {
|
) : FirResolvedContractDescription() {
|
||||||
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {}
|
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
|
||||||
|
unresolvedEffects.forEach { it.accept(visitor, data) }
|
||||||
|
}
|
||||||
|
|
||||||
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirResolvedContractDescriptionImpl {
|
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirResolvedContractDescriptionImpl {
|
||||||
|
unresolvedEffects.transformInplace(transformer, data)
|
||||||
return this
|
return this
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
@@ -582,6 +582,7 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
|
|||||||
|
|
||||||
resolvedContractDescription.configure {
|
resolvedContractDescription.configure {
|
||||||
+fieldList("effects", effectDeclarationType)
|
+fieldList("effects", effectDeclarationType)
|
||||||
|
+fieldList("unresolvedEffects", statement)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user