Boo.BooLangService.Document.BooDocumentVisitor.EnterMethod C# (CSharp) Method

EnterMethod() public method

public EnterMethod ( Method node ) : bool
node Boo.Lang.Compiler.Ast.Method
return bool
        public override bool EnterMethod(Method node)
        {
            var parameters = new List<MethodParameter>();

            // add parameters...
            // TODO: Clean Me
            foreach (var parameter in node.Parameters)
            {
                parameters.Add(new MethodParameter
                {
                    Name = parameter.Name,
                    Type = parameter.Type.ToString()
                });
            }

            //           method in class                   ?? method in property, in class
            var parent = node.ParentNode as TypeDefinition ?? node.ParentNode.ParentNode as TypeDefinition;
            MethodTreeNode method = null;

            // find if the method has already been declared (if so, we're an overload)
            foreach (var child in currentScope.Children)
            {
                if (child.Name == node.Name)
                {
                    method = (MethodTreeNode)child;
                }
            }

            if (method == null)
            {
                // new method
                method = new MethodTreeNode(new EntitySourceOrigin(GetEntity(node)), node.ReturnType != null ? node.ReturnType.ToString() : "void", parent != null ? parent.Name : "");
                method.Parameters = parameters;

                Push(method, node.LexicalInfo.Line);
            }
            else
            {
                // method overload
                var overload = new MethodTreeNode(new EntitySourceOrigin(GetEntity(node)), node.ReturnType != null ? node.ReturnType.ToString() : "void", parent != null ? parent.Name : "");
                overload.Parameters = parameters;

                method.Overloads.Add(overload);

                Push(overload, node.LexicalInfo.Line);
            }

            return base.EnterMethod(node);
        }