From 4d05b6757c180237eba4ddb836969235c1148793 Mon Sep 17 00:00:00 2001 From: Evgeny Gerashchenko Date: Fri, 13 Apr 2012 16:07:47 +0400 Subject: [PATCH] Made RedeclarationDiagnostic subtype of DiagnosticWithParameters1 to simplify diagnostic renderer. --- .../diagnostics/RedeclarationDiagnostic.java | 47 ++----------------- .../RedeclarationDiagnosticFactory.java | 32 +++++++++++-- .../rendering/DefaultDiagnosticRenderer.java | 18 +------ 3 files changed, 34 insertions(+), 63 deletions(-) diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/RedeclarationDiagnostic.java b/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/RedeclarationDiagnostic.java index 2e04e3eff8b..093a90f6451 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/RedeclarationDiagnostic.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/RedeclarationDiagnostic.java @@ -27,48 +27,9 @@ import java.util.List; /** * @author abreslav */ -public class RedeclarationDiagnostic extends AbstractDiagnostic { - private String name; - - public RedeclarationDiagnostic(@NotNull PsiElement psiElement, @NotNull String name, RedeclarationDiagnosticFactory factory) { - super(psiElement, factory, factory.severity); - this.name = name; +public class RedeclarationDiagnostic extends DiagnosticWithParameters1 { + public RedeclarationDiagnostic(@NotNull PsiElement psiElement, @NotNull String name, + @NotNull RedeclarationDiagnosticFactory factory, @NotNull Severity severity) { + super(psiElement, name, factory, severity); } - - @NotNull - @Override - public RedeclarationDiagnosticFactory getFactory() { - return (RedeclarationDiagnosticFactory)super.getFactory(); - } - - public String getName() { - return name; - } - - @NotNull - @Override - public List getTextRanges() { - return POSITION_REDECLARATION.mark(getPsiElement()); - } - - private static final PositioningStrategy POSITION_REDECLARATION = new PositioningStrategy() { - @NotNull - @Override - public List mark(@NotNull PsiElement element) { - if (element instanceof JetNamedDeclaration) { - PsiElement nameIdentifier = ((JetNamedDeclaration) element).getNameIdentifier(); - if (nameIdentifier != null) { - return markElement(nameIdentifier); - } - } - else if (element instanceof JetFile) { - JetFile file = (JetFile) element; - PsiElement nameIdentifier = file.getNamespaceHeader().getNameIdentifier(); - if (nameIdentifier != null) { - return markElement(nameIdentifier); - } - } - return markElement(element); - } - }; } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/RedeclarationDiagnosticFactory.java b/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/RedeclarationDiagnosticFactory.java index a651060b00d..bcf0598504f 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/RedeclarationDiagnosticFactory.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/RedeclarationDiagnosticFactory.java @@ -16,20 +16,44 @@ package org.jetbrains.jet.lang.diagnostics; +import com.intellij.openapi.util.TextRange; import com.intellij.psi.PsiElement; import org.jetbrains.annotations.NotNull; +import org.jetbrains.jet.lang.psi.JetFile; +import org.jetbrains.jet.lang.psi.JetNamedDeclaration; + +import java.util.List; /** * @author abreslav */ -public class RedeclarationDiagnosticFactory extends AbstractDiagnosticFactory { - final Severity severity; +public class RedeclarationDiagnosticFactory extends DiagnosticFactory1 { + private static final PositioningStrategy POSITION_REDECLARATION = new PositioningStrategy() { + @NotNull + @Override + public List mark(@NotNull PsiElement element) { + if (element instanceof JetNamedDeclaration) { + PsiElement nameIdentifier = ((JetNamedDeclaration) element).getNameIdentifier(); + if (nameIdentifier != null) { + return markElement(nameIdentifier); + } + } + else if (element instanceof JetFile) { + JetFile file = (JetFile) element; + PsiElement nameIdentifier = file.getNamespaceHeader().getNameIdentifier(); + if (nameIdentifier != null) { + return markElement(nameIdentifier); + } + } + return markElement(element); + } + }; public RedeclarationDiagnosticFactory(Severity severity) { - this.severity = severity; + super(severity, POSITION_REDECLARATION); } public RedeclarationDiagnostic on(@NotNull PsiElement duplicatingElement, @NotNull String name) { - return new RedeclarationDiagnostic(duplicatingElement, name, this); + return new RedeclarationDiagnostic(duplicatingElement, name, this, severity); } } 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 abcc949afbb..43fce44d057 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 @@ -62,8 +62,8 @@ public class DefaultDiagnosticRenderer implements DiagnosticRenderer new DiagnosticWithParameters2Renderer("Cannot access ''{0}'' in ''{1}''", NAME, NAME)); - map.put(REDECLARATION, new RedeclarationDiagnosticRenderer("Redeclaration: ")); - map.put(NAME_SHADOWING, new RedeclarationDiagnosticRenderer("Name shadowed: ")); + map.put(REDECLARATION, new DiagnosticWithParameters1Renderer("Redeclaration: {0}", NAME)); + map.put(NAME_SHADOWING, new DiagnosticWithParameters1Renderer("Name shadowed: {0}", NAME)); map.put(TYPE_MISMATCH, new DiagnosticWithParameters2Renderer("Type mismatch: inferred type is {1} but {0} was expected", @@ -515,20 +515,6 @@ public class DefaultDiagnosticRenderer implements DiagnosticRenderer return renderer.render(diagnostic); } - private static class RedeclarationDiagnosticRenderer implements DiagnosticRenderer { - private String messagePrefix; - - private RedeclarationDiagnosticRenderer(@NotNull String messagePrefix) { - this.messagePrefix = messagePrefix; - } - - @NotNull - @Override - public String render(@NotNull RedeclarationDiagnostic diagnostic) { - return messagePrefix + diagnostic.getName(); - } - } - private static class AmbiguousDescriptorDiagnosticRenderer extends DiagnosticWithParameters1Renderer>> { private AmbiguousDescriptorDiagnosticRenderer(@NotNull String message) {