[FIR] List for unresolved effects to resolved contract node

This commit is contained in:
Dmitriy Novozhilov
2020-04-09 13:47:55 +03:00
parent 4e1bf5f1e2
commit eef9b87047
4 changed files with 12 additions and 1 deletions
@@ -7,6 +7,7 @@ package org.jetbrains.kotlin.fir.contracts
import org.jetbrains.kotlin.fir.FirSourceElement
import org.jetbrains.kotlin.fir.contracts.description.ConeEffectDeclaration
import org.jetbrains.kotlin.fir.expressions.FirStatement
import org.jetbrains.kotlin.fir.visitors.*
/*
@@ -17,6 +18,7 @@ import org.jetbrains.kotlin.fir.visitors.*
abstract class FirResolvedContractDescription : FirContractDescription() {
abstract override val source: FirSourceElement?
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)
}
@@ -11,6 +11,7 @@ import org.jetbrains.kotlin.fir.builder.FirBuilderDsl
import org.jetbrains.kotlin.fir.contracts.FirResolvedContractDescription
import org.jetbrains.kotlin.fir.contracts.description.ConeEffectDeclaration
import org.jetbrains.kotlin.fir.contracts.impl.FirResolvedContractDescriptionImpl
import org.jetbrains.kotlin.fir.expressions.FirStatement
import org.jetbrains.kotlin.fir.visitors.*
/*
@@ -22,11 +23,13 @@ import org.jetbrains.kotlin.fir.visitors.*
class FirResolvedContractDescriptionBuilder {
var source: FirSourceElement? = null
val effects: MutableList<ConeEffectDeclaration> = mutableListOf()
val unresolvedEffects: MutableList<FirStatement> = mutableListOf()
fun build(): FirResolvedContractDescription {
return FirResolvedContractDescriptionImpl(
source,
effects,
unresolvedEffects,
)
}
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.fir.contracts.impl
import org.jetbrains.kotlin.fir.FirSourceElement
import org.jetbrains.kotlin.fir.contracts.FirResolvedContractDescription
import org.jetbrains.kotlin.fir.contracts.description.ConeEffectDeclaration
import org.jetbrains.kotlin.fir.expressions.FirStatement
import org.jetbrains.kotlin.fir.visitors.*
/*
@@ -18,10 +19,14 @@ import org.jetbrains.kotlin.fir.visitors.*
internal class FirResolvedContractDescriptionImpl(
override val source: FirSourceElement?,
override val effects: MutableList<ConeEffectDeclaration>,
override val unresolvedEffects: MutableList<FirStatement>,
) : 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 {
unresolvedEffects.transformInplace(transformer, data)
return this
}
}
@@ -582,6 +582,7 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
resolvedContractDescription.configure {
+fieldList("effects", effectDeclarationType)
+fieldList("unresolvedEffects", statement)
}
}
}