[FIR] Forbid all use-site targets of FirTypeRef annotations

This commit is contained in:
Nikolay Lunyak
2023-03-06 10:27:47 +02:00
committed by Space Team
parent 93ba0c3e70
commit 1378d730d6
13 changed files with 39 additions and 49 deletions
@@ -6,6 +6,6 @@ fun test1(<!WRONG_ANNOTATION_TARGET_WITH_USE_SITE_TARGET!>@<!INAPPLICABLE_FILE_T
<!WRONG_ANNOTATION_TARGET_WITH_USE_SITE_TARGET!>@<!INAPPLICABLE_FILE_TARGET!>file<!> <!SYNTAX!>@<!>Suppress("")<!>
fun test2() {}
class OnType(x: @file<!SYNTAX!><!> Suppress("") Int)
class OnType(x: <!WRONG_ANNOTATION_TARGET_WITH_USE_SITE_TARGET!>@file<!SYNTAX!><!> Suppress("")<!> Int)
fun @file : Suppress("") Int.test3() {}
fun <!WRONG_ANNOTATION_TARGET_WITH_USE_SITE_TARGET!>@file : Suppress("")<!> Int.test3() {}
@@ -6,6 +6,6 @@ fun test1(<!WRONG_ANNOTATION_TARGET_WITH_USE_SITE_TARGET!>@<!INAPPLICABLE_FILE_T
<!WRONG_ANNOTATION_TARGET_WITH_USE_SITE_TARGET!>@<!INAPPLICABLE_FILE_TARGET!>file<!> <!SYNTAX!>@<!>Suppress("")<!>
fun test2() {}
class OnType(x: @file<!SYNTAX!><!> Suppress("") Int)
class OnType(x: <!WRONG_ANNOTATION_TARGET_WITH_USE_SITE_TARGET!>@file<!SYNTAX!><!> Suppress("")<!> Int)
fun @file : Suppress("") Int.test3() {}
fun <!WRONG_ANNOTATION_TARGET_WITH_USE_SITE_TARGET!>@file : Suppress("")<!> Int.test3() {}
@@ -0,0 +1,10 @@
// !LANGUAGE: -ProhibitUseSiteTargetAnnotationsOnSuperTypes
interface Foo
@Target(AnnotationTarget.TYPE)
annotation class Ann
class E : <!ANNOTATION_ON_SUPERCLASS_WARNING, WRONG_ANNOTATION_TARGET_WITH_USE_SITE_TARGET!>@field:Ann<!> <!ANNOTATION_ON_SUPERCLASS_WARNING, WRONG_ANNOTATION_TARGET_WITH_USE_SITE_TARGET!>@get:Ann<!> <!ANNOTATION_ON_SUPERCLASS_WARNING, WRONG_ANNOTATION_TARGET_WITH_USE_SITE_TARGET!>@set:Ann<!> <!ANNOTATION_ON_SUPERCLASS_WARNING, WRONG_ANNOTATION_TARGET_WITH_USE_SITE_TARGET!>@setparam:Ann<!> Foo
interface G : @Ann Foo
@@ -1,4 +1,3 @@
// FIR_IDENTICAL
// !LANGUAGE: -ProhibitUseSiteTargetAnnotationsOnSuperTypes
interface Foo
@@ -0,0 +1,10 @@
// !LANGUAGE: +ProhibitUseSiteTargetAnnotationsOnSuperTypes
interface Foo
@Target(AnnotationTarget.TYPE)
annotation class Ann
class E : <!ANNOTATION_ON_SUPERCLASS_ERROR, WRONG_ANNOTATION_TARGET_WITH_USE_SITE_TARGET!>@field:Ann<!> <!ANNOTATION_ON_SUPERCLASS_ERROR, WRONG_ANNOTATION_TARGET_WITH_USE_SITE_TARGET!>@get:Ann<!> <!ANNOTATION_ON_SUPERCLASS_ERROR, WRONG_ANNOTATION_TARGET_WITH_USE_SITE_TARGET!>@set:Ann<!> <!ANNOTATION_ON_SUPERCLASS_ERROR, WRONG_ANNOTATION_TARGET_WITH_USE_SITE_TARGET!>@setparam:Ann<!> Foo
interface G : @Ann Foo
@@ -1,4 +1,3 @@
// FIR_IDENTICAL
// !LANGUAGE: +ProhibitUseSiteTargetAnnotationsOnSuperTypes
interface Foo
@@ -1,13 +0,0 @@
// !LANGUAGE: +RestrictionOfWrongAnnotationsWithUseSiteTargetsOnTypes
// !DIAGNOSTICS: -UNUSED_PARAMETER
fun test1(i: @setparam:Suppress Int) {}
fun test2(i: @param:Suppress Int) {}
fun test3(i: <!WRONG_ANNOTATION_TARGET_WITH_USE_SITE_TARGET!>@receiver:Suppress<!> Int) {}
fun test4(): @setparam:Suppress Int = TODO()
fun test5(i: (@setparam:Suppress Int) -> Unit) {}
fun ((@setparam:Suppress Int) -> Unit).test6() {}
fun test7(): ((@setparam:Suppress Int) -> Unit) = TODO()
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// !LANGUAGE: +RestrictionOfWrongAnnotationsWithUseSiteTargetsOnTypes
// !DIAGNOSTICS: -UNUSED_PARAMETER
@@ -1,13 +0,0 @@
// !LANGUAGE: +RestrictionOfWrongAnnotationsWithUseSiteTargetsOnTypes
// !DIAGNOSTICS: -UNUSED_PARAMETER
fun test1(i: @setparam:Suppress Int) {}
fun test2(i: @param:Suppress Int) {}
fun test3(i: <!WRONG_ANNOTATION_TARGET_WITH_USE_SITE_TARGET!>@receiver:Suppress<!> Int) {}
fun test4(): @setparam:Suppress Int = TODO()
fun test5(i: (@setparam:Suppress Int) -> Unit) {}
fun ((@setparam:Suppress Int) -> Unit).test6() {}
fun test7(): ((@setparam:Suppress Int) -> Unit) = TODO()
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// !LANGUAGE: +RestrictionOfWrongAnnotationsWithUseSiteTargetsOnTypes
// !DIAGNOSTICS: -UNUSED_PARAMETER
@@ -1,13 +1,13 @@
// !LANGUAGE: -RestrictionOfWrongAnnotationsWithUseSiteTargetsOnTypes
// !DIAGNOSTICS: -UNUSED_PARAMETER
fun test1(i: @setparam:Suppress Int) {}
fun test2(i: @param:Suppress Int) {}
fun test1(i: <!WRONG_ANNOTATION_TARGET_WITH_USE_SITE_TARGET!>@setparam:Suppress<!> Int) {}
fun test2(i: <!WRONG_ANNOTATION_TARGET_WITH_USE_SITE_TARGET!>@param:Suppress<!> Int) {}
fun test3(i: <!WRONG_ANNOTATION_TARGET_WITH_USE_SITE_TARGET!>@receiver:Suppress<!> Int) {}
fun test4(): @setparam:Suppress Int = TODO()
fun test5(i: (@setparam:Suppress Int) -> Unit) {}
fun test4(): <!WRONG_ANNOTATION_TARGET_WITH_USE_SITE_TARGET!>@setparam:Suppress<!> Int = TODO()
fun test5(i: (<!WRONG_ANNOTATION_TARGET_WITH_USE_SITE_TARGET!>@setparam:Suppress<!> Int) -> Unit) {}
fun ((@setparam:Suppress Int) -> Unit).test6() {}
fun ((<!WRONG_ANNOTATION_TARGET_WITH_USE_SITE_TARGET!>@setparam:Suppress<!> Int) -> Unit).test6() {}
fun test7(): ((@setparam:Suppress Int) -> Unit) = TODO()
fun test7(): ((<!WRONG_ANNOTATION_TARGET_WITH_USE_SITE_TARGET!>@setparam:Suppress<!> Int) -> Unit) = TODO()