From: bdemsky Date: Wed, 18 Feb 2009 09:41:37 +0000 (+0000) Subject: remaining hacks X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=dd5dc47fd19f4927bbb2db3a17ad50b1a1d48a2f;p=IRC.git remaining hacks --- diff --git a/Robust/src/IR/Tree/BuildIR.java b/Robust/src/IR/Tree/BuildIR.java index 2e61224f..86a9c1db 100644 --- a/Robust/src/IR/Tree/BuildIR.java +++ b/Robust/src/IR/Tree/BuildIR.java @@ -13,8 +13,8 @@ public class BuildIR { this.m_taskexitnum = 0; } - public void buildtree(ParseNode pn) { - parseFile(pn); + public void buildtree(ParseNode pn, Set toanalyze) { + parseFile(pn, toanalyze); } Vector singleimports; @@ -22,7 +22,7 @@ public class BuildIR { NameDescriptor packages; /** Parse the classes in this file */ - public void parseFile(ParseNode pn) { + public void parseFile(ParseNode pn, Set toanalyze) { singleimports=new Vector(); multiimports=new Vector(); @@ -51,9 +51,13 @@ public class BuildIR { continue; if (isNode(type_pn,"class_declaration")) { ClassDescriptor cn=parseTypeDecl(type_pn); + if (toanalyze!=null) + toanalyze.add(cn); state.addClass(cn); } else if (isNode(type_pn,"task_declaration")) { TaskDescriptor td=parseTaskDecl(type_pn); + if (toanalyze!=null) + toanalyze.add(td); state.addTask(td); } else { throw new Error(type_pn.getLabel()); diff --git a/Robust/src/IR/Tree/SemanticCheck.java b/Robust/src/IR/Tree/SemanticCheck.java index d160f65f..ceef3bce 100644 --- a/Robust/src/IR/Tree/SemanticCheck.java +++ b/Robust/src/IR/Tree/SemanticCheck.java @@ -57,25 +57,23 @@ public class SemanticCheck { public void semanticCheck() { SymbolTable classtable=state.getClassSymbolTable(); toanalyze.addAll(classtable.getValueSet()); + toanalyze.addAll(state.getTaskSymbolTable().getValueSet()); - //Start with any tasks - for(Iterator task_it=state.getTaskSymbolTable().getDescriptorsIterator(); task_it.hasNext();) { - TaskDescriptor td=(TaskDescriptor)task_it.next(); - checkTask(td); - - } - // Do methods next while(!toanalyze.isEmpty()) { - ClassDescriptor cd=(ClassDescriptor)toanalyze.iterator().next(); - toanalyze.remove(cd); - checkClass(cd); - for(Iterator method_it=cd.getMethods(); method_it.hasNext();) { - MethodDescriptor md=(MethodDescriptor)method_it.next(); - checkMethodBody(cd,md); + Object obj=toanalyze.iterator().next(); + if (obj instanceof TaskDescriptor) { + checkTask((TaskDescriptor)obj); + } else { + ClassDescriptor cd=(ClassDescriptor)obj; + toanalyze.remove(cd); + checkClass(cd); + for(Iterator method_it=cd.getMethods(); method_it.hasNext();) { + MethodDescriptor md=(MethodDescriptor)method_it.next(); + checkMethodBody(cd,md); + } } } - } public void checkTypeDescriptor(TypeDescriptor td) { diff --git a/Robust/src/IR/TypeUtil.java b/Robust/src/IR/TypeUtil.java index 5b65deb1..019e3130 100644 --- a/Robust/src/IR/TypeUtil.java +++ b/Robust/src/IR/TypeUtil.java @@ -21,14 +21,14 @@ public class TypeUtil { createTables(); } - public void addNewClass(String cl) { + public void addNewClass(String cl, Set todo) { for(int i=0;i