error visitor

This commit is contained in:
Stepan Koltsov
2012-06-14 18:30:48 +04:00
parent 3adbb2fdde
commit e0c389b239
2 changed files with 15 additions and 13 deletions
@@ -28,6 +28,7 @@ import org.jetbrains.jet.lang.descriptors.ClassDescriptor;
import org.jetbrains.jet.lang.diagnostics.*; import org.jetbrains.jet.lang.diagnostics.*;
import org.jetbrains.jet.lang.diagnostics.rendering.DefaultErrorMessages; import org.jetbrains.jet.lang.diagnostics.rendering.DefaultErrorMessages;
import org.jetbrains.jet.lang.psi.JetFile; 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.BindingContext;
import org.jetbrains.jet.lang.resolve.DescriptorUtils; import org.jetbrains.jet.lang.resolve.DescriptorUtils;
@@ -112,7 +113,7 @@ public final class AnalyzerWithCompilerReport {
private void reportSyntaxErrors(@NotNull Collection<JetFile> files) { private void reportSyntaxErrors(@NotNull Collection<JetFile> files) {
for (JetFile file : files) { for (JetFile file : files) {
file.accept(new PsiRecursiveElementWalkingVisitor() { file.accept(new AnalyzingUtils.PsiErrorElementVisitor() {
@Override @Override
public void visitErrorElement(PsiErrorElement element) { public void visitErrorElement(PsiErrorElement element) {
String description = element.getErrorDescription(); String description = element.getErrorDescription();
@@ -32,13 +32,19 @@ import java.util.List;
*/ */
public class AnalyzingUtils { public class AnalyzingUtils {
public static void checkForSyntacticErrors(@NotNull PsiElement root) { public abstract static class PsiErrorElementVisitor extends PsiElementVisitor {
root.acceptChildren(new PsiElementVisitor() { @Override
@Override public void visitElement(PsiElement element) {
public void visitElement(PsiElement element) { element.acceptChildren(this);
element.acceptChildren(this); }
}
@Override
public abstract void visitErrorElement(PsiErrorElement element);
}
public static void checkForSyntacticErrors(@NotNull PsiElement root) {
root.acceptChildren(new PsiErrorElementVisitor() {
@Override @Override
public void visitErrorElement(PsiErrorElement element) { public void visitErrorElement(PsiErrorElement element) {
throw new IllegalArgumentException(element.getErrorDescription() + "; looking at " + element.getNode().getElementType() + " '" + element.getText() + DiagnosticUtils.atLocation(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<PsiErrorElement> getSyntaxErrorRanges(@NotNull PsiElement root) { public static List<PsiErrorElement> getSyntaxErrorRanges(@NotNull PsiElement root) {
final ArrayList<PsiErrorElement> r = new ArrayList<PsiErrorElement>(); final ArrayList<PsiErrorElement> r = new ArrayList<PsiErrorElement>();
root.acceptChildren(new PsiElementVisitor() { root.acceptChildren(new PsiErrorElementVisitor() {
@Override
public void visitElement(PsiElement element) {
element.acceptChildren(this);
}
@Override @Override
public void visitErrorElement(PsiErrorElement element) { public void visitErrorElement(PsiErrorElement element) {
r.add(element); r.add(element);