public override IEntity VisitOperatorDeclaration(OperatorDeclaration operatorDeclaration, object data) { DefaultMethod m = new DefaultMethod(currentTypeDefinition, operatorDeclaration.Name); m.EntityType = EntityType.Operator; m.Region = MakeRegion(operatorDeclaration); m.BodyRegion = MakeRegion(operatorDeclaration.Body); m.ReturnType = ConvertType(operatorDeclaration.ReturnType); ConvertAttributes(m.Attributes, operatorDeclaration.Attributes.Where(s => s.AttributeTarget != AttributeTarget.Return)); ConvertAttributes(m.ReturnTypeAttributes, operatorDeclaration.Attributes.Where(s => s.AttributeTarget == AttributeTarget.Return)); ApplyModifiers(m, operatorDeclaration.Modifiers); ConvertParameters(m.Parameters, operatorDeclaration.Parameters); currentTypeDefinition.Methods.Add(m); return(m); }
public override void VisitOperatorDeclaration(OperatorDeclaration operatorDeclaration) { FixAttributesAndDocComment(operatorDeclaration); ForceSpacesBefore(operatorDeclaration.LParToken, policy.SpaceBeforeMethodDeclarationParentheses); if (operatorDeclaration.Parameters.Any()) { ForceSpacesAfter(operatorDeclaration.LParToken, policy.SpaceWithinMethodDeclarationParentheses); FormatArguments(operatorDeclaration); } else { ForceSpacesAfter(operatorDeclaration.LParToken, policy.SpaceBetweenEmptyMethodDeclarationParentheses); ForceSpacesBefore(operatorDeclaration.RParToken, policy.SpaceBetweenEmptyMethodDeclarationParentheses); } if (!operatorDeclaration.Body.IsNull) { FixOpenBrace(policy.MethodBraceStyle, operatorDeclaration.Body.LBraceToken); VisitBlockWithoutFixingBraces(operatorDeclaration.Body, policy.IndentMethodBody); FixClosingBrace(policy.MethodBraceStyle, operatorDeclaration.Body.RBraceToken); } }
void IAstVisitor.VisitOperatorDeclaration(OperatorDeclaration operatorDeclaration) { Visit(EnterOperatorDeclaration, LeaveOperatorDeclaration, operatorDeclaration); }
void WriteMemberDeclarationName(IMember member, TokenWriter writer, CSharpFormattingOptions formattingPolicy) { TypeSystemAstBuilder astBuilder = CreateAstBuilder(); EntityDeclaration node = astBuilder.ConvertEntity(member); if ((ConversionFlags & ConversionFlags.ShowDeclaringType) == ConversionFlags.ShowDeclaringType && member.DeclaringType != null) { ConvertType(member.DeclaringType, writer, formattingPolicy); writer.WriteToken(Roles.Dot, "."); } switch (member.SymbolKind) { case SymbolKind.Indexer: writer.WriteKeyword(Roles.Identifier, "this"); break; case SymbolKind.Constructor: WriteQualifiedName(member.DeclaringType.Name, writer, formattingPolicy); break; case SymbolKind.Destructor: writer.WriteToken(DestructorDeclaration.TildeRole, "~"); WriteQualifiedName(member.DeclaringType.Name, writer, formattingPolicy); break; case SymbolKind.Operator: switch (member.Name) { case "op_Implicit": writer.WriteKeyword(OperatorDeclaration.ImplicitRole, "implicit"); writer.Space(); writer.WriteKeyword(OperatorDeclaration.OperatorKeywordRole, "operator"); writer.Space(); ConvertType(member.ReturnType, writer, formattingPolicy); break; case "op_Explicit": writer.WriteKeyword(OperatorDeclaration.ExplicitRole, "explicit"); writer.Space(); writer.WriteKeyword(OperatorDeclaration.OperatorKeywordRole, "operator"); writer.Space(); ConvertType(member.ReturnType, writer, formattingPolicy); break; default: writer.WriteKeyword(OperatorDeclaration.OperatorKeywordRole, "operator"); writer.Space(); var operatorType = OperatorDeclaration.GetOperatorType(member.Name); if (operatorType.HasValue) { writer.WriteToken(OperatorDeclaration.GetRole(operatorType.Value), OperatorDeclaration.GetToken(operatorType.Value)); } else { writer.WriteIdentifier(node.NameToken); } break; } break; default: writer.WriteIdentifier(Identifier.Create(member.Name)); break; } if ((ConversionFlags & ConversionFlags.ShowTypeParameterList) == ConversionFlags.ShowTypeParameterList && member.SymbolKind == SymbolKind.Method) { var outputVisitor = new CSharpOutputVisitor(writer, formattingPolicy); outputVisitor.WriteTypeParameters(node.GetChildrenByRole(Roles.TypeParameter)); } }
public virtual S VisitOperatorDeclaration(OperatorDeclaration operatorDeclaration, T data) { return(VisitChildren(operatorDeclaration, data)); }
public override void VisitOperatorDeclaration(OperatorDeclaration operatorDeclaration) { // skip }
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)); } }
void WriteMemberDeclarationName(IMember member, IOutputFormatter formatter, CSharpFormattingOptions formattingPolicy) { TypeSystemAstBuilder astBuilder = CreateAstBuilder(); if ((ConversionFlags & ConversionFlags.ShowDeclaringType) == ConversionFlags.ShowDeclaringType) { ConvertType(member.DeclaringType, formatter, formattingPolicy); formatter.WriteToken("."); } switch (member.SymbolKind) { case SymbolKind.Indexer: formatter.WriteKeyword("this"); break; case SymbolKind.Constructor: formatter.WriteIdentifier(member.DeclaringType.Name); break; case SymbolKind.Destructor: formatter.WriteToken("~"); formatter.WriteIdentifier(member.DeclaringType.Name); break; case SymbolKind.Operator: switch (member.Name) { case "op_Implicit": formatter.WriteKeyword("implicit"); formatter.Space(); formatter.WriteKeyword("operator"); formatter.Space(); ConvertType(member.ReturnType, formatter, formattingPolicy); break; case "op_Explicit": formatter.WriteKeyword("explicit"); formatter.Space(); formatter.WriteKeyword("operator"); formatter.Space(); ConvertType(member.ReturnType, formatter, formattingPolicy); break; default: formatter.WriteKeyword("operator"); formatter.Space(); var operatorType = OperatorDeclaration.GetOperatorType(member.Name); if (operatorType.HasValue) { formatter.WriteToken(OperatorDeclaration.GetToken(operatorType.Value)); } else { formatter.WriteIdentifier(member.Name); } break; } break; default: formatter.WriteIdentifier(member.Name); break; } if ((ConversionFlags & ConversionFlags.ShowTypeParameterList) == ConversionFlags.ShowTypeParameterList && member.SymbolKind == SymbolKind.Method) { var outputVisitor = new CSharpOutputVisitor(formatter, formattingPolicy); outputVisitor.WriteTypeParameters(astBuilder.ConvertEntity(member).GetChildrenByRole(Roles.TypeParameter)); } }
public virtual S VisitOperatorDeclaration(OperatorDeclaration operatorDeclaration, T data) { throw new NotImplementedException(); }