示例#1
0
 public virtual AstNode VisitMethodDeclare(MethodDeclareNode n)
 {
     Visit(n.Attributes);
     Visit(n.ReturnType);
     Visit(n.Name);
     Visit(n.Parameters);
     Visit(n.GenericTypeParameters);
     Visit(n.TypeConstraints);
     return(n);
 }
        public AstNode VisitMethodDeclare(MethodDeclareNode n)
        {
            // TODO: Can we have attributes here?
            Visit(n.ReturnType);
            Append(" ");
            Visit(n.Name);
            if (!n.GenericTypeParameters.IsNullOrEmpty())
            {
                Append("<");
                Visit(n.GenericTypeParameters[0]);
                for (var i = 1; i < n.GenericTypeParameters.Count; i++)
                {
                    Append(", ");
                    Visit(n.GenericTypeParameters[i]);
                }

                Append(">");
            }
            Append("(");
            if (!n.Parameters.IsNullOrEmpty())
            {
                Visit(n.Parameters[0]);
                for (var i = 1; i < n.Parameters.Count; i++)
                {
                    Append(", ");
                    Visit(n.Parameters[i]);
                }
            }

            Append(")");
            if (!n.GenericTypeParameters.IsNullOrEmpty() && !n.TypeConstraints.IsNullOrEmpty())
            {
                IncreaseIndent();
                AppendLineAndIndent();
                Visit(n.TypeConstraints[0]);
                foreach (var tc in n.TypeConstraints.Skip(1))
                {
                    AppendLineAndIndent();
                    Visit(tc);
                }

                DecreaseIndent();
            }

            Append(";");
            return(n);
        }