public int VisitFuncActualParameter(FuncActualParameter ast, Frame frame) { var routine = ast.Identifier.Declaration.Entity as IRoutineEntity; routine.EncodeFetch(_emitter, frame); return(Machine.ClosureSize); }
public Void VisitFuncActualParameter(FuncActualParameter ast, FormalParameter arg) { var binding = ast.Identifier.Visit(this); var function = binding as IFunctionDeclaration; if (function != null) { var formals = function.Formals; var functionType = function.Type; if (arg is FuncFormalParameter) { var param = (FuncFormalParameter)arg; if (!formals.Equals(param.Formals)) { ReportError("wrong signature for function \"%\"", ast.Identifier); } else if (!functionType.Equals(param.Type)) { ReportError("wrong type for function \"%\"", ast.Identifier); } } else { ReportError("func actual parameter not expected here", ast); } } else { ReportUndeclaredOrError(binding, ast.Identifier, "\"%\" is not a function identifier"); } return(null); }