/// <summary> /// Builds subroutine /// </summary> /// <param name="subNode">Subroutine node</param> /// <param name="subSym">Subroutine symbol</param> private void BuildSubroutine(ASTSubStatementNode subNode, UserSubroutine subSym) { _context = new MethodContext(_codeHolder.GetMethodBuilder(subNode.Name, subSym), subSym.GetLocalsList()); _emitter = new CodeEmiter(_context.ILGenerator); if (subNode.Body != null) { BuildStatement(subNode.Body); } else { _emitter.Nop(); } _emitter.MarkLabel(_context.MethodEnd); _emitter.Ret(); _builtSubs.Add(subNode.Name, _context); //add to built }