@@ -18,15 +18,14 @@ package org.jetbrains.kotlin.contracts.parsing
1818
1919import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
2020import org.jetbrains.kotlin.descriptors.FunctionDescriptor
21- import org.jetbrains.kotlin.contracts.parsing.ContractsDslNames.CALLS_IN_PLACE
22- import org.jetbrains.kotlin.contracts.parsing.ContractsDslNames.CONTRACT
23- import org.jetbrains.kotlin.contracts.parsing.ContractsDslNames.CONTRACTS_DSL_ANNOTATION_FQN
24- import org.jetbrains.kotlin.contracts.parsing.ContractsDslNames.EFFECT
25- import org.jetbrains.kotlin.contracts.parsing.ContractsDslNames.IMPLIES
26- import org.jetbrains.kotlin.contracts.parsing.ContractsDslNames.INVOCATION_KIND_ENUM
27- import org.jetbrains.kotlin.contracts.parsing.ContractsDslNames.RETURNS
28- import org.jetbrains.kotlin.contracts.parsing.ContractsDslNames.RETURNS_NOT_NULL
29- import org.jetbrains.kotlin.name.FqName
21+ import org.jetbrains.kotlin.resolve.ContractsDslNames.CALLS_IN_PLACE
22+ import org.jetbrains.kotlin.resolve.ContractsDslNames.CONTRACT
23+ import org.jetbrains.kotlin.resolve.ContractsDslNames.CONTRACTS_DSL_ANNOTATION_FQN
24+ import org.jetbrains.kotlin.resolve.ContractsDslNames.EFFECT
25+ import org.jetbrains.kotlin.resolve.ContractsDslNames.IMPLIES
26+ import org.jetbrains.kotlin.resolve.ContractsDslNames.INVOCATION_KIND_ENUM
27+ import org.jetbrains.kotlin.resolve.ContractsDslNames.RETURNS
28+ import org.jetbrains.kotlin.resolve.ContractsDslNames.RETURNS_NOT_NULL
3029import org.jetbrains.kotlin.name.Name
3130import org.jetbrains.kotlin.psi.KtExpression
3231import org.jetbrains.kotlin.resolve.calls.model.ExpressionValueArgument
@@ -35,54 +34,25 @@ import org.jetbrains.kotlin.types.typeUtil.isBoolean
3534import org.jetbrains.kotlin.types.typeUtil.isNullableAny
3635
3736
38- object ContractsDslNames {
39- // Internal marker-annotation for distinguishing our API
40- val CONTRACTS_DSL_ANNOTATION_FQN = FqName (" kotlin.internal.ContractsDsl" )
41-
42- // Types
43- val EFFECT = Name .identifier(" Effect" )
44- val CONDITIONAL_EFFECT = Name .identifier(" ConditionalEffect" )
45- val SIMPLE_EFFECT = Name .identifier(" SimpleEffect" )
46- val RETURNS_EFFECT = Name .identifier(" Returns" )
47- val RETURNS_NOT_NULL_EFFECT = Name .identifier(" ReturnsNotNull" )
48- val CALLS_IN_PLACE_EFFECT = Name .identifier(" CallsInPlace" )
49-
50- // Structure-defining calls
51- val CONTRACT = Name .identifier(" contract" )
52- val IMPLIES = Name .identifier(" implies" )
53-
54- // Effect-declaration calls
55- val RETURNS = Name .identifier(" returns" )
56- val RETURNS_NOT_NULL = Name .identifier(" returnsNotNull" )
57- val CALLS_IN_PLACE = Name .identifier(" callsInPlace" )
58-
59- // enum class InvocationKind
60- val INVOCATION_KIND_ENUM = Name .identifier(" InvocationKind" )
61- val EXACTLY_ONCE_KIND = Name .identifier(" EXACTLY_ONCE" )
62- val AT_LEAST_ONCE_KIND = Name .identifier(" AT_LEAST_ONCE" )
63- val UNKNOWN_KIND = Name .identifier(" UNKNOWN" )
64- val AT_MOST_ONCE_KIND = Name .identifier(" AT_MOST_ONCE" )
65- }
66-
6737fun DeclarationDescriptor.isFromContractDsl (): Boolean = this .annotations.hasAnnotation(CONTRACTS_DSL_ANNOTATION_FQN )
6838
69- fun DeclarationDescriptor.isContractCallDescriptor (): Boolean = equalsDslDescriptor(CONTRACT )
39+ fun DeclarationDescriptor.isContractCallDescriptor (): Boolean = equalsDslDescriptor(CONTRACT .callableName )
7040
71- fun DeclarationDescriptor.isImpliesCallDescriptor (): Boolean = equalsDslDescriptor(IMPLIES )
41+ fun DeclarationDescriptor.isImpliesCallDescriptor (): Boolean = equalsDslDescriptor(IMPLIES .callableName )
7242
73- fun DeclarationDescriptor.isReturnsEffectDescriptor (): Boolean = equalsDslDescriptor(RETURNS )
43+ fun DeclarationDescriptor.isReturnsEffectDescriptor (): Boolean = equalsDslDescriptor(RETURNS .callableName )
7444
75- fun DeclarationDescriptor.isReturnsNotNullDescriptor (): Boolean = equalsDslDescriptor(RETURNS_NOT_NULL )
45+ fun DeclarationDescriptor.isReturnsNotNullDescriptor (): Boolean = equalsDslDescriptor(RETURNS_NOT_NULL .callableName )
7646
77- fun DeclarationDescriptor.isReturnsWildcardDescriptor (): Boolean = equalsDslDescriptor(RETURNS ) &&
47+ fun DeclarationDescriptor.isReturnsWildcardDescriptor (): Boolean = equalsDslDescriptor(RETURNS .callableName ) &&
7848 this is FunctionDescriptor &&
7949 valueParameters.isEmpty()
8050
81- fun DeclarationDescriptor.isEffectDescriptor (): Boolean = equalsDslDescriptor(EFFECT )
51+ fun DeclarationDescriptor.isEffectDescriptor (): Boolean = equalsDslDescriptor(EFFECT .callableName )
8252
83- fun DeclarationDescriptor.isCallsInPlaceEffectDescriptor (): Boolean = equalsDslDescriptor(CALLS_IN_PLACE )
53+ fun DeclarationDescriptor.isCallsInPlaceEffectDescriptor (): Boolean = equalsDslDescriptor(CALLS_IN_PLACE .callableName )
8454
85- fun DeclarationDescriptor.isInvocationKindEnum (): Boolean = equalsDslDescriptor(INVOCATION_KIND_ENUM )
55+ fun DeclarationDescriptor.isInvocationKindEnum (): Boolean = equalsDslDescriptor(INVOCATION_KIND_ENUM .callableName )
8656
8757fun DeclarationDescriptor.isEqualsDescriptor (): Boolean =
8858 this is FunctionDescriptor && this .name == Name .identifier(" equals" ) && dispatchReceiverParameter != null && // fast checks
0 commit comments