Annotations on type aliases: typealias is not a "default target".
Add diagnostic test for annotations on type aliases.
This commit is contained in:
+2
-2
@@ -185,7 +185,7 @@ public interface Comparable</*0*/ in T> {
|
||||
public abstract operator fun compareTo(/*0*/ other: T): kotlin.Int
|
||||
}
|
||||
|
||||
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.CLASS, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY, AnnotationTarget.ANNOTATION_CLASS, AnnotationTarget.CONSTRUCTOR, AnnotationTarget.PROPERTY_SETTER, AnnotationTarget.PROPERTY_GETTER}) @kotlin.annotation.MustBeDocumented public final annotation class Deprecated : kotlin.Annotation {
|
||||
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.CLASS, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY, AnnotationTarget.ANNOTATION_CLASS, AnnotationTarget.CONSTRUCTOR, AnnotationTarget.PROPERTY_SETTER, AnnotationTarget.PROPERTY_GETTER, AnnotationTarget.TYPEALIAS}) @kotlin.annotation.MustBeDocumented() public final annotation class Deprecated : kotlin.Annotation {
|
||||
/*primary*/ public constructor Deprecated(/*0*/ message: kotlin.String, /*1*/ replaceWith: kotlin.ReplaceWith = ..., /*2*/ level: kotlin.DeprecationLevel = ...)
|
||||
public final val level: kotlin.DeprecationLevel
|
||||
public final fun <get-level>(): kotlin.DeprecationLevel
|
||||
@@ -673,7 +673,7 @@ public final class String : kotlin.Comparable<kotlin.String>, kotlin.CharSequenc
|
||||
}
|
||||
}
|
||||
|
||||
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.CLASS, AnnotationTarget.ANNOTATION_CLASS, AnnotationTarget.PROPERTY, AnnotationTarget.FIELD, AnnotationTarget.LOCAL_VARIABLE, AnnotationTarget.VALUE_PARAMETER, AnnotationTarget.CONSTRUCTOR, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY_GETTER, AnnotationTarget.PROPERTY_SETTER, AnnotationTarget.TYPE, AnnotationTarget.EXPRESSION, AnnotationTarget.FILE}) @kotlin.annotation.Retention(value = AnnotationRetention.SOURCE) public final annotation class Suppress : kotlin.Annotation {
|
||||
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.CLASS, AnnotationTarget.ANNOTATION_CLASS, AnnotationTarget.PROPERTY, AnnotationTarget.FIELD, AnnotationTarget.LOCAL_VARIABLE, AnnotationTarget.VALUE_PARAMETER, AnnotationTarget.CONSTRUCTOR, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY_GETTER, AnnotationTarget.PROPERTY_SETTER, AnnotationTarget.TYPE, AnnotationTarget.EXPRESSION, AnnotationTarget.FILE, AnnotationTarget.TYPEALIAS}) @kotlin.annotation.Retention(value = AnnotationRetention.SOURCE) public final annotation class Suppress : kotlin.Annotation {
|
||||
/*primary*/ public constructor Suppress(/*0*/ vararg names: kotlin.String /*kotlin.Array<out kotlin.String>*/)
|
||||
public final val names: kotlin.Array<out kotlin.String>
|
||||
public final fun <get-names>(): kotlin.Array<out kotlin.String>
|
||||
|
||||
+2
-2
@@ -185,7 +185,7 @@ public interface Comparable</*0*/ in T> {
|
||||
public abstract operator fun compareTo(/*0*/ other: T): kotlin.Int
|
||||
}
|
||||
|
||||
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.CLASS, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY, AnnotationTarget.ANNOTATION_CLASS, AnnotationTarget.CONSTRUCTOR, AnnotationTarget.PROPERTY_SETTER, AnnotationTarget.PROPERTY_GETTER}) @kotlin.annotation.MustBeDocumented public final annotation class Deprecated : kotlin.Annotation {
|
||||
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.CLASS, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY, AnnotationTarget.ANNOTATION_CLASS, AnnotationTarget.CONSTRUCTOR, AnnotationTarget.PROPERTY_SETTER, AnnotationTarget.PROPERTY_GETTER, AnnotationTarget.TYPEALIAS}) @kotlin.annotation.MustBeDocumented() public final annotation class Deprecated : kotlin.Annotation {
|
||||
/*primary*/ public constructor Deprecated(/*0*/ message: kotlin.String, /*1*/ replaceWith: kotlin.ReplaceWith = ..., /*2*/ level: kotlin.DeprecationLevel = ...)
|
||||
public final val level: kotlin.DeprecationLevel
|
||||
public final fun <get-level>(): kotlin.DeprecationLevel
|
||||
@@ -677,7 +677,7 @@ public final class String : kotlin.Comparable<kotlin.String>, kotlin.CharSequenc
|
||||
}
|
||||
}
|
||||
|
||||
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.CLASS, AnnotationTarget.ANNOTATION_CLASS, AnnotationTarget.PROPERTY, AnnotationTarget.FIELD, AnnotationTarget.LOCAL_VARIABLE, AnnotationTarget.VALUE_PARAMETER, AnnotationTarget.CONSTRUCTOR, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY_GETTER, AnnotationTarget.PROPERTY_SETTER, AnnotationTarget.TYPE, AnnotationTarget.EXPRESSION, AnnotationTarget.FILE}) @kotlin.annotation.Retention(value = AnnotationRetention.SOURCE) public final annotation class Suppress : kotlin.Annotation {
|
||||
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.CLASS, AnnotationTarget.ANNOTATION_CLASS, AnnotationTarget.PROPERTY, AnnotationTarget.FIELD, AnnotationTarget.LOCAL_VARIABLE, AnnotationTarget.VALUE_PARAMETER, AnnotationTarget.CONSTRUCTOR, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY_GETTER, AnnotationTarget.PROPERTY_SETTER, AnnotationTarget.TYPE, AnnotationTarget.EXPRESSION, AnnotationTarget.FILE, AnnotationTarget.TYPEALIAS}) @kotlin.annotation.Retention(value = AnnotationRetention.SOURCE) public final annotation class Suppress : kotlin.Annotation {
|
||||
/*primary*/ public constructor Suppress(/*0*/ vararg names: kotlin.String /*kotlin.Array<out kotlin.String>*/)
|
||||
public final val names: kotlin.Array<out kotlin.String>
|
||||
public final fun <get-names>(): kotlin.Array<out kotlin.String>
|
||||
|
||||
+2
-2
@@ -187,7 +187,7 @@ public interface Comparable</*0*/ in T> {
|
||||
public abstract operator fun compareTo(/*0*/ other: T): kotlin.Int
|
||||
}
|
||||
|
||||
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.CLASS, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY, AnnotationTarget.ANNOTATION_CLASS, AnnotationTarget.CONSTRUCTOR, AnnotationTarget.PROPERTY_SETTER, AnnotationTarget.PROPERTY_GETTER}) @kotlin.annotation.MustBeDocumented public final annotation class Deprecated : kotlin.Annotation {
|
||||
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.CLASS, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY, AnnotationTarget.ANNOTATION_CLASS, AnnotationTarget.CONSTRUCTOR, AnnotationTarget.PROPERTY_SETTER, AnnotationTarget.PROPERTY_GETTER, AnnotationTarget.TYPEALIAS}) @kotlin.annotation.MustBeDocumented() public final annotation class Deprecated : kotlin.Annotation {
|
||||
/*primary*/ public constructor Deprecated(/*0*/ message: kotlin.String, /*1*/ replaceWith: kotlin.ReplaceWith = ..., /*2*/ level: kotlin.DeprecationLevel = ...)
|
||||
public final val level: kotlin.DeprecationLevel
|
||||
public final fun <get-level>(): kotlin.DeprecationLevel
|
||||
@@ -681,7 +681,7 @@ public final class String : kotlin.Comparable<kotlin.String>, kotlin.CharSequenc
|
||||
}
|
||||
}
|
||||
|
||||
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.CLASS, AnnotationTarget.ANNOTATION_CLASS, AnnotationTarget.PROPERTY, AnnotationTarget.FIELD, AnnotationTarget.LOCAL_VARIABLE, AnnotationTarget.VALUE_PARAMETER, AnnotationTarget.CONSTRUCTOR, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY_GETTER, AnnotationTarget.PROPERTY_SETTER, AnnotationTarget.TYPE, AnnotationTarget.EXPRESSION, AnnotationTarget.FILE}) @kotlin.annotation.Retention(value = AnnotationRetention.SOURCE) public final annotation class Suppress : kotlin.Annotation {
|
||||
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.CLASS, AnnotationTarget.ANNOTATION_CLASS, AnnotationTarget.PROPERTY, AnnotationTarget.FIELD, AnnotationTarget.LOCAL_VARIABLE, AnnotationTarget.VALUE_PARAMETER, AnnotationTarget.CONSTRUCTOR, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY_GETTER, AnnotationTarget.PROPERTY_SETTER, AnnotationTarget.TYPE, AnnotationTarget.EXPRESSION, AnnotationTarget.FILE, AnnotationTarget.TYPEALIAS}) @kotlin.annotation.Retention(value = AnnotationRetention.SOURCE) public final annotation class Suppress : kotlin.Annotation {
|
||||
/*primary*/ public constructor Suppress(/*0*/ vararg names: kotlin.String /*kotlin.Array<out kotlin.String>*/)
|
||||
public final val names: kotlin.Array<out kotlin.String>
|
||||
public final fun <get-names>(): kotlin.Array<out kotlin.String>
|
||||
|
||||
+2
-2
@@ -185,7 +185,7 @@ public interface Comparable</*0*/ in T> {
|
||||
public abstract operator fun compareTo(/*0*/ other: T): kotlin.Int
|
||||
}
|
||||
|
||||
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.CLASS, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY, AnnotationTarget.ANNOTATION_CLASS, AnnotationTarget.CONSTRUCTOR, AnnotationTarget.PROPERTY_SETTER, AnnotationTarget.PROPERTY_GETTER}) @kotlin.annotation.MustBeDocumented public final annotation class Deprecated : kotlin.Annotation {
|
||||
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.CLASS, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY, AnnotationTarget.ANNOTATION_CLASS, AnnotationTarget.CONSTRUCTOR, AnnotationTarget.PROPERTY_SETTER, AnnotationTarget.PROPERTY_GETTER, AnnotationTarget.TYPEALIAS}) @kotlin.annotation.MustBeDocumented() public final annotation class Deprecated : kotlin.Annotation {
|
||||
/*primary*/ public constructor Deprecated(/*0*/ message: kotlin.String, /*1*/ replaceWith: kotlin.ReplaceWith = ..., /*2*/ level: kotlin.DeprecationLevel = ...)
|
||||
public final val level: kotlin.DeprecationLevel
|
||||
public final fun <get-level>(): kotlin.DeprecationLevel
|
||||
@@ -677,7 +677,7 @@ public final class String : kotlin.Comparable<kotlin.String>, kotlin.CharSequenc
|
||||
}
|
||||
}
|
||||
|
||||
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.CLASS, AnnotationTarget.ANNOTATION_CLASS, AnnotationTarget.PROPERTY, AnnotationTarget.FIELD, AnnotationTarget.LOCAL_VARIABLE, AnnotationTarget.VALUE_PARAMETER, AnnotationTarget.CONSTRUCTOR, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY_GETTER, AnnotationTarget.PROPERTY_SETTER, AnnotationTarget.TYPE, AnnotationTarget.EXPRESSION, AnnotationTarget.FILE}) @kotlin.annotation.Retention(value = AnnotationRetention.SOURCE) public final annotation class Suppress : kotlin.Annotation {
|
||||
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.CLASS, AnnotationTarget.ANNOTATION_CLASS, AnnotationTarget.PROPERTY, AnnotationTarget.FIELD, AnnotationTarget.LOCAL_VARIABLE, AnnotationTarget.VALUE_PARAMETER, AnnotationTarget.CONSTRUCTOR, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY_GETTER, AnnotationTarget.PROPERTY_SETTER, AnnotationTarget.TYPE, AnnotationTarget.EXPRESSION, AnnotationTarget.FILE, AnnotationTarget.TYPEALIAS}) @kotlin.annotation.Retention(value = AnnotationRetention.SOURCE) public final annotation class Suppress : kotlin.Annotation {
|
||||
/*primary*/ public constructor Suppress(/*0*/ vararg names: kotlin.String /*kotlin.Array<out kotlin.String>*/)
|
||||
public final val names: kotlin.Array<out kotlin.String>
|
||||
public final fun <get-names>(): kotlin.Array<out kotlin.String>
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
// WITH_RUNTIME
|
||||
import kotlin.annotation.AnnotationTarget.*
|
||||
|
||||
annotation class NoTarget
|
||||
|
||||
@Target(CLASS)
|
||||
annotation class IrrelevantTarget
|
||||
|
||||
@Target(TYPEALIAS)
|
||||
annotation class TypealiasTarget
|
||||
|
||||
<!WRONG_ANNOTATION_TARGET!>@NoTarget<!>
|
||||
<!WRONG_ANNOTATION_TARGET!>@IrrelevantTarget<!>
|
||||
@TypealiasTarget
|
||||
typealias Test = String
|
||||
@@ -0,0 +1,23 @@
|
||||
package
|
||||
|
||||
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.CLASS}) public final annotation class IrrelevantTarget : kotlin.Annotation {
|
||||
public constructor IrrelevantTarget()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public final annotation class NoTarget : kotlin.Annotation {
|
||||
public constructor NoTarget()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.TYPEALIAS}) public final annotation class TypealiasTarget : kotlin.Annotation {
|
||||
public constructor TypealiasTarget()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
@NoTarget() @IrrelevantTarget() @TypealiasTarget() public typealias Test = kotlin.String
|
||||
@@ -1,6 +1,7 @@
|
||||
//ALLOW_AST_ACCESS
|
||||
package test
|
||||
|
||||
@Target(AnnotationTarget.TYPEALIAS)
|
||||
annotation class Ann(val value: String = "")
|
||||
|
||||
@Ann()
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package test
|
||||
|
||||
public final annotation class Ann : kotlin.Annotation {
|
||||
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.TYPEALIAS}) public final annotation class Ann : kotlin.Annotation {
|
||||
/*primary*/ public constructor Ann(/*0*/ value: kotlin.String = ...)
|
||||
public final val value: kotlin.String
|
||||
public final fun <get-value>(): kotlin.String
|
||||
|
||||
@@ -20520,6 +20520,12 @@ public class DiagnosticsTestGenerated extends AbstractDiagnosticsTest {
|
||||
KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("compiler/testData/diagnostics/tests/typealias"), Pattern.compile("^(.+)\\.kt$"), true);
|
||||
}
|
||||
|
||||
@TestMetadata("annotationsOnTypeAliases.kt")
|
||||
public void testAnnotationsOnTypeAliases() throws Exception {
|
||||
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/typealias/annotationsOnTypeAliases.kt");
|
||||
doTest(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("boundViolationInTypeAliasConstructor.kt")
|
||||
public void testBoundViolationInTypeAliasConstructor() throws Exception {
|
||||
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/typealias/boundViolationInTypeAliasConstructor.kt");
|
||||
|
||||
@@ -38,7 +38,7 @@ enum class KotlinTarget(val description: String, val isDefault: Boolean = true)
|
||||
TYPE("type usage", false),
|
||||
EXPRESSION("expression", false), // includes FUNCTION_LITERAL, OBJECT_LITERAL
|
||||
FILE("file", false),
|
||||
TYPEALIAS("typealias"), // TODO support typealias as annotation target
|
||||
TYPEALIAS("typealias", false),
|
||||
|
||||
TYPE_PROJECTION("type projection", false),
|
||||
STAR_PROJECTION("star projection", false),
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package test
|
||||
|
||||
import dependency.*
|
||||
import kotlin.annotation.AnnotationTarget
|
||||
|
||||
class Outer<E, F> {
|
||||
inner class Inner<G> {
|
||||
@@ -8,7 +9,9 @@ class Outer<E, F> {
|
||||
}
|
||||
}
|
||||
|
||||
@Target(AnnotationTarget.TYPEALIAS)
|
||||
annotation class Ann(val value: String)
|
||||
|
||||
class TypeAliases {
|
||||
|
||||
typealias B = (A) -> Unit
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package test
|
||||
|
||||
import dependency.*
|
||||
import kotlin.annotation.AnnotationTarget
|
||||
|
||||
class Outer<E, F> {
|
||||
inner class Inner<G> {
|
||||
@@ -8,7 +9,9 @@ class Outer<E, F> {
|
||||
}
|
||||
}
|
||||
|
||||
@Target(AnnotationTarget.TYPEALIAS)
|
||||
annotation class Ann
|
||||
|
||||
class TypeAliases {
|
||||
|
||||
typealias B = (A) -> Unit
|
||||
|
||||
@@ -88,6 +88,7 @@ public final class kotlin/annotation/AnnotationTarget : java/lang/Enum {
|
||||
public static final field PROPERTY_GETTER Lkotlin/annotation/AnnotationTarget;
|
||||
public static final field PROPERTY_SETTER Lkotlin/annotation/AnnotationTarget;
|
||||
public static final field TYPE Lkotlin/annotation/AnnotationTarget;
|
||||
public static final field TYPEALIAS Lkotlin/annotation/AnnotationTarget;
|
||||
public static final field TYPE_PARAMETER Lkotlin/annotation/AnnotationTarget;
|
||||
public static final field VALUE_PARAMETER Lkotlin/annotation/AnnotationTarget;
|
||||
public static fun valueOf (Ljava/lang/String;)Lkotlin/annotation/AnnotationTarget;
|
||||
|
||||
Reference in New Issue
Block a user