From 91621704a25099a08e9f48fe2f42a3e419fe33f9 Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Tue, 15 Dec 2015 12:51:57 +0300 Subject: [PATCH] Additional information to catch EA-75872 --- .../jvm/diagnostics/DefaultErrorMessagesJvm.java | 2 +- .../rendering/DefaultErrorMessages.java | 5 +++-- .../rendering/DiagnosticFactoryToRendererMap.java | 14 ++++++++++++++ .../kotlin/idea/highlighter/IdeErrorMessages.java | 2 +- .../resolve/diagnostics/DefaultErrorMessagesJs.kt | 2 +- .../diagnostic/DefaultErrorMessagesAndroid.kt | 2 +- 6 files changed, 21 insertions(+), 6 deletions(-) diff --git a/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/diagnostics/DefaultErrorMessagesJvm.java b/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/diagnostics/DefaultErrorMessagesJvm.java index 68ded5b251a..1185a0c4374 100644 --- a/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/diagnostics/DefaultErrorMessagesJvm.java +++ b/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/diagnostics/DefaultErrorMessagesJvm.java @@ -50,7 +50,7 @@ public class DefaultErrorMessagesJvm implements DefaultErrorMessages.Extension { } }; - public static final DiagnosticFactoryToRendererMap MAP = new DiagnosticFactoryToRendererMap(); + public static final DiagnosticFactoryToRendererMap MAP = new DiagnosticFactoryToRendererMap("JVM"); static { MAP.put(ErrorsJvm.CONFLICTING_JVM_DECLARATIONS, "Platform declaration clash: {0}", CONFLICTING_JVM_DECLARATIONS_DATA); MAP.put(ErrorsJvm.ACCIDENTAL_OVERRIDE, "Accidental override: {0}", CONFLICTING_JVM_DECLARATIONS_DATA); diff --git a/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/rendering/DefaultErrorMessages.java b/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/rendering/DefaultErrorMessages.java index a03f3ce3d44..44d71636121 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/rendering/DefaultErrorMessages.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/rendering/DefaultErrorMessages.java @@ -55,7 +55,7 @@ public class DefaultErrorMessages { DiagnosticFactoryToRendererMap getMap(); } - private static final DiagnosticFactoryToRendererMap MAP = new DiagnosticFactoryToRendererMap(); + private static final DiagnosticFactoryToRendererMap MAP = new DiagnosticFactoryToRendererMap("Default"); private static final MappedExtensionProvider> RENDERER_MAPS = MappedExtensionProvider.create( Extension.EP_NAME, new Function1, List>() { @@ -79,7 +79,8 @@ public class DefaultErrorMessages { return renderer.render(diagnostic); } } - throw new IllegalArgumentException("Don't know how to render diagnostic of type " + diagnostic.getFactory().getName()); + throw new IllegalArgumentException("Don't know how to render diagnostic of type " + diagnostic.getFactory().getName() + + " with the following renderer maps: " + RENDERER_MAPS.get()); } @TestOnly diff --git a/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/rendering/DiagnosticFactoryToRendererMap.java b/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/rendering/DiagnosticFactoryToRendererMap.java index 61c05cf6e2c..a781bf84321 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/rendering/DiagnosticFactoryToRendererMap.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/rendering/DiagnosticFactoryToRendererMap.java @@ -30,6 +30,20 @@ public final class DiagnosticFactoryToRendererMap { private final Map, DiagnosticRenderer> map = new HashMap, DiagnosticRenderer>(); private boolean immutable = false; + // TO catch EA-75872 + private final String name; + public DiagnosticFactoryToRendererMap(String name) { + this.name = name; + } + public DiagnosticFactoryToRendererMap() { + this(""); + } + @Override + public String toString() { + return "DiagnosticFactory#" + name; + } + // + private void checkMutability() { if (immutable) { throw new IllegalStateException("factory to renderer map is already immutable"); diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/highlighter/IdeErrorMessages.java b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/highlighter/IdeErrorMessages.java index a1cfb413582..541fd90ec76 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/highlighter/IdeErrorMessages.java +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/highlighter/IdeErrorMessages.java @@ -43,7 +43,7 @@ import static org.jetbrains.kotlin.resolve.jvm.diagnostics.ErrorsJvm.CONFLICTING * @see DefaultErrorMessages */ public class IdeErrorMessages { - private static final DiagnosticFactoryToRendererMap MAP = new DiagnosticFactoryToRendererMap(); + private static final DiagnosticFactoryToRendererMap MAP = new DiagnosticFactoryToRendererMap("IDE"); @NotNull public static String render(@NotNull Diagnostic diagnostic) { diff --git a/js/js.frontend/src/org/jetbrains/kotlin/js/resolve/diagnostics/DefaultErrorMessagesJs.kt b/js/js.frontend/src/org/jetbrains/kotlin/js/resolve/diagnostics/DefaultErrorMessagesJs.kt index 23be132b183..66026c97ea2 100644 --- a/js/js.frontend/src/org/jetbrains/kotlin/js/resolve/diagnostics/DefaultErrorMessagesJs.kt +++ b/js/js.frontend/src/org/jetbrains/kotlin/js/resolve/diagnostics/DefaultErrorMessagesJs.kt @@ -21,7 +21,7 @@ import org.jetbrains.kotlin.diagnostics.rendering.DiagnosticFactoryToRendererMap import org.jetbrains.kotlin.diagnostics.rendering.Renderers private val DIAGNOSTIC_FACTORY_TO_RENDERER by lazy { - with(DiagnosticFactoryToRendererMap()) { + with(DiagnosticFactoryToRendererMap("JS")) { put(ErrorsJs.NATIVE_ANNOTATIONS_ALLOWED_ONLY_ON_MEMBER_OR_EXTENSION_FUN, "Annotation ''{0}'' is allowed only on member functions of declaration annotated as ''kotlin.js.native'' or on toplevel extension functions", Renderers.RENDER_TYPE) diff --git a/plugins/android-compiler-plugin/src/org/jetbrains/kotlin/android/synthetic/diagnostic/DefaultErrorMessagesAndroid.kt b/plugins/android-compiler-plugin/src/org/jetbrains/kotlin/android/synthetic/diagnostic/DefaultErrorMessagesAndroid.kt index 1118af3f2e2..da0885fca20 100644 --- a/plugins/android-compiler-plugin/src/org/jetbrains/kotlin/android/synthetic/diagnostic/DefaultErrorMessagesAndroid.kt +++ b/plugins/android-compiler-plugin/src/org/jetbrains/kotlin/android/synthetic/diagnostic/DefaultErrorMessagesAndroid.kt @@ -23,7 +23,7 @@ import org.jetbrains.kotlin.diagnostics.rendering.Renderers public class DefaultErrorMessagesAndroid : DefaultErrorMessages.Extension { private companion object { - val MAP = DiagnosticFactoryToRendererMap() + val MAP = DiagnosticFactoryToRendererMap("Android") init { MAP.put(ErrorsAndroid.SYNTHETIC_INVALID_WIDGET_TYPE,