Exemplo n.º 1
0
 public virtual S VisitOperatorDeclaration(OperatorDeclaration operatorDeclaration, T data)
 {
     return(VisitChildren(operatorDeclaration, data));
 }
Exemplo n.º 2
0
        void WriteMemberDeclarationName(IMember member, StringWriter writer)
        {
            TypeSystemAstBuilder astBuilder = CreateAstBuilder();

            if ((ConversionFlags & ConversionFlags.UseFullyQualifiedMemberNames) == ConversionFlags.UseFullyQualifiedMemberNames)
            {
                writer.Write(ConvertType(member.DeclaringType));
                writer.Write('.');
            }
            switch (member.EntityType)
            {
            case EntityType.Indexer:
                writer.Write("this");
                break;

            case EntityType.Constructor:
                writer.Write(member.DeclaringType.Name);
                break;

            case EntityType.Destructor:
                writer.Write('~');
                writer.Write(member.DeclaringType.Name);
                break;

            case EntityType.Operator:
                switch (member.Name)
                {
                case "op_Implicit":
                    writer.Write("implicit operator ");
                    writer.Write(ConvertType(member.ReturnType));
                    break;

                case "op_Explicit":
                    writer.Write("explicit operator ");
                    writer.Write(ConvertType(member.ReturnType));
                    break;

                default:
                    writer.Write("operator ");
                    var operatorType = OperatorDeclaration.GetOperatorType(member.Name);
                    if (operatorType.HasValue)
                    {
                        writer.Write(OperatorDeclaration.GetToken(operatorType.Value));
                    }
                    else
                    {
                        writer.Write(member.Name);
                    }
                    break;
                }
                break;

            default:
                writer.Write(member.Name);
                break;
            }
            if ((ConversionFlags & ConversionFlags.ShowTypeParameterList) == ConversionFlags.ShowTypeParameterList && member.EntityType == EntityType.Method)
            {
                CreatePrinter(writer).WriteTypeParameters(astBuilder.ConvertEntity(member).GetChildrenByRole(AstNode.Roles.TypeParameter));
            }
        }