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) {