From 8752be42ee9719dd348aae434e4201ce9b6011ab Mon Sep 17 00:00:00 2001 From: svtk Date: Thu, 15 Sep 2011 13:47:34 +0400 Subject: [PATCH] Diagnostics with psi elements added --- .../diagnostics/DiagnosticWithPsiElement.java | 22 +++++++++++++++++++ .../jet/lang/diagnostics/Errors.java | 19 +++++----------- .../annotations/DebugInfoAnnotator.java | 2 +- .../tests/org/jetbrains/jet/JetTestUtils.java | 2 +- .../jet/resolve/ExpectedResolveData.java | 2 +- 5 files changed, 31 insertions(+), 16 deletions(-) create mode 100644 compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/DiagnosticWithPsiElement.java diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/DiagnosticWithPsiElement.java b/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/DiagnosticWithPsiElement.java new file mode 100644 index 00000000000..7cbc96161af --- /dev/null +++ b/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/DiagnosticWithPsiElement.java @@ -0,0 +1,22 @@ +package org.jetbrains.jet.lang.diagnostics; + +import com.intellij.openapi.util.TextRange; +import com.intellij.psi.PsiElement; +import org.jetbrains.annotations.NotNull; + +/** + * @author svtk + */ +public class DiagnosticWithPsiElement extends GenericDiagnostic { + private final T psiElement; + + public DiagnosticWithPsiElement(DiagnosticFactory factory, Severity severity, String message, T psiElement) { + super(factory, severity, message, psiElement.getTextRange()); + this.psiElement = psiElement; + } + + @NotNull + public T getPsiElement() { + return psiElement; + } +} diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/Errors.java b/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/Errors.java index a325d213355..9af5989bb43 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/Errors.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/Errors.java @@ -63,7 +63,7 @@ public interface Errors { @NotNull public Diagnostic on(@NotNull PsiElement element) { - return on(element.getTextRange()); + return new DiagnosticWithPsiElement(this, severity, message, element); } @NotNull @@ -102,7 +102,7 @@ public interface Errors { @NotNull public Diagnostic on(@NotNull PsiElement element, @NotNull T argument) { - return on(element.getTextRange(), argument); + return new DiagnosticWithPsiElement(this, severity, makeMessage(argument), element); } } @@ -139,7 +139,7 @@ public interface Errors { @NotNull public Diagnostic on(@NotNull PsiElement element, @NotNull A a, @NotNull B b) { - return on(element.getTextRange(), a, b); + return new DiagnosticWithPsiElement(this, severity, makeMessage(a, b), element); } } @@ -180,7 +180,7 @@ public interface Errors { @NotNull public Diagnostic on(@NotNull PsiElement element, @NotNull A a, @NotNull B b, @NotNull C c) { - return on(element.getTextRange(), a, b, c); + return new DiagnosticWithPsiElement(this, severity, makeMessage(a, b, c), element); } } @@ -537,18 +537,11 @@ public interface Errors { RedeclarationDiagnosticFactory REDECLARATION = RedeclarationDiagnosticFactory.INSTANCE; - public class UnresolvedReferenceDiagnostic extends GenericDiagnostic { - - private final JetReferenceExpression reference; + public class UnresolvedReferenceDiagnostic extends DiagnosticWithPsiElement { public UnresolvedReferenceDiagnostic(JetReferenceExpression referenceExpression) { - super(UNRESOLVED_REFERENCE, ERROR, "Unresolved reference", referenceExpression.getTextRange()); - this.reference = referenceExpression; + super(UNRESOLVED_REFERENCE, ERROR, "Unresolved reference", referenceExpression); } - @NotNull - public JetReferenceExpression getReference() { - return reference; - } } } diff --git a/idea/src/org/jetbrains/jet/plugin/annotations/DebugInfoAnnotator.java b/idea/src/org/jetbrains/jet/plugin/annotations/DebugInfoAnnotator.java index db6567c8d9b..61cdeadda46 100644 --- a/idea/src/org/jetbrains/jet/plugin/annotations/DebugInfoAnnotator.java +++ b/idea/src/org/jetbrains/jet/plugin/annotations/DebugInfoAnnotator.java @@ -57,7 +57,7 @@ public class DebugInfoAnnotator implements Annotator { final Set unresolvedReferences = Sets.newHashSet(); for (Diagnostic diagnostic : bindingContext.getDiagnostics()) { if (diagnostic instanceof Errors.UnresolvedReferenceDiagnostic) { - unresolvedReferences.add(((Errors.UnresolvedReferenceDiagnostic) diagnostic).getReference()); + unresolvedReferences.add(((Errors.UnresolvedReferenceDiagnostic) diagnostic).getPsiElement()); } } diff --git a/idea/tests/org/jetbrains/jet/JetTestUtils.java b/idea/tests/org/jetbrains/jet/JetTestUtils.java index 895815e7cb7..ecef29c4076 100644 --- a/idea/tests/org/jetbrains/jet/JetTestUtils.java +++ b/idea/tests/org/jetbrains/jet/JetTestUtils.java @@ -51,7 +51,7 @@ public class JetTestUtils { public void report(@NotNull Diagnostic diagnostic) { if (diagnostic instanceof Errors.UnresolvedReferenceDiagnostic) { Errors.UnresolvedReferenceDiagnostic unresolvedReferenceDiagnostic = (Errors.UnresolvedReferenceDiagnostic) diagnostic; - throw new IllegalStateException("Unresolved: " + unresolvedReferenceDiagnostic.getReference().getText()); + throw new IllegalStateException("Unresolved: " + unresolvedReferenceDiagnostic.getPsiElement().getText()); } } }; diff --git a/idea/tests/org/jetbrains/jet/resolve/ExpectedResolveData.java b/idea/tests/org/jetbrains/jet/resolve/ExpectedResolveData.java index 33ca3855216..5cf803181db 100644 --- a/idea/tests/org/jetbrains/jet/resolve/ExpectedResolveData.java +++ b/idea/tests/org/jetbrains/jet/resolve/ExpectedResolveData.java @@ -100,7 +100,7 @@ public class ExpectedResolveData { for (Diagnostic diagnostic : bindingContext.getDiagnostics()) { if (diagnostic instanceof Errors.UnresolvedReferenceDiagnostic) { Errors.UnresolvedReferenceDiagnostic unresolvedReferenceDiagnostic = (Errors.UnresolvedReferenceDiagnostic) diagnostic; - unresolvedReferences.add(unresolvedReferenceDiagnostic.getReference()); + unresolvedReferences.add(unresolvedReferenceDiagnostic.getPsiElement()); } }