[FIR] Resolve annotations as calls
This commit is contained in:
committed by
Mikhail Glukhikh
parent
bc1fa8ed7f
commit
721b9b4d8c
+3
-3
@@ -1,6 +1,6 @@
|
||||
// !WITH_NEW_INFERENCE
|
||||
import java.util.ArrayList
|
||||
|
||||
@ArrayList<Int>(1, 1) fun b() {}
|
||||
@<!UNRESOLVED_REFERENCE!>Xoo<!>(<!UNRESOLVED_REFERENCE!>x<!>) fun c() {}
|
||||
@java.lang.Deprecated(x) fun a() {}
|
||||
<!UNRESOLVED_REFERENCE!>@ArrayList<Int>(1, 1)<!> fun b() {}
|
||||
<!UNRESOLVED_REFERENCE!>@<!UNRESOLVED_REFERENCE!>Xoo<!>(<!UNRESOLVED_REFERENCE!>x<!>)<!> fun c() {}
|
||||
<!INAPPLICABLE_CANDIDATE!>@java.lang.Deprecated(<!UNRESOLVED_REFERENCE!>x<!>)<!> fun a() {}
|
||||
+4
-4
@@ -1,10 +1,10 @@
|
||||
annotation class A1
|
||||
annotation class A2(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<@A1 @A2(3) @A2 <!INAPPLICABLE_CANDIDATE!>@A1(12)<!> <!INAPPLICABLE_CANDIDATE!>@A2("Test")<!> T> {
|
||||
class InnerClass<@A1 @A2(3) @A2 <!INAPPLICABLE_CANDIDATE!>@A1(12)<!> <!INAPPLICABLE_CANDIDATE!>@A2("Test")<!> T> {
|
||||
fun test() {
|
||||
class InFun<@A1 @A2(3) @A2 @A1(12) @A2("Test") T>
|
||||
class InFun<@A1 @A2(3) @A2 <!INAPPLICABLE_CANDIDATE!>@A1(12)<!> <!INAPPLICABLE_CANDIDATE!>@A2("Test")<!> T>
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+4
-4
@@ -1,12 +1,12 @@
|
||||
annotation class A1
|
||||
annotation class A2(val some: Int = 12)
|
||||
|
||||
fun <@A1 @A2(3) @A2 @A1(12) @A2("Test") T> topFun() = 12
|
||||
fun <@A1 @A2(3) @A2 <!INAPPLICABLE_CANDIDATE!>@A1(12)<!> <!INAPPLICABLE_CANDIDATE!>@A2("Test")<!> T> topFun() = 12
|
||||
|
||||
class SomeClass {
|
||||
fun <@A1 @A2(3) @A2 @A1(12) @A2("Test") T> method() = 12
|
||||
fun <@A1 @A2(3) @A2 <!INAPPLICABLE_CANDIDATE!>@A1(12)<!> <!INAPPLICABLE_CANDIDATE!>@A2("Test")<!> T> method() = 12
|
||||
|
||||
fun foo() {
|
||||
fun <@A1 @A2(3) @A2 @A1(12) @A2("Test") T> innerFun() = 12
|
||||
fun <@A1 @A2(3) @A2 <!INAPPLICABLE_CANDIDATE!>@A1(12)<!> <!INAPPLICABLE_CANDIDATE!>@A2("Test")<!> T> innerFun() = 12
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+3
-3
@@ -6,7 +6,7 @@ annotation class annotation
|
||||
|
||||
package test
|
||||
|
||||
@test.annotation class annotation
|
||||
<!UNRESOLVED_REFERENCE!>@test.annotation<!> class annotation
|
||||
|
||||
// FILE: other/c.kt
|
||||
|
||||
@@ -14,6 +14,6 @@ package other
|
||||
|
||||
annotation class My
|
||||
|
||||
@test.annotation class Your
|
||||
<!UNRESOLVED_REFERENCE!>@test.annotation<!> class Your
|
||||
|
||||
@My class Our
|
||||
@My class Our
|
||||
|
||||
+3
-3
@@ -3,12 +3,12 @@
|
||||
annotation class A1
|
||||
annotation class A2(val some: Int = 12)
|
||||
|
||||
val <@A1 @A2(3) @A2 @A1(12) @A2("Test") T> T.topProp: Int get() = 12
|
||||
val <@A1 @A2(3) @A2 <!INAPPLICABLE_CANDIDATE!>@A1(12)<!> <!INAPPLICABLE_CANDIDATE!>@A2("Test")<!> T> T.topProp: Int get() = 12
|
||||
|
||||
class SomeClass {
|
||||
val <@A1 @A2(3) @A2 @A1(12) @A2("Test") T> T.field: Int get() = 12
|
||||
val <@A1 @A2(3) @A2 <!INAPPLICABLE_CANDIDATE!>@A1(12)<!> <!INAPPLICABLE_CANDIDATE!>@A2("Test")<!> T> T.field: Int get() = 12
|
||||
|
||||
fun foo() {
|
||||
val <@A1 @A2(3) @A2 @A1(12) @A2("Test") T> localVal = 12
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@ annotation class my1(val i : Int)
|
||||
annotation class my2(val i : Int = 0)
|
||||
|
||||
@my fun foo() {}
|
||||
@my1 fun foo2() {}
|
||||
<!INAPPLICABLE_CANDIDATE!>@my1<!> fun foo2() {}
|
||||
@my1(2) fun foo3() {}
|
||||
@my2() fun foo4() {}
|
||||
@my2 fun foo41() {}
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
class Foo
|
||||
|
||||
@Foo class Bar
|
||||
<!UNRESOLVED_REFERENCE!>@Foo<!> class Bar
|
||||
|
||||
Vendored
+1
-1
@@ -1,2 +1,2 @@
|
||||
// Class constructor parameter CAN be recursively annotated
|
||||
class RecursivelyAnnotated(@RecursivelyAnnotated(1) val x: Int)
|
||||
class RecursivelyAnnotated(<!UNRESOLVED_REFERENCE, UNRESOLVED_REFERENCE!>@RecursivelyAnnotated(1)<!> val x: Int)
|
||||
|
||||
+2
-2
@@ -1,8 +1,8 @@
|
||||
package test
|
||||
|
||||
@BadAnnotation(1)
|
||||
<!INAPPLICABLE_CANDIDATE!>@BadAnnotation(1)<!>
|
||||
object SomeObject
|
||||
|
||||
val some = SomeObject
|
||||
|
||||
annotation class BadAnnotation(val s: String)
|
||||
annotation class BadAnnotation(val s: String)
|
||||
|
||||
+2
-2
@@ -11,5 +11,5 @@ enum class MyEnum {
|
||||
A
|
||||
}
|
||||
|
||||
@AnnE(Test())
|
||||
class Test2
|
||||
<!INAPPLICABLE_CANDIDATE!>@AnnE(Test())<!>
|
||||
class Test2
|
||||
|
||||
+2
-2
@@ -11,5 +11,5 @@ enum class MyEnum {
|
||||
A
|
||||
}
|
||||
|
||||
@AnnE(Test())
|
||||
class Test2
|
||||
<!INAPPLICABLE_CANDIDATE!>@AnnE(Test())<!>
|
||||
class Test2
|
||||
|
||||
+1
-1
@@ -13,7 +13,7 @@ fun foo() {
|
||||
return@l1 103
|
||||
}
|
||||
|
||||
bar @Ann("") {
|
||||
bar <!INAPPLICABLE_CANDIDATE!>@Ann("")<!> {
|
||||
104
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@ annotation class Ann(val x: Int = 6)
|
||||
|
||||
@Ann(1) @Ann(2) @Ann(3) private class A @Ann constructor() {
|
||||
@Ann(x = 5) fun foo() {
|
||||
1 + @Ann(1) 1 * @Ann("") 6
|
||||
1 + @Ann(1) 1 * <!INAPPLICABLE_CANDIDATE!>@Ann("")<!> 6
|
||||
|
||||
@Ann fun local() {}
|
||||
}
|
||||
|
||||
+2
-2
@@ -2,9 +2,9 @@
|
||||
|
||||
import java.lang.annotation.Repeatable
|
||||
|
||||
@java.lang.annotation.Repeatable(Annotations::class) annotation class RepAnn
|
||||
<!INAPPLICABLE_CANDIDATE!>@java.lang.annotation.Repeatable(Annotations::class)<!> annotation class RepAnn
|
||||
|
||||
@Repeatable(OtherAnnotations::class) annotation class OtherAnn
|
||||
<!INAPPLICABLE_CANDIDATE!>@Repeatable(OtherAnnotations::class)<!> annotation class OtherAnn
|
||||
|
||||
annotation class Annotations(vararg val value: RepAnn)
|
||||
|
||||
|
||||
+11
-11
@@ -3,36 +3,36 @@ package test
|
||||
|
||||
import kotlin.internal.RequireKotlin
|
||||
|
||||
@RequireKotlin("")
|
||||
<!HIDDEN!>@RequireKotlin("")<!>
|
||||
fun f01() {}
|
||||
|
||||
@RequireKotlin("x")
|
||||
<!HIDDEN!>@RequireKotlin("x")<!>
|
||||
fun f02() {}
|
||||
|
||||
@RequireKotlin("1")
|
||||
<!HIDDEN!>@RequireKotlin("1")<!>
|
||||
fun f03() {}
|
||||
|
||||
@RequireKotlin("1.0-beta")
|
||||
<!HIDDEN!>@RequireKotlin("1.0-beta")<!>
|
||||
fun f04() {}
|
||||
|
||||
@RequireKotlin("1.1.0-dev-1111")
|
||||
<!HIDDEN!>@RequireKotlin("1.1.0-dev-1111")<!>
|
||||
fun f05() {}
|
||||
|
||||
@RequireKotlin("1.5.3.7")
|
||||
<!HIDDEN!>@RequireKotlin("1.5.3.7")<!>
|
||||
fun f06() {}
|
||||
|
||||
@RequireKotlin("1..0")
|
||||
<!HIDDEN!>@RequireKotlin("1..0")<!>
|
||||
fun f07() {}
|
||||
|
||||
@RequireKotlin(" 1.0")
|
||||
<!HIDDEN!>@RequireKotlin(" 1.0")<!>
|
||||
fun f08() {}
|
||||
|
||||
|
||||
@RequireKotlin("1.1")
|
||||
<!HIDDEN!>@RequireKotlin("1.1")<!>
|
||||
fun ok1() {}
|
||||
|
||||
@RequireKotlin("1.1.0")
|
||||
<!HIDDEN!>@RequireKotlin("1.1.0")<!>
|
||||
fun ok2() {}
|
||||
|
||||
@RequireKotlin("0.0.0")
|
||||
<!HIDDEN!>@RequireKotlin("0.0.0")<!>
|
||||
fun ok3() {}
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
// !WITH_NEW_INFERENCE
|
||||
fun foo(@<!UNRESOLVED_REFERENCE!>varargs<!> f : Int) {}
|
||||
fun foo(<!UNRESOLVED_REFERENCE!>@<!UNRESOLVED_REFERENCE!>varargs<!> f : Int) {}
|
||||
|
||||
var bar : Int = 1
|
||||
set(@<!UNRESOLVED_REFERENCE!>varargs<!> v) {}
|
||||
set(<!UNRESOLVED_REFERENCE!>@<!UNRESOLVED_REFERENCE!>varargs<!> v) {}
|
||||
|
||||
val x : (Int) -> Int = {@<!UNRESOLVED_REFERENCE!>varargs<!> x <!SYNTAX!>: Int -> x<!>}
|
||||
val x : (Int) -> Int = {<!UNRESOLVED_REFERENCE!>@<!UNRESOLVED_REFERENCE!>varargs<!> x <!SYNTAX!>: Int -> x<!>}
|
||||
|
||||
class Hello(@<!UNRESOLVED_REFERENCE!>varargs<!> args: Any) {
|
||||
}
|
||||
class Hello(<!UNRESOLVED_REFERENCE!>@<!UNRESOLVED_REFERENCE!>varargs<!> args: Any) {
|
||||
}
|
||||
|
||||
+3
-3
@@ -1,9 +1,9 @@
|
||||
class Foo<T> {
|
||||
@T
|
||||
<!UNRESOLVED_REFERENCE!>@T<!>
|
||||
fun foo() = 0
|
||||
}
|
||||
|
||||
class Bar<T : Annotation> {
|
||||
@T
|
||||
<!UNRESOLVED_REFERENCE!>@T<!>
|
||||
fun foo() = 0
|
||||
}
|
||||
}
|
||||
|
||||
+5
-5
@@ -1,5 +1,5 @@
|
||||
@<!UNRESOLVED_REFERENCE!>Ann<!> class A
|
||||
@<!UNRESOLVED_REFERENCE!>Ann<!> class B
|
||||
@<!UNRESOLVED_REFERENCE!>Ann<!>(1) class C
|
||||
@<!UNRESOLVED_REFERENCE!>kotlin.Ann<!>(1) class D
|
||||
@<!UNRESOLVED_REFERENCE!>kotlin.annotation.Ann<!>(1) class E
|
||||
<!UNRESOLVED_REFERENCE!>@<!UNRESOLVED_REFERENCE!>Ann<!> class A
|
||||
<!UNRESOLVED_REFERENCE!>@<!UNRESOLVED_REFERENCE!>Ann<!> class B
|
||||
<!UNRESOLVED_REFERENCE!>@<!UNRESOLVED_REFERENCE!>Ann<!>(1)<!> class C
|
||||
<!UNRESOLVED_REFERENCE!>@<!UNRESOLVED_REFERENCE!>kotlin.Ann<!>(1)<!> class D
|
||||
<!UNRESOLVED_REFERENCE!>@<!UNRESOLVED_REFERENCE!>kotlin.annotation.Ann<!>(1)<!> class E
|
||||
Reference in New Issue
Block a user