Skip to content

Commit 7e8d22d

Browse files
committed
fix eol in refactoring
1 parent 692e605 commit 7e8d22d

File tree

1 file changed

+16
-3
lines changed

1 file changed

+16
-3
lines changed

src/Thinktecture.Runtime.Extensions.Refactorings/CodeAnalysis/Refactorings/SwitchMapCompletionRefactoringProvider.cs

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,8 @@ private static async Task<Document> GenerateArgumentsAsync(
8989
invocation.ArgumentList.Arguments.Concat(newArguments));
9090

9191
var baseIndentation = GetIndentation(invocation);
92-
var newArgumentList = BuildFormattedArgumentList(allArguments, baseIndentation);
92+
var eol = DetectEndOfLine(root);
93+
var newArgumentList = BuildFormattedArgumentList(allArguments, baseIndentation, eol);
9394
var newInvocation = invocation.WithArgumentList(newArgumentList);
9495
var newRoot = root.ReplaceNode(invocation, newInvocation);
9596

@@ -143,6 +144,17 @@ private static SyntaxTriviaList GetIndentation(SyntaxNode node)
143144
return SyntaxFactory.TriviaList();
144145
}
145146

147+
private static string DetectEndOfLine(SyntaxNode root)
148+
{
149+
foreach (var trivia in root.DescendantTrivia())
150+
{
151+
if (trivia.IsKind(SyntaxKind.EndOfLineTrivia))
152+
return trivia.ToFullString();
153+
}
154+
155+
return "\n";
156+
}
157+
146158
private static bool IsSwitchOrMapMethodName(string methodName)
147159
{
148160
return methodName is Constants.Methods.SWITCH
@@ -245,15 +257,16 @@ private static SeparatedSyntaxList<ArgumentSyntax> BuildArguments(
245257

246258
private static ArgumentListSyntax BuildFormattedArgumentList(
247259
SeparatedSyntaxList<ArgumentSyntax> arguments,
248-
SyntaxTriviaList baseIndentation)
260+
SyntaxTriviaList baseIndentation,
261+
string eol)
249262
{
250263
if (arguments.Count <= 1)
251264
return SyntaxFactory.ArgumentList(arguments);
252265

253266
// Multi-line: place each argument on its own line
254267
var formattedArgs = new List<SyntaxNodeOrToken>();
255268
var lineBreakAndIndent = SyntaxFactory.TriviaList(
256-
SyntaxFactory.ElasticCarriageReturnLineFeed,
269+
SyntaxFactory.ElasticEndOfLine(eol),
257270
SyntaxFactory.Whitespace(baseIndentation.ToFullString() + " "));
258271

259272
for (var i = 0; i < arguments.Count; i++)

0 commit comments

Comments
 (0)