public object VisitFunctionStatement(Statement.Function stmt) { var name = stmt.Identifier; var parameters = stmt.Parameters.Count; var returnValues = stmt.ReturnValue == null ? 0 : 1; current = new WASMFunction(parameters, returnValues, name); functions.Declare(name); // TODO too many nested envs? environment.EnterInner(); passByVar.Add(name, new List <bool>()); // TODO pass by foreach (var param in stmt.Parameters) { environment.Declare(param.Identifier); current.Locals++; passByVar[name].Add(param.IsRef); } stmt.Body.Accept(this); wasm.addFunction(current); environment.ExitInner(); return(null); }
public void addFunction(WASMFunction func) { functions.Add(func); }