Annotate contract DSL with @SinceKotlin

This commit is contained in:
Dmitry Savvinov
2017-10-13 18:34:58 +03:00
parent 5f775497e2
commit 0b88e7cfd0
3 changed files with 10 additions and 0 deletions
@@ -116,4 +116,5 @@ internal enum class RequireKotlinVersionKind {
* Specifies that this declaration is a part of special DSL, used for constructing function's contract. * Specifies that this declaration is a part of special DSL, used for constructing function's contract.
*/ */
@Retention(AnnotationRetention.BINARY) @Retention(AnnotationRetention.BINARY)
@SinceKotlin("1.2")
internal annotation class ContractsDsl internal annotation class ContractsDsl
@@ -20,6 +20,7 @@ import kotlin.internal.ContractsDsl
import kotlin.internal.InlineOnly import kotlin.internal.InlineOnly
@ContractsDsl @ContractsDsl
@SinceKotlin("1.2")
internal interface ContractBuilder { internal interface ContractBuilder {
@ContractsDsl fun returns(): Returns @ContractsDsl fun returns(): Returns
@ContractsDsl fun returns(value: Any?): Returns @ContractsDsl fun returns(value: Any?): Returns
@@ -28,6 +29,7 @@ internal interface ContractBuilder {
} }
@ContractsDsl @ContractsDsl
@SinceKotlin("1.2")
internal enum class InvocationKind { internal enum class InvocationKind {
@ContractsDsl AT_MOST_ONCE, @ContractsDsl AT_MOST_ONCE,
@ContractsDsl AT_LEAST_ONCE, @ContractsDsl AT_LEAST_ONCE,
@@ -37,4 +39,5 @@ internal enum class InvocationKind {
@ContractsDsl @ContractsDsl
@InlineOnly @InlineOnly
@SinceKotlin("1.2")
internal inline fun contract(builder: ContractBuilder.() -> Unit) { } internal inline fun contract(builder: ContractBuilder.() -> Unit) { }
@@ -19,12 +19,15 @@ package kotlin.internal.contracts
import kotlin.internal.ContractsDsl import kotlin.internal.ContractsDsl
@ContractsDsl @ContractsDsl
@SinceKotlin("1.2")
internal interface Effect internal interface Effect
@ContractsDsl @ContractsDsl
@SinceKotlin("1.2")
internal interface ConditionalEffect : Effect internal interface ConditionalEffect : Effect
@ContractsDsl @ContractsDsl
@SinceKotlin("1.2")
internal interface SimpleEffect { internal interface SimpleEffect {
@ContractsDsl @ContractsDsl
infix fun implies(booleanExpression: Boolean): ConditionalEffect infix fun implies(booleanExpression: Boolean): ConditionalEffect
@@ -32,10 +35,13 @@ internal interface SimpleEffect {
@ContractsDsl @ContractsDsl
@SinceKotlin("1.2")
internal interface Returns : SimpleEffect internal interface Returns : SimpleEffect
@ContractsDsl @ContractsDsl
@SinceKotlin("1.2")
internal interface ReturnsNotNull : SimpleEffect internal interface ReturnsNotNull : SimpleEffect
@ContractsDsl @ContractsDsl
@SinceKotlin("1.2")
internal interface CallsInPlace : SimpleEffect internal interface CallsInPlace : SimpleEffect