Filter KtAnnotated on-the-fly diagnostic elements
Relates to #KTIJ-1760 Relates to #KT-45254
This commit is contained in:
committed by
Space
parent
cba63f2c12
commit
fbe18164b4
+5
-5
@@ -23,7 +23,7 @@ import com.intellij.util.CachedValueImpl
|
|||||||
import org.jetbrains.annotations.TestOnly
|
import org.jetbrains.annotations.TestOnly
|
||||||
import org.jetbrains.kotlin.diagnostics.Diagnostic
|
import org.jetbrains.kotlin.diagnostics.Diagnostic
|
||||||
import org.jetbrains.kotlin.diagnostics.DiagnosticSink
|
import org.jetbrains.kotlin.diagnostics.DiagnosticSink
|
||||||
import org.jetbrains.kotlin.psi.KtAnnotationEntry
|
import org.jetbrains.kotlin.psi.KtAnnotated
|
||||||
import org.jetbrains.kotlin.psi.KtStubbedPsiUtil
|
import org.jetbrains.kotlin.psi.KtStubbedPsiUtil
|
||||||
|
|
||||||
class MutableDiagnosticsWithSuppression(
|
class MutableDiagnosticsWithSuppression(
|
||||||
@@ -65,18 +65,18 @@ class MutableDiagnosticsWithSuppression(
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun report(diagnostic: Diagnostic) {
|
fun report(diagnostic: Diagnostic) {
|
||||||
onFlyDiagnosticsCallback(diagnostic)?.callback(diagnostic)
|
onTheFlyDiagnosticsCallback(diagnostic)?.callback(diagnostic)
|
||||||
|
|
||||||
diagnosticList.add(diagnostic)
|
diagnosticList.add(diagnostic)
|
||||||
modificationTracker.incModificationCount()
|
modificationTracker.incModificationCount()
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun onFlyDiagnosticsCallback(diagnostic: Diagnostic): DiagnosticSink.DiagnosticsCallback? =
|
private fun onTheFlyDiagnosticsCallback(diagnostic: Diagnostic): DiagnosticSink.DiagnosticsCallback? =
|
||||||
diagnosticsCallback.takeIf {
|
diagnosticsCallback.takeIf {
|
||||||
diagnosticsCallback != null &&
|
diagnosticsCallback != null &&
|
||||||
// Due to a potential recursion in filter.invoke (via LazyAnnotations) do not try to report
|
// Due to a potential recursion in filter.invoke (via LazyAnnotations) do not try to report
|
||||||
// diagnostic on fly if it happened in annotations
|
// diagnostic on-the-fly if it happened in annotations, and do not report any potentially suppressed elements
|
||||||
KtStubbedPsiUtil.getPsiOrStubParent(diagnostic.psiElement, KtAnnotationEntry::class.java, false) == null &&
|
KtStubbedPsiUtil.getPsiOrStubParent(diagnostic.psiElement, KtAnnotated::class.java, false) == null &&
|
||||||
suppressCache.filter.invoke(diagnostic)
|
suppressCache.filter.invoke(diagnostic)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user