Extract mutable diagnostic context to separate interface

This commit is contained in:
Ilya Chernikov
2021-09-28 11:07:32 +02:00
parent 9e60c70db7
commit 21ea92cd4a
3 changed files with 14 additions and 12 deletions
@@ -6,12 +6,12 @@
package org.jetbrains.kotlin.fir.analysis.checkers.context package org.jetbrains.kotlin.fir.analysis.checkers.context
import org.jetbrains.kotlin.config.LanguageVersionSettings import org.jetbrains.kotlin.config.LanguageVersionSettings
import org.jetbrains.kotlin.diagnostics.KtDiagnostic
import org.jetbrains.kotlin.diagnostics.MutableDiagnosticContext
import org.jetbrains.kotlin.diagnostics.Severity import org.jetbrains.kotlin.diagnostics.Severity
import org.jetbrains.kotlin.fir.FirAnnotationContainer import org.jetbrains.kotlin.fir.FirAnnotationContainer
import org.jetbrains.kotlin.fir.FirElement import org.jetbrains.kotlin.fir.FirElement
import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.diagnostics.DiagnosticContext
import org.jetbrains.kotlin.diagnostics.KtDiagnostic
import org.jetbrains.kotlin.fir.declarations.FirDeclaration import org.jetbrains.kotlin.fir.declarations.FirDeclaration
import org.jetbrains.kotlin.fir.expressions.FirGetClassCall import org.jetbrains.kotlin.fir.expressions.FirGetClassCall
import org.jetbrains.kotlin.fir.expressions.FirStatement import org.jetbrains.kotlin.fir.expressions.FirStatement
@@ -22,7 +22,7 @@ import org.jetbrains.kotlin.fir.resolve.calls.ImplicitReceiverValue
import org.jetbrains.kotlin.fir.resolve.transformers.ReturnTypeCalculator import org.jetbrains.kotlin.fir.resolve.transformers.ReturnTypeCalculator
import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.name.Name
abstract class CheckerContext : DiagnosticContext { abstract class CheckerContext : MutableDiagnosticContext() {
// Services // Services
abstract val sessionHolder: SessionHolder abstract val sessionHolder: SessionHolder
abstract val returnTypeCalculator: ReturnTypeCalculator abstract val returnTypeCalculator: ReturnTypeCalculator
@@ -12,7 +12,7 @@ import org.jetbrains.kotlin.fir.analysis.collectors.AbstractDiagnosticCollector
fun DiagnosticReporter.reportOnWithSuppression( fun DiagnosticReporter.reportOnWithSuppression(
element: FirAnnotationContainer, element: FirAnnotationContainer,
factory: KtDiagnosticFactory0, factory: KtDiagnosticFactory0,
context: DiagnosticContext, context: MutableDiagnosticContext,
positioningStrategy: SourceElementPositioningStrategy? = null positioningStrategy: SourceElementPositioningStrategy? = null
) { ) {
withSuppressedDiagnostics(element, context) { withSuppressedDiagnostics(element, context) {
@@ -24,7 +24,7 @@ fun <A : Any> DiagnosticReporter.reportOnWithSuppression(
element: FirAnnotationContainer, element: FirAnnotationContainer,
factory: KtDiagnosticFactory1<A>, factory: KtDiagnosticFactory1<A>,
a: A, a: A,
context: DiagnosticContext, context: MutableDiagnosticContext,
positioningStrategy: SourceElementPositioningStrategy? = null positioningStrategy: SourceElementPositioningStrategy? = null
) { ) {
withSuppressedDiagnostics(element, context) { withSuppressedDiagnostics(element, context) {
@@ -37,7 +37,7 @@ fun <A : Any, B : Any> DiagnosticReporter.reportOnWithSuppression(
factory: KtDiagnosticFactory2<A, B>, factory: KtDiagnosticFactory2<A, B>,
a: A, a: A,
b: B, b: B,
context: DiagnosticContext, context: MutableDiagnosticContext,
positioningStrategy: SourceElementPositioningStrategy? = null positioningStrategy: SourceElementPositioningStrategy? = null
) { ) {
withSuppressedDiagnostics(element, context) { withSuppressedDiagnostics(element, context) {
@@ -51,7 +51,7 @@ fun <A : Any, B : Any, C : Any> DiagnosticReporter.reportOnWithSuppression(
a: A, a: A,
b: B, b: B,
c: C, c: C,
context: DiagnosticContext, context: MutableDiagnosticContext,
positioningStrategy: SourceElementPositioningStrategy? = null positioningStrategy: SourceElementPositioningStrategy? = null
) { ) {
withSuppressedDiagnostics(element, context) { withSuppressedDiagnostics(element, context) {
@@ -66,7 +66,7 @@ fun <A : Any, B : Any, C : Any, D : Any> DiagnosticReporter.reportOnWithSuppress
b: B, b: B,
c: C, c: C,
d: D, d: D,
context: DiagnosticContext, context: MutableDiagnosticContext,
positioningStrategy: SourceElementPositioningStrategy? = null positioningStrategy: SourceElementPositioningStrategy? = null
) { ) {
withSuppressedDiagnostics(element, context) { withSuppressedDiagnostics(element, context) {
@@ -74,7 +74,7 @@ fun <A : Any, B : Any, C : Any, D : Any> DiagnosticReporter.reportOnWithSuppress
} }
} }
inline fun <reified C : DiagnosticContext> withSuppressedDiagnostics( inline fun <reified C : MutableDiagnosticContext> withSuppressedDiagnostics(
annotationContainer: FirAnnotationContainer, annotationContainer: FirAnnotationContainer,
context: C, context: C,
f: (C) -> Unit f: (C) -> Unit
@@ -10,14 +10,16 @@ import org.jetbrains.kotlin.config.LanguageVersionSettings
interface DiagnosticContext { interface DiagnosticContext {
fun isDiagnosticSuppressed(diagnostic: KtDiagnostic): Boolean fun isDiagnosticSuppressed(diagnostic: KtDiagnostic): Boolean
fun addSuppressedDiagnostics( val languageVersionSettings: LanguageVersionSettings
}
abstract class MutableDiagnosticContext : DiagnosticContext {
abstract fun addSuppressedDiagnostics(
diagnosticNames: Collection<String>, diagnosticNames: Collection<String>,
allInfosSuppressed: Boolean, allInfosSuppressed: Boolean,
allWarningsSuppressed: Boolean, allWarningsSuppressed: Boolean,
allErrorsSuppressed: Boolean allErrorsSuppressed: Boolean
): DiagnosticContext ): DiagnosticContext
val languageVersionSettings: LanguageVersionSettings
} }
abstract class DiagnosticReporter { abstract class DiagnosticReporter {