From 9c2e149b5b515a4ef9d01813a0674e7b59582e48 Mon Sep 17 00:00:00 2001 From: Ilya Gorbunov Date: Wed, 15 Apr 2020 17:55:58 +0300 Subject: [PATCH] Expect/actual kotlin.Throws annotation #KT-34848 --- libraries/stdlib/jvm/runtime/kotlin/Throws.kt | 25 +++++++++++++++++++ .../stdlib/src/kotlin/annotations/Throws.kt | 20 +++++++++++++++ 2 files changed, 45 insertions(+) create mode 100644 libraries/stdlib/jvm/runtime/kotlin/Throws.kt create mode 100644 libraries/stdlib/src/kotlin/annotations/Throws.kt diff --git a/libraries/stdlib/jvm/runtime/kotlin/Throws.kt b/libraries/stdlib/jvm/runtime/kotlin/Throws.kt new file mode 100644 index 00000000000..356ec148a22 --- /dev/null +++ b/libraries/stdlib/jvm/runtime/kotlin/Throws.kt @@ -0,0 +1,25 @@ +/* + * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package kotlin + +/** + * This annotation indicates what exceptions should be declared by a function when compiled to a JVM method. + * + * Example: + * + * ``` + * @Throws(IOException::class) + * fun readFile(name: String): String {...} + * ``` + * + * will be translated to + * + * ``` + * String readFile(String name) throws IOException {...} + * ``` + */ +@SinceKotlin("1.4") +public actual typealias Throws = kotlin.jvm.Throws diff --git a/libraries/stdlib/src/kotlin/annotations/Throws.kt b/libraries/stdlib/src/kotlin/annotations/Throws.kt new file mode 100644 index 00000000000..16769cf16f4 --- /dev/null +++ b/libraries/stdlib/src/kotlin/annotations/Throws.kt @@ -0,0 +1,20 @@ +/* + * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package kotlin + +import kotlin.reflect.KClass + +/** + * This annotation indicates what exceptions should be declared by a function when compiled to a platform method + * in Kotlin/JVM and Kotlin/Native. + * + * @property exceptionClasses the list of checked exception classes that may be thrown by the function. + */ +@SinceKotlin("1.4") +@Target(AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY_GETTER, AnnotationTarget.PROPERTY_SETTER, AnnotationTarget.CONSTRUCTOR) +@Retention(AnnotationRetention.BINARY) +@OptionalExpectation +public expect annotation class Throws(vararg val exceptionClasses: KClass)