FIR: support WRONG_ANNOTATION_TARGET on expressions
This commit is contained in:
+1
-1
@@ -18,6 +18,6 @@ fun test() : Unit {
|
||||
val s = "" as Any
|
||||
("" as String?)?.length
|
||||
(data@("" as String?))?.length
|
||||
(@MustBeDocumented()( "" as String?))?.length
|
||||
(<!WRONG_ANNOTATION_TARGET!>@MustBeDocumented()<!>( "" as String?))?.length
|
||||
Unit
|
||||
}
|
||||
|
||||
@@ -33,8 +33,8 @@ fun foo(arg: Int) {
|
||||
// Function expression too
|
||||
val f = @FunAnn fun(): Int { return 42 }
|
||||
// But here, f and gav should be annotated instead
|
||||
bar(@FunAnn f)
|
||||
bar(@FunAnn ::gav)
|
||||
bar(<!WRONG_ANNOTATION_TARGET!>@FunAnn<!> f)
|
||||
bar(<!WRONG_ANNOTATION_TARGET!>@FunAnn<!> ::gav)
|
||||
// Function expression, ok
|
||||
fast(f)
|
||||
}
|
||||
|
||||
@@ -1,13 +0,0 @@
|
||||
@Target(AnnotationTarget.FUNCTION)
|
||||
annotation class FunAnn
|
||||
|
||||
@Target(AnnotationTarget.EXPRESSION)
|
||||
@Retention(AnnotationRetention.SOURCE)
|
||||
annotation class ExprAnn
|
||||
|
||||
fun foo(): Int {
|
||||
var x = 5
|
||||
@FunAnn ++x
|
||||
@ExprAnn ++x
|
||||
return x
|
||||
}
|
||||
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
@Target(AnnotationTarget.FUNCTION)
|
||||
annotation class FunAnn
|
||||
|
||||
|
||||
+1
-1
@@ -18,4 +18,4 @@
|
||||
return local
|
||||
}
|
||||
|
||||
@empty val z = @empty 0
|
||||
@empty val z = <!WRONG_ANNOTATION_TARGET!>@empty<!> 0
|
||||
|
||||
+3
-3
@@ -4,10 +4,10 @@ annotation class base
|
||||
@Retention(AnnotationRetention.SOURCE)
|
||||
annotation class special
|
||||
|
||||
fun transform(i: Int, tr: (Int) -> Int): Int = @base @special tr(@special i)
|
||||
fun transform(i: Int, tr: (Int) -> Int): Int = <!WRONG_ANNOTATION_TARGET!>@base<!> @special tr(@special i)
|
||||
|
||||
@base @special fun foo(i: Int): Int {
|
||||
val j = @base @special i + 1
|
||||
if (j == 1) return foo(@special @base 42)
|
||||
val j = <!WRONG_ANNOTATION_TARGET!>@base<!> @special i + 1
|
||||
if (j == 1) return foo(@special <!WRONG_ANNOTATION_TARGET!>@base<!> 42)
|
||||
return transform(@special j, @base @special { @special it * 2 })
|
||||
}
|
||||
|
||||
+1
-1
@@ -10,5 +10,5 @@ fun transform(i: Int, tr: (@special Int) -> Int): Int = @special tr(@special i)
|
||||
fun foo(i: Int): Int {
|
||||
val j = @special i + 1
|
||||
if (j == 1) return foo(@special 42)
|
||||
return transform(@special j, @special { i: @base Int -> @base i * 2 })
|
||||
return transform(@special j, @special { i: @base Int -> <!WRONG_ANNOTATION_TARGET!>@base<!> i * 2 })
|
||||
}
|
||||
|
||||
+1
-1
@@ -18,4 +18,4 @@
|
||||
return local
|
||||
}
|
||||
|
||||
@incorrect val z = @incorrect 0
|
||||
@incorrect val z = <!WRONG_ANNOTATION_TARGET!>@incorrect<!> 0
|
||||
|
||||
+1
-1
@@ -75,7 +75,7 @@ import test.AnnotationTargets.*
|
||||
): @fieldann @parameter Int {
|
||||
|
||||
@local @base @multiple @fieldann val j = i + 1
|
||||
@base @multiple return j
|
||||
<!WRONG_ANNOTATION_TARGET!>@base<!> <!WRONG_ANNOTATION_TARGET!>@multiple<!> return j
|
||||
}
|
||||
|
||||
@base @method @konstructor constructor(): this(0)
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
/*
|
||||
* KOTLIN DIAGNOSTICS SPEC TEST (POSITIVE)
|
||||
*
|
||||
* SPEC VERSION: 0.1-313
|
||||
* PRIMARY LINKS: expressions, when-expression -> paragraph 9 -> sentence 2
|
||||
* expressions, when-expression -> paragraph 5 -> sentence 1
|
||||
* expressions, when-expression -> paragraph 6 -> sentence 5
|
||||
* annotations, annotation-targets -> paragraph 1 -> sentence 1
|
||||
*/
|
||||
fun foo(a: Int) {
|
||||
<!WRONG_ANNOTATION_TARGET!>@ann<!>
|
||||
when (a) {
|
||||
1 -> {}
|
||||
}
|
||||
}
|
||||
|
||||
annotation class ann
|
||||
@@ -1,4 +1,3 @@
|
||||
// FIR_IDENTICAL
|
||||
/*
|
||||
* KOTLIN DIAGNOSTICS SPEC TEST (POSITIVE)
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user