generating code
[cdsspec-compiler.git] / src / edu / uci / eecs / specCompiler / codeGenerator / SemanticsChecker.java
index 8f02b409dad58d7f999446c558800fb26a700afa..3bd801ce1a323f2b526ce102aecb07df4e80b505 100644 (file)
@@ -19,6 +19,7 @@ public class SemanticsChecker {
        public final HashMap<String, SpecConstruct> CPLabel2Construct;
        public final HashMap<String, SpecConstruct> potentialCPLabel2Construct;
        public final HashMap<String, SpecConstruct> interfaceName2Construct;
+       public final HashMap<String, ArrayList<InterfaceConstruct>> CPLabel2InterfaceConstruct;
        public final HashSet<DefineVar> defineVars;
 
        public SemanticsChecker(ArrayList<SpecConstruct> constructs) {
@@ -26,6 +27,7 @@ public class SemanticsChecker {
                this.CPLabel2Construct = new HashMap<String, SpecConstruct>();
                this.potentialCPLabel2Construct = new HashMap<String, SpecConstruct>();
                this.interfaceName2Construct = new HashMap<String, SpecConstruct>();
+               this.CPLabel2InterfaceConstruct = new HashMap<String, ArrayList<InterfaceConstruct>>();
                this.defineVars = new HashSet<DefineVar>();
        }
 
@@ -68,6 +70,14 @@ public class SemanticsChecker {
                                        DefineVar var = iConstruct.action.defineVars.get(j);
                                        var.renameVarName("__" + iConstruct.name + "_" + var.varName + "__");
                                }
+                               
+                               for (int j = 0; j < iConstruct.commitPointSet.size(); j++) {
+                                       String label = iConstruct.commitPointSet.get(j);
+                                       if (!CPLabel2InterfaceConstruct.containsKey(label)) {
+                                               CPLabel2InterfaceConstruct.put(label, new ArrayList<InterfaceConstruct>());
+                                       }
+                                       CPLabel2InterfaceConstruct.get(label).add(iConstruct);
+                               }
                        }
                }