[FIR] Add a class representing the old syntax contract description in order to use the previous class for the new syntax
This commit is contained in:
+2
-2
@@ -9,7 +9,7 @@ import com.intellij.psi.tree.IElementType
|
|||||||
import org.jetbrains.kotlin.descriptors.Modality
|
import org.jetbrains.kotlin.descriptors.Modality
|
||||||
import org.jetbrains.kotlin.fir.*
|
import org.jetbrains.kotlin.fir.*
|
||||||
import org.jetbrains.kotlin.fir.contracts.FirContractDescription
|
import org.jetbrains.kotlin.fir.contracts.FirContractDescription
|
||||||
import org.jetbrains.kotlin.fir.contracts.builder.buildRawContractDescription
|
import org.jetbrains.kotlin.fir.contracts.builder.buildLegacyRawContractDescription
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin
|
import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirProperty
|
import org.jetbrains.kotlin.fir.declarations.FirProperty
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirVariable
|
import org.jetbrains.kotlin.fir.declarations.FirVariable
|
||||||
@@ -434,7 +434,7 @@ fun FirBlock?.extractContractDescriptionIfPossible(): Pair<FirBlock?, FirContrac
|
|||||||
if (this == null) return null to null
|
if (this == null) return null to null
|
||||||
if (!isContractPresentFirCheck()) return this to null
|
if (!isContractPresentFirCheck()) return this to null
|
||||||
val contractCall = replaceFirstStatement(FirStubStatement) as FirFunctionCall
|
val contractCall = replaceFirstStatement(FirStubStatement) as FirFunctionCall
|
||||||
return this to buildRawContractDescription {
|
return this to buildLegacyRawContractDescription {
|
||||||
source = contractCall.source
|
source = contractCall.source
|
||||||
this.contractCall = contractCall
|
this.contractCall = contractCall
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-2
@@ -6,6 +6,7 @@
|
|||||||
package org.jetbrains.kotlin.fir.resolve.transformers.contracts
|
package org.jetbrains.kotlin.fir.resolve.transformers.contracts
|
||||||
|
|
||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
|
import org.jetbrains.kotlin.fir.contracts.FirLegacyRawContractDescription
|
||||||
import org.jetbrains.kotlin.fir.contracts.FirRawContractDescription
|
import org.jetbrains.kotlin.fir.contracts.FirRawContractDescription
|
||||||
import org.jetbrains.kotlin.fir.contracts.builder.buildEffectDeclaration
|
import org.jetbrains.kotlin.fir.contracts.builder.buildEffectDeclaration
|
||||||
import org.jetbrains.kotlin.fir.contracts.builder.buildResolvedContractDescription
|
import org.jetbrains.kotlin.fir.contracts.builder.buildResolvedContractDescription
|
||||||
@@ -116,7 +117,7 @@ class FirContractResolveTransformer(
|
|||||||
): CompositeTransformResult<T> {
|
): CompositeTransformResult<T> {
|
||||||
dataFlowAnalyzer.enterContractDescription()
|
dataFlowAnalyzer.enterContractDescription()
|
||||||
val contractDescription = owner.contractDescription
|
val contractDescription = owner.contractDescription
|
||||||
require(contractDescription is FirRawContractDescription)
|
require(contractDescription is FirLegacyRawContractDescription)
|
||||||
val valueParameters = owner.valueParameters
|
val valueParameters = owner.valueParameters
|
||||||
val contractCall = withNewLocalScope {
|
val contractCall = withNewLocalScope {
|
||||||
for (valueParameter in valueParameters) {
|
for (valueParameter in valueParameters) {
|
||||||
@@ -150,7 +151,7 @@ class FirContractResolveTransformer(
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun <T : FirContractDescriptionOwner> transformOwnerWithUnresolvedContract(owner: T): CompositeTransformResult<T> {
|
private fun <T : FirContractDescriptionOwner> transformOwnerWithUnresolvedContract(owner: T): CompositeTransformResult<T> {
|
||||||
val contractDescription = owner.contractDescription as FirRawContractDescription
|
val contractDescription = owner.contractDescription as FirLegacyRawContractDescription
|
||||||
val functionCall = contractDescription.contractCall
|
val functionCall = contractDescription.contractCall
|
||||||
owner.replaceContractDescription(FirEmptyContractDescription)
|
owner.replaceContractDescription(FirEmptyContractDescription)
|
||||||
owner.body.replaceFirstStatement(functionCall)
|
owner.body.replaceFirstStatement(functionCall)
|
||||||
|
|||||||
+22
@@ -0,0 +1,22 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||||
|
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.jetbrains.kotlin.fir.contracts
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.fir.FirSourceElement
|
||||||
|
import org.jetbrains.kotlin.fir.expressions.FirFunctionCall
|
||||||
|
import org.jetbrains.kotlin.fir.visitors.*
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This file was generated automatically
|
||||||
|
* DO NOT MODIFY IT MANUALLY
|
||||||
|
*/
|
||||||
|
|
||||||
|
abstract class FirLegacyRawContractDescription : FirContractDescription() {
|
||||||
|
abstract override val source: FirSourceElement?
|
||||||
|
abstract val contractCall: FirFunctionCall
|
||||||
|
|
||||||
|
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitLegacyRawContractDescription(this, data)
|
||||||
|
}
|
||||||
+2
-2
@@ -6,7 +6,7 @@
|
|||||||
package org.jetbrains.kotlin.fir.contracts
|
package org.jetbrains.kotlin.fir.contracts
|
||||||
|
|
||||||
import org.jetbrains.kotlin.fir.FirSourceElement
|
import org.jetbrains.kotlin.fir.FirSourceElement
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirFunctionCall
|
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
||||||
import org.jetbrains.kotlin.fir.visitors.*
|
import org.jetbrains.kotlin.fir.visitors.*
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -16,7 +16,7 @@ import org.jetbrains.kotlin.fir.visitors.*
|
|||||||
|
|
||||||
abstract class FirRawContractDescription : FirContractDescription() {
|
abstract class FirRawContractDescription : FirContractDescription() {
|
||||||
abstract override val source: FirSourceElement?
|
abstract override val source: FirSourceElement?
|
||||||
abstract val contractCall: FirFunctionCall
|
abstract val rawEffects: List<FirExpression>
|
||||||
|
|
||||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitRawContractDescription(this, data)
|
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitRawContractDescription(this, data)
|
||||||
}
|
}
|
||||||
|
|||||||
+41
@@ -0,0 +1,41 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||||
|
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.jetbrains.kotlin.fir.contracts.builder
|
||||||
|
|
||||||
|
import kotlin.contracts.*
|
||||||
|
import org.jetbrains.kotlin.fir.FirSourceElement
|
||||||
|
import org.jetbrains.kotlin.fir.builder.FirBuilderDsl
|
||||||
|
import org.jetbrains.kotlin.fir.contracts.FirLegacyRawContractDescription
|
||||||
|
import org.jetbrains.kotlin.fir.contracts.impl.FirLegacyRawContractDescriptionImpl
|
||||||
|
import org.jetbrains.kotlin.fir.expressions.FirFunctionCall
|
||||||
|
import org.jetbrains.kotlin.fir.visitors.*
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This file was generated automatically
|
||||||
|
* DO NOT MODIFY IT MANUALLY
|
||||||
|
*/
|
||||||
|
|
||||||
|
@FirBuilderDsl
|
||||||
|
class FirLegacyRawContractDescriptionBuilder {
|
||||||
|
var source: FirSourceElement? = null
|
||||||
|
lateinit var contractCall: FirFunctionCall
|
||||||
|
|
||||||
|
fun build(): FirLegacyRawContractDescription {
|
||||||
|
return FirLegacyRawContractDescriptionImpl(
|
||||||
|
source,
|
||||||
|
contractCall,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@OptIn(ExperimentalContracts::class)
|
||||||
|
inline fun buildLegacyRawContractDescription(init: FirLegacyRawContractDescriptionBuilder.() -> Unit): FirLegacyRawContractDescription {
|
||||||
|
contract {
|
||||||
|
callsInPlace(init, kotlin.contracts.InvocationKind.EXACTLY_ONCE)
|
||||||
|
}
|
||||||
|
return FirLegacyRawContractDescriptionBuilder().apply(init).build()
|
||||||
|
}
|
||||||
+4
-4
@@ -10,7 +10,7 @@ import org.jetbrains.kotlin.fir.FirSourceElement
|
|||||||
import org.jetbrains.kotlin.fir.builder.FirBuilderDsl
|
import org.jetbrains.kotlin.fir.builder.FirBuilderDsl
|
||||||
import org.jetbrains.kotlin.fir.contracts.FirRawContractDescription
|
import org.jetbrains.kotlin.fir.contracts.FirRawContractDescription
|
||||||
import org.jetbrains.kotlin.fir.contracts.impl.FirRawContractDescriptionImpl
|
import org.jetbrains.kotlin.fir.contracts.impl.FirRawContractDescriptionImpl
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirFunctionCall
|
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
||||||
import org.jetbrains.kotlin.fir.visitors.*
|
import org.jetbrains.kotlin.fir.visitors.*
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -21,19 +21,19 @@ import org.jetbrains.kotlin.fir.visitors.*
|
|||||||
@FirBuilderDsl
|
@FirBuilderDsl
|
||||||
class FirRawContractDescriptionBuilder {
|
class FirRawContractDescriptionBuilder {
|
||||||
var source: FirSourceElement? = null
|
var source: FirSourceElement? = null
|
||||||
lateinit var contractCall: FirFunctionCall
|
val rawEffects: MutableList<FirExpression> = mutableListOf()
|
||||||
|
|
||||||
fun build(): FirRawContractDescription {
|
fun build(): FirRawContractDescription {
|
||||||
return FirRawContractDescriptionImpl(
|
return FirRawContractDescriptionImpl(
|
||||||
source,
|
source,
|
||||||
contractCall,
|
rawEffects,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@OptIn(ExperimentalContracts::class)
|
@OptIn(ExperimentalContracts::class)
|
||||||
inline fun buildRawContractDescription(init: FirRawContractDescriptionBuilder.() -> Unit): FirRawContractDescription {
|
inline fun buildRawContractDescription(init: FirRawContractDescriptionBuilder.() -> Unit = {}): FirRawContractDescription {
|
||||||
contract {
|
contract {
|
||||||
callsInPlace(init, kotlin.contracts.InvocationKind.EXACTLY_ONCE)
|
callsInPlace(init, kotlin.contracts.InvocationKind.EXACTLY_ONCE)
|
||||||
}
|
}
|
||||||
|
|||||||
+30
@@ -0,0 +1,30 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||||
|
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.jetbrains.kotlin.fir.contracts.impl
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.fir.FirSourceElement
|
||||||
|
import org.jetbrains.kotlin.fir.contracts.FirLegacyRawContractDescription
|
||||||
|
import org.jetbrains.kotlin.fir.expressions.FirFunctionCall
|
||||||
|
import org.jetbrains.kotlin.fir.visitors.*
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This file was generated automatically
|
||||||
|
* DO NOT MODIFY IT MANUALLY
|
||||||
|
*/
|
||||||
|
|
||||||
|
internal class FirLegacyRawContractDescriptionImpl(
|
||||||
|
override val source: FirSourceElement?,
|
||||||
|
override var contractCall: FirFunctionCall,
|
||||||
|
) : FirLegacyRawContractDescription() {
|
||||||
|
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
|
||||||
|
contractCall.accept(visitor, data)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirLegacyRawContractDescriptionImpl {
|
||||||
|
contractCall = contractCall.transformSingle(transformer, data)
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
}
|
||||||
+4
-4
@@ -7,7 +7,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.FirRawContractDescription
|
import org.jetbrains.kotlin.fir.contracts.FirRawContractDescription
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirFunctionCall
|
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
||||||
import org.jetbrains.kotlin.fir.visitors.*
|
import org.jetbrains.kotlin.fir.visitors.*
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -17,14 +17,14 @@ import org.jetbrains.kotlin.fir.visitors.*
|
|||||||
|
|
||||||
internal class FirRawContractDescriptionImpl(
|
internal class FirRawContractDescriptionImpl(
|
||||||
override val source: FirSourceElement?,
|
override val source: FirSourceElement?,
|
||||||
override var contractCall: FirFunctionCall,
|
override val rawEffects: MutableList<FirExpression>,
|
||||||
) : FirRawContractDescription() {
|
) : FirRawContractDescription() {
|
||||||
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
|
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
|
||||||
contractCall.accept(visitor, data)
|
rawEffects.forEach { it.accept(visitor, data) }
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirRawContractDescriptionImpl {
|
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirRawContractDescriptionImpl {
|
||||||
contractCall = contractCall.transformSingle(transformer, data)
|
rawEffects.transformInplace(transformer, data)
|
||||||
return this
|
return this
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -129,6 +129,7 @@ import org.jetbrains.kotlin.fir.types.FirImplicitTypeRef
|
|||||||
import org.jetbrains.kotlin.fir.types.FirComposedSuperTypeRef
|
import org.jetbrains.kotlin.fir.types.FirComposedSuperTypeRef
|
||||||
import org.jetbrains.kotlin.fir.contracts.FirEffectDeclaration
|
import org.jetbrains.kotlin.fir.contracts.FirEffectDeclaration
|
||||||
import org.jetbrains.kotlin.fir.contracts.FirContractDescription
|
import org.jetbrains.kotlin.fir.contracts.FirContractDescription
|
||||||
|
import org.jetbrains.kotlin.fir.contracts.FirLegacyRawContractDescription
|
||||||
import org.jetbrains.kotlin.fir.contracts.FirRawContractDescription
|
import org.jetbrains.kotlin.fir.contracts.FirRawContractDescription
|
||||||
import org.jetbrains.kotlin.fir.contracts.FirResolvedContractDescription
|
import org.jetbrains.kotlin.fir.contracts.FirResolvedContractDescription
|
||||||
import org.jetbrains.kotlin.fir.visitors.CompositeTransformResult
|
import org.jetbrains.kotlin.fir.visitors.CompositeTransformResult
|
||||||
@@ -634,6 +635,10 @@ abstract class FirTransformer<in D> : FirVisitor<CompositeTransformResult<FirEle
|
|||||||
return transformElement(contractDescription, data)
|
return transformElement(contractDescription, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
open fun transformLegacyRawContractDescription(legacyRawContractDescription: FirLegacyRawContractDescription, data: D): CompositeTransformResult<FirContractDescription> {
|
||||||
|
return transformElement(legacyRawContractDescription, data)
|
||||||
|
}
|
||||||
|
|
||||||
open fun transformRawContractDescription(rawContractDescription: FirRawContractDescription, data: D): CompositeTransformResult<FirContractDescription> {
|
open fun transformRawContractDescription(rawContractDescription: FirRawContractDescription, data: D): CompositeTransformResult<FirContractDescription> {
|
||||||
return transformElement(rawContractDescription, data)
|
return transformElement(rawContractDescription, data)
|
||||||
}
|
}
|
||||||
@@ -1138,6 +1143,10 @@ abstract class FirTransformer<in D> : FirVisitor<CompositeTransformResult<FirEle
|
|||||||
return transformContractDescription(contractDescription, data)
|
return transformContractDescription(contractDescription, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
final override fun visitLegacyRawContractDescription(legacyRawContractDescription: FirLegacyRawContractDescription, data: D): CompositeTransformResult<FirContractDescription> {
|
||||||
|
return transformLegacyRawContractDescription(legacyRawContractDescription, data)
|
||||||
|
}
|
||||||
|
|
||||||
final override fun visitRawContractDescription(rawContractDescription: FirRawContractDescription, data: D): CompositeTransformResult<FirContractDescription> {
|
final override fun visitRawContractDescription(rawContractDescription: FirRawContractDescription, data: D): CompositeTransformResult<FirContractDescription> {
|
||||||
return transformRawContractDescription(rawContractDescription, data)
|
return transformRawContractDescription(rawContractDescription, data)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -129,6 +129,7 @@ import org.jetbrains.kotlin.fir.types.FirImplicitTypeRef
|
|||||||
import org.jetbrains.kotlin.fir.types.FirComposedSuperTypeRef
|
import org.jetbrains.kotlin.fir.types.FirComposedSuperTypeRef
|
||||||
import org.jetbrains.kotlin.fir.contracts.FirEffectDeclaration
|
import org.jetbrains.kotlin.fir.contracts.FirEffectDeclaration
|
||||||
import org.jetbrains.kotlin.fir.contracts.FirContractDescription
|
import org.jetbrains.kotlin.fir.contracts.FirContractDescription
|
||||||
|
import org.jetbrains.kotlin.fir.contracts.FirLegacyRawContractDescription
|
||||||
import org.jetbrains.kotlin.fir.contracts.FirRawContractDescription
|
import org.jetbrains.kotlin.fir.contracts.FirRawContractDescription
|
||||||
import org.jetbrains.kotlin.fir.contracts.FirResolvedContractDescription
|
import org.jetbrains.kotlin.fir.contracts.FirResolvedContractDescription
|
||||||
|
|
||||||
@@ -386,6 +387,8 @@ abstract class FirVisitor<out R, in D> {
|
|||||||
|
|
||||||
open fun visitContractDescription(contractDescription: FirContractDescription, data: D): R = visitElement(contractDescription, data)
|
open fun visitContractDescription(contractDescription: FirContractDescription, data: D): R = visitElement(contractDescription, data)
|
||||||
|
|
||||||
|
open fun visitLegacyRawContractDescription(legacyRawContractDescription: FirLegacyRawContractDescription, data: D): R = visitElement(legacyRawContractDescription, data)
|
||||||
|
|
||||||
open fun visitRawContractDescription(rawContractDescription: FirRawContractDescription, data: D): R = visitElement(rawContractDescription, data)
|
open fun visitRawContractDescription(rawContractDescription: FirRawContractDescription, data: D): R = visitElement(rawContractDescription, data)
|
||||||
|
|
||||||
open fun visitResolvedContractDescription(resolvedContractDescription: FirResolvedContractDescription, data: D): R = visitElement(resolvedContractDescription, data)
|
open fun visitResolvedContractDescription(resolvedContractDescription: FirResolvedContractDescription, data: D): R = visitElement(resolvedContractDescription, data)
|
||||||
|
|||||||
@@ -129,6 +129,7 @@ import org.jetbrains.kotlin.fir.types.FirImplicitTypeRef
|
|||||||
import org.jetbrains.kotlin.fir.types.FirComposedSuperTypeRef
|
import org.jetbrains.kotlin.fir.types.FirComposedSuperTypeRef
|
||||||
import org.jetbrains.kotlin.fir.contracts.FirEffectDeclaration
|
import org.jetbrains.kotlin.fir.contracts.FirEffectDeclaration
|
||||||
import org.jetbrains.kotlin.fir.contracts.FirContractDescription
|
import org.jetbrains.kotlin.fir.contracts.FirContractDescription
|
||||||
|
import org.jetbrains.kotlin.fir.contracts.FirLegacyRawContractDescription
|
||||||
import org.jetbrains.kotlin.fir.contracts.FirRawContractDescription
|
import org.jetbrains.kotlin.fir.contracts.FirRawContractDescription
|
||||||
import org.jetbrains.kotlin.fir.contracts.FirResolvedContractDescription
|
import org.jetbrains.kotlin.fir.contracts.FirResolvedContractDescription
|
||||||
|
|
||||||
@@ -632,6 +633,10 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
|
|||||||
visitElement(contractDescription)
|
visitElement(contractDescription)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
open fun visitLegacyRawContractDescription(legacyRawContractDescription: FirLegacyRawContractDescription) {
|
||||||
|
visitElement(legacyRawContractDescription)
|
||||||
|
}
|
||||||
|
|
||||||
open fun visitRawContractDescription(rawContractDescription: FirRawContractDescription) {
|
open fun visitRawContractDescription(rawContractDescription: FirRawContractDescription) {
|
||||||
visitElement(rawContractDescription)
|
visitElement(rawContractDescription)
|
||||||
}
|
}
|
||||||
@@ -1136,6 +1141,10 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
|
|||||||
visitContractDescription(contractDescription)
|
visitContractDescription(contractDescription)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
final override fun visitLegacyRawContractDescription(legacyRawContractDescription: FirLegacyRawContractDescription, data: Nothing?) {
|
||||||
|
visitLegacyRawContractDescription(legacyRawContractDescription)
|
||||||
|
}
|
||||||
|
|
||||||
final override fun visitRawContractDescription(rawContractDescription: FirRawContractDescription, data: Nothing?) {
|
final override fun visitRawContractDescription(rawContractDescription: FirRawContractDescription, data: Nothing?) {
|
||||||
visitRawContractDescription(rawContractDescription)
|
visitRawContractDescription(rawContractDescription)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1188,11 +1188,20 @@ class FirRenderer(builder: StringBuilder, private val mode: RenderMode = RenderM
|
|||||||
visitNamedReference(errorNamedReference)
|
visitNamedReference(errorNamedReference)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun visitLegacyRawContractDescription(legacyRawContractDescription: FirLegacyRawContractDescription) {
|
||||||
|
newLine()
|
||||||
|
print("[Contract description]")
|
||||||
|
renderInBraces("<", ">") {
|
||||||
|
legacyRawContractDescription.contractCall.accept(this)
|
||||||
|
newLine()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
override fun visitRawContractDescription(rawContractDescription: FirRawContractDescription) {
|
override fun visitRawContractDescription(rawContractDescription: FirRawContractDescription) {
|
||||||
newLine()
|
newLine()
|
||||||
print("[Contract description]")
|
print("[Contract description]")
|
||||||
renderInBraces("<", ">") {
|
renderInBraces("<", ">") {
|
||||||
rawContractDescription.contractCall.accept(this)
|
rawContractDescription.rawEffects.renderSeparatedWithNewlines()
|
||||||
newLine()
|
newLine()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
@@ -154,6 +154,7 @@ object FirTreeBuilder : AbstractFirTreeBuilder() {
|
|||||||
val effectDeclaration = element("EffectDeclaration", Contracts)
|
val effectDeclaration = element("EffectDeclaration", Contracts)
|
||||||
|
|
||||||
val contractDescription = element("ContractDescription", Contracts)
|
val contractDescription = element("ContractDescription", Contracts)
|
||||||
|
val legacyRawContractDescription = element("LegacyRawContractDescription", Contracts, contractDescription)
|
||||||
val rawContractDescription = element("RawContractDescription", Contracts, contractDescription)
|
val rawContractDescription = element("RawContractDescription", Contracts, contractDescription)
|
||||||
val resolvedContractDescription = element("ResolvedContractDescription", Contracts, contractDescription)
|
val resolvedContractDescription = element("ResolvedContractDescription", Contracts, contractDescription)
|
||||||
}
|
}
|
||||||
|
|||||||
+5
-1
@@ -610,13 +610,17 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
|
|||||||
}
|
}
|
||||||
|
|
||||||
rawContractDescription.configure {
|
rawContractDescription.configure {
|
||||||
+field("contractCall", functionCall)
|
+fieldList("rawEffects", expression)
|
||||||
}
|
}
|
||||||
|
|
||||||
resolvedContractDescription.configure {
|
resolvedContractDescription.configure {
|
||||||
+fieldList("effects", effectDeclaration)
|
+fieldList("effects", effectDeclaration)
|
||||||
+fieldList("unresolvedEffects", statement)
|
+fieldList("unresolvedEffects", statement)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
legacyRawContractDescription.configure {
|
||||||
|
+field("contractCall", functionCall)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user