[Frontend] Provide ProjectExtensionDescriptor for DiagnosticSuppressor

`DiagnosticSuppressor` didn't contain `ProjectExtensionDescriptor`, which
  prevented usages of this extension point with API provided by
  `CompilerPluginRegistrar`

See discussion in KT-60952
This commit is contained in:
Dmitriy Novozhilov
2024-03-06 15:11:53 +02:00
committed by Space Cloud
parent 7f12af9452
commit 6740a596c7
@@ -24,6 +24,7 @@ import org.jetbrains.kotlin.descriptors.annotations.AnnotationDescriptor
import org.jetbrains.kotlin.diagnostics.AbstractKotlinSuppressCache import org.jetbrains.kotlin.diagnostics.AbstractKotlinSuppressCache
import org.jetbrains.kotlin.diagnostics.Diagnostic import org.jetbrains.kotlin.diagnostics.Diagnostic
import org.jetbrains.kotlin.diagnostics.Severity import org.jetbrains.kotlin.diagnostics.Severity
import org.jetbrains.kotlin.extensions.ProjectExtensionDescriptor
import org.jetbrains.kotlin.psi.KtAnnotated import org.jetbrains.kotlin.psi.KtAnnotated
import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.resolve.BindingContext import org.jetbrains.kotlin.resolve.BindingContext
@@ -35,15 +36,21 @@ interface DiagnosticSuppressor {
fun isSuppressed(diagnostic: Diagnostic): Boolean fun isSuppressed(diagnostic: Diagnostic): Boolean
fun isSuppressed(diagnostic: Diagnostic, bindingContext: BindingContext?): Boolean = isSuppressed(diagnostic) fun isSuppressed(diagnostic: Diagnostic, bindingContext: BindingContext?): Boolean = isSuppressed(diagnostic)
companion object { companion object : ProjectExtensionDescriptor<DiagnosticSuppressor>(
val EP_NAME: ExtensionPointName<DiagnosticSuppressor> = "org.jetbrains.kotlin.diagnosticSuppressor", DiagnosticSuppressor::class.java
ExtensionPointName.create("org.jetbrains.kotlin.diagnosticSuppressor") ) {
@Deprecated(
message = "This field is deprecated for compatibility reasons. Use ProjectExtensionDescriptor API instead",
replaceWith = ReplaceWith("DiagnosticSuppressor.extensionPointName"),
level = DeprecationLevel.WARNING
)
val EP_NAME: ExtensionPointName<DiagnosticSuppressor> = extensionPointName
} }
} }
abstract class KotlinSuppressCache : AbstractKotlinSuppressCache<PsiElement>() { abstract class KotlinSuppressCache : AbstractKotlinSuppressCache<PsiElement>() {
private val diagnosticSuppressors = ExtensionProvider.create(DiagnosticSuppressor.EP_NAME) private val diagnosticSuppressors = ExtensionProvider.create(DiagnosticSuppressor.extensionPointName)
val filter: (Diagnostic) -> Boolean = { diagnostic: Diagnostic -> val filter: (Diagnostic) -> Boolean = { diagnostic: Diagnostic ->
!isSuppressed(DiagnosticSuppressRequest(diagnostic)) !isSuppressed(DiagnosticSuppressRequest(diagnostic))