1 24 25 package org.aspectj.compiler.crosscuts; 26 27 import org.aspectj.compiler.base.ast.*; 28 import org.aspectj.compiler.base.*; 29 30 import java.util.*; 31 32 33 public class TreeCheckerPass extends WalkerPass { 34 private boolean checkSourceInfo; 35 private boolean checkParents; 36 private boolean checkResolved; 37 38 private int showRealParentOnExit = -1; 39 40 public TreeCheckerPass(JavaCompiler compiler, boolean checkSourceInfo, boolean checkParents, boolean checkResolved) { 41 super(compiler); 42 this.checkSourceInfo = checkSourceInfo; 43 this.checkParents = checkParents; 44 this.checkResolved = checkResolved; 45 } 46 47 public String getDisplayName() { 48 return "check source:" + checkSourceInfo + " parents: " + checkParents + " resolved: " + checkResolved; 49 } 50 51 52 public ASTObject process(ASTObject object) { 53 if (checkParents) checkParent(object); 56 if (checkResolved) checkResolved(object); 57 58 object.walk(this); 59 60 if (showRealParentOnExit > 0) showRealParentOnExit--; 61 if (showRealParentOnExit == 0) { 62 object.display(2); 63 showRealParentOnExit = -1; 64 } 65 66 return object; 67 } 68 69 void checkSourceInfo(ASTObject object) { 70 if (!object.hasSourceLocation()) { 71 getCompiler().showError(object.getParent(), "no source location"); 72 73 object.display(2); 74 } 75 } 76 77 void checkParent(ASTObject object) { 78 if (object.getParent() == null && !(object instanceof CompilationUnit)) { 79 object.showError("no parent"); 80 object.display(2); 81 showRealParentOnExit = 3; 82 } 83 } 84 85 void checkResolved(ASTObject object) { 86 } 88 89 90 } 91 | Popular Tags |