Skip to content

Commit 1b8b6c2

Browse files
KvanTTTliamoberg
authored andcommitted
Introduce BaseDiagnosticsCollector.reportIfNeeded
It required changing of `getEffectiveSeverity` visibility to public Simplify code of `CompilerConfiguration.reportIfNeeded`
1 parent 6da8220 commit 1b8b6c2

File tree

3 files changed

+14
-9
lines changed

3 files changed

+14
-9
lines changed

compiler/cli/src/org/jetbrains/kotlin/cli/common/utils.kt

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,8 @@ import org.jetbrains.kotlin.cli.common.arguments.CommonCompilerArguments
2626
import org.jetbrains.kotlin.cli.common.messages.*
2727
import org.jetbrains.kotlin.config.CompilerConfiguration
2828
import org.jetbrains.kotlin.config.IncrementalCompilation
29-
import org.jetbrains.kotlin.config.LanguageVersionSettings
3029
import org.jetbrains.kotlin.config.languageVersionSettings
3130
import org.jetbrains.kotlin.config.messageCollector
32-
import org.jetbrains.kotlin.diagnostics.DiagnosticBaseContext
3331
import org.jetbrains.kotlin.diagnostics.KtSourcelessDiagnosticFactory
3432
import org.jetbrains.kotlin.fir.declarations.FirFile
3533
import org.jetbrains.kotlin.fir.packageFqName
@@ -157,10 +155,6 @@ fun disposeRootInWriteAction(disposable: Disposable) {
157155
}
158156

159157
fun CompilerConfiguration.reportIfNeeded(factory: KtSourcelessDiagnosticFactory, message: String) {
160-
val diagnostic = factory.create(message, object : DiagnosticBaseContext {
161-
override val languageVersionSettings: LanguageVersionSettings
162-
get() = this@reportIfNeeded.languageVersionSettings
163-
164-
}) ?: return
165-
messageCollector.report(diagnostic.severity.toCompilerMessageSeverity(), message)
158+
val effectiveSeverity = factory.getEffectiveSeverity(languageVersionSettings) ?: return
159+
messageCollector.report(effectiveSeverity.toCompilerMessageSeverity(), message)
166160
}

compiler/frontend.common/src/org/jetbrains/kotlin/diagnostics/KtDiagnosticFactory.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ sealed class AbstractKtDiagnosticFactory(
2929
get() = rendererFactory.MAP[this]
3030
?: error("Renderer is not found for factory $this inside ${rendererFactory.MAP.name} renderer map")
3131

32-
protected fun getEffectiveSeverity(languageVersionSettings: LanguageVersionSettings): Severity? {
32+
fun getEffectiveSeverity(languageVersionSettings: LanguageVersionSettings): Severity? {
3333
return when (languageVersionSettings.getFlag(AnalysisFlags.warningLevels)[name]) {
3434
WarningLevel.Error -> Severity.ERROR
3535
WarningLevel.Warning -> Severity.FIXED_WARNING

compiler/frontend.common/src/org/jetbrains/kotlin/diagnostics/impl/BaseDiagnosticsCollector.kt

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,10 @@
66
package org.jetbrains.kotlin.diagnostics.impl
77

88
import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity
9+
import org.jetbrains.kotlin.diagnostics.DiagnosticBaseContext
910
import org.jetbrains.kotlin.diagnostics.DiagnosticReporter
1011
import org.jetbrains.kotlin.diagnostics.KtDiagnostic
12+
import org.jetbrains.kotlin.diagnostics.KtSourcelessDiagnosticFactory
1113

1214
abstract class BaseDiagnosticsCollector : DiagnosticReporter() {
1315
abstract val diagnostics: List<KtDiagnostic>
@@ -29,5 +31,14 @@ abstract class BaseDiagnosticsCollector : DiagnosticReporter() {
2931
fun reportError(message: String) {
3032
report(message, CompilerMessageSeverity.ERROR)
3133
}
34+
35+
fun reportIfNeeded(
36+
factory: KtSourcelessDiagnosticFactory,
37+
message: String,
38+
context: DiagnosticBaseContext,
39+
) {
40+
val refinedSeverity = factory.getEffectiveSeverity(context.languageVersionSettings)?.toCompilerMessageSeverity() ?: return
41+
report(message, refinedSeverity)
42+
}
3243
}
3344
}

0 commit comments

Comments
 (0)