From e0c389b2397c1ef2867c38755a12104ab1817c5f Mon Sep 17 00:00:00 2001 From: Stepan Koltsov Date: Thu, 14 Jun 2012 18:30:48 +0400 Subject: [PATCH] error visitor --- .../messages/AnalyzerWithCompilerReport.java | 3 ++- .../jet/lang/resolve/AnalyzingUtils.java | 25 ++++++++++--------- 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/compiler/cli/src/org/jetbrains/jet/cli/common/messages/AnalyzerWithCompilerReport.java b/compiler/cli/src/org/jetbrains/jet/cli/common/messages/AnalyzerWithCompilerReport.java index 4317e34f4d4..f5618b43992 100644 --- a/compiler/cli/src/org/jetbrains/jet/cli/common/messages/AnalyzerWithCompilerReport.java +++ b/compiler/cli/src/org/jetbrains/jet/cli/common/messages/AnalyzerWithCompilerReport.java @@ -28,6 +28,7 @@ import org.jetbrains.jet.lang.descriptors.ClassDescriptor; import org.jetbrains.jet.lang.diagnostics.*; import org.jetbrains.jet.lang.diagnostics.rendering.DefaultErrorMessages; import org.jetbrains.jet.lang.psi.JetFile; +import org.jetbrains.jet.lang.resolve.AnalyzingUtils; import org.jetbrains.jet.lang.resolve.BindingContext; import org.jetbrains.jet.lang.resolve.DescriptorUtils; @@ -112,7 +113,7 @@ public final class AnalyzerWithCompilerReport { private void reportSyntaxErrors(@NotNull Collection files) { for (JetFile file : files) { - file.accept(new PsiRecursiveElementWalkingVisitor() { + file.accept(new AnalyzingUtils.PsiErrorElementVisitor() { @Override public void visitErrorElement(PsiErrorElement element) { String description = element.getErrorDescription(); diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/AnalyzingUtils.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/AnalyzingUtils.java index 51358d84152..306d2abc22c 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/AnalyzingUtils.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/AnalyzingUtils.java @@ -32,13 +32,19 @@ import java.util.List; */ public class AnalyzingUtils { - public static void checkForSyntacticErrors(@NotNull PsiElement root) { - root.acceptChildren(new PsiElementVisitor() { - @Override - public void visitElement(PsiElement element) { - element.acceptChildren(this); - } + public abstract static class PsiErrorElementVisitor extends PsiElementVisitor { + @Override + public void visitElement(PsiElement element) { + element.acceptChildren(this); + } + @Override + public abstract void visitErrorElement(PsiErrorElement element); + } + + + public static void checkForSyntacticErrors(@NotNull PsiElement root) { + root.acceptChildren(new PsiErrorElementVisitor() { @Override public void visitErrorElement(PsiErrorElement element) { throw new IllegalArgumentException(element.getErrorDescription() + "; looking at " + element.getNode().getElementType() + " '" + element.getText() + DiagnosticUtils.atLocation(element)); @@ -48,12 +54,7 @@ public class AnalyzingUtils { public static List getSyntaxErrorRanges(@NotNull PsiElement root) { final ArrayList r = new ArrayList(); - root.acceptChildren(new PsiElementVisitor() { - @Override - public void visitElement(PsiElement element) { - element.acceptChildren(this); - } - + root.acceptChildren(new PsiErrorElementVisitor() { @Override public void visitErrorElement(PsiErrorElement element) { r.add(element);