diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/AbstractDiagnostic.java b/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/AbstractDiagnostic.java index 3e1622aa486..f2a57cfc6bb 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/AbstractDiagnostic.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/AbstractDiagnostic.java @@ -25,15 +25,15 @@ import org.jetbrains.annotations.NotNull; */ public abstract class AbstractDiagnostic implements ParametrizedDiagnostic { private final E psiElement; - private final String message; private final AbstractDiagnosticFactory factory; private final Severity severity; - public AbstractDiagnostic(@NotNull E psiElement, @NotNull AbstractDiagnosticFactory factory, @NotNull Severity severity, @NotNull String message) { + public AbstractDiagnostic(@NotNull E psiElement, + @NotNull AbstractDiagnosticFactory factory, + @NotNull Severity severity) { this.psiElement = psiElement; this.factory = factory; this.severity = severity; - this.message = message; } @NotNull @@ -48,12 +48,6 @@ public abstract class AbstractDiagnostic implements Parame return psiElement.getContainingFile(); } - @NotNull - @Override - public String getMessage() { - return message; - } - @NotNull @Override public Severity getSeverity() { diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/DiagnosticFactory.java b/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/DiagnosticFactory.java index 5e893eef3f1..b1f03498b4f 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/DiagnosticFactory.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/DiagnosticFactory.java @@ -38,8 +38,12 @@ public class DiagnosticFactory extends DiagnosticFactoryWi return new DiagnosticFactory(severity, message, positioningStrategy); } + String getMessage() { + return message; + } + @NotNull public ParametrizedDiagnostic on(@NotNull E element) { - return new DiagnosticWithPsiElement(element, this, severity, message); + return new DiagnosticWithPsiElement(element, this, severity); } } \ No newline at end of file diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/DiagnosticFactory1.java b/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/DiagnosticFactory1.java index 139337eab2a..f28aaa14a2b 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/DiagnosticFactory1.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/DiagnosticFactory1.java @@ -35,7 +35,7 @@ public class DiagnosticFactory1 extends DiagnosticFacto @NotNull public ParametrizedDiagnostic on(@NotNull E element, @NotNull A argument) { - return new DiagnosticWithParameters1(element, argument, this, severity, makeMessage(argument)); + return new DiagnosticWithParameters1(element, argument, this, severity); } protected DiagnosticFactory1(Severity severity, String message, PositioningStrategy positioningStrategy, Renderer renderer) { diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/DiagnosticFactory2.java b/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/DiagnosticFactory2.java index 767326616f0..c63687e00c3 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/DiagnosticFactory2.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/DiagnosticFactory2.java @@ -26,7 +26,7 @@ public class DiagnosticFactory2 extends DiagnosticFa private final Renderer rendererForA; private final Renderer rendererForB; - private String makeMessage(@NotNull A a, @NotNull B b) { + protected String makeMessage(@NotNull A a, @NotNull B b) { return messageFormat.format(new Object[] {makeMessageForA(a), makeMessageForB(b)}); } @@ -40,7 +40,7 @@ public class DiagnosticFactory2 extends DiagnosticFa @NotNull public ParametrizedDiagnostic on(@NotNull E element, @NotNull A a, @NotNull B b) { - return new DiagnosticWithParameters2(element, a, b, this, severity, makeMessage(a, b)); + return new DiagnosticWithParameters2(element, a, b, this, severity); } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/DiagnosticFactory3.java b/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/DiagnosticFactory3.java index 1ad9fda7b3e..bc945a49bd1 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/DiagnosticFactory3.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/DiagnosticFactory3.java @@ -50,7 +50,7 @@ public class DiagnosticFactory3 extends Diagnosti return new DiagnosticFactory3(severity, messageStub, positioningStrategy, rendererForA, rendererForB, rendererForC); } - private String makeMessage(@NotNull A a, @NotNull B b, @NotNull C c) { + protected String makeMessage(@NotNull A a, @NotNull B b, @NotNull C c) { return messageFormat.format(new Object[]{makeMessageForA(a), makeMessageForB(b), makeMessageForC(c)}); } @@ -67,6 +67,6 @@ public class DiagnosticFactory3 extends Diagnosti } @NotNull public ParametrizedDiagnostic on(@NotNull E element, @NotNull A a, @NotNull B b, @NotNull C c) { - return new DiagnosticWithParameters3(element, a, b, c, this, severity, makeMessage(a, b, c)); + return new DiagnosticWithParameters3(element, a, b, c, this, severity); } } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/DiagnosticWithParameters1.java b/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/DiagnosticWithParameters1.java index ad757faf103..e02675d5c1a 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/DiagnosticWithParameters1.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/DiagnosticWithParameters1.java @@ -32,9 +32,8 @@ public class DiagnosticWithParameters1 extends Abstract public DiagnosticWithParameters1(@NotNull E psiElement, @NotNull A a, @NotNull DiagnosticFactory1 factory, - @NotNull Severity severity, - @NotNull String message) { - super(psiElement, factory, severity, message); + @NotNull Severity severity) { + super(psiElement, factory, severity); this.a = a; } @@ -44,6 +43,12 @@ public class DiagnosticWithParameters1 extends Abstract return (DiagnosticFactory1)super.getFactory(); } + @NotNull + @Override + public String getMessage() { + return getFactory().makeMessage(a); + } + @Override @NotNull public List getTextRanges() { diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/DiagnosticWithParameters2.java b/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/DiagnosticWithParameters2.java index 51690b5e7d8..031d5805a15 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/DiagnosticWithParameters2.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/DiagnosticWithParameters2.java @@ -34,9 +34,8 @@ public class DiagnosticWithParameters2 extends Abstr @NotNull A a, @NotNull B b, @NotNull DiagnosticFactory2 factory, - @NotNull Severity severity, - @NotNull String message) { - super(psiElement, factory, severity, message); + @NotNull Severity severity) { + super(psiElement, factory, severity); this.a = a; this.b = b; } @@ -47,6 +46,12 @@ public class DiagnosticWithParameters2 extends Abstr return (DiagnosticFactory2)super.getFactory(); } + @NotNull + @Override + public String getMessage() { + return getFactory().makeMessage(a, b); + } + @Override @NotNull public List getTextRanges() { diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/DiagnosticWithParameters3.java b/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/DiagnosticWithParameters3.java index a57d8526e86..82ee507aa85 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/DiagnosticWithParameters3.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/DiagnosticWithParameters3.java @@ -36,9 +36,8 @@ public class DiagnosticWithParameters3 extends Ab @NotNull B b, @NotNull C c, @NotNull DiagnosticFactory3 factory, - @NotNull Severity severity, - @NotNull String message) { - super(psiElement, factory, severity, message); + @NotNull Severity severity) { + super(psiElement, factory, severity); this.a = a; this.b = b; this.c = c; @@ -50,6 +49,12 @@ public class DiagnosticWithParameters3 extends Ab return (DiagnosticFactory3)super.getFactory(); } + @NotNull + @Override + public String getMessage() { + return getFactory().makeMessage(a, b, c); + } + @Override @NotNull public List getTextRanges() { diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/DiagnosticWithPsiElement.java b/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/DiagnosticWithPsiElement.java index 5d7fe6c0a6e..603c0aed730 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/DiagnosticWithPsiElement.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/DiagnosticWithPsiElement.java @@ -26,14 +26,22 @@ import java.util.List; * @author svtk */ public class DiagnosticWithPsiElement extends AbstractDiagnostic { - public DiagnosticWithPsiElement(@NotNull E psiElement, @NotNull DiagnosticFactoryWithPsiElement factory, @NotNull Severity severity, @NotNull String message) { - super(psiElement, factory, severity, message); + public DiagnosticWithPsiElement(@NotNull E psiElement, + @NotNull DiagnosticFactory factory, + @NotNull Severity severity) { + super(psiElement, factory, severity); } @NotNull @Override - public DiagnosticFactoryWithPsiElement getFactory() { - return (DiagnosticFactoryWithPsiElement)super.getFactory(); + public DiagnosticFactory getFactory() { + return (DiagnosticFactory)super.getFactory(); + } + + @NotNull + @Override + public String getMessage() { + return getFactory().getMessage(); } @Override 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 33553f9ccdd..15f49087fd6 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/RedeclarationDiagnostic.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/RedeclarationDiagnostic.java @@ -33,9 +33,23 @@ import java.util.List; */ public interface RedeclarationDiagnostic extends Diagnostic { class SimpleRedeclarationDiagnostic extends AbstractDiagnostic implements RedeclarationDiagnostic { + private String name; public SimpleRedeclarationDiagnostic(@NotNull PsiElement psiElement, @NotNull String name, RedeclarationDiagnosticFactory factory) { - super(psiElement, factory, factory.severity, factory.makeMessage(name)); + super(psiElement, factory, factory.severity); + this.name = name; + } + + @NotNull + @Override + public RedeclarationDiagnosticFactory getFactory() { + return (RedeclarationDiagnosticFactory)super.getFactory(); + } + + @NotNull + @Override + public String getMessage() { + return getFactory().makeMessage(name); } @NotNull 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 8b1f2242987..730c992d305 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/UnresolvedReferenceDiagnostic.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/UnresolvedReferenceDiagnostic.java @@ -30,15 +30,21 @@ 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 UnresolvedReferenceDiagnostic(JetReferenceExpression referenceExpression, String message) { - super(referenceExpression, Errors.UNRESOLVED_REFERENCE, ERROR, message); + public UnresolvedReferenceDiagnostic(@NotNull JetReferenceExpression referenceExpression, + @NotNull UnresolvedReferenceDiagnosticFactory factory) { + super(referenceExpression, factory, ERROR); } @NotNull @Override public String getMessage() { - return super.getMessage() + ": " + getPsiElement().getText(); + return getFactory().getMessage() + ": " + getPsiElement().getText(); } @NotNull 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 ddec486cf56..b4fd2e6e889 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/UnresolvedReferenceDiagnosticFactory.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/UnresolvedReferenceDiagnosticFactory.java @@ -16,28 +16,25 @@ 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.JetArrayAccessExpression; import org.jetbrains.jet.lang.psi.JetReferenceExpression; -import org.jetbrains.jet.lang.psi.JetSimpleNameExpression; - -import java.util.List; /** * @author abreslav */ public class UnresolvedReferenceDiagnosticFactory extends AbstractDiagnosticFactory { - private final String message; private UnresolvedReferenceDiagnosticFactory(String message) { this.message = message; } + String getMessage() { + return message; + } + public UnresolvedReferenceDiagnostic on(@NotNull JetReferenceExpression reference) { - return new UnresolvedReferenceDiagnostic(reference, message); + return new UnresolvedReferenceDiagnostic(reference, this); } public static UnresolvedReferenceDiagnosticFactory create(String message) { diff --git a/compiler/testData/diagnostics/tests/NamedArgumentsAndDefaultValues.jet b/compiler/testData/diagnostics/tests/NamedArgumentsAndDefaultValues.jet index 8cfd720f404..161e6f7f743 100644 --- a/compiler/testData/diagnostics/tests/NamedArgumentsAndDefaultValues.jet +++ b/compiler/testData/diagnostics/tests/NamedArgumentsAndDefaultValues.jet @@ -19,5 +19,5 @@ fun test() { bar(1, 1, "") bar(1, 1, "") bar(1, z = "") - bar(1, zz = "", zz.foo) + bar(1, zz = "", zz.foo) }