From 0b88e7cfd0043a20fe875f2fee92f3004c73566f Mon Sep 17 00:00:00 2001 From: Dmitry Savvinov Date: Fri, 13 Oct 2017 18:34:58 +0300 Subject: [PATCH] Annotate contract DSL with @SinceKotlin --- libraries/stdlib/src/kotlin/internal/Annotations.kt | 1 + .../stdlib/src/kotlin/internal/contracts/ContractBuilder.kt | 3 +++ libraries/stdlib/src/kotlin/internal/contracts/Effect.kt | 6 ++++++ 3 files changed, 10 insertions(+) diff --git a/libraries/stdlib/src/kotlin/internal/Annotations.kt b/libraries/stdlib/src/kotlin/internal/Annotations.kt index 543e6f3d1b1..76c49b9f836 100644 --- a/libraries/stdlib/src/kotlin/internal/Annotations.kt +++ b/libraries/stdlib/src/kotlin/internal/Annotations.kt @@ -116,4 +116,5 @@ internal enum class RequireKotlinVersionKind { * Specifies that this declaration is a part of special DSL, used for constructing function's contract. */ @Retention(AnnotationRetention.BINARY) +@SinceKotlin("1.2") internal annotation class ContractsDsl diff --git a/libraries/stdlib/src/kotlin/internal/contracts/ContractBuilder.kt b/libraries/stdlib/src/kotlin/internal/contracts/ContractBuilder.kt index bad8fff5906..0aa3f1d450c 100644 --- a/libraries/stdlib/src/kotlin/internal/contracts/ContractBuilder.kt +++ b/libraries/stdlib/src/kotlin/internal/contracts/ContractBuilder.kt @@ -20,6 +20,7 @@ import kotlin.internal.ContractsDsl import kotlin.internal.InlineOnly @ContractsDsl +@SinceKotlin("1.2") internal interface ContractBuilder { @ContractsDsl fun returns(): Returns @ContractsDsl fun returns(value: Any?): Returns @@ -28,6 +29,7 @@ internal interface ContractBuilder { } @ContractsDsl +@SinceKotlin("1.2") internal enum class InvocationKind { @ContractsDsl AT_MOST_ONCE, @ContractsDsl AT_LEAST_ONCE, @@ -37,4 +39,5 @@ internal enum class InvocationKind { @ContractsDsl @InlineOnly +@SinceKotlin("1.2") internal inline fun contract(builder: ContractBuilder.() -> Unit) { } \ No newline at end of file diff --git a/libraries/stdlib/src/kotlin/internal/contracts/Effect.kt b/libraries/stdlib/src/kotlin/internal/contracts/Effect.kt index 3b2b20532ab..ec94495adac 100644 --- a/libraries/stdlib/src/kotlin/internal/contracts/Effect.kt +++ b/libraries/stdlib/src/kotlin/internal/contracts/Effect.kt @@ -19,12 +19,15 @@ package kotlin.internal.contracts import kotlin.internal.ContractsDsl @ContractsDsl +@SinceKotlin("1.2") internal interface Effect @ContractsDsl +@SinceKotlin("1.2") internal interface ConditionalEffect : Effect @ContractsDsl +@SinceKotlin("1.2") internal interface SimpleEffect { @ContractsDsl infix fun implies(booleanExpression: Boolean): ConditionalEffect @@ -32,10 +35,13 @@ internal interface SimpleEffect { @ContractsDsl +@SinceKotlin("1.2") internal interface Returns : SimpleEffect @ContractsDsl +@SinceKotlin("1.2") internal interface ReturnsNotNull : SimpleEffect @ContractsDsl +@SinceKotlin("1.2") internal interface CallsInPlace : SimpleEffect \ No newline at end of file