[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
|
||||
|
||||
import org.jetbrains.kotlin.KtNodeTypes
|
||||
import org.jetbrains.kotlin.fir.FirFakeSourceElementKind
|
||||
import org.jetbrains.kotlin.fir.FirSourceElement
|
||||
import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext
|
||||
@@ -50,6 +51,8 @@ class ErrorNodeDiagnosticCollectorComponent(collector: AbstractDiagnosticCollect
|
||||
|
||||
override fun visitErrorNamedReference(errorNamedReference: FirErrorNamedReference, data: CheckerContext) {
|
||||
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) }
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -1,6 +1,6 @@
|
||||
// !WITH_NEW_INFERENCE
|
||||
import java.util.ArrayList
|
||||
|
||||
<!UNRESOLVED_REFERENCE!>@ArrayList<Int>(1, 1)<!> fun b() {}
|
||||
<!UNRESOLVED_REFERENCE!>@<!UNRESOLVED_REFERENCE!>Xoo<!>(<!UNRESOLVED_REFERENCE!>x<!>)<!> fun c() {}
|
||||
@ArrayList<Int>(1, 1) fun b() {}
|
||||
@<!UNRESOLVED_REFERENCE!>Xoo<!>(<!UNRESOLVED_REFERENCE!>x<!>) fun c() {}
|
||||
<!INAPPLICABLE_CANDIDATE!>@java.lang.Deprecated(<!UNRESOLVED_REFERENCE!>x<!>)<!> fun a() {}
|
||||
+2
-2
@@ -6,7 +6,7 @@ annotation class annotation
|
||||
|
||||
package test
|
||||
|
||||
<!UNRESOLVED_REFERENCE!>@test.annotation<!> class annotation
|
||||
@test.annotation class annotation
|
||||
|
||||
// FILE: other/c.kt
|
||||
|
||||
@@ -14,6 +14,6 @@ package other
|
||||
|
||||
annotation class My
|
||||
|
||||
<!UNRESOLVED_REFERENCE!>@test.annotation<!> class Your
|
||||
@test.annotation class Your
|
||||
|
||||
@My class Our
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
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 RecursivelyAnnotated(<!UNRESOLVED_REFERENCE, UNRESOLVED_REFERENCE!>@RecursivelyAnnotated(1)<!> val x: Int)
|
||||
class RecursivelyAnnotated(@RecursivelyAnnotated(1) val x: Int)
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
// !WITH_NEW_INFERENCE
|
||||
fun foo(<!UNRESOLVED_REFERENCE!>@<!UNRESOLVED_REFERENCE!>varargs<!> f : Int) {}
|
||||
fun foo(@<!UNRESOLVED_REFERENCE!>varargs<!> f : Int) {}
|
||||
|
||||
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> {
|
||||
<!UNRESOLVED_REFERENCE!>@T<!>
|
||||
@T
|
||||
fun foo() = 0
|
||||
}
|
||||
|
||||
class Bar<T : Annotation> {
|
||||
<!UNRESOLVED_REFERENCE!>@T<!>
|
||||
@T
|
||||
fun foo() = 0
|
||||
}
|
||||
|
||||
+5
-5
@@ -1,5 +1,5 @@
|
||||
<!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
|
||||
@<!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
|
||||
+1
-1
@@ -3,7 +3,7 @@
|
||||
fun f() {
|
||||
<!LOCAL_ANNOTATION_CLASS_ERROR!>annotation class Anno<!>
|
||||
|
||||
<!UNRESOLVED_REFERENCE!>@Anno<!> class Local {
|
||||
@Anno class Local {
|
||||
<!LOCAL_ANNOTATION_CLASS_ERROR!>annotation class Nested<!>
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -3,7 +3,7 @@
|
||||
fun f() {
|
||||
<!LOCAL_ANNOTATION_CLASS_ERROR!>annotation class Anno<!>
|
||||
|
||||
<!UNRESOLVED_REFERENCE!>@Anno<!> class Local {
|
||||
@Anno class Local {
|
||||
<!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
|
||||
|
||||
abstract class A() {
|
||||
|
||||
+1
-1
@@ -8,6 +8,6 @@ open class Base {
|
||||
|
||||
class Derived : Base() {
|
||||
|
||||
<!UNRESOLVED_REFERENCE!>@<!UNRESOLVED_REFERENCE!>Foo<!>
|
||||
@<!UNRESOLVED_REFERENCE!>Foo<!>
|
||||
fun foo() = 42
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user