Support class type parameters annotation checking
This commit is contained in:
+6
@@ -1001,6 +1001,12 @@ public class FirOldFrontendDiagnosticsTestGenerated extends AbstractFirDiagnosti
|
||||
runTest("compiler/testData/diagnostics/tests/annotations/AnnotationForClassTypeParameter_16.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("AnnotationForClassTypeParameter_typeUseFlag.kt")
|
||||
public void testAnnotationForClassTypeParameter_typeUseFlag() throws Exception {
|
||||
runTest("compiler/testData/diagnostics/tests/annotations/AnnotationForClassTypeParameter_typeUseFlag.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("AnnotationForFunctionTypeParameter.kt")
|
||||
public void testAnnotationForFunctionTypeParameter() throws Exception {
|
||||
|
||||
+6
@@ -1001,6 +1001,12 @@ public class FirOldFrontendDiagnosticsWithLightTreeTestGenerated extends Abstrac
|
||||
runTest("compiler/testData/diagnostics/tests/annotations/AnnotationForClassTypeParameter_16.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("AnnotationForClassTypeParameter_typeUseFlag.kt")
|
||||
public void testAnnotationForClassTypeParameter_typeUseFlag() throws Exception {
|
||||
runTest("compiler/testData/diagnostics/tests/annotations/AnnotationForClassTypeParameter_typeUseFlag.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("AnnotationForFunctionTypeParameter.kt")
|
||||
public void testAnnotationForFunctionTypeParameter() throws Exception {
|
||||
|
||||
@@ -26,6 +26,7 @@ import org.jetbrains.kotlin.resolve.descriptorUtil.annotationClass
|
||||
import org.jetbrains.kotlin.resolve.descriptorUtil.getAnnotationRetention
|
||||
import org.jetbrains.kotlin.resolve.descriptorUtil.isRepeatableAnnotation
|
||||
import org.jetbrains.kotlin.resolve.inline.InlineUtil
|
||||
import org.jetbrains.kotlin.resolve.lazy.ForceResolveUtil
|
||||
import org.jetbrains.kotlin.resolve.lazy.descriptors.LazyAnnotationDescriptor
|
||||
import org.jetbrains.kotlin.types.KotlinType
|
||||
import org.jetbrains.kotlin.types.expressions.ExpressionTypingUtils
|
||||
@@ -53,8 +54,16 @@ class AnnotationChecker(
|
||||
}
|
||||
if (
|
||||
annotated is KtTypeParameterListOwner &&
|
||||
(annotated is KtCallableDeclaration || languageVersionSettings.supportsFeature(ProperCheckAnnotationsTargetInTypeUsePositions))
|
||||
(annotated is KtCallableDeclaration || languageVersionSettings.supportsFeature(ProperCheckAnnotationsTargetInTypeUsePositions) ||
|
||||
(annotated is KtClass && languageVersionSettings.supportsFeature(ClassTypeParameterAnnotations)))
|
||||
) {
|
||||
if (annotated is KtClass && languageVersionSettings.supportsFeature(ClassTypeParameterAnnotations)) {
|
||||
(descriptor as? ClassDescriptor)?.declaredTypeParameters?.forEach {
|
||||
//force annotation resolve to obtain targets
|
||||
ForceResolveUtil.forceResolveAllContents(it.annotations)
|
||||
}
|
||||
}
|
||||
|
||||
annotated.typeParameters.forEach { check(it, trace) }
|
||||
for (typeParameter in annotated.typeParameters) {
|
||||
typeParameter.extendsBound?.let {
|
||||
|
||||
+8
-7
@@ -4,21 +4,22 @@ annotation class A2(val some: Int = 12)
|
||||
|
||||
@Target(AnnotationTarget.TYPE)
|
||||
annotation class TA1
|
||||
|
||||
@Target(AnnotationTarget.TYPE_PARAMETER)
|
||||
annotation class TA2(val some: Int = 12)
|
||||
|
||||
class TopLevelClass<@A1 @A2(3) @A2 @A1(12) @A2("Test") T> {
|
||||
class InnerClass<@A1 @A2(3) @A2 @A1(12) @A2("Test") T> {
|
||||
class TopLevelClass<<!WRONG_ANNOTATION_TARGET!>@A1<!> <!WRONG_ANNOTATION_TARGET!>@A2(3)<!> <!WRONG_ANNOTATION_TARGET!>@A2<!> <!WRONG_ANNOTATION_TARGET!>@A1(<!TOO_MANY_ARGUMENTS!>12<!>)<!> <!WRONG_ANNOTATION_TARGET!>@A2(<!ARGUMENT_TYPE_MISMATCH!>"Test"<!>)<!> T> {
|
||||
class InnerClass<<!WRONG_ANNOTATION_TARGET!>@A1<!> <!WRONG_ANNOTATION_TARGET!>@A2(3)<!> <!WRONG_ANNOTATION_TARGET!>@A2<!> <!WRONG_ANNOTATION_TARGET!>@A1(<!TOO_MANY_ARGUMENTS!>12<!>)<!> <!WRONG_ANNOTATION_TARGET!>@A2(<!ARGUMENT_TYPE_MISMATCH!>"Test"<!>)<!> T> {
|
||||
fun test() {
|
||||
class InFun<@A1 @A2(3) @A2 @A1(12) @A2("Test") T>
|
||||
class InFun<<!WRONG_ANNOTATION_TARGET!>@A1<!> <!WRONG_ANNOTATION_TARGET!>@A2(3)<!> <!WRONG_ANNOTATION_TARGET!>@A2<!> <!WRONG_ANNOTATION_TARGET!>@A1(<!TOO_MANY_ARGUMENTS!>12<!>)<!> <!WRONG_ANNOTATION_TARGET!>@A2(<!ARGUMENT_TYPE_MISMATCH!>"Test"<!>)<!> T>
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class TTopLevelClass<@TA1 @TA2(3) @TA2 @TA1(12) @TA2("Test") T> {
|
||||
class TInnerClass<@TA1 @TA2(3) @TA2 @TA1(12) @TA2("Test") T> {
|
||||
class TTopLevelClass<<!WRONG_ANNOTATION_TARGET!>@TA1<!> @TA2(3) @TA2 <!WRONG_ANNOTATION_TARGET!>@TA1(<!TOO_MANY_ARGUMENTS!>12<!>)<!> @TA2(<!ARGUMENT_TYPE_MISMATCH!>"Test"<!>) T> {
|
||||
class TInnerClass<<!WRONG_ANNOTATION_TARGET!>@TA1<!> @TA2(3) @TA2 <!WRONG_ANNOTATION_TARGET!>@TA1(<!TOO_MANY_ARGUMENTS!>12<!>)<!> @TA2(<!ARGUMENT_TYPE_MISMATCH!>"Test"<!>) T> {
|
||||
fun test() {
|
||||
class TInFun<@TA1 @TA2(3) @TA2 @TA1(12) @TA2("Test") T>
|
||||
class TInFun<<!WRONG_ANNOTATION_TARGET!>@TA1<!> @TA2(3) @TA2 <!WRONG_ANNOTATION_TARGET!>@TA1(<!TOO_MANY_ARGUMENTS!>12<!>)<!> @TA2(<!ARGUMENT_TYPE_MISMATCH!>"Test"<!>) T>
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Vendored
+26
@@ -0,0 +1,26 @@
|
||||
// !LANGUAGE: +ProperCheckAnnotationsTargetInTypeUsePositions
|
||||
|
||||
annotation class A1
|
||||
annotation class A2(val some: Int = 12)
|
||||
|
||||
@Target(AnnotationTarget.TYPE)
|
||||
annotation class TA1
|
||||
|
||||
@Target(AnnotationTarget.TYPE_PARAMETER)
|
||||
annotation class TA2(val some: Int = 12)
|
||||
|
||||
class TopLevelClass<<!WRONG_ANNOTATION_TARGET!>@A1<!> <!WRONG_ANNOTATION_TARGET!>@A2(3)<!> <!WRONG_ANNOTATION_TARGET!>@A2<!> <!WRONG_ANNOTATION_TARGET!>@A1(<!TOO_MANY_ARGUMENTS!>12<!>)<!> <!WRONG_ANNOTATION_TARGET!>@A2(<!ARGUMENT_TYPE_MISMATCH!>"Test"<!>)<!> T> {
|
||||
class InnerClass<<!WRONG_ANNOTATION_TARGET!>@A1<!> <!WRONG_ANNOTATION_TARGET!>@A2(3)<!> <!WRONG_ANNOTATION_TARGET!>@A2<!> <!WRONG_ANNOTATION_TARGET!>@A1(<!TOO_MANY_ARGUMENTS!>12<!>)<!> <!WRONG_ANNOTATION_TARGET!>@A2(<!ARGUMENT_TYPE_MISMATCH!>"Test"<!>)<!> T> {
|
||||
fun test() {
|
||||
class InFun<<!WRONG_ANNOTATION_TARGET!>@A1<!> <!WRONG_ANNOTATION_TARGET!>@A2(3)<!> <!WRONG_ANNOTATION_TARGET!>@A2<!> <!WRONG_ANNOTATION_TARGET!>@A1(<!TOO_MANY_ARGUMENTS!>12<!>)<!> <!WRONG_ANNOTATION_TARGET!>@A2(<!ARGUMENT_TYPE_MISMATCH!>"Test"<!>)<!> T>
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class TTopLevelClass<<!WRONG_ANNOTATION_TARGET!>@TA1<!> @TA2(3) @TA2 <!WRONG_ANNOTATION_TARGET!>@TA1(<!TOO_MANY_ARGUMENTS!>12<!>)<!> @TA2(<!ARGUMENT_TYPE_MISMATCH!>"Test"<!>) T> {
|
||||
class TInnerClass<<!WRONG_ANNOTATION_TARGET!>@TA1<!> @TA2(3) @TA2 <!WRONG_ANNOTATION_TARGET!>@TA1(<!TOO_MANY_ARGUMENTS!>12<!>)<!> @TA2(<!ARGUMENT_TYPE_MISMATCH!>"Test"<!>) T> {
|
||||
fun test() {
|
||||
class TInFun<<!WRONG_ANNOTATION_TARGET!>@TA1<!> @TA2(3) @TA2 <!WRONG_ANNOTATION_TARGET!>@TA1(<!TOO_MANY_ARGUMENTS!>12<!>)<!> @TA2(<!ARGUMENT_TYPE_MISMATCH!>"Test"<!>) T>
|
||||
}
|
||||
}
|
||||
}
|
||||
Vendored
+26
@@ -0,0 +1,26 @@
|
||||
// !LANGUAGE: +ProperCheckAnnotationsTargetInTypeUsePositions
|
||||
|
||||
annotation class A1
|
||||
annotation class A2(val some: Int = 12)
|
||||
|
||||
@Target(AnnotationTarget.TYPE)
|
||||
annotation class TA1
|
||||
|
||||
@Target(AnnotationTarget.TYPE_PARAMETER)
|
||||
annotation class TA2(val some: Int = 12)
|
||||
|
||||
class TopLevelClass<<!UNSUPPORTED, WRONG_ANNOTATION_TARGET!>@A1<!> <!UNSUPPORTED, WRONG_ANNOTATION_TARGET!>@A2(3)<!> <!UNSUPPORTED, WRONG_ANNOTATION_TARGET!>@A2<!> <!UNSUPPORTED, WRONG_ANNOTATION_TARGET!>@A1(12)<!> <!UNSUPPORTED, WRONG_ANNOTATION_TARGET!>@A2("Test")<!> T> {
|
||||
class InnerClass<<!UNSUPPORTED, WRONG_ANNOTATION_TARGET!>@A1<!> <!UNSUPPORTED, WRONG_ANNOTATION_TARGET!>@A2(3)<!> <!UNSUPPORTED, WRONG_ANNOTATION_TARGET!>@A2<!> <!UNSUPPORTED, WRONG_ANNOTATION_TARGET!>@A1(12)<!> <!UNSUPPORTED, WRONG_ANNOTATION_TARGET!>@A2("Test")<!> T> {
|
||||
fun test() {
|
||||
class InFun<<!UNSUPPORTED, WRONG_ANNOTATION_TARGET!>@A1<!> <!UNSUPPORTED, WRONG_ANNOTATION_TARGET!>@A2(3)<!> <!UNSUPPORTED, WRONG_ANNOTATION_TARGET!>@A2<!> <!UNSUPPORTED, WRONG_ANNOTATION_TARGET!>@A1(12)<!> <!UNSUPPORTED, WRONG_ANNOTATION_TARGET!>@A2("Test")<!> T>
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class TTopLevelClass<<!UNSUPPORTED, WRONG_ANNOTATION_TARGET!>@TA1<!> <!UNSUPPORTED, WRONG_ANNOTATION_TARGET!>@TA2(3)<!> <!UNSUPPORTED, WRONG_ANNOTATION_TARGET!>@TA2<!> <!UNSUPPORTED, WRONG_ANNOTATION_TARGET!>@TA1(12)<!> <!UNSUPPORTED, WRONG_ANNOTATION_TARGET!>@TA2("Test")<!> T> {
|
||||
class TInnerClass<<!UNSUPPORTED, WRONG_ANNOTATION_TARGET!>@TA1<!> <!UNSUPPORTED, WRONG_ANNOTATION_TARGET!>@TA2(3)<!> <!UNSUPPORTED, WRONG_ANNOTATION_TARGET!>@TA2<!> <!UNSUPPORTED, WRONG_ANNOTATION_TARGET!>@TA1(12)<!> <!UNSUPPORTED, WRONG_ANNOTATION_TARGET!>@TA2("Test")<!> T> {
|
||||
fun test() {
|
||||
class TInFun<<!UNSUPPORTED, WRONG_ANNOTATION_TARGET!>@TA1<!> <!UNSUPPORTED, WRONG_ANNOTATION_TARGET!>@TA2(3)<!> <!UNSUPPORTED, WRONG_ANNOTATION_TARGET!>@TA2<!> <!UNSUPPORTED, WRONG_ANNOTATION_TARGET!>@TA1(12)<!> <!UNSUPPORTED, WRONG_ANNOTATION_TARGET!>@TA2("Test")<!> T>
|
||||
}
|
||||
}
|
||||
}
|
||||
Vendored
+61
@@ -0,0 +1,61 @@
|
||||
package
|
||||
|
||||
public final annotation class A1 : kotlin.Annotation {
|
||||
public constructor A1()
|
||||
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 A2 : kotlin.Annotation {
|
||||
public constructor A2(/*0*/ some: kotlin.Int = ...)
|
||||
public final val some: kotlin.Int
|
||||
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.TYPE}) public final annotation class TA1 : kotlin.Annotation {
|
||||
public constructor TA1()
|
||||
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.TYPE_PARAMETER}) public final annotation class TA2 : kotlin.Annotation {
|
||||
public constructor TA2(/*0*/ some: kotlin.Int = ...)
|
||||
public final val some: kotlin.Int
|
||||
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 class TTopLevelClass</*0*/ T> {
|
||||
public constructor TTopLevelClass</*0*/ T>()
|
||||
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 class TInnerClass</*0*/ T> {
|
||||
public constructor TInnerClass</*0*/ T>()
|
||||
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 final fun test(): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
}
|
||||
|
||||
public final class TopLevelClass</*0*/ T> {
|
||||
public constructor TopLevelClass</*0*/ T>()
|
||||
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 class InnerClass</*0*/ T> {
|
||||
public constructor InnerClass</*0*/ T>()
|
||||
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 final fun test(): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
}
|
||||
+15
@@ -10,3 +10,18 @@ class SomeClass {
|
||||
fun <<!WRONG_ANNOTATION_TARGET!>@A1<!> <!WRONG_ANNOTATION_TARGET!>@A2(3)<!> <!WRONG_ANNOTATION_TARGET!>@A2<!> <!WRONG_ANNOTATION_TARGET!>@A1(<!TOO_MANY_ARGUMENTS!>12<!>)<!> <!WRONG_ANNOTATION_TARGET!>@A2(<!ARGUMENT_TYPE_MISMATCH!>"Test"<!>)<!> T> innerFun() = 12
|
||||
}
|
||||
}
|
||||
|
||||
@Target(AnnotationTarget.TYPE)
|
||||
annotation class TA
|
||||
@Target(AnnotationTarget.TYPE_PARAMETER)
|
||||
annotation class TPA(val some: Int = 12)
|
||||
|
||||
fun <<!WRONG_ANNOTATION_TARGET!>@TA<!> @TPA(3) @TPA <!WRONG_ANNOTATION_TARGET!>@TA(<!TOO_MANY_ARGUMENTS!>12<!>)<!> @TPA(<!ARGUMENT_TYPE_MISMATCH!>"Test"<!>) T> topFunTPA() = 12
|
||||
|
||||
class SomeClassTPA {
|
||||
fun <<!WRONG_ANNOTATION_TARGET!>@TA<!> @TPA(3) @TPA <!WRONG_ANNOTATION_TARGET!>@TA(<!TOO_MANY_ARGUMENTS!>12<!>)<!> @TPA(<!ARGUMENT_TYPE_MISMATCH!>"Test"<!>) T> method() = 12
|
||||
|
||||
fun foo() {
|
||||
fun <<!WRONG_ANNOTATION_TARGET!>@TA<!> @TPA(3) @TPA <!WRONG_ANNOTATION_TARGET!>@TA(<!TOO_MANY_ARGUMENTS!>12<!>)<!> @TPA(<!ARGUMENT_TYPE_MISMATCH!>"Test"<!>) T> innerFun() = 12
|
||||
}
|
||||
}
|
||||
|
||||
+15
@@ -10,3 +10,18 @@ class SomeClass {
|
||||
fun <<!WRONG_ANNOTATION_TARGET!>@A1<!> <!WRONG_ANNOTATION_TARGET!>@A2(3)<!> <!REPEATED_ANNOTATION, WRONG_ANNOTATION_TARGET!>@A2<!> <!REPEATED_ANNOTATION, WRONG_ANNOTATION_TARGET!>@A1(<!TOO_MANY_ARGUMENTS!>12<!>)<!> <!REPEATED_ANNOTATION, WRONG_ANNOTATION_TARGET!>@A2(<!TYPE_MISMATCH!>"Test"<!>)<!> T> innerFun() = 12
|
||||
}
|
||||
}
|
||||
|
||||
@Target(AnnotationTarget.TYPE)
|
||||
annotation class TA
|
||||
@Target(AnnotationTarget.TYPE_PARAMETER)
|
||||
annotation class TPA(val some: Int = 12)
|
||||
|
||||
fun <<!WRONG_ANNOTATION_TARGET!>@TA<!> @TPA(3) <!REPEATED_ANNOTATION!>@TPA<!> <!REPEATED_ANNOTATION, WRONG_ANNOTATION_TARGET!>@TA(<!TOO_MANY_ARGUMENTS!>12<!>)<!> <!REPEATED_ANNOTATION!>@TPA(<!TYPE_MISMATCH!>"Test"<!>)<!> T> topFunTPA() = 12
|
||||
|
||||
class SomeClassTPA {
|
||||
fun <<!WRONG_ANNOTATION_TARGET!>@TA<!> @TPA(3) <!REPEATED_ANNOTATION!>@TPA<!> <!REPEATED_ANNOTATION, WRONG_ANNOTATION_TARGET!>@TA(<!TOO_MANY_ARGUMENTS!>12<!>)<!> <!REPEATED_ANNOTATION!>@TPA(<!TYPE_MISMATCH!>"Test"<!>)<!> T> method() = 12
|
||||
|
||||
fun foo() {
|
||||
fun <<!WRONG_ANNOTATION_TARGET!>@TA<!> @TPA(3) <!REPEATED_ANNOTATION!>@TPA<!> <!REPEATED_ANNOTATION, WRONG_ANNOTATION_TARGET!>@TA(<!TOO_MANY_ARGUMENTS!>12<!>)<!> <!REPEATED_ANNOTATION!>@TPA(<!TYPE_MISMATCH!>"Test"<!>)<!> T> innerFun() = 12
|
||||
}
|
||||
}
|
||||
|
||||
+26
@@ -1,6 +1,7 @@
|
||||
package
|
||||
|
||||
public fun </*0*/ @A1 @A2(some = 3) @A2 @A1 @A2(some = "Test") T> topFun(): kotlin.Int
|
||||
public fun </*0*/ @TA @TPA(some = 3) @TPA @TA @TPA(some = "Test") T> topFunTPA(): kotlin.Int
|
||||
|
||||
public final annotation class A1 : kotlin.Annotation {
|
||||
public constructor A1()
|
||||
@@ -25,3 +26,28 @@ public final class SomeClass {
|
||||
public final fun </*0*/ @A1 @A2(some = 3) @A2 @A1 @A2(some = "Test") T> method(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public final class SomeClassTPA {
|
||||
public constructor SomeClassTPA()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public final fun foo(): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public final fun </*0*/ @TA @TPA(some = 3) @TPA @TA @TPA(some = "Test") T> method(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.TYPE}) public final annotation class TA : kotlin.Annotation {
|
||||
public constructor TA()
|
||||
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.TYPE_PARAMETER}) public final annotation class TPA : kotlin.Annotation {
|
||||
public constructor TPA(/*0*/ some: kotlin.Int = ...)
|
||||
public final val some: kotlin.Int
|
||||
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
|
||||
}
|
||||
|
||||
|
||||
Generated
+6
@@ -1001,6 +1001,12 @@ public class DiagnosticTestGenerated extends AbstractDiagnosticTest {
|
||||
runTest("compiler/testData/diagnostics/tests/annotations/AnnotationForClassTypeParameter_16.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("AnnotationForClassTypeParameter_typeUseFlag.kt")
|
||||
public void testAnnotationForClassTypeParameter_typeUseFlag() throws Exception {
|
||||
runTest("compiler/testData/diagnostics/tests/annotations/AnnotationForClassTypeParameter_typeUseFlag.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("AnnotationForFunctionTypeParameter.kt")
|
||||
public void testAnnotationForFunctionTypeParameter() throws Exception {
|
||||
|
||||
@@ -26,7 +26,7 @@ public enum class AnnotationTarget {
|
||||
CLASS,
|
||||
/** Annotation class only */
|
||||
ANNOTATION_CLASS,
|
||||
/** Generic type parameter (unsupported yet) */
|
||||
/** Generic type parameter */
|
||||
TYPE_PARAMETER,
|
||||
/** Property */
|
||||
PROPERTY,
|
||||
|
||||
+5
@@ -848,6 +848,11 @@ public class DiagnosisCompilerTestFE10TestdataTestGenerated extends AbstractDiag
|
||||
runTest("compiler/testData/diagnostics/tests/annotations/AnnotationForClassTypeParameter_16.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("AnnotationForClassTypeParameter_typeUseFlag.kt")
|
||||
public void testAnnotationForClassTypeParameter_typeUseFlag() throws Exception {
|
||||
runTest("compiler/testData/diagnostics/tests/annotations/AnnotationForClassTypeParameter_typeUseFlag.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("AnnotationForFunctionTypeParameter.kt")
|
||||
public void testAnnotationForFunctionTypeParameter() throws Exception {
|
||||
runTest("compiler/testData/diagnostics/tests/annotations/AnnotationForFunctionTypeParameter.kt");
|
||||
|
||||
Reference in New Issue
Block a user