Introduce CompilerMessageSeverity.STRONG_WARNING
This is a severity for mandatory warnings, i.e. those which should be reported in any case, even if there are compilation errors
This commit is contained in:
+27
-3
@@ -16,13 +16,16 @@
|
||||
|
||||
package org.jetbrains.kotlin.cli.common.messages;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.EnumSet;
|
||||
|
||||
public enum CompilerMessageSeverity {
|
||||
INFO,
|
||||
ERROR,
|
||||
WARNING,
|
||||
EXCEPTION,
|
||||
ERROR,
|
||||
STRONG_WARNING,
|
||||
WARNING,
|
||||
INFO,
|
||||
LOGGING,
|
||||
OUTPUT;
|
||||
|
||||
@@ -32,4 +35,25 @@ public enum CompilerMessageSeverity {
|
||||
public boolean isError() {
|
||||
return ERRORS.contains(this);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public String getPresentableName() {
|
||||
switch (this) {
|
||||
case EXCEPTION:
|
||||
return "exception";
|
||||
case ERROR:
|
||||
return "error";
|
||||
case STRONG_WARNING:
|
||||
case WARNING:
|
||||
return "warning";
|
||||
case INFO:
|
||||
return "info";
|
||||
case LOGGING:
|
||||
return "logging";
|
||||
case OUTPUT:
|
||||
return "output";
|
||||
default:
|
||||
throw new UnsupportedOperationException("Unknown severity: " + this);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -68,7 +68,7 @@ public class GroupingMessageCollector implements MessageCollector {
|
||||
|
||||
for (String path : sortedKeys()) {
|
||||
for (Message message : groupedMessages.get(path)) {
|
||||
if (!hasErrors || message.severity.isError()) {
|
||||
if (!hasErrors || message.severity.isError() || message.severity == CompilerMessageSeverity.STRONG_WARNING) {
|
||||
delegate.report(message.severity, message.message, message.location);
|
||||
}
|
||||
}
|
||||
|
||||
+5
-3
@@ -49,7 +49,7 @@ public abstract class PlainTextMessageRenderer implements MessageRenderer {
|
||||
|
||||
private static final String LINE_SEPARATOR = LineSeparator.getSystemLineSeparator().getSeparatorString();
|
||||
|
||||
private static final Set<CompilerMessageSeverity> IMPORTANT_MESSAGE_SEVERITIES = EnumSet.of(EXCEPTION, ERROR, WARNING);
|
||||
private static final Set<CompilerMessageSeverity> IMPORTANT_MESSAGE_SEVERITIES = EnumSet.of(EXCEPTION, ERROR, STRONG_WARNING, WARNING);
|
||||
|
||||
@Override
|
||||
public String renderPreamble() {
|
||||
@@ -83,7 +83,7 @@ public abstract class PlainTextMessageRenderer implements MessageRenderer {
|
||||
Ansi ansi = Ansi.ansi()
|
||||
.bold()
|
||||
.fg(severityColor(severity))
|
||||
.a(severity.name().toLowerCase())
|
||||
.a(severity.getPresentableName())
|
||||
.a(": ")
|
||||
.reset();
|
||||
|
||||
@@ -102,7 +102,7 @@ public abstract class PlainTextMessageRenderer implements MessageRenderer {
|
||||
}
|
||||
}
|
||||
else {
|
||||
result.append(severity.name().toLowerCase());
|
||||
result.append(severity.getPresentableName());
|
||||
result.append(": ");
|
||||
result.append(decapitalizeIfNeeded(message));
|
||||
}
|
||||
@@ -141,6 +141,8 @@ public abstract class PlainTextMessageRenderer implements MessageRenderer {
|
||||
return Ansi.Color.RED;
|
||||
case ERROR:
|
||||
return Ansi.Color.RED;
|
||||
case STRONG_WARNING:
|
||||
return Ansi.Color.YELLOW;
|
||||
case WARNING:
|
||||
return Ansi.Color.YELLOW;
|
||||
case INFO:
|
||||
|
||||
@@ -28,7 +28,8 @@ public class XmlMessageRenderer implements MessageRenderer {
|
||||
@Override
|
||||
public String render(@NotNull CompilerMessageSeverity severity, @NotNull String message, @NotNull CompilerMessageLocation location) {
|
||||
StringBuilder out = new StringBuilder();
|
||||
out.append("<").append(severity.toString());
|
||||
String tagName = severity.getPresentableName();
|
||||
out.append("<").append(tagName);
|
||||
if (location.getPath() != null) {
|
||||
out.append(" path=\"").append(e(location.getPath())).append("\"");
|
||||
out.append(" line=\"").append(location.getLine()).append("\"");
|
||||
@@ -38,11 +39,11 @@ public class XmlMessageRenderer implements MessageRenderer {
|
||||
|
||||
out.append(e(message));
|
||||
|
||||
out.append("</").append(severity.toString()).append(">\n");
|
||||
out.append("</").append(tagName).append(">\n");
|
||||
return out.toString();
|
||||
}
|
||||
|
||||
private String e(String str) {
|
||||
private static String e(String str) {
|
||||
return StringUtil.escapeXml(str);
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -46,7 +46,7 @@ internal class CompileServicesFacadeMessageCollector(
|
||||
else -> {
|
||||
val reportSeverity = when (severity) {
|
||||
CompilerMessageSeverity.ERROR -> ReportSeverity.ERROR
|
||||
CompilerMessageSeverity.WARNING -> ReportSeverity.WARNING
|
||||
CompilerMessageSeverity.WARNING, CompilerMessageSeverity.STRONG_WARNING -> ReportSeverity.WARNING
|
||||
CompilerMessageSeverity.INFO -> ReportSeverity.INFO
|
||||
else -> ReportSeverity.DEBUG
|
||||
}
|
||||
@@ -57,7 +57,7 @@ internal class CompileServicesFacadeMessageCollector(
|
||||
}
|
||||
}
|
||||
|
||||
hasErrors = hasErrors || severity == CompilerMessageSeverity.ERROR || severity == CompilerMessageSeverity.EXCEPTION
|
||||
hasErrors = hasErrors || severity.isError
|
||||
}
|
||||
|
||||
override fun hasErrors(): Boolean = hasErrors
|
||||
|
||||
@@ -37,14 +37,20 @@ import org.jetbrains.jps.model.JpsProject
|
||||
import org.jetbrains.jps.model.java.JpsJavaClasspathKind
|
||||
import org.jetbrains.jps.model.java.JpsJavaExtensionService
|
||||
import org.jetbrains.jps.model.module.JpsModule
|
||||
import org.jetbrains.kotlin.build.*
|
||||
import org.jetbrains.kotlin.build.GeneratedFile
|
||||
import org.jetbrains.kotlin.build.GeneratedJvmClass
|
||||
import org.jetbrains.kotlin.build.JvmBuildMetaInfo
|
||||
import org.jetbrains.kotlin.build.isModuleMappingFile
|
||||
import org.jetbrains.kotlin.cli.common.arguments.CommonCompilerArguments
|
||||
import org.jetbrains.kotlin.cli.common.messages.CompilerMessageLocation
|
||||
import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity
|
||||
import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity.*
|
||||
import org.jetbrains.kotlin.cli.common.messages.MessageCollector
|
||||
import org.jetbrains.kotlin.cli.common.messages.OutputMessageUtil
|
||||
import org.jetbrains.kotlin.compilerRunner.*
|
||||
import org.jetbrains.kotlin.compilerRunner.JpsCompilerEnvironment
|
||||
import org.jetbrains.kotlin.compilerRunner.JpsKotlinCompilerRunner
|
||||
import org.jetbrains.kotlin.compilerRunner.OutputItemsCollector
|
||||
import org.jetbrains.kotlin.compilerRunner.OutputItemsCollectorImpl
|
||||
import org.jetbrains.kotlin.config.*
|
||||
import org.jetbrains.kotlin.config.CompilerRunnerConstants.INTERNAL_ERROR_PREFIX
|
||||
import org.jetbrains.kotlin.daemon.common.isDaemonEnabled
|
||||
@@ -58,8 +64,9 @@ import org.jetbrains.kotlin.modules.TargetId
|
||||
import org.jetbrains.kotlin.preloading.ClassCondition
|
||||
import org.jetbrains.kotlin.progress.CompilationCanceledException
|
||||
import org.jetbrains.kotlin.progress.CompilationCanceledStatus
|
||||
import org.jetbrains.kotlin.build.JvmBuildMetaInfo
|
||||
import org.jetbrains.kotlin.utils.*
|
||||
import org.jetbrains.kotlin.utils.JsLibraryUtils
|
||||
import org.jetbrains.kotlin.utils.PathUtil
|
||||
import org.jetbrains.kotlin.utils.keysToMap
|
||||
import org.jetbrains.org.objectweb.asm.ClassReader
|
||||
import java.io.File
|
||||
import java.util.*
|
||||
@@ -766,7 +773,7 @@ class KotlinBuilder : ModuleLevelBuilder(BuilderCategory.SOURCE_PROCESSOR) {
|
||||
return when (severity) {
|
||||
INFO -> BuildMessage.Kind.INFO
|
||||
ERROR, EXCEPTION -> BuildMessage.Kind.ERROR
|
||||
WARNING -> BuildMessage.Kind.WARNING
|
||||
WARNING, STRONG_WARNING -> BuildMessage.Kind.WARNING
|
||||
LOGGING -> BuildMessage.Kind.PROGRESS
|
||||
else -> throw IllegalArgumentException("Unsupported severity: " + severity)
|
||||
}
|
||||
|
||||
+3
-3
@@ -382,7 +382,7 @@ internal class GradleMessageCollector(val logger: Logger) : MessageCollector {
|
||||
"e"
|
||||
}
|
||||
CompilerMessageSeverity.INFO -> "i"
|
||||
CompilerMessageSeverity.WARNING -> "w"
|
||||
CompilerMessageSeverity.WARNING, CompilerMessageSeverity.STRONG_WARNING -> "w"
|
||||
else -> throw IllegalArgumentException("Unknown CompilerMessageSeverity: $severity")
|
||||
})
|
||||
append(": ")
|
||||
@@ -404,8 +404,8 @@ internal class GradleMessageCollector(val logger: Logger) : MessageCollector {
|
||||
in CompilerMessageSeverity.VERBOSE -> logger.debug(text)
|
||||
in CompilerMessageSeverity.ERRORS -> logger.error(text)
|
||||
CompilerMessageSeverity.INFO -> logger.info(text)
|
||||
CompilerMessageSeverity.WARNING -> logger.warn(text)
|
||||
CompilerMessageSeverity.WARNING, CompilerMessageSeverity.STRONG_WARNING -> logger.warn(text)
|
||||
else -> throw IllegalArgumentException("Unknown CompilerMessageSeverity: $severity")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+6
-2
@@ -47,12 +47,16 @@ class KotlinMessager(private val messageCollector: MessageCollector) : Messager
|
||||
errorCount++
|
||||
CompilerMessageSeverity.ERROR
|
||||
}
|
||||
Kind.WARNING, Kind.MANDATORY_WARNING -> {
|
||||
Kind.WARNING -> {
|
||||
warningCount++
|
||||
CompilerMessageSeverity.WARNING
|
||||
}
|
||||
Kind.MANDATORY_WARNING -> {
|
||||
warningCount++
|
||||
CompilerMessageSeverity.STRONG_WARNING
|
||||
}
|
||||
else -> CompilerMessageSeverity.LOGGING
|
||||
}
|
||||
messageCollector.report(severity, msg.toString(), CompilerMessageLocation.NO_LOCATION)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user