JVM: Add FILE target to the JvmSynthetic annotation (#4149)

This commit is contained in:
Steven Schäfer
2021-02-24 17:01:12 +01:00
committed by Alexander Udalov
parent b45d5abeb1
commit 057ead358c
3 changed files with 11 additions and 13 deletions
@@ -1,6 +1,5 @@
// WITH_RUNTIME // WITH_RUNTIME
// FILE: test.kt // FILE: test.kt
@file:Suppress("WRONG_ANNOTATION_TARGET_WITH_USE_SITE_TARGET")
@file:JvmSynthetic @file:JvmSynthetic
private val keepme = 1 private val keepme = 1
@@ -13,7 +13,7 @@ import kotlin.annotation.AnnotationTarget.*
* If a method has N parameters and M of which have default values, M overloads are generated: the first one * If a method has N parameters and M of which have default values, M overloads are generated: the first one
* takes N-1 parameters (all but the last one that takes a default value), the second takes N-2 parameters, and so on. * takes N-1 parameters (all but the last one that takes a default value), the second takes N-2 parameters, and so on.
*/ */
@Target(AnnotationTarget.FUNCTION, AnnotationTarget.CONSTRUCTOR) @Target(FUNCTION, CONSTRUCTOR)
@MustBeDocumented @MustBeDocumented
@OptionalExpectation @OptionalExpectation
public expect annotation class JvmOverloads() public expect annotation class JvmOverloads()
@@ -25,7 +25,7 @@ public expect annotation class JvmOverloads()
* See the [Kotlin language documentation](https://kotlinlang.org/docs/reference/java-to-kotlin-interop.html#static-methods) * See the [Kotlin language documentation](https://kotlinlang.org/docs/reference/java-to-kotlin-interop.html#static-methods)
* for more information. * for more information.
*/ */
@Target(AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY, AnnotationTarget.PROPERTY_GETTER, AnnotationTarget.PROPERTY_SETTER) @Target(FUNCTION, PROPERTY, PROPERTY_GETTER, PROPERTY_SETTER)
@MustBeDocumented @MustBeDocumented
@OptionalExpectation @OptionalExpectation
public expect annotation class JvmStatic() public expect annotation class JvmStatic()
@@ -37,7 +37,7 @@ public expect annotation class JvmStatic()
* for more information. * for more information.
* @property name the name of the element. * @property name the name of the element.
*/ */
@Target(AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY_GETTER, AnnotationTarget.PROPERTY_SETTER, AnnotationTarget.FILE) @Target(FILE, FUNCTION, PROPERTY_GETTER, PROPERTY_SETTER)
@MustBeDocumented @MustBeDocumented
@OptionalExpectation @OptionalExpectation
public expect annotation class JvmName(val name: String) public expect annotation class JvmName(val name: String)
@@ -46,20 +46,19 @@ public expect annotation class JvmName(val name: String)
* Instructs the Kotlin compiler to generate a multifile class with top-level functions and properties declared in this file as one of its parts. * Instructs the Kotlin compiler to generate a multifile class with top-level functions and properties declared in this file as one of its parts.
* Name of the corresponding multifile class is provided by the [JvmName] annotation. * Name of the corresponding multifile class is provided by the [JvmName] annotation.
*/ */
@Target(AnnotationTarget.FILE) @Target(FILE)
@MustBeDocumented @MustBeDocumented
@OptionalExpectation @OptionalExpectation
public expect annotation class JvmMultifileClass() public expect annotation class JvmMultifileClass()
/** /**
* Instructs the Kotlin compiler not to generate getters/setters for this property and expose it as a field. * Instructs the Kotlin compiler not to generate getters/setters for this property and expose it as a field.
* *
* See the [Kotlin language documentation](https://kotlinlang.org/docs/reference/java-to-kotlin-interop.html#instance-fields) * See the [Kotlin language documentation](https://kotlinlang.org/docs/reference/java-to-kotlin-interop.html#instance-fields)
* for more information. * for more information.
*/ */
@Target(AnnotationTarget.FIELD) @Target(FIELD)
@MustBeDocumented @MustBeDocumented
@OptionalExpectation @OptionalExpectation
public expect annotation class JvmField() public expect annotation class JvmField()
@@ -73,7 +72,7 @@ public expect annotation class JvmField()
* This annotation is intended for *rare cases* when API designer needs to hide Kotlin-specific target from Java API * This annotation is intended for *rare cases* when API designer needs to hide Kotlin-specific target from Java API
* while keeping it a part of Kotlin API so the resulting API is idiomatic for both languages. * while keeping it a part of Kotlin API so the resulting API is idiomatic for both languages.
*/ */
@Target(AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY_GETTER, AnnotationTarget.PROPERTY_SETTER, AnnotationTarget.FIELD) @Target(FILE, FUNCTION, PROPERTY_GETTER, PROPERTY_SETTER, FIELD)
@OptionalExpectation @OptionalExpectation
public expect annotation class JvmSynthetic() public expect annotation class JvmSynthetic()
@@ -86,7 +85,7 @@ public expect annotation class JvmSynthetic()
* *
* It may be helpful only if declaration seems to be inconvenient to use from Java. * It may be helpful only if declaration seems to be inconvenient to use from Java.
*/ */
@Target(AnnotationTarget.CLASS, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY, AnnotationTarget.TYPE) @Target(CLASS, FUNCTION, PROPERTY, TYPE)
@MustBeDocumented @MustBeDocumented
@OptionalExpectation @OptionalExpectation
public expect annotation class JvmSuppressWildcards(val suppress: Boolean = true) public expect annotation class JvmSuppressWildcards(val suppress: Boolean = true)
@@ -96,7 +95,7 @@ public expect annotation class JvmSuppressWildcards(val suppress: Boolean = true
* *
* It may be helpful only if declaration seems to be inconvenient to use from Java without wildcard. * It may be helpful only if declaration seems to be inconvenient to use from Java without wildcard.
*/ */
@Target(AnnotationTarget.TYPE) @Target(TYPE)
@MustBeDocumented @MustBeDocumented
@OptionalExpectation @OptionalExpectation
public expect annotation class JvmWildcard() public expect annotation class JvmWildcard()
@@ -118,7 +117,7 @@ public expect annotation class JvmInline()
* Instructs compiler to mark the class as a record and generate relevant toString/equals/hashCode methods * Instructs compiler to mark the class as a record and generate relevant toString/equals/hashCode methods
*/ */
@Suppress("NEWER_VERSION_IN_SINCE_KOTLIN") @Suppress("NEWER_VERSION_IN_SINCE_KOTLIN")
@Target(AnnotationTarget.CLASS) @Target(CLASS)
@MustBeDocumented @MustBeDocumented
@OptionalExpectation @OptionalExpectation
@SinceKotlin("1.5") @SinceKotlin("1.5")
@@ -163,7 +162,7 @@ public expect annotation class Strictfp()
public expect annotation class Synchronized() public expect annotation class Synchronized()
@Target(AnnotationTarget.FILE) @Target(FILE)
@Retention(AnnotationRetention.SOURCE) @Retention(AnnotationRetention.SOURCE)
@MustBeDocumented @MustBeDocumented
@SinceKotlin("1.2") @SinceKotlin("1.2")
@@ -72,7 +72,7 @@ internal actual annotation class JvmPackageName(actual val name: String)
* This annotation is intended for *rare cases* when API designer needs to hide Kotlin-specific target from Java API * This annotation is intended for *rare cases* when API designer needs to hide Kotlin-specific target from Java API
* while keeping it a part of Kotlin API so the resulting API is idiomatic for both languages. * while keeping it a part of Kotlin API so the resulting API is idiomatic for both languages.
*/ */
@Target(AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY_GETTER, AnnotationTarget.PROPERTY_SETTER, AnnotationTarget.FIELD) @Target(AnnotationTarget.FILE, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY_GETTER, AnnotationTarget.PROPERTY_SETTER, AnnotationTarget.FIELD)
@Retention(AnnotationRetention.SOURCE) @Retention(AnnotationRetention.SOURCE)
public actual annotation class JvmSynthetic public actual annotation class JvmSynthetic