Browse Source

Fixed formatting bug.

pull/45/merge
Mike Krüger 12 years ago
parent
commit
a256898faa
  1. 9
      ICSharpCode.NRefactory.CSharp/Formatter/FormattingVisitor_Global.cs
  2. 26
      ICSharpCode.NRefactory.CSharp/Formatter/FormattingVisitor_TypeMembers.cs
  3. 20
      ICSharpCode.NRefactory.Tests/FormattingTests/TestTypeLevelIndentation.cs

9
ICSharpCode.NRefactory.CSharp/Formatter/FormattingVisitor_Global.cs

@ -115,8 +115,13 @@ namespace ICSharpCode.NRefactory.CSharp
FixClosingBrace(policy.NamespaceBraceStyle, namespaceDeclaration.RBraceToken); FixClosingBrace(policy.NamespaceBraceStyle, namespaceDeclaration.RBraceToken);
} }
void FixAttributes(EntityDeclaration entity) void FixAttributesAndDocComment(EntityDeclaration entity)
{ {
var node =entity.FirstChild;
while (node != null && node.Role == Roles.Comment) {
FixIndentation(node);
node = node.GetNextSibling(NoWhitespacePredicate);
}
if (entity.Attributes.Count > 0) { if (entity.Attributes.Count > 0) {
AstNode n = null; AstNode n = null;
foreach (var attr in entity.Attributes.Skip (1)) { foreach (var attr in entity.Attributes.Skip (1)) {
@ -133,7 +138,7 @@ namespace ICSharpCode.NRefactory.CSharp
public override void VisitTypeDeclaration(TypeDeclaration typeDeclaration) public override void VisitTypeDeclaration(TypeDeclaration typeDeclaration)
{ {
FixAttributes(typeDeclaration); FixAttributesAndDocComment(typeDeclaration);
BraceStyle braceStyle; BraceStyle braceStyle;
bool indentBody = false; bool indentBody = false;
switch (typeDeclaration.ClassType) { switch (typeDeclaration.ClassType) {

26
ICSharpCode.NRefactory.CSharp/Formatter/FormattingVisitor_TypeMembers.cs

@ -32,7 +32,7 @@ namespace ICSharpCode.NRefactory.CSharp
{ {
public override void VisitPropertyDeclaration(PropertyDeclaration propertyDeclaration) public override void VisitPropertyDeclaration(PropertyDeclaration propertyDeclaration)
{ {
FixAttributes(propertyDeclaration); FixAttributesAndDocComment(propertyDeclaration);
bool oneLine = false; bool oneLine = false;
bool fixClosingBrace = false; bool fixClosingBrace = false;
switch (policy.PropertyFormatting) { switch (policy.PropertyFormatting) {
@ -158,7 +158,7 @@ namespace ICSharpCode.NRefactory.CSharp
public override void VisitAccessor(Accessor accessor) public override void VisitAccessor(Accessor accessor)
{ {
FixAttributes(accessor); FixAttributesAndDocComment(accessor);
base.VisitAccessor(accessor); base.VisitAccessor(accessor);
} }
@ -166,7 +166,7 @@ namespace ICSharpCode.NRefactory.CSharp
public override void VisitIndexerDeclaration(IndexerDeclaration indexerDeclaration) public override void VisitIndexerDeclaration(IndexerDeclaration indexerDeclaration)
{ {
FixAttributes(indexerDeclaration); FixAttributesAndDocComment(indexerDeclaration);
ForceSpacesBefore(indexerDeclaration.LBracketToken, policy.SpaceBeforeIndexerDeclarationBracket); ForceSpacesBefore(indexerDeclaration.LBracketToken, policy.SpaceBeforeIndexerDeclarationBracket);
ForceSpacesAfter(indexerDeclaration.LBracketToken, policy.SpaceWithinIndexerDeclarationBracket); ForceSpacesAfter(indexerDeclaration.LBracketToken, policy.SpaceWithinIndexerDeclarationBracket);
@ -217,7 +217,7 @@ namespace ICSharpCode.NRefactory.CSharp
public override void VisitCustomEventDeclaration(CustomEventDeclaration eventDeclaration) public override void VisitCustomEventDeclaration(CustomEventDeclaration eventDeclaration)
{ {
FixAttributes(eventDeclaration); FixAttributesAndDocComment(eventDeclaration);
FixOpenBrace(policy.EventBraceStyle, eventDeclaration.LBraceToken); FixOpenBrace(policy.EventBraceStyle, eventDeclaration.LBraceToken);
if (policy.IndentEventBody) if (policy.IndentEventBody)
@ -259,7 +259,7 @@ namespace ICSharpCode.NRefactory.CSharp
public override void VisitEventDeclaration(EventDeclaration eventDeclaration) public override void VisitEventDeclaration(EventDeclaration eventDeclaration)
{ {
FixAttributes(eventDeclaration); FixAttributesAndDocComment(eventDeclaration);
foreach (var m in eventDeclaration.ModifierTokens) { foreach (var m in eventDeclaration.ModifierTokens) {
ForceSpacesAfter(m, true); ForceSpacesAfter(m, true);
@ -286,14 +286,14 @@ namespace ICSharpCode.NRefactory.CSharp
public override void VisitFieldDeclaration(FieldDeclaration fieldDeclaration) public override void VisitFieldDeclaration(FieldDeclaration fieldDeclaration)
{ {
FixAttributes(fieldDeclaration); FixAttributesAndDocComment(fieldDeclaration);
fieldDeclaration.ReturnType.AcceptVisitor(this); fieldDeclaration.ReturnType.AcceptVisitor(this);
ForceSpacesAfter(fieldDeclaration.ReturnType, true); ForceSpacesAfter(fieldDeclaration.ReturnType, true);
FormatCommas(fieldDeclaration, policy.SpaceBeforeFieldDeclarationComma, policy.SpaceAfterFieldDeclarationComma); FormatCommas(fieldDeclaration, policy.SpaceBeforeFieldDeclarationComma, policy.SpaceAfterFieldDeclarationComma);
var lastLoc = fieldDeclaration.StartLocation; var lastLoc = fieldDeclaration.ReturnType.StartLocation;
foreach (var initializer in fieldDeclaration.Variables) { foreach (var initializer in fieldDeclaration.Variables) {
if (lastLoc.Line != initializer.StartLocation.Line) { if (lastLoc.Line != initializer.StartLocation.Line) {
curIndent.Push(IndentType.Block); curIndent.Push(IndentType.Block);
@ -308,7 +308,7 @@ namespace ICSharpCode.NRefactory.CSharp
public override void VisitFixedFieldDeclaration(FixedFieldDeclaration fixedFieldDeclaration) public override void VisitFixedFieldDeclaration(FixedFieldDeclaration fixedFieldDeclaration)
{ {
FixAttributes(fixedFieldDeclaration); FixAttributesAndDocComment(fixedFieldDeclaration);
FormatCommas(fixedFieldDeclaration, policy.SpaceBeforeFieldDeclarationComma, policy.SpaceAfterFieldDeclarationComma); FormatCommas(fixedFieldDeclaration, policy.SpaceBeforeFieldDeclarationComma, policy.SpaceAfterFieldDeclarationComma);
@ -327,7 +327,7 @@ namespace ICSharpCode.NRefactory.CSharp
public override void VisitEnumMemberDeclaration(EnumMemberDeclaration enumMemberDeclaration) public override void VisitEnumMemberDeclaration(EnumMemberDeclaration enumMemberDeclaration)
{ {
FixAttributes(enumMemberDeclaration); FixAttributesAndDocComment(enumMemberDeclaration);
var initializer = enumMemberDeclaration.Initializer; var initializer = enumMemberDeclaration.Initializer;
if (!initializer.IsNull) { if (!initializer.IsNull) {
ForceSpacesAround(enumMemberDeclaration.AssignToken, policy.SpaceAroundAssignment); ForceSpacesAround(enumMemberDeclaration.AssignToken, policy.SpaceAroundAssignment);
@ -337,7 +337,7 @@ namespace ICSharpCode.NRefactory.CSharp
public override void VisitMethodDeclaration(MethodDeclaration methodDeclaration) public override void VisitMethodDeclaration(MethodDeclaration methodDeclaration)
{ {
FixAttributes(methodDeclaration); FixAttributesAndDocComment(methodDeclaration);
ForceSpacesBefore(methodDeclaration.LParToken, policy.SpaceBeforeMethodDeclarationParentheses); ForceSpacesBefore(methodDeclaration.LParToken, policy.SpaceBeforeMethodDeclarationParentheses);
if (methodDeclaration.Parameters.Any()) { if (methodDeclaration.Parameters.Any()) {
@ -357,7 +357,7 @@ namespace ICSharpCode.NRefactory.CSharp
public override void VisitOperatorDeclaration(OperatorDeclaration operatorDeclaration) public override void VisitOperatorDeclaration(OperatorDeclaration operatorDeclaration)
{ {
FixAttributes(operatorDeclaration); FixAttributesAndDocComment(operatorDeclaration);
ForceSpacesBefore(operatorDeclaration.LParToken, policy.SpaceBeforeMethodDeclarationParentheses); ForceSpacesBefore(operatorDeclaration.LParToken, policy.SpaceBeforeMethodDeclarationParentheses);
if (operatorDeclaration.Parameters.Any()) { if (operatorDeclaration.Parameters.Any()) {
@ -377,7 +377,7 @@ namespace ICSharpCode.NRefactory.CSharp
public override void VisitConstructorDeclaration(ConstructorDeclaration constructorDeclaration) public override void VisitConstructorDeclaration(ConstructorDeclaration constructorDeclaration)
{ {
FixAttributes(constructorDeclaration); FixAttributesAndDocComment(constructorDeclaration);
ForceSpacesBefore(constructorDeclaration.LParToken, policy.SpaceBeforeConstructorDeclarationParentheses); ForceSpacesBefore(constructorDeclaration.LParToken, policy.SpaceBeforeConstructorDeclarationParentheses);
if (constructorDeclaration.Parameters.Any()) { if (constructorDeclaration.Parameters.Any()) {
@ -397,7 +397,7 @@ namespace ICSharpCode.NRefactory.CSharp
public override void VisitDestructorDeclaration(DestructorDeclaration destructorDeclaration) public override void VisitDestructorDeclaration(DestructorDeclaration destructorDeclaration)
{ {
FixAttributes(destructorDeclaration); FixAttributesAndDocComment(destructorDeclaration);
CSharpTokenNode lParen = destructorDeclaration.LParToken; CSharpTokenNode lParen = destructorDeclaration.LParToken;
ForceSpaceBefore(lParen, policy.SpaceBeforeConstructorDeclarationParentheses); ForceSpaceBefore(lParen, policy.SpaceBeforeConstructorDeclarationParentheses);

20
ICSharpCode.NRefactory.Tests/FormattingTests/TestTypeLevelIndentation.cs

@ -207,6 +207,26 @@ Test a;
}"); }");
} }
[Test]
public void TestDocCommentIndenting()
{
CSharpFormattingOptions policy = FormattingOptionsFactory.CreateMono();
Test(policy,
@"class Test
{
/// <summary>
/// Test
/// </summary>
Test a;
}", @"class Test
{
/// <summary>
/// Test
/// </summary>
Test a;
}");
}
[Test] [Test]
public void TestIndentInterfaceBody() public void TestIndentInterfaceBody()
{ {

Loading…
Cancel
Save