From a9f4479557df4d1c288ce7dd31c987c453f73977 Mon Sep 17 00:00:00 2001 From: Ilya Gorbunov Date: Thu, 16 Jul 2020 05:53:11 +0300 Subject: [PATCH] Add stdlib-gen DSL support for DeprecatedSinceKotlin annotation --- .../kotlin-stdlib-gen/src/templates/dsl/CommonTypes.kt | 4 +++- .../src/templates/dsl/MemberBuilder.kt | 10 +++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/libraries/tools/kotlin-stdlib-gen/src/templates/dsl/CommonTypes.kt b/libraries/tools/kotlin-stdlib-gen/src/templates/dsl/CommonTypes.kt index 52e288f96f2..a29e2b82b70 100644 --- a/libraries/tools/kotlin-stdlib-gen/src/templates/dsl/CommonTypes.kt +++ b/libraries/tools/kotlin-stdlib-gen/src/templates/dsl/CommonTypes.kt @@ -136,7 +136,9 @@ enum class SequenceClass { stateful } -data class Deprecation(val message: String, val replaceWith: String? = null, val level: DeprecationLevel = DeprecationLevel.WARNING) +data class Deprecation( + val message: String, val replaceWith: String? = null, val level: DeprecationLevel = DeprecationLevel.WARNING, + val warningSince: String? = null, val errorSince: String? = null, val hiddenSince: String? = null) val forBinaryCompatibility = Deprecation("Provided for binary compatibility", level = DeprecationLevel.HIDDEN) data class ThrowsException(val exceptionType: String, val reason: String) diff --git a/libraries/tools/kotlin-stdlib-gen/src/templates/dsl/MemberBuilder.kt b/libraries/tools/kotlin-stdlib-gen/src/templates/dsl/MemberBuilder.kt index caa91ecac51..9a3acc6e0fa 100644 --- a/libraries/tools/kotlin-stdlib-gen/src/templates/dsl/MemberBuilder.kt +++ b/libraries/tools/kotlin-stdlib-gen/src/templates/dsl/MemberBuilder.kt @@ -327,7 +327,15 @@ class MemberBuilder( deprecated.replaceWith?.let { "ReplaceWith(\"$it\")" }, deprecated.level.let { if (it != DeprecationLevel.WARNING) "level = DeprecationLevel.$it" else null } ) - builder.append("@Deprecated(${args.joinToString(", ")})\n") + builder.appendLine("@Deprecated(${args.joinToString(", ")})") + val versionArgs = listOfNotNull( + deprecated.warningSince?.let { "warningSince = \"$it\"" }, + deprecated.errorSince?.let { "errorSince = \"$it\"" }, + deprecated.hiddenSince?.let { "hiddenSince = \"$it\"" } + ) + if (versionArgs.any()) { + builder.appendLine("@DeprecatedSinceKotlin(${versionArgs.joinToString(", ")})") + } } if (!f.isPrimitiveSpecialization && primitive != null) {