Rename InvocationKind to EventOccurrencesRange
This commit is contained in:
+9
-9
@@ -7,7 +7,7 @@ package org.jetbrains.kotlin.fir.analysis.cfa
|
||||
|
||||
import kotlinx.collections.immutable.PersistentMap
|
||||
import kotlinx.collections.immutable.persistentMapOf
|
||||
import org.jetbrains.kotlin.contracts.description.InvocationKind
|
||||
import org.jetbrains.kotlin.contracts.description.EventOccurrencesRange
|
||||
import org.jetbrains.kotlin.contracts.description.isDefinitelyVisited
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.DiagnosticReporter
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors
|
||||
@@ -37,7 +37,7 @@ class FirPropertyInitializationAnalyzer {
|
||||
val reference = node.fir.calleeReference as? FirResolvedNamedReference ?: return
|
||||
val symbol = reference.resolvedSymbol as? FirPropertySymbol ?: return
|
||||
if (symbol !in localProperties) return
|
||||
val kind = data.getValue(node)[symbol] ?: InvocationKind.ZERO
|
||||
val kind = data.getValue(node)[symbol] ?: EventOccurrencesRange.ZERO
|
||||
if (!kind.isDefinitelyVisited()) {
|
||||
node.fir.source?.let {
|
||||
reporter.report(FirErrors.UNINITIALIZED_VARIABLE.on(it, symbol))
|
||||
@@ -47,20 +47,20 @@ class FirPropertyInitializationAnalyzer {
|
||||
}
|
||||
|
||||
private class PropertyInitializationInfo(
|
||||
map: PersistentMap<FirPropertySymbol, InvocationKind> = persistentMapOf()
|
||||
) : ControlFlowInfo<PropertyInitializationInfo, FirPropertySymbol, InvocationKind>(map) {
|
||||
map: PersistentMap<FirPropertySymbol, EventOccurrencesRange> = persistentMapOf()
|
||||
) : ControlFlowInfo<PropertyInitializationInfo, FirPropertySymbol, EventOccurrencesRange>(map) {
|
||||
companion object {
|
||||
val EMPTY = PropertyInitializationInfo()
|
||||
}
|
||||
|
||||
override val constructor: (PersistentMap<FirPropertySymbol, InvocationKind>) -> PropertyInitializationInfo =
|
||||
override val constructor: (PersistentMap<FirPropertySymbol, EventOccurrencesRange>) -> PropertyInitializationInfo =
|
||||
::PropertyInitializationInfo
|
||||
|
||||
fun merge(other: PropertyInitializationInfo): PropertyInitializationInfo {
|
||||
var result = this
|
||||
for (symbol in keys.union(other.keys)) {
|
||||
val kind1 = this[symbol] ?: InvocationKind.ZERO
|
||||
val kind2 = other[symbol] ?: InvocationKind.ZERO
|
||||
val kind1 = this[symbol] ?: EventOccurrencesRange.ZERO
|
||||
val kind2 = other[symbol] ?: EventOccurrencesRange.ZERO
|
||||
result = result.put(symbol, kind1 or kind2)
|
||||
}
|
||||
return result
|
||||
@@ -121,8 +121,8 @@ class FirPropertyInitializationAnalyzer {
|
||||
dataForNode: PropertyInitializationInfo,
|
||||
symbol: FirPropertySymbol
|
||||
): PropertyInitializationInfo {
|
||||
val existingKind = dataForNode[symbol] ?: InvocationKind.ZERO
|
||||
val kind = existingKind and InvocationKind.EXACTLY_ONCE
|
||||
val existingKind = dataForNode[symbol] ?: EventOccurrencesRange.ZERO
|
||||
val kind = existingKind + EventOccurrencesRange.EXACTLY_ONCE
|
||||
return dataForNode.put(symbol, kind)
|
||||
}
|
||||
}
|
||||
|
||||
+4
-4
@@ -193,10 +193,10 @@ class FirContractSerializer {
|
||||
}
|
||||
}
|
||||
|
||||
private fun invocationKindProtobufEnum(kind: InvocationKind): ProtoBuf.Effect.InvocationKind? = when (kind) {
|
||||
InvocationKind.AT_MOST_ONCE -> ProtoBuf.Effect.InvocationKind.AT_MOST_ONCE
|
||||
InvocationKind.EXACTLY_ONCE -> ProtoBuf.Effect.InvocationKind.EXACTLY_ONCE
|
||||
InvocationKind.AT_LEAST_ONCE -> ProtoBuf.Effect.InvocationKind.AT_LEAST_ONCE
|
||||
private fun invocationKindProtobufEnum(kind: EventOccurrencesRange): ProtoBuf.Effect.InvocationKind? = when (kind) {
|
||||
EventOccurrencesRange.AT_MOST_ONCE -> ProtoBuf.Effect.InvocationKind.AT_MOST_ONCE
|
||||
EventOccurrencesRange.EXACTLY_ONCE -> ProtoBuf.Effect.InvocationKind.EXACTLY_ONCE
|
||||
EventOccurrencesRange.AT_LEAST_ONCE -> ProtoBuf.Effect.InvocationKind.AT_LEAST_ONCE
|
||||
else -> null
|
||||
}
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
package org.jetbrains.kotlin.fir
|
||||
|
||||
import org.jetbrains.kotlin.contracts.description.InvocationKind
|
||||
import org.jetbrains.kotlin.contracts.description.EventOccurrencesRange
|
||||
import org.jetbrains.kotlin.fir.declarations.FirAnonymousFunction
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin
|
||||
import org.jetbrains.kotlin.fir.declarations.FirTypeParameter
|
||||
@@ -69,7 +69,7 @@ fun FirAnonymousFunction.copy(
|
||||
typeRef: FirTypeRef = this.typeRef,
|
||||
label: FirLabel? = this.label,
|
||||
controlFlowGraphReference: FirControlFlowGraphReference = this.controlFlowGraphReference,
|
||||
invocationKind: InvocationKind? = this.invocationKind
|
||||
eventOccurrencesRange: EventOccurrencesRange? = this.eventOccurrencesRange
|
||||
): FirAnonymousFunction {
|
||||
return buildAnonymousFunction {
|
||||
this.source = source
|
||||
@@ -85,7 +85,7 @@ fun FirAnonymousFunction.copy(
|
||||
this.typeRef = typeRef
|
||||
this.label = label
|
||||
this.controlFlowGraphReference = controlFlowGraphReference
|
||||
this.invocationKind = invocationKind
|
||||
this.eventOccurrencesRange = eventOccurrencesRange
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+6
-6
@@ -5,7 +5,7 @@
|
||||
|
||||
package org.jetbrains.kotlin.fir.deserialization
|
||||
|
||||
import org.jetbrains.kotlin.contracts.description.InvocationKind
|
||||
import org.jetbrains.kotlin.contracts.description.EventOccurrencesRange
|
||||
import org.jetbrains.kotlin.fir.contracts.FirContractDescription
|
||||
import org.jetbrains.kotlin.fir.contracts.builder.buildResolvedContractDescription
|
||||
import org.jetbrains.kotlin.fir.contracts.description.*
|
||||
@@ -60,7 +60,7 @@ class FirContractDeserializer(private val c: FirDeserializationContext) {
|
||||
val invocationKind = if (proto.hasKind())
|
||||
proto.kind.toDescriptorInvocationKind() ?: return null
|
||||
else
|
||||
InvocationKind.UNKNOWN
|
||||
EventOccurrencesRange.UNKNOWN
|
||||
ConeCallsEffectDeclaration(callable, invocationKind)
|
||||
}
|
||||
}
|
||||
@@ -141,10 +141,10 @@ class FirContractDeserializer(private val c: FirDeserializationContext) {
|
||||
ConeBooleanValueParameterReference(valueParameterIndex, name)
|
||||
}
|
||||
|
||||
private fun ProtoBuf.Effect.InvocationKind.toDescriptorInvocationKind(): InvocationKind? = when (this) {
|
||||
ProtoBuf.Effect.InvocationKind.AT_MOST_ONCE -> InvocationKind.AT_MOST_ONCE
|
||||
ProtoBuf.Effect.InvocationKind.EXACTLY_ONCE -> InvocationKind.EXACTLY_ONCE
|
||||
ProtoBuf.Effect.InvocationKind.AT_LEAST_ONCE -> InvocationKind.AT_LEAST_ONCE
|
||||
private fun ProtoBuf.Effect.InvocationKind.toDescriptorInvocationKind(): EventOccurrencesRange? = when (this) {
|
||||
ProtoBuf.Effect.InvocationKind.AT_MOST_ONCE -> EventOccurrencesRange.AT_MOST_ONCE
|
||||
ProtoBuf.Effect.InvocationKind.EXACTLY_ONCE -> EventOccurrencesRange.EXACTLY_ONCE
|
||||
ProtoBuf.Effect.InvocationKind.AT_LEAST_ONCE -> EventOccurrencesRange.AT_LEAST_ONCE
|
||||
}
|
||||
|
||||
private fun extractType(proto: ProtoBuf.Expression): ConeKotlinType? {
|
||||
|
||||
+8
-8
@@ -5,7 +5,7 @@
|
||||
|
||||
package org.jetbrains.kotlin.fir.resolve.dfa.cfg
|
||||
|
||||
import org.jetbrains.kotlin.contracts.description.InvocationKind
|
||||
import org.jetbrains.kotlin.contracts.description.EventOccurrencesRange
|
||||
import org.jetbrains.kotlin.fir.FirElement
|
||||
import org.jetbrains.kotlin.fir.FirSymbolOwner
|
||||
import org.jetbrains.kotlin.fir.declarations.*
|
||||
@@ -207,7 +207,7 @@ class ControlFlowGraphBuilder {
|
||||
}
|
||||
|
||||
fun enterAnonymousFunction(anonymousFunction: FirAnonymousFunction): Pair<PostponedLambdaEnterNode?, FunctionEnterNode> {
|
||||
val invocationKind = anonymousFunction.invocationKind
|
||||
val invocationKind = anonymousFunction.eventOccurrencesRange
|
||||
|
||||
var previousNodeIsNew = false
|
||||
val symbol = anonymousFunction.symbol
|
||||
@@ -256,15 +256,15 @@ class ControlFlowGraphBuilder {
|
||||
}
|
||||
}
|
||||
|
||||
private val InvocationKind?.hasTowardEdge: Boolean
|
||||
private val EventOccurrencesRange?.hasTowardEdge: Boolean
|
||||
get() = when (this) {
|
||||
InvocationKind.AT_MOST_ONCE, InvocationKind.UNKNOWN -> true
|
||||
EventOccurrencesRange.AT_MOST_ONCE, EventOccurrencesRange.UNKNOWN -> true
|
||||
else -> false
|
||||
}
|
||||
|
||||
private val InvocationKind?.hasBackEdge: Boolean
|
||||
private val EventOccurrencesRange?.hasBackEdge: Boolean
|
||||
get() = when (this) {
|
||||
InvocationKind.AT_LEAST_ONCE, InvocationKind.UNKNOWN -> true
|
||||
EventOccurrencesRange.AT_LEAST_ONCE, EventOccurrencesRange.UNKNOWN -> true
|
||||
else -> false
|
||||
}
|
||||
|
||||
@@ -293,7 +293,7 @@ class ControlFlowGraphBuilder {
|
||||
lastNodes.push(postponedExitNode)
|
||||
}
|
||||
|
||||
val invocationKind = anonymousFunction.invocationKind
|
||||
val invocationKind = anonymousFunction.eventOccurrencesRange
|
||||
if (invocationKind != null) {
|
||||
addEdge(exitNode, postponedExitNode, preferredKind = EdgeKind.CfgForward)
|
||||
} else {
|
||||
@@ -301,7 +301,7 @@ class ControlFlowGraphBuilder {
|
||||
CFGNode.addJustKindEdge(postponedEnterNode, postponedExitNode, kind, propagateDeadness = true)
|
||||
}
|
||||
|
||||
if (invocationKind == InvocationKind.EXACTLY_ONCE && shouldPassFlowFromInplaceLambda.top()) {
|
||||
if (invocationKind == EventOccurrencesRange.EXACTLY_ONCE && shouldPassFlowFromInplaceLambda.top()) {
|
||||
exitsFromCompletedPostponedAnonymousFunctions += postponedExitNode
|
||||
}
|
||||
|
||||
|
||||
+8
-8
@@ -5,7 +5,7 @@
|
||||
|
||||
package org.jetbrains.kotlin.fir.resolve.transformers
|
||||
|
||||
import org.jetbrains.kotlin.contracts.description.InvocationKind
|
||||
import org.jetbrains.kotlin.contracts.description.EventOccurrencesRange
|
||||
import org.jetbrains.kotlin.fir.FirElement
|
||||
import org.jetbrains.kotlin.fir.contracts.description.ConeCallsEffectDeclaration
|
||||
import org.jetbrains.kotlin.fir.contracts.effects
|
||||
@@ -19,14 +19,14 @@ import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
||||
import org.jetbrains.kotlin.fir.visitors.compose
|
||||
|
||||
object InvocationKindTransformer : FirTransformer<Nothing?>() {
|
||||
private object ArgumentsTransformer : FirTransformer<Pair<Map<FirExpression, InvocationKind>, InvocationKind?>>() {
|
||||
override fun <E : FirElement> transformElement(element: E, data: Pair<Map<FirExpression, InvocationKind>, InvocationKind?>): CompositeTransformResult<E> {
|
||||
private object ArgumentsTransformer : FirTransformer<Pair<Map<FirExpression, EventOccurrencesRange>, EventOccurrencesRange?>>() {
|
||||
override fun <E : FirElement> transformElement(element: E, data: Pair<Map<FirExpression, EventOccurrencesRange>, EventOccurrencesRange?>): CompositeTransformResult<E> {
|
||||
return element.compose()
|
||||
}
|
||||
|
||||
override fun transformAnonymousFunction(
|
||||
anonymousFunction: FirAnonymousFunction,
|
||||
data: Pair<Map<FirExpression, InvocationKind>, InvocationKind?>
|
||||
data: Pair<Map<FirExpression, EventOccurrencesRange>, EventOccurrencesRange?>
|
||||
): CompositeTransformResult<FirStatement> {
|
||||
val kind = data.second ?: data.first[anonymousFunction]
|
||||
if (kind != null) {
|
||||
@@ -37,7 +37,7 @@ object InvocationKindTransformer : FirTransformer<Nothing?>() {
|
||||
|
||||
override fun transformLambdaArgumentExpression(
|
||||
lambdaArgumentExpression: FirLambdaArgumentExpression,
|
||||
data: Pair<Map<FirExpression, InvocationKind>, InvocationKind?>
|
||||
data: Pair<Map<FirExpression, EventOccurrencesRange>, EventOccurrencesRange?>
|
||||
): CompositeTransformResult<FirStatement> {
|
||||
return data.first[lambdaArgumentExpression]?.let {
|
||||
(lambdaArgumentExpression.transformChildren(this, data.first to it) as FirStatement).compose()
|
||||
@@ -46,7 +46,7 @@ object InvocationKindTransformer : FirTransformer<Nothing?>() {
|
||||
|
||||
override fun transformNamedArgumentExpression(
|
||||
namedArgumentExpression: FirNamedArgumentExpression,
|
||||
data: Pair<Map<FirExpression, InvocationKind>, InvocationKind?>
|
||||
data: Pair<Map<FirExpression, EventOccurrencesRange>, EventOccurrencesRange?>
|
||||
): CompositeTransformResult<FirStatement> {
|
||||
return data.first[namedArgumentExpression]?.let {
|
||||
(namedArgumentExpression.transformChildren(this, data.first to it) as FirStatement).compose()
|
||||
@@ -74,7 +74,7 @@ object InvocationKindTransformer : FirTransformer<Nothing?>() {
|
||||
parameter to argument
|
||||
}.toMap()
|
||||
|
||||
val invocationKindMapping = mutableMapOf<FirExpression, InvocationKind>()
|
||||
val invocationKindMapping = mutableMapOf<FirExpression, EventOccurrencesRange>()
|
||||
for (effect in callsEffects) {
|
||||
// TODO: Support callsInPlace contracts on receivers
|
||||
val valueParameter = function.valueParameters.getOrNull(effect.valueParameterReference.parameterIndex) ?: continue
|
||||
@@ -83,7 +83,7 @@ object InvocationKindTransformer : FirTransformer<Nothing?>() {
|
||||
}
|
||||
if (isInline) {
|
||||
for (argument in functionCall.arguments) {
|
||||
invocationKindMapping.putIfAbsent(argument, InvocationKind.UNKNOWN)
|
||||
invocationKindMapping.putIfAbsent(argument, EventOccurrencesRange.UNKNOWN)
|
||||
}
|
||||
}
|
||||
if (invocationKindMapping.isEmpty()) {
|
||||
|
||||
+7
-7
@@ -5,7 +5,7 @@
|
||||
|
||||
package org.jetbrains.kotlin.fir.resolve.transformers.contracts
|
||||
|
||||
import org.jetbrains.kotlin.contracts.description.InvocationKind
|
||||
import org.jetbrains.kotlin.contracts.description.EventOccurrencesRange
|
||||
import org.jetbrains.kotlin.fir.FirElement
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.contracts.description.*
|
||||
@@ -65,7 +65,7 @@ class ConeEffectExtractor(
|
||||
FirContractsDslNames.CALLS_IN_PLACE -> {
|
||||
val reference = functionCall.arguments[0].accept(this, null) as? ConeValueParameterReference
|
||||
?: return null
|
||||
val kind = functionCall.arguments.getOrNull(1)?.parseInvocationKind() ?: InvocationKind.UNKNOWN
|
||||
val kind = functionCall.arguments.getOrNull(1)?.parseInvocationKind() ?: EventOccurrencesRange.UNKNOWN
|
||||
ConeCallsEffectDeclaration(reference, kind)
|
||||
}
|
||||
|
||||
@@ -165,14 +165,14 @@ class ConeEffectExtractor(
|
||||
return ConeIsInstancePredicate(arg, type, isNegated)
|
||||
}
|
||||
|
||||
private fun FirExpression.parseInvocationKind(): InvocationKind? {
|
||||
private fun FirExpression.parseInvocationKind(): EventOccurrencesRange? {
|
||||
if (this !is FirQualifiedAccessExpression) return null
|
||||
val resolvedId = toResolvedCallableSymbol()?.callableId ?: return null
|
||||
return when (resolvedId) {
|
||||
FirContractsDslNames.EXACTLY_ONCE_KIND -> InvocationKind.EXACTLY_ONCE
|
||||
FirContractsDslNames.AT_LEAST_ONCE_KIND -> InvocationKind.AT_LEAST_ONCE
|
||||
FirContractsDslNames.AT_MOST_ONCE_KIND -> InvocationKind.AT_MOST_ONCE
|
||||
FirContractsDslNames.UNKNOWN_KIND -> InvocationKind.UNKNOWN
|
||||
FirContractsDslNames.EXACTLY_ONCE_KIND -> EventOccurrencesRange.EXACTLY_ONCE
|
||||
FirContractsDslNames.AT_LEAST_ONCE_KIND -> EventOccurrencesRange.AT_LEAST_ONCE
|
||||
FirContractsDslNames.AT_MOST_ONCE_KIND -> EventOccurrencesRange.AT_MOST_ONCE
|
||||
FirContractsDslNames.UNKNOWN_KIND -> EventOccurrencesRange.UNKNOWN
|
||||
else -> null
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
package org.jetbrains.kotlin.fir.declarations
|
||||
|
||||
import org.jetbrains.kotlin.contracts.description.InvocationKind
|
||||
import org.jetbrains.kotlin.contracts.description.EventOccurrencesRange
|
||||
import org.jetbrains.kotlin.fir.FirLabel
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.FirSourceElement
|
||||
@@ -37,7 +37,7 @@ abstract class FirAnonymousFunction : FirFunction<FirAnonymousFunction>, FirExpr
|
||||
abstract override val typeRef: FirTypeRef
|
||||
abstract override val symbol: FirAnonymousFunctionSymbol
|
||||
abstract val label: FirLabel?
|
||||
abstract val invocationKind: InvocationKind?
|
||||
abstract val eventOccurrencesRange: EventOccurrencesRange?
|
||||
abstract val isLambda: Boolean
|
||||
abstract override val typeParameters: List<FirTypeParameter>
|
||||
|
||||
@@ -53,7 +53,7 @@ abstract class FirAnonymousFunction : FirFunction<FirAnonymousFunction>, FirExpr
|
||||
|
||||
abstract override fun replaceTypeRef(newTypeRef: FirTypeRef)
|
||||
|
||||
abstract fun replaceInvocationKind(newInvocationKind: InvocationKind?)
|
||||
abstract fun replaceInvocationKind(newEventOccurrencesRange: EventOccurrencesRange?)
|
||||
|
||||
abstract override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirAnonymousFunction
|
||||
|
||||
|
||||
+3
-7
@@ -6,19 +6,16 @@
|
||||
package org.jetbrains.kotlin.fir.declarations.builder
|
||||
|
||||
import kotlin.contracts.*
|
||||
import org.jetbrains.kotlin.contracts.description.InvocationKind
|
||||
import org.jetbrains.kotlin.contracts.description.EventOccurrencesRange
|
||||
import org.jetbrains.kotlin.fir.FirLabel
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.FirSourceElement
|
||||
import org.jetbrains.kotlin.fir.builder.FirAnnotationContainerBuilder
|
||||
import org.jetbrains.kotlin.fir.builder.FirBuilderDsl
|
||||
import org.jetbrains.kotlin.fir.declarations.FirAnonymousFunction
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationAttributes
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin
|
||||
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
||||
import org.jetbrains.kotlin.fir.declarations.FirTypeParameter
|
||||
import org.jetbrains.kotlin.fir.declarations.FirValueParameter
|
||||
import org.jetbrains.kotlin.fir.declarations.builder.FirFunctionBuilder
|
||||
import org.jetbrains.kotlin.fir.declarations.impl.FirAnonymousFunctionImpl
|
||||
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
|
||||
import org.jetbrains.kotlin.fir.expressions.FirBlock
|
||||
@@ -28,7 +25,6 @@ import org.jetbrains.kotlin.fir.references.impl.FirEmptyControlFlowGraphReferenc
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirAnonymousFunctionSymbol
|
||||
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||
import org.jetbrains.kotlin.fir.types.impl.FirImplicitTypeRefImpl
|
||||
import org.jetbrains.kotlin.fir.visitors.*
|
||||
|
||||
/*
|
||||
* This file was generated automatically
|
||||
@@ -49,7 +45,7 @@ class FirAnonymousFunctionBuilder : FirFunctionBuilder, FirAnnotationContainerBu
|
||||
override var typeRef: FirTypeRef = FirImplicitTypeRefImpl(null)
|
||||
lateinit var symbol: FirAnonymousFunctionSymbol
|
||||
var label: FirLabel? = null
|
||||
var invocationKind: InvocationKind? = null
|
||||
var eventOccurrencesRange: EventOccurrencesRange? = null
|
||||
var isLambda: Boolean by kotlin.properties.Delegates.notNull<Boolean>()
|
||||
val typeParameters: MutableList<FirTypeParameter> = mutableListOf()
|
||||
|
||||
@@ -67,7 +63,7 @@ class FirAnonymousFunctionBuilder : FirFunctionBuilder, FirAnnotationContainerBu
|
||||
typeRef,
|
||||
symbol,
|
||||
label,
|
||||
invocationKind,
|
||||
eventOccurrencesRange,
|
||||
isLambda,
|
||||
typeParameters,
|
||||
)
|
||||
|
||||
+4
-4
@@ -5,7 +5,7 @@
|
||||
|
||||
package org.jetbrains.kotlin.fir.declarations.impl
|
||||
|
||||
import org.jetbrains.kotlin.contracts.description.InvocationKind
|
||||
import org.jetbrains.kotlin.contracts.description.EventOccurrencesRange
|
||||
import org.jetbrains.kotlin.fir.FirLabel
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.FirSourceElement
|
||||
@@ -40,7 +40,7 @@ internal class FirAnonymousFunctionImpl(
|
||||
override var typeRef: FirTypeRef,
|
||||
override val symbol: FirAnonymousFunctionSymbol,
|
||||
override var label: FirLabel?,
|
||||
override var invocationKind: InvocationKind?,
|
||||
override var eventOccurrencesRange: EventOccurrencesRange?,
|
||||
override val isLambda: Boolean,
|
||||
override val typeParameters: MutableList<FirTypeParameter>,
|
||||
) : FirAnonymousFunction() {
|
||||
@@ -122,7 +122,7 @@ internal class FirAnonymousFunctionImpl(
|
||||
typeRef = newTypeRef
|
||||
}
|
||||
|
||||
override fun replaceInvocationKind(newInvocationKind: InvocationKind?) {
|
||||
invocationKind = newInvocationKind
|
||||
override fun replaceInvocationKind(newInvocationKind: EventOccurrencesRange?) {
|
||||
eventOccurrencesRange = newInvocationKind
|
||||
}
|
||||
}
|
||||
|
||||
@@ -449,8 +449,8 @@ class FirRenderer(builder: StringBuilder, private val mode: RenderMode = RenderM
|
||||
anonymousFunction.valueParameters.renderParameters()
|
||||
print(": ")
|
||||
anonymousFunction.returnTypeRef.accept(this)
|
||||
if (anonymousFunction.invocationKind != null) {
|
||||
print(" <kind=${anonymousFunction.invocationKind}> ")
|
||||
if (anonymousFunction.eventOccurrencesRange != null) {
|
||||
print(" <kind=${anonymousFunction.eventOccurrencesRange}> ")
|
||||
}
|
||||
if (mode.renderLambdaBodies) {
|
||||
anonymousFunction.body?.renderBody()
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
package org.jetbrains.kotlin.fir.contracts.description
|
||||
|
||||
import org.jetbrains.kotlin.contracts.description.InvocationKind
|
||||
import org.jetbrains.kotlin.contracts.description.EventOccurrencesRange
|
||||
|
||||
/**
|
||||
* Effect with condition attached to it.
|
||||
@@ -41,7 +41,7 @@ class ConeReturnsEffectDeclaration(val value: ConeConstantReference) : ConeEffec
|
||||
* 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() {
|
||||
class ConeCallsEffectDeclaration(val valueParameterReference: ConeValueParameterReference, val kind: EventOccurrencesRange) : ConeEffectDeclaration() {
|
||||
override fun <R, D> accept(contractDescriptionVisitor: ConeContractDescriptionVisitor<R, D>, data: D): R =
|
||||
contractDescriptionVisitor.visitCallsEffectDeclaration(this, data)
|
||||
}
|
||||
+1
-1
@@ -266,7 +266,7 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
|
||||
parentArg(function, "F", anonymousFunction)
|
||||
+symbol("FirAnonymousFunctionSymbol")
|
||||
+field(label, nullable = true)
|
||||
+field(invocationKindType, nullable = true, withReplace = true).apply {
|
||||
+field(eventOccurrencesRangeType, nullable = true, withReplace = true).apply {
|
||||
isMutable = true
|
||||
}
|
||||
+booleanField("isLambda")
|
||||
|
||||
+2
-2
@@ -5,7 +5,7 @@
|
||||
|
||||
package org.jetbrains.kotlin.fir.tree.generator
|
||||
|
||||
import org.jetbrains.kotlin.contracts.description.InvocationKind
|
||||
import org.jetbrains.kotlin.contracts.description.EventOccurrencesRange
|
||||
import org.jetbrains.kotlin.descriptors.ClassKind
|
||||
import org.jetbrains.kotlin.descriptors.Modality
|
||||
import org.jetbrains.kotlin.descriptors.Visibilities
|
||||
@@ -25,7 +25,7 @@ val jumpTargetType = type("fir", "FirTarget")
|
||||
val constKindType = generatedType("expressions", "FirConstKind")
|
||||
val operationType = type("fir.expressions", "FirOperation")
|
||||
val classKindType = type(ClassKind::class)
|
||||
val invocationKindType = type(InvocationKind::class)
|
||||
val eventOccurrencesRangeType = type(EventOccurrencesRange::class)
|
||||
val varianceType = type(Variance::class)
|
||||
val nameType = type(Name::class)
|
||||
val visibilityType = type(Visibility::class)
|
||||
|
||||
Reference in New Issue
Block a user