[FIR] Don't report duplicated UNRESOLVED_REFERENCE on annotation entries
This commit is contained in:
+3
@@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.fir.analysis.collectors.components
|
package org.jetbrains.kotlin.fir.analysis.collectors.components
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.KtNodeTypes
|
||||||
import org.jetbrains.kotlin.fir.FirFakeSourceElementKind
|
import org.jetbrains.kotlin.fir.FirFakeSourceElementKind
|
||||||
import org.jetbrains.kotlin.fir.FirSourceElement
|
import org.jetbrains.kotlin.fir.FirSourceElement
|
||||||
import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext
|
import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext
|
||||||
@@ -50,6 +51,8 @@ class ErrorNodeDiagnosticCollectorComponent(collector: AbstractDiagnosticCollect
|
|||||||
|
|
||||||
override fun visitErrorNamedReference(errorNamedReference: FirErrorNamedReference, data: CheckerContext) {
|
override fun visitErrorNamedReference(errorNamedReference: FirErrorNamedReference, data: CheckerContext) {
|
||||||
val source = errorNamedReference.source ?: return
|
val source = errorNamedReference.source ?: return
|
||||||
|
// Don't report duplicated unresolved reference on annotation entry (already reported on its type)
|
||||||
|
if (source.elementType == KtNodeTypes.ANNOTATION_ENTRY && errorNamedReference.diagnostic is ConeUnresolvedNameError) return
|
||||||
runCheck { reportFirDiagnostic(errorNamedReference.diagnostic, source, it) }
|
runCheck { reportFirDiagnostic(errorNamedReference.diagnostic, source, it) }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -1,6 +1,6 @@
|
|||||||
// !WITH_NEW_INFERENCE
|
// !WITH_NEW_INFERENCE
|
||||||
import java.util.ArrayList
|
import java.util.ArrayList
|
||||||
|
|
||||||
<!UNRESOLVED_REFERENCE!>@ArrayList<Int>(1, 1)<!> fun b() {}
|
@ArrayList<Int>(1, 1) fun b() {}
|
||||||
<!UNRESOLVED_REFERENCE!>@<!UNRESOLVED_REFERENCE!>Xoo<!>(<!UNRESOLVED_REFERENCE!>x<!>)<!> fun c() {}
|
@<!UNRESOLVED_REFERENCE!>Xoo<!>(<!UNRESOLVED_REFERENCE!>x<!>) fun c() {}
|
||||||
<!INAPPLICABLE_CANDIDATE!>@java.lang.Deprecated(<!UNRESOLVED_REFERENCE!>x<!>)<!> fun a() {}
|
<!INAPPLICABLE_CANDIDATE!>@java.lang.Deprecated(<!UNRESOLVED_REFERENCE!>x<!>)<!> fun a() {}
|
||||||
+2
-2
@@ -6,7 +6,7 @@ annotation class annotation
|
|||||||
|
|
||||||
package test
|
package test
|
||||||
|
|
||||||
<!UNRESOLVED_REFERENCE!>@test.annotation<!> class annotation
|
@test.annotation class annotation
|
||||||
|
|
||||||
// FILE: other/c.kt
|
// FILE: other/c.kt
|
||||||
|
|
||||||
@@ -14,6 +14,6 @@ package other
|
|||||||
|
|
||||||
annotation class My
|
annotation class My
|
||||||
|
|
||||||
<!UNRESOLVED_REFERENCE!>@test.annotation<!> class Your
|
@test.annotation class Your
|
||||||
|
|
||||||
@My class Our
|
@My class Our
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
class Foo
|
class Foo
|
||||||
|
|
||||||
<!UNRESOLVED_REFERENCE!>@Foo<!> class Bar
|
@Foo class Bar
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1,2 +1,2 @@
|
|||||||
// Class constructor parameter CAN be recursively annotated
|
// Class constructor parameter CAN be recursively annotated
|
||||||
class RecursivelyAnnotated(<!UNRESOLVED_REFERENCE, UNRESOLVED_REFERENCE!>@RecursivelyAnnotated(1)<!> val x: Int)
|
class RecursivelyAnnotated(@RecursivelyAnnotated(1) val x: Int)
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
// !WITH_NEW_INFERENCE
|
// !WITH_NEW_INFERENCE
|
||||||
fun foo(<!UNRESOLVED_REFERENCE!>@<!UNRESOLVED_REFERENCE!>varargs<!> f : Int) {}
|
fun foo(@<!UNRESOLVED_REFERENCE!>varargs<!> f : Int) {}
|
||||||
|
|
||||||
var bar : Int = 1
|
var bar : Int = 1
|
||||||
set(<!UNRESOLVED_REFERENCE!>@<!UNRESOLVED_REFERENCE!>varargs<!> v) {}
|
set(@<!UNRESOLVED_REFERENCE!>varargs<!> v) {}
|
||||||
|
|
||||||
val x : (Int) -> Int = {<!UNRESOLVED_REFERENCE!>@<!UNRESOLVED_REFERENCE!>varargs<!> x <!SYNTAX!>: Int -> x<!>}
|
val x : (Int) -> Int = {@<!UNRESOLVED_REFERENCE!>varargs<!> x <!SYNTAX!>: Int -> x<!>}
|
||||||
|
|
||||||
class Hello(<!UNRESOLVED_REFERENCE!>@<!UNRESOLVED_REFERENCE!>varargs<!> args: Any) {
|
class Hello(@<!UNRESOLVED_REFERENCE!>varargs<!> args: Any) {
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -1,9 +1,9 @@
|
|||||||
class Foo<T> {
|
class Foo<T> {
|
||||||
<!UNRESOLVED_REFERENCE!>@T<!>
|
@T
|
||||||
fun foo() = 0
|
fun foo() = 0
|
||||||
}
|
}
|
||||||
|
|
||||||
class Bar<T : Annotation> {
|
class Bar<T : Annotation> {
|
||||||
<!UNRESOLVED_REFERENCE!>@T<!>
|
@T
|
||||||
fun foo() = 0
|
fun foo() = 0
|
||||||
}
|
}
|
||||||
|
|||||||
+5
-5
@@ -1,5 +1,5 @@
|
|||||||
<!UNRESOLVED_REFERENCE!>@<!UNRESOLVED_REFERENCE!>Ann<!> class A
|
@<!UNRESOLVED_REFERENCE!>Ann<!> class A
|
||||||
<!UNRESOLVED_REFERENCE!>@<!UNRESOLVED_REFERENCE!>Ann<!> class B
|
@<!UNRESOLVED_REFERENCE!>Ann<!> class B
|
||||||
<!UNRESOLVED_REFERENCE!>@<!UNRESOLVED_REFERENCE!>Ann<!>(1)<!> class C
|
@<!UNRESOLVED_REFERENCE!>Ann<!>(1) class C
|
||||||
<!UNRESOLVED_REFERENCE!>@<!UNRESOLVED_REFERENCE!>kotlin.Ann<!>(1)<!> class D
|
@<!UNRESOLVED_REFERENCE!>kotlin.Ann<!>(1) class D
|
||||||
<!UNRESOLVED_REFERENCE!>@<!UNRESOLVED_REFERENCE!>kotlin.annotation.Ann<!>(1)<!> class E
|
@<!UNRESOLVED_REFERENCE!>kotlin.annotation.Ann<!>(1) class E
|
||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
fun f() {
|
fun f() {
|
||||||
<!LOCAL_ANNOTATION_CLASS_ERROR!>annotation class Anno<!>
|
<!LOCAL_ANNOTATION_CLASS_ERROR!>annotation class Anno<!>
|
||||||
|
|
||||||
<!UNRESOLVED_REFERENCE!>@Anno<!> class Local {
|
@Anno class Local {
|
||||||
<!LOCAL_ANNOTATION_CLASS_ERROR!>annotation class Nested<!>
|
<!LOCAL_ANNOTATION_CLASS_ERROR!>annotation class Nested<!>
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
fun f() {
|
fun f() {
|
||||||
<!LOCAL_ANNOTATION_CLASS_ERROR!>annotation class Anno<!>
|
<!LOCAL_ANNOTATION_CLASS_ERROR!>annotation class Anno<!>
|
||||||
|
|
||||||
<!UNRESOLVED_REFERENCE!>@Anno<!> class Local {
|
@Anno class Local {
|
||||||
<!LOCAL_ANNOTATION_CLASS_ERROR!>annotation class Nested<!>
|
<!LOCAL_ANNOTATION_CLASS_ERROR!>annotation class Nested<!>
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
<!UNRESOLVED_REFERENCE!>@<!UNRESOLVED_REFERENCE!><!SYNTAX!><!>myAnnotation<!> public
|
@<!UNRESOLVED_REFERENCE!><!SYNTAX!><!>myAnnotation<!> public
|
||||||
package illegal_modifiers
|
package illegal_modifiers
|
||||||
|
|
||||||
abstract class A() {
|
abstract class A() {
|
||||||
|
|||||||
+1
-1
@@ -8,6 +8,6 @@ open class Base {
|
|||||||
|
|
||||||
class Derived : Base() {
|
class Derived : Base() {
|
||||||
|
|
||||||
<!UNRESOLVED_REFERENCE!>@<!UNRESOLVED_REFERENCE!>Foo<!>
|
@<!UNRESOLVED_REFERENCE!>Foo<!>
|
||||||
fun foo() = 42
|
fun foo() = 42
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user