| 1 19 20 package soot.javaToJimple; 21 import java.util.*; 22 23 public class LocalUsesChecker extends polyglot.visit.NodeVisitor{ 24 25 private ArrayList locals; 26 private ArrayList localDecls; 27 private ArrayList news; 28 29 public ArrayList getLocals() { 30 return locals; 31 } 32 33 public ArrayList getNews(){ 34 return news; 35 } 36 37 public ArrayList getLocalDecls(){ 38 return localDecls; 39 } 40 41 public LocalUsesChecker(){ 42 locals = new ArrayList(); 43 localDecls = new ArrayList(); 44 news = new ArrayList(); 45 } 46 47 public polyglot.ast.Node leave(polyglot.ast.Node old, polyglot.ast.Node n, polyglot.visit.NodeVisitor visitor) { 48 49 if (n instanceof polyglot.ast.Local){ 50 if (!(locals.contains(new polyglot.util.IdentityKey(((polyglot.ast.Local)n).localInstance())))){ 51 if (!((polyglot.ast.Local)n).isConstant()){ 52 locals.add(new polyglot.util.IdentityKey(((polyglot.ast.Local)n).localInstance())); 53 } 54 } 55 } 56 57 if (n instanceof polyglot.ast.LocalDecl){ 58 localDecls.add(new polyglot.util.IdentityKey(((polyglot.ast.LocalDecl)n).localInstance())); 59 } 60 61 if (n instanceof polyglot.ast.Formal){ 62 localDecls.add(new polyglot.util.IdentityKey(((polyglot.ast.Formal)n).localInstance())); 63 } 64 65 if (n instanceof polyglot.ast.New){ 66 news.add(n); 67 } 68 return n; 69 } 70 } 71 | Popular Tags |