[FIR] Add contract description classes to fir
This commit is contained in:
+3
-2
@@ -15,6 +15,7 @@ import com.intellij.psi.tree.IElementType
|
|||||||
import com.intellij.util.PathUtil
|
import com.intellij.util.PathUtil
|
||||||
import org.jetbrains.kotlin.KtNodeTypes
|
import org.jetbrains.kotlin.KtNodeTypes
|
||||||
import org.jetbrains.kotlin.fir.*
|
import org.jetbrains.kotlin.fir.*
|
||||||
|
import org.jetbrains.kotlin.fir.contracts.impl.FirEmptyContractDescription
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirFile
|
import org.jetbrains.kotlin.fir.declarations.FirFile
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirWrappedDelegateExpression
|
import org.jetbrains.kotlin.fir.expressions.FirWrappedDelegateExpression
|
||||||
@@ -129,7 +130,7 @@ abstract class AbstractRawFirBuilderTestCase : KtParsingTestCase(
|
|||||||
override fun visitElement(element: FirElement) {
|
override fun visitElement(element: FirElement) {
|
||||||
// NB: types are reused sometimes (e.g. in accessors)
|
// NB: types are reused sometimes (e.g. in accessors)
|
||||||
if (!result.add(element)) {
|
if (!result.add(element)) {
|
||||||
if (element !is FirTypeRef && element !is FirNoReceiverExpression) {
|
if (element !is FirTypeRef && element !is FirNoReceiverExpression && element !is FirEmptyContractDescription) {
|
||||||
val elementDump = StringBuilder().also { element.accept(FirRenderer(it)) }.toString()
|
val elementDump = StringBuilder().also { element.accept(FirRenderer(it)) }.toString()
|
||||||
throw AssertionError("FirElement ${element.javaClass} is visited twice: $elementDump")
|
throw AssertionError("FirElement ${element.javaClass} is visited twice: $elementDump")
|
||||||
}
|
}
|
||||||
@@ -146,7 +147,7 @@ abstract class AbstractRawFirBuilderTestCase : KtParsingTestCase(
|
|||||||
|
|
||||||
override fun <E : FirElement> transformElement(element: E, data: Unit): CompositeTransformResult<E> {
|
override fun <E : FirElement> transformElement(element: E, data: Unit): CompositeTransformResult<E> {
|
||||||
if (!result.add(element)) {
|
if (!result.add(element)) {
|
||||||
if (element !is FirTypeRef && element !is FirNoReceiverExpression) {
|
if (element !is FirTypeRef && element !is FirNoReceiverExpression && element !is FirEmptyContractDescription) {
|
||||||
val elementDump = StringBuilder().also { element.accept(FirRenderer(it)) }.toString()
|
val elementDump = StringBuilder().also { element.accept(FirRenderer(it)) }.toString()
|
||||||
throw AssertionError("FirElement ${element.javaClass} is visited twice: $elementDump")
|
throw AssertionError("FirElement ${element.javaClass} is visited twice: $elementDump")
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,24 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2019 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 com.intellij.psi.PsiElement
|
||||||
|
import org.jetbrains.kotlin.fir.FirElement
|
||||||
|
import org.jetbrains.kotlin.fir.FirPureAbstractElement
|
||||||
|
import org.jetbrains.kotlin.fir.contracts.description.ConeEffectDeclaration
|
||||||
|
import org.jetbrains.kotlin.fir.visitors.*
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This file was generated automatically
|
||||||
|
* DO NOT MODIFY IT MANUALLY
|
||||||
|
*/
|
||||||
|
|
||||||
|
abstract class FirContractDescription : FirPureAbstractElement(), FirElement {
|
||||||
|
abstract override val psi: PsiElement?
|
||||||
|
abstract val effects: List<ConeEffectDeclaration>
|
||||||
|
|
||||||
|
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitContractDescription(this, data)
|
||||||
|
}
|
||||||
+20
@@ -0,0 +1,20 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2019 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.description
|
||||||
|
|
||||||
|
interface ConeContractDescriptionElement {
|
||||||
|
fun <R, D> accept(contractDescriptionVisitor: ConeContractDescriptionVisitor<R, D>, data: D): R
|
||||||
|
}
|
||||||
|
|
||||||
|
interface ConeEffectDeclaration : ConeContractDescriptionElement {
|
||||||
|
override fun <R, D> accept(contractDescriptionVisitor: ConeContractDescriptionVisitor<R, D>, data: D): R =
|
||||||
|
contractDescriptionVisitor.visitEffectDeclaration(this, data)
|
||||||
|
}
|
||||||
|
|
||||||
|
interface ConeBooleanExpression : ConeContractDescriptionElement {
|
||||||
|
override fun <R, D> accept(contractDescriptionVisitor: ConeContractDescriptionVisitor<R, D>, data: D): R =
|
||||||
|
contractDescriptionVisitor.visitBooleanExpression(this, data)
|
||||||
|
}
|
||||||
+53
@@ -0,0 +1,53 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2019 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.description
|
||||||
|
|
||||||
|
|
||||||
|
abstract class ConeContractDescriptionVisitor<out R, in D> {
|
||||||
|
open fun visitContractDescriptionElement(contractDescriptionElement: ConeContractDescriptionElement, data: D): R {
|
||||||
|
throw IllegalStateException("Top of hierarchy reached, no overloads were found for element: $contractDescriptionElement")
|
||||||
|
}
|
||||||
|
|
||||||
|
// Effects
|
||||||
|
open fun visitEffectDeclaration(effectDeclaration: ConeEffectDeclaration, data: D): R = visitContractDescriptionElement(effectDeclaration, data)
|
||||||
|
|
||||||
|
open fun visitConditionalEffectDeclaration(conditionalEffect: ConeConditionalEffectDeclaration, data: D): R =
|
||||||
|
visitEffectDeclaration(conditionalEffect, data)
|
||||||
|
|
||||||
|
open fun visitReturnsEffectDeclaration(returnsEffect: ConeReturnsEffectDeclaration, data: D): R =
|
||||||
|
visitEffectDeclaration(returnsEffect, data)
|
||||||
|
|
||||||
|
open fun visitCallsEffectDeclaration(callsEffect: ConeCallsEffectDeclaration, data: D): R =
|
||||||
|
visitEffectDeclaration(callsEffect, data)
|
||||||
|
|
||||||
|
// Expressions
|
||||||
|
open fun visitBooleanExpression(booleanExpression: ConeBooleanExpression, data: D): R =
|
||||||
|
visitContractDescriptionElement(booleanExpression, data)
|
||||||
|
|
||||||
|
open fun visitLogicalBinaryOperationContractExpression(binaryLogicExpression: ConeBinaryLogicExpression, data: D): R =
|
||||||
|
visitBooleanExpression(binaryLogicExpression, data)
|
||||||
|
|
||||||
|
open fun visitLogicalNot(logicalNot: ConeLogicalNot, data: D): R = visitBooleanExpression(logicalNot, data)
|
||||||
|
|
||||||
|
open fun visitIsInstancePredicate(isInstancePredicate: ConeIsInstancePredicate, data: D): R =
|
||||||
|
visitBooleanExpression(isInstancePredicate, data)
|
||||||
|
|
||||||
|
open fun visitIsNullPredicate(isNullPredicate: ConeIsNullPredicate, data: D): R = visitBooleanExpression(isNullPredicate, data)
|
||||||
|
|
||||||
|
// Values
|
||||||
|
open fun visitValue(value: ConeContractDescriptionValue, data: D): R = visitContractDescriptionElement(value, data)
|
||||||
|
|
||||||
|
open fun visitConstantDescriptor(constantReference: ConeConstantReference, data: D): R = visitValue(constantReference, data)
|
||||||
|
|
||||||
|
open fun visitBooleanConstantDescriptor(booleanConstantDescriptor: ConeBooleanConstantReference, data: D): R =
|
||||||
|
visitConstantDescriptor(booleanConstantDescriptor, data)
|
||||||
|
|
||||||
|
open fun visitValueParameterReference(valueParameterReference: ConeValueParameterReference, data: D): R =
|
||||||
|
visitValue(valueParameterReference, data)
|
||||||
|
|
||||||
|
open fun visitBooleanValueParameterReference(booleanValueParameterReference: ConeBooleanValueParameterReference, data: D): R =
|
||||||
|
visitValueParameterReference(booleanValueParameterReference, data)
|
||||||
|
}
|
||||||
@@ -0,0 +1,47 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2019 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.description
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.contracts.description.InvocationKind
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Effect with condition attached to it.
|
||||||
|
*
|
||||||
|
* [condition] is some expression, which result-type is Boolean, and clause should
|
||||||
|
* be interpreted as: "if [effect] took place then [condition]-expression is
|
||||||
|
* guaranteed to be true"
|
||||||
|
*
|
||||||
|
* NB. [effect] and [condition] connected with implication in math logic sense:
|
||||||
|
* [effect] => [condition]. In particular this means that:
|
||||||
|
* - there can be multiple ways how [effect] can be produced, but for any of them
|
||||||
|
* [condition] holds.
|
||||||
|
* - if [effect] wasn't observed, we *can't* reason that [condition] is false
|
||||||
|
* - if [condition] is true, we *can't* reason that [effect] will be observed.
|
||||||
|
*/
|
||||||
|
class ConeConditionalEffectDeclaration(val effect: ConeEffectDeclaration, val condition: ConeBooleanExpression) : ConeEffectDeclaration {
|
||||||
|
override fun <R, D> accept(contractDescriptionVisitor: ConeContractDescriptionVisitor<R, D>, data: D): R =
|
||||||
|
contractDescriptionVisitor.visitConditionalEffectDeclaration(this, data)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Effect which specifies that subroutine returns some particular value
|
||||||
|
*/
|
||||||
|
class ConeReturnsEffectDeclaration(val value: ConeConstantReference) : ConeEffectDeclaration {
|
||||||
|
override fun <R, D> accept(contractDescriptionVisitor: ConeContractDescriptionVisitor<R, D>, data: D): R =
|
||||||
|
contractDescriptionVisitor.visitReturnsEffectDeclaration(this, data)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Effect which specifies, that during execution of subroutine, callable [valueParameterReference] will be invoked
|
||||||
|
* [kind] amount of times, and will never be invoked after subroutine call is finished.
|
||||||
|
*/
|
||||||
|
class ConeCallsEffectDeclaration(val valueParameterReference: ConeValueParameterReference, val kind: InvocationKind) : ConeEffectDeclaration {
|
||||||
|
override fun <R, D> accept(contractDescriptionVisitor: ConeContractDescriptionVisitor<R, D>, data: D): R =
|
||||||
|
contractDescriptionVisitor.visitCallsEffectDeclaration(this, data)
|
||||||
|
}
|
||||||
+19
@@ -0,0 +1,19 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2019 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.description
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.fir.expressions.LogicOperationKind
|
||||||
|
|
||||||
|
class ConeBinaryLogicExpression(val left: ConeBooleanExpression, val right: ConeBooleanExpression, val kind: LogicOperationKind) : ConeBooleanExpression {
|
||||||
|
override fun <R, D> accept(contractDescriptionVisitor: ConeContractDescriptionVisitor<R, D>, data: D): R {
|
||||||
|
return contractDescriptionVisitor.visitLogicalBinaryOperationContractExpression(this, data)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class ConeLogicalNot(val arg: ConeBooleanExpression) : ConeBooleanExpression {
|
||||||
|
override fun <R, D> accept(contractDescriptionVisitor: ConeContractDescriptionVisitor<R, D>, data: D): R =
|
||||||
|
contractDescriptionVisitor.visitLogicalNot(this, data)
|
||||||
|
}
|
||||||
+24
@@ -0,0 +1,24 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2019 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.description
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.fir.types.ConeKotlinType
|
||||||
|
|
||||||
|
class ConeIsInstancePredicate(val arg: ConeValueParameterReference, val type: ConeKotlinType, val isNegated: Boolean) : ConeBooleanExpression {
|
||||||
|
override fun <R, D> accept(contractDescriptionVisitor: ConeContractDescriptionVisitor<R, D>, data: D): R =
|
||||||
|
contractDescriptionVisitor.visitIsInstancePredicate(this, data)
|
||||||
|
|
||||||
|
fun negated(): ConeIsInstancePredicate =
|
||||||
|
ConeIsInstancePredicate(arg, type, isNegated.not())
|
||||||
|
}
|
||||||
|
|
||||||
|
class ConeIsNullPredicate(val arg: ConeValueParameterReference, val isNegated: Boolean) : ConeBooleanExpression {
|
||||||
|
override fun <R, D> accept(contractDescriptionVisitor: ConeContractDescriptionVisitor<R, D>, data: D): R =
|
||||||
|
contractDescriptionVisitor.visitIsNullPredicate(this, data)
|
||||||
|
|
||||||
|
fun negated(): ConeIsNullPredicate =
|
||||||
|
ConeIsNullPredicate(arg, isNegated.not())
|
||||||
|
}
|
||||||
@@ -0,0 +1,50 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2019 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.description
|
||||||
|
|
||||||
|
interface ConeContractDescriptionValue : ConeContractDescriptionElement {
|
||||||
|
override fun <R, D> accept(contractDescriptionVisitor: ConeContractDescriptionVisitor<R, D>, data: D): R =
|
||||||
|
contractDescriptionVisitor.visitValue(this, data)
|
||||||
|
}
|
||||||
|
|
||||||
|
open class ConeConstantReference protected constructor(val name: String) : ConeContractDescriptionValue {
|
||||||
|
override fun <R, D> accept(contractDescriptionVisitor: ConeContractDescriptionVisitor<R, D>, data: D): R =
|
||||||
|
contractDescriptionVisitor.visitConstantDescriptor(this, data)
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
val NULL = ConeConstantReference("NULL")
|
||||||
|
val WILDCARD = ConeConstantReference("WILDCARD")
|
||||||
|
val NOT_NULL = ConeConstantReference("NOT_NULL")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class ConeBooleanConstantReference private constructor(name: String) : ConeConstantReference(name), ConeBooleanExpression {
|
||||||
|
override fun <R, D> accept(contractDescriptionVisitor: ConeContractDescriptionVisitor<R, D>, data: D): R =
|
||||||
|
contractDescriptionVisitor.visitBooleanConstantDescriptor(this, data)
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
val TRUE = ConeBooleanConstantReference("TRUE")
|
||||||
|
val FALSE = ConeBooleanConstantReference("FALSE")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Index of value parameter of function
|
||||||
|
* -1 means that it is reference to extension receiver
|
||||||
|
*/
|
||||||
|
open class ConeValueParameterReference(val parameterIndex: Int) : ConeContractDescriptionValue {
|
||||||
|
init {
|
||||||
|
assert(parameterIndex >= -1)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun <R, D> accept(contractDescriptionVisitor: ConeContractDescriptionVisitor<R, D>, data: D): R =
|
||||||
|
contractDescriptionVisitor.visitValueParameterReference(this, data)
|
||||||
|
}
|
||||||
|
|
||||||
|
class ConeBooleanValueParameterReference(parameterIndex: Int) : ConeValueParameterReference(parameterIndex), ConeBooleanExpression {
|
||||||
|
override fun <R, D> accept(contractDescriptionVisitor: ConeContractDescriptionVisitor<R, D>, data: D): R =
|
||||||
|
contractDescriptionVisitor.visitBooleanValueParameterReference(this, data)
|
||||||
|
}
|
||||||
+28
@@ -0,0 +1,28 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2019 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 com.intellij.psi.PsiElement
|
||||||
|
import org.jetbrains.kotlin.fir.contracts.FirContractDescription
|
||||||
|
import org.jetbrains.kotlin.fir.contracts.description.ConeEffectDeclaration
|
||||||
|
import org.jetbrains.kotlin.fir.visitors.*
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This file was generated automatically
|
||||||
|
* DO NOT MODIFY IT MANUALLY
|
||||||
|
*/
|
||||||
|
|
||||||
|
class FirContractDescriptionImpl(
|
||||||
|
override val psi: PsiElement?
|
||||||
|
) : FirContractDescription() {
|
||||||
|
override val effects: MutableList<ConeEffectDeclaration> = mutableListOf()
|
||||||
|
|
||||||
|
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {}
|
||||||
|
|
||||||
|
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirContractDescriptionImpl {
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
}
|
||||||
+23
@@ -0,0 +1,23 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2019 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 com.intellij.psi.PsiElement
|
||||||
|
import org.jetbrains.kotlin.fir.contracts.FirContractDescription
|
||||||
|
import org.jetbrains.kotlin.fir.contracts.description.ConeEffectDeclaration
|
||||||
|
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
||||||
|
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
||||||
|
|
||||||
|
object FirEmptyContractDescription : FirContractDescription() {
|
||||||
|
override val psi: PsiElement? get() = null
|
||||||
|
override val effects: List<ConeEffectDeclaration> get() = emptyList()
|
||||||
|
|
||||||
|
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {}
|
||||||
|
|
||||||
|
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirContractDescription {
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
}
|
||||||
+25
@@ -0,0 +1,25 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2019 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.declarations
|
||||||
|
|
||||||
|
import com.intellij.psi.PsiElement
|
||||||
|
import org.jetbrains.kotlin.fir.FirElement
|
||||||
|
import org.jetbrains.kotlin.fir.contracts.FirContractDescription
|
||||||
|
import org.jetbrains.kotlin.fir.visitors.*
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This file was generated automatically
|
||||||
|
* DO NOT MODIFY IT MANUALLY
|
||||||
|
*/
|
||||||
|
|
||||||
|
interface FirContractDescriptionOwner : FirElement {
|
||||||
|
override val psi: PsiElement?
|
||||||
|
val contractDescription: FirContractDescription
|
||||||
|
|
||||||
|
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitContractDescriptionOwner(this, data)
|
||||||
|
|
||||||
|
fun <D> transformContractDescription(transformer: FirTransformer<D>, data: D): FirContractDescriptionOwner
|
||||||
|
}
|
||||||
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.fir.declarations
|
|||||||
import com.intellij.psi.PsiElement
|
import com.intellij.psi.PsiElement
|
||||||
import org.jetbrains.kotlin.fir.FirPureAbstractElement
|
import org.jetbrains.kotlin.fir.FirPureAbstractElement
|
||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
|
import org.jetbrains.kotlin.fir.contracts.FirContractDescription
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
|
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirBlock
|
import org.jetbrains.kotlin.fir.expressions.FirBlock
|
||||||
import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference
|
import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference
|
||||||
@@ -20,7 +21,7 @@ import org.jetbrains.kotlin.fir.visitors.*
|
|||||||
* DO NOT MODIFY IT MANUALLY
|
* DO NOT MODIFY IT MANUALLY
|
||||||
*/
|
*/
|
||||||
|
|
||||||
abstract class FirPropertyAccessor : FirPureAbstractElement(), FirFunction<FirPropertyAccessor> {
|
abstract class FirPropertyAccessor : FirPureAbstractElement(), FirFunction<FirPropertyAccessor>, FirContractDescriptionOwner {
|
||||||
abstract override val psi: PsiElement?
|
abstract override val psi: PsiElement?
|
||||||
abstract override val session: FirSession
|
abstract override val session: FirSession
|
||||||
abstract override val resolvePhase: FirResolvePhase
|
abstract override val resolvePhase: FirResolvePhase
|
||||||
@@ -30,6 +31,7 @@ abstract class FirPropertyAccessor : FirPureAbstractElement(), FirFunction<FirPr
|
|||||||
abstract override val typeParameters: List<FirTypeParameter>
|
abstract override val typeParameters: List<FirTypeParameter>
|
||||||
abstract override val valueParameters: List<FirValueParameter>
|
abstract override val valueParameters: List<FirValueParameter>
|
||||||
abstract override val body: FirBlock?
|
abstract override val body: FirBlock?
|
||||||
|
abstract override val contractDescription: FirContractDescription
|
||||||
abstract override val symbol: FirPropertyAccessorSymbol
|
abstract override val symbol: FirPropertyAccessorSymbol
|
||||||
abstract val isGetter: Boolean
|
abstract val isGetter: Boolean
|
||||||
abstract val isSetter: Boolean
|
abstract val isSetter: Boolean
|
||||||
@@ -43,4 +45,6 @@ abstract class FirPropertyAccessor : FirPureAbstractElement(), FirFunction<FirPr
|
|||||||
abstract override fun <D> transformControlFlowGraphReference(transformer: FirTransformer<D>, data: D): FirPropertyAccessor
|
abstract override fun <D> transformControlFlowGraphReference(transformer: FirTransformer<D>, data: D): FirPropertyAccessor
|
||||||
|
|
||||||
abstract override fun <D> transformValueParameters(transformer: FirTransformer<D>, data: D): FirPropertyAccessor
|
abstract override fun <D> transformValueParameters(transformer: FirTransformer<D>, data: D): FirPropertyAccessor
|
||||||
|
|
||||||
|
abstract override fun <D> transformContractDescription(transformer: FirTransformer<D>, data: D): FirPropertyAccessor
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.fir.declarations
|
|||||||
import com.intellij.psi.PsiElement
|
import com.intellij.psi.PsiElement
|
||||||
import org.jetbrains.kotlin.fir.FirPureAbstractElement
|
import org.jetbrains.kotlin.fir.FirPureAbstractElement
|
||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
|
import org.jetbrains.kotlin.fir.contracts.FirContractDescription
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
|
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirBlock
|
import org.jetbrains.kotlin.fir.expressions.FirBlock
|
||||||
import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference
|
import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference
|
||||||
@@ -22,7 +23,7 @@ import org.jetbrains.kotlin.fir.visitors.*
|
|||||||
* DO NOT MODIFY IT MANUALLY
|
* DO NOT MODIFY IT MANUALLY
|
||||||
*/
|
*/
|
||||||
|
|
||||||
abstract class FirSimpleFunction : FirPureAbstractElement(), FirMemberFunction<FirSimpleFunction> {
|
abstract class FirSimpleFunction : FirPureAbstractElement(), FirMemberFunction<FirSimpleFunction>, FirContractDescriptionOwner {
|
||||||
abstract override val psi: PsiElement?
|
abstract override val psi: PsiElement?
|
||||||
abstract override val session: FirSession
|
abstract override val session: FirSession
|
||||||
abstract override val resolvePhase: FirResolvePhase
|
abstract override val resolvePhase: FirResolvePhase
|
||||||
@@ -37,6 +38,7 @@ abstract class FirSimpleFunction : FirPureAbstractElement(), FirMemberFunction<F
|
|||||||
abstract override val containerSource: DeserializedContainerSource?
|
abstract override val containerSource: DeserializedContainerSource?
|
||||||
abstract override val symbol: FirFunctionSymbol<FirSimpleFunction>
|
abstract override val symbol: FirFunctionSymbol<FirSimpleFunction>
|
||||||
abstract override val annotations: List<FirAnnotationCall>
|
abstract override val annotations: List<FirAnnotationCall>
|
||||||
|
abstract override val contractDescription: FirContractDescription
|
||||||
|
|
||||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitSimpleFunction(this, data)
|
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitSimpleFunction(this, data)
|
||||||
|
|
||||||
@@ -45,4 +47,6 @@ abstract class FirSimpleFunction : FirPureAbstractElement(), FirMemberFunction<F
|
|||||||
abstract override fun <D> transformControlFlowGraphReference(transformer: FirTransformer<D>, data: D): FirSimpleFunction
|
abstract override fun <D> transformControlFlowGraphReference(transformer: FirTransformer<D>, data: D): FirSimpleFunction
|
||||||
|
|
||||||
abstract override fun <D> transformValueParameters(transformer: FirTransformer<D>, data: D): FirSimpleFunction
|
abstract override fun <D> transformValueParameters(transformer: FirTransformer<D>, data: D): FirSimpleFunction
|
||||||
|
|
||||||
|
abstract override fun <D> transformContractDescription(transformer: FirTransformer<D>, data: D): FirSimpleFunction
|
||||||
}
|
}
|
||||||
|
|||||||
+10
@@ -8,6 +8,8 @@ package org.jetbrains.kotlin.fir.declarations.impl
|
|||||||
import com.intellij.psi.PsiElement
|
import com.intellij.psi.PsiElement
|
||||||
import org.jetbrains.kotlin.descriptors.Modality
|
import org.jetbrains.kotlin.descriptors.Modality
|
||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
|
import org.jetbrains.kotlin.fir.contracts.FirContractDescription
|
||||||
|
import org.jetbrains.kotlin.fir.contracts.impl.FirEmptyContractDescription
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus
|
import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirPropertyAccessor
|
import org.jetbrains.kotlin.fir.declarations.FirPropertyAccessor
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
||||||
@@ -41,6 +43,7 @@ open class FirPropertyAccessorImpl(
|
|||||||
override val typeParameters: MutableList<FirTypeParameter> = mutableListOf()
|
override val typeParameters: MutableList<FirTypeParameter> = mutableListOf()
|
||||||
override val valueParameters: MutableList<FirValueParameter> = mutableListOf()
|
override val valueParameters: MutableList<FirValueParameter> = mutableListOf()
|
||||||
override var body: FirBlock? = null
|
override var body: FirBlock? = null
|
||||||
|
override var contractDescription: FirContractDescription = FirEmptyContractDescription
|
||||||
override val isSetter: Boolean get() = !isGetter
|
override val isSetter: Boolean get() = !isGetter
|
||||||
override val annotations: MutableList<FirAnnotationCall> = mutableListOf()
|
override val annotations: MutableList<FirAnnotationCall> = mutableListOf()
|
||||||
|
|
||||||
@@ -55,6 +58,7 @@ open class FirPropertyAccessorImpl(
|
|||||||
typeParameters.forEach { it.accept(visitor, data) }
|
typeParameters.forEach { it.accept(visitor, data) }
|
||||||
valueParameters.forEach { it.accept(visitor, data) }
|
valueParameters.forEach { it.accept(visitor, data) }
|
||||||
body?.accept(visitor, data)
|
body?.accept(visitor, data)
|
||||||
|
contractDescription.accept(visitor, data)
|
||||||
status.accept(visitor, data)
|
status.accept(visitor, data)
|
||||||
annotations.forEach { it.accept(visitor, data) }
|
annotations.forEach { it.accept(visitor, data) }
|
||||||
}
|
}
|
||||||
@@ -66,6 +70,7 @@ open class FirPropertyAccessorImpl(
|
|||||||
typeParameters.transformInplace(transformer, data)
|
typeParameters.transformInplace(transformer, data)
|
||||||
transformValueParameters(transformer, data)
|
transformValueParameters(transformer, data)
|
||||||
body = body?.transformSingle(transformer, data)
|
body = body?.transformSingle(transformer, data)
|
||||||
|
transformContractDescription(transformer, data)
|
||||||
status = status.transformSingle(transformer, data)
|
status = status.transformSingle(transformer, data)
|
||||||
annotations.transformInplace(transformer, data)
|
annotations.transformInplace(transformer, data)
|
||||||
return this
|
return this
|
||||||
@@ -86,6 +91,11 @@ open class FirPropertyAccessorImpl(
|
|||||||
return this
|
return this
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun <D> transformContractDescription(transformer: FirTransformer<D>, data: D): FirPropertyAccessorImpl {
|
||||||
|
contractDescription = contractDescription.transformSingle(transformer, data)
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
override fun replaceResolvePhase(newResolvePhase: FirResolvePhase) {
|
override fun replaceResolvePhase(newResolvePhase: FirResolvePhase) {
|
||||||
resolvePhase = newResolvePhase
|
resolvePhase = newResolvePhase
|
||||||
}
|
}
|
||||||
|
|||||||
+10
@@ -7,6 +7,8 @@ package org.jetbrains.kotlin.fir.declarations.impl
|
|||||||
|
|
||||||
import com.intellij.psi.PsiElement
|
import com.intellij.psi.PsiElement
|
||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
|
import org.jetbrains.kotlin.fir.contracts.FirContractDescription
|
||||||
|
import org.jetbrains.kotlin.fir.contracts.impl.FirEmptyContractDescription
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus
|
import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirSimpleFunction
|
import org.jetbrains.kotlin.fir.declarations.FirSimpleFunction
|
||||||
@@ -44,6 +46,7 @@ open class FirSimpleFunctionImpl(
|
|||||||
override var body: FirBlock? = null
|
override var body: FirBlock? = null
|
||||||
override var containerSource: DeserializedContainerSource? = null
|
override var containerSource: DeserializedContainerSource? = null
|
||||||
override val annotations: MutableList<FirAnnotationCall> = mutableListOf()
|
override val annotations: MutableList<FirAnnotationCall> = mutableListOf()
|
||||||
|
override var contractDescription: FirContractDescription = FirEmptyContractDescription
|
||||||
|
|
||||||
init {
|
init {
|
||||||
symbol.bind(this)
|
symbol.bind(this)
|
||||||
@@ -58,6 +61,7 @@ open class FirSimpleFunctionImpl(
|
|||||||
body?.accept(visitor, data)
|
body?.accept(visitor, data)
|
||||||
status.accept(visitor, data)
|
status.accept(visitor, data)
|
||||||
annotations.forEach { it.accept(visitor, data) }
|
annotations.forEach { it.accept(visitor, data) }
|
||||||
|
contractDescription.accept(visitor, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirSimpleFunctionImpl {
|
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirSimpleFunctionImpl {
|
||||||
@@ -69,6 +73,7 @@ open class FirSimpleFunctionImpl(
|
|||||||
body = body?.transformSingle(transformer, data)
|
body = body?.transformSingle(transformer, data)
|
||||||
status = status.transformSingle(transformer, data)
|
status = status.transformSingle(transformer, data)
|
||||||
annotations.transformInplace(transformer, data)
|
annotations.transformInplace(transformer, data)
|
||||||
|
transformContractDescription(transformer, data)
|
||||||
return this
|
return this
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -87,6 +92,11 @@ open class FirSimpleFunctionImpl(
|
|||||||
return this
|
return this
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun <D> transformContractDescription(transformer: FirTransformer<D>, data: D): FirSimpleFunctionImpl {
|
||||||
|
contractDescription = contractDescription.transformSingle(transformer, data)
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
override fun replaceResolvePhase(newResolvePhase: FirResolvePhase) {
|
override fun replaceResolvePhase(newResolvePhase: FirResolvePhase) {
|
||||||
resolvePhase = newResolvePhase
|
resolvePhase = newResolvePhase
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -40,6 +40,7 @@ import org.jetbrains.kotlin.fir.declarations.FirSealedClass
|
|||||||
import org.jetbrains.kotlin.fir.declarations.FirTypeAlias
|
import org.jetbrains.kotlin.fir.declarations.FirTypeAlias
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirEnumEntry
|
import org.jetbrains.kotlin.fir.declarations.FirEnumEntry
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirFunction
|
import org.jetbrains.kotlin.fir.declarations.FirFunction
|
||||||
|
import org.jetbrains.kotlin.fir.declarations.FirContractDescriptionOwner
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirMemberFunction
|
import org.jetbrains.kotlin.fir.declarations.FirMemberFunction
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirSimpleFunction
|
import org.jetbrains.kotlin.fir.declarations.FirSimpleFunction
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirPropertyAccessor
|
import org.jetbrains.kotlin.fir.declarations.FirPropertyAccessor
|
||||||
@@ -113,6 +114,7 @@ import org.jetbrains.kotlin.fir.types.FirDynamicTypeRef
|
|||||||
import org.jetbrains.kotlin.fir.types.FirFunctionTypeRef
|
import org.jetbrains.kotlin.fir.types.FirFunctionTypeRef
|
||||||
import org.jetbrains.kotlin.fir.types.FirResolvedFunctionTypeRef
|
import org.jetbrains.kotlin.fir.types.FirResolvedFunctionTypeRef
|
||||||
import org.jetbrains.kotlin.fir.types.FirImplicitTypeRef
|
import org.jetbrains.kotlin.fir.types.FirImplicitTypeRef
|
||||||
|
import org.jetbrains.kotlin.fir.contracts.FirContractDescription
|
||||||
import org.jetbrains.kotlin.fir.visitors.CompositeTransformResult
|
import org.jetbrains.kotlin.fir.visitors.CompositeTransformResult
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -260,6 +262,10 @@ abstract class FirTransformer<in D> : FirVisitor<CompositeTransformResult<FirEle
|
|||||||
return transformElement(function, data)
|
return transformElement(function, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
open fun transformContractDescriptionOwner(contractDescriptionOwner: FirContractDescriptionOwner, data: D): CompositeTransformResult<FirContractDescriptionOwner> {
|
||||||
|
return transformElement(contractDescriptionOwner, data)
|
||||||
|
}
|
||||||
|
|
||||||
open fun <F : FirMemberFunction<F>> transformMemberFunction(memberFunction: FirMemberFunction<F>, data: D): CompositeTransformResult<FirDeclaration> {
|
open fun <F : FirMemberFunction<F>> transformMemberFunction(memberFunction: FirMemberFunction<F>, data: D): CompositeTransformResult<FirDeclaration> {
|
||||||
return transformElement(memberFunction, data)
|
return transformElement(memberFunction, data)
|
||||||
}
|
}
|
||||||
@@ -552,6 +558,10 @@ abstract class FirTransformer<in D> : FirVisitor<CompositeTransformResult<FirEle
|
|||||||
return transformElement(implicitTypeRef, data)
|
return transformElement(implicitTypeRef, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
open fun transformContractDescription(contractDescription: FirContractDescription, data: D): CompositeTransformResult<FirContractDescription> {
|
||||||
|
return transformElement(contractDescription, data)
|
||||||
|
}
|
||||||
|
|
||||||
final override fun visitElement(element: FirElement, data: D): CompositeTransformResult<FirElement> {
|
final override fun visitElement(element: FirElement, data: D): CompositeTransformResult<FirElement> {
|
||||||
return transformElement(element, data)
|
return transformElement(element, data)
|
||||||
}
|
}
|
||||||
@@ -692,6 +702,10 @@ abstract class FirTransformer<in D> : FirVisitor<CompositeTransformResult<FirEle
|
|||||||
return transformFunction(function, data)
|
return transformFunction(function, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
final override fun visitContractDescriptionOwner(contractDescriptionOwner: FirContractDescriptionOwner, data: D): CompositeTransformResult<FirContractDescriptionOwner> {
|
||||||
|
return transformContractDescriptionOwner(contractDescriptionOwner, data)
|
||||||
|
}
|
||||||
|
|
||||||
final override fun <F : FirMemberFunction<F>> visitMemberFunction(memberFunction: FirMemberFunction<F>, data: D): CompositeTransformResult<FirDeclaration> {
|
final override fun <F : FirMemberFunction<F>> visitMemberFunction(memberFunction: FirMemberFunction<F>, data: D): CompositeTransformResult<FirDeclaration> {
|
||||||
return transformMemberFunction(memberFunction, data)
|
return transformMemberFunction(memberFunction, data)
|
||||||
}
|
}
|
||||||
@@ -984,4 +998,8 @@ abstract class FirTransformer<in D> : FirVisitor<CompositeTransformResult<FirEle
|
|||||||
return transformImplicitTypeRef(implicitTypeRef, data)
|
return transformImplicitTypeRef(implicitTypeRef, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
final override fun visitContractDescription(contractDescription: FirContractDescription, data: D): CompositeTransformResult<FirContractDescription> {
|
||||||
|
return transformContractDescription(contractDescription, data)
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -40,6 +40,7 @@ import org.jetbrains.kotlin.fir.declarations.FirSealedClass
|
|||||||
import org.jetbrains.kotlin.fir.declarations.FirTypeAlias
|
import org.jetbrains.kotlin.fir.declarations.FirTypeAlias
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirEnumEntry
|
import org.jetbrains.kotlin.fir.declarations.FirEnumEntry
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirFunction
|
import org.jetbrains.kotlin.fir.declarations.FirFunction
|
||||||
|
import org.jetbrains.kotlin.fir.declarations.FirContractDescriptionOwner
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirMemberFunction
|
import org.jetbrains.kotlin.fir.declarations.FirMemberFunction
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirSimpleFunction
|
import org.jetbrains.kotlin.fir.declarations.FirSimpleFunction
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirPropertyAccessor
|
import org.jetbrains.kotlin.fir.declarations.FirPropertyAccessor
|
||||||
@@ -113,6 +114,7 @@ import org.jetbrains.kotlin.fir.types.FirDynamicTypeRef
|
|||||||
import org.jetbrains.kotlin.fir.types.FirFunctionTypeRef
|
import org.jetbrains.kotlin.fir.types.FirFunctionTypeRef
|
||||||
import org.jetbrains.kotlin.fir.types.FirResolvedFunctionTypeRef
|
import org.jetbrains.kotlin.fir.types.FirResolvedFunctionTypeRef
|
||||||
import org.jetbrains.kotlin.fir.types.FirImplicitTypeRef
|
import org.jetbrains.kotlin.fir.types.FirImplicitTypeRef
|
||||||
|
import org.jetbrains.kotlin.fir.contracts.FirContractDescription
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This file was generated automatically
|
* This file was generated automatically
|
||||||
@@ -190,6 +192,8 @@ abstract class FirVisitor<out R, in D> {
|
|||||||
|
|
||||||
open fun <F : FirFunction<F>> visitFunction(function: FirFunction<F>, data: D): R = visitElement(function, data)
|
open fun <F : FirFunction<F>> visitFunction(function: FirFunction<F>, data: D): R = visitElement(function, data)
|
||||||
|
|
||||||
|
open fun visitContractDescriptionOwner(contractDescriptionOwner: FirContractDescriptionOwner, data: D): R = visitElement(contractDescriptionOwner, data)
|
||||||
|
|
||||||
open fun <F : FirMemberFunction<F>> visitMemberFunction(memberFunction: FirMemberFunction<F>, data: D): R = visitElement(memberFunction, data)
|
open fun <F : FirMemberFunction<F>> visitMemberFunction(memberFunction: FirMemberFunction<F>, data: D): R = visitElement(memberFunction, data)
|
||||||
|
|
||||||
open fun visitSimpleFunction(simpleFunction: FirSimpleFunction, data: D): R = visitElement(simpleFunction, data)
|
open fun visitSimpleFunction(simpleFunction: FirSimpleFunction, data: D): R = visitElement(simpleFunction, data)
|
||||||
@@ -336,4 +340,6 @@ abstract class FirVisitor<out R, in D> {
|
|||||||
|
|
||||||
open fun visitImplicitTypeRef(implicitTypeRef: FirImplicitTypeRef, data: D): R = visitElement(implicitTypeRef, data)
|
open fun visitImplicitTypeRef(implicitTypeRef: FirImplicitTypeRef, data: D): R = visitElement(implicitTypeRef, data)
|
||||||
|
|
||||||
|
open fun visitContractDescription(contractDescription: FirContractDescription, data: D): R = visitElement(contractDescription, data)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -40,6 +40,7 @@ import org.jetbrains.kotlin.fir.declarations.FirSealedClass
|
|||||||
import org.jetbrains.kotlin.fir.declarations.FirTypeAlias
|
import org.jetbrains.kotlin.fir.declarations.FirTypeAlias
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirEnumEntry
|
import org.jetbrains.kotlin.fir.declarations.FirEnumEntry
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirFunction
|
import org.jetbrains.kotlin.fir.declarations.FirFunction
|
||||||
|
import org.jetbrains.kotlin.fir.declarations.FirContractDescriptionOwner
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirMemberFunction
|
import org.jetbrains.kotlin.fir.declarations.FirMemberFunction
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirSimpleFunction
|
import org.jetbrains.kotlin.fir.declarations.FirSimpleFunction
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirPropertyAccessor
|
import org.jetbrains.kotlin.fir.declarations.FirPropertyAccessor
|
||||||
@@ -113,6 +114,7 @@ import org.jetbrains.kotlin.fir.types.FirDynamicTypeRef
|
|||||||
import org.jetbrains.kotlin.fir.types.FirFunctionTypeRef
|
import org.jetbrains.kotlin.fir.types.FirFunctionTypeRef
|
||||||
import org.jetbrains.kotlin.fir.types.FirResolvedFunctionTypeRef
|
import org.jetbrains.kotlin.fir.types.FirResolvedFunctionTypeRef
|
||||||
import org.jetbrains.kotlin.fir.types.FirImplicitTypeRef
|
import org.jetbrains.kotlin.fir.types.FirImplicitTypeRef
|
||||||
|
import org.jetbrains.kotlin.fir.contracts.FirContractDescription
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This file was generated automatically
|
* This file was generated automatically
|
||||||
@@ -258,6 +260,10 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
|
|||||||
visitElement(function)
|
visitElement(function)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
open fun visitContractDescriptionOwner(contractDescriptionOwner: FirContractDescriptionOwner) {
|
||||||
|
visitElement(contractDescriptionOwner)
|
||||||
|
}
|
||||||
|
|
||||||
open fun <F : FirMemberFunction<F>> visitMemberFunction(memberFunction: FirMemberFunction<F>) {
|
open fun <F : FirMemberFunction<F>> visitMemberFunction(memberFunction: FirMemberFunction<F>) {
|
||||||
visitElement(memberFunction)
|
visitElement(memberFunction)
|
||||||
}
|
}
|
||||||
@@ -550,6 +556,10 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
|
|||||||
visitElement(implicitTypeRef)
|
visitElement(implicitTypeRef)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
open fun visitContractDescription(contractDescription: FirContractDescription) {
|
||||||
|
visitElement(contractDescription)
|
||||||
|
}
|
||||||
|
|
||||||
final override fun visitElement(element: FirElement, data: Nothing?) {
|
final override fun visitElement(element: FirElement, data: Nothing?) {
|
||||||
visitElement(element)
|
visitElement(element)
|
||||||
}
|
}
|
||||||
@@ -690,6 +700,10 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
|
|||||||
visitFunction(function)
|
visitFunction(function)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
final override fun visitContractDescriptionOwner(contractDescriptionOwner: FirContractDescriptionOwner, data: Nothing?) {
|
||||||
|
visitContractDescriptionOwner(contractDescriptionOwner)
|
||||||
|
}
|
||||||
|
|
||||||
final override fun <F : FirMemberFunction<F>> visitMemberFunction(memberFunction: FirMemberFunction<F>, data: Nothing?) {
|
final override fun <F : FirMemberFunction<F>> visitMemberFunction(memberFunction: FirMemberFunction<F>, data: Nothing?) {
|
||||||
visitMemberFunction(memberFunction)
|
visitMemberFunction(memberFunction)
|
||||||
}
|
}
|
||||||
@@ -982,4 +996,8 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
|
|||||||
visitImplicitTypeRef(implicitTypeRef)
|
visitImplicitTypeRef(implicitTypeRef)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
final override fun visitContractDescription(contractDescription: FirContractDescription, data: Nothing?) {
|
||||||
|
visitContractDescription(contractDescription)
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+5
-2
@@ -49,9 +49,10 @@ object FirTreeBuilder : AbstractFirTreeBuilder() {
|
|||||||
|
|
||||||
val function = element("Function", Declaration, callableDeclaration, controlFlowGraphOwner, targetElement, annotationContainer, typeParametersOwner, statement)
|
val function = element("Function", Declaration, callableDeclaration, controlFlowGraphOwner, targetElement, annotationContainer, typeParametersOwner, statement)
|
||||||
|
|
||||||
|
val contractDescriptionOwner = element("ContractDescriptionOwner", Declaration)
|
||||||
val memberFunction = element("MemberFunction", Declaration, function, callableMemberDeclaration)
|
val memberFunction = element("MemberFunction", Declaration, function, callableMemberDeclaration)
|
||||||
val simpleFunction = element("SimpleFunction", Declaration, memberFunction)
|
val simpleFunction = element("SimpleFunction", Declaration, memberFunction, contractDescriptionOwner)
|
||||||
val propertyAccessor = element("PropertyAccessor", Declaration, function)
|
val propertyAccessor = element("PropertyAccessor", Declaration, function, contractDescriptionOwner)
|
||||||
val constructor = element("Constructor", Declaration, memberFunction)
|
val constructor = element("Constructor", Declaration, memberFunction)
|
||||||
val file = element("File", Declaration, annotationContainer, declaration)
|
val file = element("File", Declaration, annotationContainer, declaration)
|
||||||
|
|
||||||
@@ -132,4 +133,6 @@ object FirTreeBuilder : AbstractFirTreeBuilder() {
|
|||||||
val functionTypeRef = element("FunctionTypeRef", TypeRef, typeRefWithNullability)
|
val functionTypeRef = element("FunctionTypeRef", TypeRef, typeRefWithNullability)
|
||||||
val resolvedFunctionTypeRef = element("ResolvedFunctionTypeRef", TypeRef, resolvedTypeRef, functionTypeRef)
|
val resolvedFunctionTypeRef = element("ResolvedFunctionTypeRef", TypeRef, resolvedTypeRef, functionTypeRef)
|
||||||
val implicitTypeRef = element("ImplicitTypeRef", TypeRef, typeRef)
|
val implicitTypeRef = element("ImplicitTypeRef", TypeRef, typeRef)
|
||||||
|
|
||||||
|
val contractDescription = element("ContractDescription", Contracts)
|
||||||
}
|
}
|
||||||
+4
-1
@@ -402,7 +402,8 @@ object ImplementationConfigurator : AbstractFirTreeImplementationConfigurator()
|
|||||||
withGetter = true
|
withGetter = true
|
||||||
}
|
}
|
||||||
defaultNull("body")
|
defaultNull("body")
|
||||||
useTypes(modalityType)
|
default("contractDescription", "FirEmptyContractDescription")
|
||||||
|
useTypes(modalityType, emptyContractDescriptionType)
|
||||||
kind = OpenClass
|
kind = OpenClass
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -556,6 +557,8 @@ object ImplementationConfigurator : AbstractFirTreeImplementationConfigurator()
|
|||||||
parents += modifiableFunction.withArg(simpleFunction)
|
parents += modifiableFunction.withArg(simpleFunction)
|
||||||
parents += modifiableTypeParametersOwner
|
parents += modifiableTypeParametersOwner
|
||||||
defaultNull("body")
|
defaultNull("body")
|
||||||
|
default("contractDescription", "FirEmptyContractDescription")
|
||||||
|
useTypes(emptyContractDescriptionType)
|
||||||
}
|
}
|
||||||
|
|
||||||
impl(delegatedTypeRef) {
|
impl(delegatedTypeRef) {
|
||||||
|
|||||||
+8
@@ -266,6 +266,10 @@ object NodeConfigurator : AbstractFieldConfigurator() {
|
|||||||
parentArg(memberFunction, "F", simpleFunction)
|
parentArg(memberFunction, "F", simpleFunction)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
contractDescriptionOwner.configure {
|
||||||
|
+field(contractDescription).withTransform()
|
||||||
|
}
|
||||||
|
|
||||||
property.configure {
|
property.configure {
|
||||||
parentArg(variable, "F", property)
|
parentArg(variable, "F", property)
|
||||||
parentArg(callableMemberDeclaration, "F", property)
|
parentArg(callableMemberDeclaration, "F", property)
|
||||||
@@ -524,6 +528,10 @@ object NodeConfigurator : AbstractFieldConfigurator() {
|
|||||||
errorNamedReference.configure {
|
errorNamedReference.configure {
|
||||||
+stringField("errorReason")
|
+stringField("errorReason")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
contractDescription.configure {
|
||||||
|
+fieldList("effects", effectDeclarationType)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -62,3 +62,5 @@ val delegateFieldSymbolType = type("fir.symbols.impl", "FirDelegateFieldSymbol")
|
|||||||
val classSymbolType = type("fir.symbols.impl", "FirClassSymbol")
|
val classSymbolType = type("fir.symbols.impl", "FirClassSymbol")
|
||||||
|
|
||||||
val pureAbstractElementType = generatedType("FirPureAbstractElement")
|
val pureAbstractElementType = generatedType("FirPureAbstractElement")
|
||||||
|
val effectDeclarationType = type("fir.contracts.description", "ConeEffectDeclaration")
|
||||||
|
val emptyContractDescriptionType = generatedType("contracts.impl", "FirEmptyContractDescription")
|
||||||
+1
@@ -124,6 +124,7 @@ class Element(val name: String, kind: Kind) : AbstractElement {
|
|||||||
Declaration("declarations"),
|
Declaration("declarations"),
|
||||||
Reference("references"),
|
Reference("references"),
|
||||||
TypeRef("types"),
|
TypeRef("types"),
|
||||||
|
Contracts("contracts"),
|
||||||
Other("")
|
Other("")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user