FlatMethod fm=new FlatMethod(td, ffan);
for(int i=0;i<td.numParameters();i++) {
- fm.addParameterTemp(getTempforVar(td.getParameter(i)));
+ VarDescriptor paramvd=td.getParameter(i);
+ fm.addParameterTemp(getTempforVar(paramvd));
+ //Don't need to get temps for tag variables
+ //If they are used, this will be done automatically
+ //If they aren't we won't pass them in
}
/* Flatten Vector of Flag Effects */
tagstable.put(vd, tel);
for(int i=0;i<tel.numTags();i++) {
TagVarDescriptor tvd=new TagVarDescriptor(new TagDescriptor(tel.getType(i)), tel.getName(i));
- if (!(paramtable.getFromSameScope(tel.getName(i)) instanceof TagVarDescriptor))
+ if (paramtable.getFromSameScope(tel.getName(i))==null) {
+ paramtable.add(tvd);
+ } else if (!(((paramtable.getFromSameScope(tel.getName(i)) instanceof TagVarDescriptor)&¶mtable.getFromSameScope(tel.getName(i))).equals(tvd)))
throw new Error("Parameter "+paramname+" already defined");
- paramtable.add(tvd);
}
}
-
+
if (paramtable.getFromSameScope(paramname)!=null) {
throw new Error("Parameter "+paramname+" already defined");
}
package IR.Tree;
import java.util.Vector;
+import IR.Flat.TempDescriptor;
public class TagExpressionList {
Vector names;
Vector types;
+ Vector temps;
public TagExpressionList() {
names=new Vector();
types=new Vector();
+ temps=new Vector();
}
public void addTag(String type, String name) {