Exemplo n.º 1
0
        /// <inheritdoc />
        public Node Visit(MethodDeclarationParseNode d)
        {
            var ret = new MethodNode(d.Token, d);
            var sig = (SignatureNode)d.Signature.Visit(this);

            ret.Signature   = sig;
            ret.Annotations = sig.Annotations;
            string name = sig.Name;

            ret.Confidential = (d.Signature.Annotations != null &&
                                d.Signature.Annotations.HasAnnotation("confidential"));
            ret.Abstract = (d.Signature.Annotations != null &&
                            d.Signature.Annotations.HasAnnotation("abstract"));
            foreach (ParseNode p in d.Body)
            {
                if (!(p is CommentParseNode))
                {
                    ret.Add(p.Visit(this));
                }
            }
            // Indicate whether this method returns a fresh object
            ret.Fresh = (d.Body.Count > 0 && d.Body[d.Body.Count - 1] is
                         ObjectParseNode);
            return(ret);
        }