Introduced DispatchingDiagnosticRenderer, which replaced DefaultDiagnosticRenderer.

This commit is contained in:
Evgeny Gerashchenko
2012-04-13 19:00:53 +04:00
parent c1a9630051
commit 370af95c87
5 changed files with 21 additions and 15 deletions
@@ -36,7 +36,7 @@ import org.jetbrains.jet.lang.descriptors.ClassOrNamespaceDescriptor;
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
import org.jetbrains.jet.lang.diagnostics.*;
import org.jetbrains.jet.lang.diagnostics.rendering.DefaultDiagnosticRenderer;
import org.jetbrains.jet.lang.diagnostics.rendering.DefaultErrorMessages;
import org.jetbrains.jet.lang.psi.JetFile;
import org.jetbrains.jet.lang.resolve.BindingContext;
import org.jetbrains.jet.lang.resolve.java.AnalyzerFacadeForJVM;
@@ -155,7 +155,7 @@ public class CompileSession {
render = ((SyntaxErrorDiagnostic)diagnostic).message;
}
else {
render = DefaultDiagnosticRenderer.INSTANCE.render(diagnostic);
render = DefaultErrorMessages.RENDERER.render(diagnostic);
}
collector.report(diagnostic.getSeverity(), render, path, lineAndColumn.getLine(), lineAndColumn.getColumn());
}
@@ -17,6 +17,7 @@
package org.jetbrains.jet.lang.diagnostics.rendering;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.lang.diagnostics.Diagnostic;
import org.jetbrains.jet.lang.psi.JetExpression;
import org.jetbrains.jet.lang.psi.JetSimpleNameExpression;
import org.jetbrains.jet.lang.psi.JetTypeConstraint;
@@ -38,6 +39,7 @@ import static org.jetbrains.jet.lang.diagnostics.rendering.Renderers.TO_STRING;
*/
public class DefaultErrorMessages {
public static final DiagnosticFactoryToRendererMap MAP = new DiagnosticFactoryToRendererMap();
public static final DiagnosticRenderer<Diagnostic> RENDERER = new DispatchingDiagnosticRenderer(MAP);
static {
MAP.put(EXCEPTION_WHILE_ANALYZING, "{0}", new Renderer<Throwable>() {
@@ -21,21 +21,25 @@ import org.jetbrains.jet.lang.diagnostics.Diagnostic;
/**
* @author Evgeny Gerashchenko
* @since 4/12/12
* @since 4/13/12
*/
public class DefaultDiagnosticRenderer implements DiagnosticRenderer<Diagnostic> {
public static final DefaultDiagnosticRenderer INSTANCE = new DefaultDiagnosticRenderer();
public class DispatchingDiagnosticRenderer implements DiagnosticRenderer<Diagnostic> {
private final DiagnosticFactoryToRendererMap[] maps;
private final DiagnosticFactoryToRendererMap map = DefaultErrorMessages.MAP;
public DispatchingDiagnosticRenderer(DiagnosticFactoryToRendererMap... maps) {
this.maps = maps;
}
@NotNull
@Override
public String render(@NotNull Diagnostic diagnostic) {
DiagnosticRenderer renderer = map.get(diagnostic.getFactory());
if (renderer == null) {
throw new IllegalArgumentException("Don't know how to render diagnostic of type " + diagnostic.getFactory().getName());
for (DiagnosticFactoryToRendererMap map : maps) {
DiagnosticRenderer renderer = map.get(diagnostic.getFactory());
if (renderer != null) {
//noinspection unchecked
return renderer.render(diagnostic);
}
}
//noinspection unchecked
return renderer.render(diagnostic);
throw new IllegalArgumentException("Don't know how to render diagnostic of type " + diagnostic.getFactory().getName());
}
}
@@ -27,9 +27,9 @@ import org.jetbrains.jet.analyzer.AnalyzeExhaust;
import org.jetbrains.jet.compiler.JetCoreEnvironment;
import org.jetbrains.jet.lang.cfg.pseudocode.JetControlFlowDataTraceFactory;
import org.jetbrains.jet.lang.diagnostics.UnresolvedReferenceDiagnosticFactory;
import org.jetbrains.jet.lang.diagnostics.rendering.DefaultDiagnosticRenderer;
import org.jetbrains.jet.lang.diagnostics.Diagnostic;
import org.jetbrains.jet.lang.diagnostics.Severity;
import org.jetbrains.jet.lang.diagnostics.rendering.DefaultErrorMessages;
import org.jetbrains.jet.lang.psi.JetFile;
import org.jetbrains.jet.lang.resolve.BindingContext;
import org.jetbrains.jet.lang.resolve.BindingTrace;
@@ -153,7 +153,7 @@ public class JetTestUtils {
@Override
public void report(@NotNull Diagnostic diagnostic) {
if (diagnostic.getSeverity() == Severity.ERROR) {
throw new IllegalStateException(DefaultDiagnosticRenderer.INSTANCE.render(diagnostic));
throw new IllegalStateException(DefaultErrorMessages.RENDERER.render(diagnostic));
}
}
};
@@ -33,8 +33,8 @@ import com.intellij.psi.PsiReference;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.annotations.TestOnly;
import org.jetbrains.jet.lang.diagnostics.rendering.DefaultDiagnosticRenderer;
import org.jetbrains.jet.lang.diagnostics.*;
import org.jetbrains.jet.lang.diagnostics.rendering.DefaultErrorMessages;
import org.jetbrains.jet.lang.psi.JetFile;
import org.jetbrains.jet.lang.psi.JetReferenceExpression;
import org.jetbrains.jet.lang.resolve.BindingContext;
@@ -238,7 +238,7 @@ public class JetPsiChecker implements Annotator {
@NotNull
private static String getMessage(@NotNull Diagnostic diagnostic) {
String message = DefaultDiagnosticRenderer.INSTANCE.render(diagnostic);
String message = DefaultErrorMessages.RENDERER.render(diagnostic);
if (ApplicationManager.getApplication().isInternal() || ApplicationManager.getApplication().isUnitTestMode()) {
return "[" + diagnostic.getFactory().getName() + "] " + message;
}