error visitor
This commit is contained in:
+2
-1
@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user