void IAstVisitor.VisitTypeDeclaration(TypeDeclaration typeDeclaration) { Visit(EnterTypeDeclaration, LeaveTypeDeclaration, typeDeclaration); }
public override void VisitTypeDeclaration(TypeDeclaration typeDeclaration) { FixAttributesAndDocComment(typeDeclaration); BraceStyle braceStyle; bool indentBody = false; switch (typeDeclaration.ClassType) { case ClassType.Class: braceStyle = policy.ClassBraceStyle; indentBody = policy.IndentClassBody; break; case ClassType.Struct: braceStyle = policy.StructBraceStyle; indentBody = policy.IndentStructBody; break; case ClassType.Interface: braceStyle = policy.InterfaceBraceStyle; indentBody = policy.IndentInterfaceBody; break; case ClassType.Enum: braceStyle = policy.EnumBraceStyle; indentBody = policy.IndentEnumBody; break; default: throw new InvalidOperationException("unsupported class type : " + typeDeclaration.ClassType); } foreach (var constraint in typeDeclaration.Constraints) { constraint.AcceptVisitor(this); } FixOpenBrace(braceStyle, typeDeclaration.LBraceToken); if (indentBody) { curIndent.Push(IndentType.Block); } bool startFormat = true; bool first = true; VisitChildrenToFormat(typeDeclaration, child => { if (first) { startFormat = child.StartLocation > typeDeclaration.LBraceToken.StartLocation; first = false; } if (child.Role == Roles.LBrace) { startFormat = true; if (braceStyle != BraceStyle.DoNotChange) { EnsureMinimumNewLinesAfter(child, GetTypeLevelNewLinesFor(child)); } return; } if (child.Role == Roles.RBrace) { startFormat = false; return; } if (!startFormat || !NoWhitespacePredicate(child)) { return; } if (child.Role == Roles.Comma) { ForceSpacesBeforeRemoveNewLines(child, false); EnsureMinimumNewLinesAfter(child, 1); return; } if (NoWhitespacePredicate(child)) { FixIndentationForceNewLine(child); } child.AcceptVisitor(this); if (NoWhitespacePredicate(child) && child.GetNextSibling(NoWhitespacePredicate).Role != Roles.Comma) { EnsureMinimumNewLinesAfter(child, GetTypeLevelNewLinesFor(child)); } }); if (indentBody) { curIndent.Pop(); } FixClosingBrace(braceStyle, typeDeclaration.RBraceToken); }