diff --git a/compiler/frontend/src/org/jetbrains/jet/checkers/DebugInfoUtil.java b/compiler/frontend/src/org/jetbrains/jet/checkers/DebugInfoUtil.java index 30d7793613c..5cdf0554c47 100644 --- a/compiler/frontend/src/org/jetbrains/jet/checkers/DebugInfoUtil.java +++ b/compiler/frontend/src/org/jetbrains/jet/checkers/DebugInfoUtil.java @@ -26,8 +26,10 @@ import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor; import org.jetbrains.jet.lang.diagnostics.AbstractDiagnosticFactory; import org.jetbrains.jet.lang.diagnostics.Diagnostic; import org.jetbrains.jet.lang.diagnostics.Errors; -import org.jetbrains.jet.lang.diagnostics.UnresolvedReferenceDiagnosticFactory; -import org.jetbrains.jet.lang.psi.*; +import org.jetbrains.jet.lang.psi.JetReferenceExpression; +import org.jetbrains.jet.lang.psi.JetSimpleNameExpression; +import org.jetbrains.jet.lang.psi.JetSuperExpression; +import org.jetbrains.jet.lang.psi.JetTreeVisitorVoid; import org.jetbrains.jet.lang.resolve.BindingContext; import org.jetbrains.jet.lang.types.ErrorUtils; import org.jetbrains.jet.lang.types.JetType; @@ -38,8 +40,6 @@ import java.util.Map; import static org.jetbrains.jet.lang.resolve.BindingContext.*; import static org.jetbrains.jet.lexer.JetTokens.*; -import static org.jetbrains.jet.lexer.JetTokens.ELVIS; -import static org.jetbrains.jet.lexer.JetTokens.EXCLEXCL; public class DebugInfoUtil { private static final TokenSet EXCLUDED = TokenSet.create( @@ -62,7 +62,7 @@ public class DebugInfoUtil { final Map markedWithErrorElements = Maps.newHashMap(); for (Diagnostic diagnostic : bindingContext.getDiagnostics()) { AbstractDiagnosticFactory factory = diagnostic.getFactory(); - if (factory instanceof UnresolvedReferenceDiagnosticFactory) { + if (Errors.UNRESOLVED_REFERENCE_DIAGNOSTICS.contains(diagnostic.getFactory())) { markedWithErrorElements.put((JetReferenceExpression) diagnostic.getPsiElement(), factory); } else if (factory == Errors.SUPER_IS_NOT_AN_EXPRESSION @@ -130,7 +130,7 @@ public class DebugInfoUtil { } } if (resolved && markedWithError) { - if (factory instanceof UnresolvedReferenceDiagnosticFactory) { + if (Errors.UNRESOLVED_REFERENCE_DIAGNOSTICS.contains(factory)) { debugInfoReporter.reportUnresolvedWithTarget(expression, target); } } 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 ac20144934c..657eccab687 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/Errors.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/Errors.java @@ -16,6 +16,7 @@ package org.jetbrains.jet.lang.diagnostics; +import com.google.common.collect.ImmutableSet; import com.google.common.collect.Lists; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiNameIdentifierOwner; @@ -531,6 +532,14 @@ public interface Errors { DiagnosticFactory1 INACCESSIBLE_OUTER_CLASS_EXPRESSION = DiagnosticFactory1.create(ERROR); SimpleDiagnosticFactory NESTED_CLASS_NOT_ALLOWED = SimpleDiagnosticFactory.create(ERROR); + + // Error sets + ImmutableSet UNRESOLVED_REFERENCE_DIAGNOSTICS = ImmutableSet.of( + UNRESOLVED_REFERENCE, NAMED_PARAMETER_NOT_FOUND); + ImmutableSet UNUSED_ELEMENT_DIAGNOSTICS = ImmutableSet.of( + UNUSED_VARIABLE, UNUSED_PARAMETER, ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE); + ImmutableSet REDECLARATION_DIAGNOSTICS = ImmutableSet.of( + REDECLARATION, NAME_SHADOWING); //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // This field is needed to make the Initializer class load (interfaces cannot have static initializers) diff --git a/compiler/tests/org/jetbrains/jet/JetTestUtils.java b/compiler/tests/org/jetbrains/jet/JetTestUtils.java index 59638523f89..9aa967a02e9 100644 --- a/compiler/tests/org/jetbrains/jet/JetTestUtils.java +++ b/compiler/tests/org/jetbrains/jet/JetTestUtils.java @@ -40,8 +40,8 @@ import org.jetbrains.jet.codegen.forTestCompile.ForTestPackJdkAnnotations; import org.jetbrains.jet.config.CommonConfigurationKeys; import org.jetbrains.jet.config.CompilerConfiguration; import org.jetbrains.jet.lang.diagnostics.Diagnostic; +import org.jetbrains.jet.lang.diagnostics.Errors; import org.jetbrains.jet.lang.diagnostics.Severity; -import org.jetbrains.jet.lang.diagnostics.UnresolvedReferenceDiagnosticFactory; import org.jetbrains.jet.lang.diagnostics.rendering.DefaultErrorMessages; import org.jetbrains.jet.lang.psi.JetFile; import org.jetbrains.jet.lang.psi.JetPsiFactory; @@ -134,7 +134,7 @@ public class JetTestUtils { @Override public void report(@NotNull Diagnostic diagnostic) { - if (diagnostic.getFactory() instanceof UnresolvedReferenceDiagnosticFactory) { + if (Errors.UNRESOLVED_REFERENCE_DIAGNOSTICS.contains(diagnostic.getFactory())) { throw new IllegalStateException("Unresolved: " + diagnostic.getPsiElement().getText()); } } diff --git a/compiler/tests/org/jetbrains/jet/resolve/ExpectedResolveData.java b/compiler/tests/org/jetbrains/jet/resolve/ExpectedResolveData.java index f3642dce155..2201f9ff865 100644 --- a/compiler/tests/org/jetbrains/jet/resolve/ExpectedResolveData.java +++ b/compiler/tests/org/jetbrains/jet/resolve/ExpectedResolveData.java @@ -33,7 +33,7 @@ import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor; import org.jetbrains.jet.lang.descriptors.TypeParameterDescriptor; import org.jetbrains.jet.lang.diagnostics.Diagnostic; import org.jetbrains.jet.lang.diagnostics.DiagnosticUtils; -import org.jetbrains.jet.lang.diagnostics.UnresolvedReferenceDiagnosticFactory; +import org.jetbrains.jet.lang.diagnostics.Errors; import org.jetbrains.jet.lang.psi.*; import org.jetbrains.jet.lang.resolve.AnalyzerScriptParameter; import org.jetbrains.jet.lang.resolve.BindingContext; @@ -160,7 +160,7 @@ public abstract class ExpectedResolveData { final Set unresolvedReferences = Sets.newHashSet(); for (Diagnostic diagnostic : bindingContext.getDiagnostics()) { - if (diagnostic.getFactory() instanceof UnresolvedReferenceDiagnosticFactory) { + if (Errors.UNRESOLVED_REFERENCE_DIAGNOSTICS.contains(diagnostic.getFactory())) { unresolvedReferences.add(diagnostic.getPsiElement()); } } diff --git a/idea/src/org/jetbrains/jet/plugin/highlighter/JetPsiChecker.java b/idea/src/org/jetbrains/jet/plugin/highlighter/JetPsiChecker.java index 0232bd788d5..138ea669557 100644 --- a/idea/src/org/jetbrains/jet/plugin/highlighter/JetPsiChecker.java +++ b/idea/src/org/jetbrains/jet/plugin/highlighter/JetPsiChecker.java @@ -35,7 +35,9 @@ import com.intellij.xml.util.XmlStringUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.TestOnly; -import org.jetbrains.jet.lang.diagnostics.*; +import org.jetbrains.jet.lang.diagnostics.Diagnostic; +import org.jetbrains.jet.lang.diagnostics.Errors; +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.psi.JetReferenceExpression; @@ -145,7 +147,7 @@ public class JetPsiChecker implements Annotator { if (!diagnostic.isValid()) return; List textRanges = diagnostic.getTextRanges(); if (diagnostic.getSeverity() == Severity.ERROR) { - if (diagnostic.getFactory() instanceof UnresolvedReferenceDiagnosticFactory) { + if (Errors.UNRESOLVED_REFERENCE_DIAGNOSTICS.contains(diagnostic.getFactory())) { JetReferenceExpression referenceExpression = (JetReferenceExpression)diagnostic.getPsiElement(); PsiReference reference = referenceExpression.getReference(); if (reference instanceof MultiRangeReference) { @@ -180,7 +182,7 @@ public class JetPsiChecker implements Annotator { return; } - if (diagnostic.getFactory() instanceof RedeclarationDiagnosticFactory) { + if (Errors.REDECLARATION_DIAGNOSTICS.contains(diagnostic.getFactory())) { registerQuickFix(markRedeclaration(redeclarations, diagnostic, holder), diagnostic); return; } @@ -202,7 +204,7 @@ public class JetPsiChecker implements Annotator { annotation.setTooltip(getMessage(diagnostic)); registerQuickFix(annotation, diagnostic); - if (diagnostic.getFactory() instanceof UnusedElementDiagnosticFactory) { + if (Errors.UNUSED_ELEMENT_DIAGNOSTICS.contains(diagnostic.getFactory())) { annotation.setHighlightType(ProblemHighlightType.LIKE_UNUSED_SYMBOL); } }