Skip to content

Commit

Permalink
Handling an edge case found while reviewing code
Browse files Browse the repository at this point in the history
  • Loading branch information
belav committed Jul 26, 2021
1 parent 9962e60 commit cccdcf1
Show file tree
Hide file tree
Showing 5 changed files with 31 additions and 16 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -78,17 +78,29 @@ public class Initializers : BasicClass

public LongMethodName___________________________________________________________()
/*Comment*/: base(false) { }

public LongInitializerBreaksAtEdgeCase()
: this(someParameter, someOtherParameter___________________________________________________)
{
WithBody();
}
}

public class Exactly80
public class Exactly100
{
public Exactly80(int longParameter____________________________________)
public Exactly100()
: this(someParameter, someOtherParameter___________________________________________________)
{
WithBody();
}

public Exactly100(int longParameter____________________________________________________________)
{
return;
}

// leading comments don't affect this
public Exactly80(string longParameter_________________________________)
public Exactly100(int longParameter____________________________________________________________)
{
return;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -152,36 +152,34 @@ public static Doc Print(CSharpSyntaxNode node)
{
constructorInitializerGroupId = Guid.NewGuid().ToString();
var colonToken = Token.PrintWithSuffix(constructorInitializer.ColonToken, " ");
var argumentList = Doc.GroupWithId(
constructorInitializerGroupId,
ArgumentList.Print(constructorInitializer.ArgumentList)
);

if (parameterGroupId != null)
{
declarationGroup.Add(
Doc.GroupWithId(
constructorInitializerGroupId,
Doc.Group(
Doc.Indent(Doc.IfBreak(" ", Doc.Line, parameterGroupId)),
Doc.IfBreak(
Doc.Align(2, colonToken),
Doc.Indent(colonToken),
parameterGroupId
),
Token.Print(constructorInitializer.ThisOrBaseKeyword),
Doc.IfBreak(
ArgumentList.Print(constructorInitializer.ArgumentList),
Doc.Indent(ArgumentList.Print(constructorInitializer.ArgumentList)),
parameterGroupId
)
Doc.IfBreak(argumentList, Doc.Indent(argumentList), parameterGroupId)
)
);
}
else
{
declarationGroup.Add(
Doc.GroupWithId(
constructorInitializerGroupId,
Doc.Group(
Doc.Indent(Doc.Line),
Doc.Indent(colonToken),
Token.Print(constructorInitializer.ThisOrBaseKeyword),
Doc.Indent(ArgumentList.Print(constructorInitializer.ArgumentList))
Doc.Indent(argumentList)
)
);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ public static Doc Print(ImplicitObjectCreationExpressionSyntax node)
{
return Doc.Group(
Token.Print(node.NewKeyword),
ArgumentList.Print(node.ArgumentList),
Doc.Group(ArgumentList.Print(node.ArgumentList)),
node.Initializer != null
? Doc.Concat(Doc.Line, InitializerExpression.Print(node.Initializer))
: Doc.Null
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,9 @@ void Traverse(ExpressionSyntax expression)
printedNodes.Add(
new PrintedNode(
Node: invocationExpressionSyntax,
Doc: ArgumentList.Print(invocationExpressionSyntax.ArgumentList)
Doc: Doc.Group(
ArgumentList.Print(invocationExpressionSyntax.ArgumentList)
)
)
);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,10 @@ public static class PrimaryConstructorBaseType
{
public static Doc Print(PrimaryConstructorBaseTypeSyntax node)
{
return Doc.Concat(Node.Print(node.Type), ArgumentList.Print(node.ArgumentList));
return Doc.Concat(
Node.Print(node.Type),
Doc.Group(ArgumentList.Print(node.ArgumentList))
);
}
}
}

0 comments on commit cccdcf1

Please sign in to comment.