From 545e559d5b4bbcac0311dc13df0670b168132dc5 Mon Sep 17 00:00:00 2001 From: Evgeny Gerashchenko Date: Fri, 13 Apr 2012 15:46:28 +0400 Subject: [PATCH] Made UnresolvedReferenceDiagnostic subtype of DiagnosticWithParameters1 to simplify diagnostic renderer. --- .../UnresolvedReferenceDiagnostic.java | 29 ++----------------- .../UnresolvedReferenceDiagnosticFactory.java | 21 ++++++++++++-- .../rendering/DefaultDiagnosticRenderer.java | 18 ++---------- 3 files changed, 23 insertions(+), 45 deletions(-) diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/UnresolvedReferenceDiagnostic.java b/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/UnresolvedReferenceDiagnostic.java index 938cb898250..ee443e2051c 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/UnresolvedReferenceDiagnostic.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/UnresolvedReferenceDiagnostic.java @@ -16,38 +16,15 @@ package org.jetbrains.jet.lang.diagnostics; -import com.intellij.openapi.util.TextRange; import org.jetbrains.annotations.NotNull; -import org.jetbrains.jet.lang.psi.JetArrayAccessExpression; import org.jetbrains.jet.lang.psi.JetReferenceExpression; -import java.util.Collections; -import java.util.List; - -import static org.jetbrains.jet.lang.diagnostics.Severity.ERROR; - /** * @author abreslav */ -public class UnresolvedReferenceDiagnostic extends AbstractDiagnostic { - @NotNull - @Override - public UnresolvedReferenceDiagnosticFactory getFactory() { - return (UnresolvedReferenceDiagnosticFactory)super.getFactory(); - } - +public class UnresolvedReferenceDiagnostic extends DiagnosticWithParameters1 { public UnresolvedReferenceDiagnostic(@NotNull JetReferenceExpression referenceExpression, - @NotNull UnresolvedReferenceDiagnosticFactory factory) { - super(referenceExpression, factory, ERROR); - } - - @NotNull - @Override - public List getTextRanges() { - JetReferenceExpression element = getPsiElement(); - if (element instanceof JetArrayAccessExpression) { - return ((JetArrayAccessExpression) element).getBracketRanges(); - } - return Collections.singletonList(element.getTextRange()); + @NotNull UnresolvedReferenceDiagnosticFactory factory, @NotNull Severity severity) { + super(referenceExpression, referenceExpression.getText(), factory, severity); } } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/UnresolvedReferenceDiagnosticFactory.java b/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/UnresolvedReferenceDiagnosticFactory.java index 4aee43e3422..d3647c31363 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/UnresolvedReferenceDiagnosticFactory.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/UnresolvedReferenceDiagnosticFactory.java @@ -16,18 +16,33 @@ package org.jetbrains.jet.lang.diagnostics; +import com.intellij.openapi.util.TextRange; import org.jetbrains.annotations.NotNull; +import org.jetbrains.jet.lang.psi.JetArrayAccessExpression; import org.jetbrains.jet.lang.psi.JetReferenceExpression; +import java.util.Collections; +import java.util.List; + /** * @author abreslav */ -public class UnresolvedReferenceDiagnosticFactory extends AbstractDiagnosticFactory { - private UnresolvedReferenceDiagnosticFactory() { +public class UnresolvedReferenceDiagnosticFactory extends DiagnosticFactory1 { + public UnresolvedReferenceDiagnosticFactory() { + super(Severity.ERROR, new PositioningStrategy() { + @NotNull + @Override + public List mark(@NotNull JetReferenceExpression element) { + if (element instanceof JetArrayAccessExpression) { + return ((JetArrayAccessExpression) element).getBracketRanges(); + } + return Collections.singletonList(element.getTextRange()); + } + }); } public UnresolvedReferenceDiagnostic on(@NotNull JetReferenceExpression reference) { - return new UnresolvedReferenceDiagnostic(reference, this); + return new UnresolvedReferenceDiagnostic(reference, this, severity); } public static UnresolvedReferenceDiagnosticFactory create() { diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/rendering/DefaultDiagnosticRenderer.java b/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/rendering/DefaultDiagnosticRenderer.java index 7989922ec68..abcc949afbb 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/rendering/DefaultDiagnosticRenderer.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/rendering/DefaultDiagnosticRenderer.java @@ -53,7 +53,7 @@ public class DefaultDiagnosticRenderer implements DiagnosticRenderer } })); - map.put(UNRESOLVED_REFERENCE, new UnresolvedReferenceDiagnosticRenderer("Unresolved reference: ")); + map.put(UNRESOLVED_REFERENCE, new DiagnosticWithParameters1Renderer("Unresolved reference: {0}", TO_STRING)); map.put(INVISIBLE_REFERENCE, new DiagnosticWithParameters2Renderer("Cannot access ''{0}'' in ''{1}''", @@ -124,7 +124,7 @@ public class DefaultDiagnosticRenderer implements DiagnosticRenderer map.put(MIXING_NAMED_AND_POSITIONED_ARGUMENTS, new SimpleDiagnosticRenderer("Mixing named and positioned arguments in not allowed")); map.put(ARGUMENT_PASSED_TWICE, new SimpleDiagnosticRenderer("An argument is already passed for this parameter")); - map.put(NAMED_PARAMETER_NOT_FOUND, new UnresolvedReferenceDiagnosticRenderer("Cannot find a parameter with this name: ")); + map.put(NAMED_PARAMETER_NOT_FOUND, new DiagnosticWithParameters1Renderer("Cannot find a parameter with this name: {0}", TO_STRING)); map.put(VARARG_OUTSIDE_PARENTHESES, new SimpleDiagnosticRenderer("Passing value as a vararg is only allowed inside a parenthesized argument list")); map.put(NON_VARARG_SPREAD, new SimpleDiagnosticRenderer("The spread operator (*foo) may only be applied in a vararg position")); @@ -529,20 +529,6 @@ public class DefaultDiagnosticRenderer implements DiagnosticRenderer } } - private static class UnresolvedReferenceDiagnosticRenderer implements DiagnosticRenderer { - private String messagePrefix; - - private UnresolvedReferenceDiagnosticRenderer(@NotNull String messagePrefix) { - this.messagePrefix = messagePrefix; - } - - @NotNull - @Override - public String render(@NotNull UnresolvedReferenceDiagnostic diagnostic) { - return messagePrefix + diagnostic.getPsiElement().getText(); - } - } - private static class AmbiguousDescriptorDiagnosticRenderer extends DiagnosticWithParameters1Renderer>> { private AmbiguousDescriptorDiagnosticRenderer(@NotNull String message) {