private static AccessorDeclarationSyntax GetNewAccessor(AccessorListSyntax accessorList, AccessorDeclarationSyntax firstAccessor, AccessorDeclarationSyntax secondAccessor) { var newLeadingTrivia = GetLeadingTriviaWithoutLeadingBlankLines(secondAccessor); if (AccessorsAreOnTheSameLine(firstAccessor, secondAccessor)) { var leadingWhitespace = firstAccessor.GetLeadingTrivia().Where(x => x.IsKind(SyntaxKind.WhitespaceTrivia)).ToList(); newLeadingTrivia = SyntaxFactory.TriviaList(TriviaHelper.MergeTriviaLists(newLeadingTrivia, leadingWhitespace)); } var newAccessor = accessorList.Accessors[1] .WithBody(secondAccessor.Body) .WithLeadingTrivia(newLeadingTrivia); if (secondAccessor.GetFirstToken().HasLeadingBlankLines()) { newAccessor.WithTrailingTrivia(SyntaxFactory.CarriageReturnLineFeed, SyntaxFactory.CarriageReturnLineFeed); } return newAccessor; }
private static AccessorDeclarationSyntax GetNewAccessor(AccessorListSyntax accessorList, AccessorDeclarationSyntax firstAccessor, AccessorDeclarationSyntax secondAccessor) { var newLeadingTrivia = GetLeadingTriviaWithoutLeadingBlankLines(secondAccessor); if (AccessorsAreOnTheSameLine(firstAccessor, secondAccessor)) { var leadingWhitespace = firstAccessor.GetLeadingTrivia().Where(x => x.IsKind(SyntaxKind.WhitespaceTrivia)); newLeadingTrivia = SyntaxFactory.TriviaList(TriviaHelper.MergeTriviaLists(newLeadingTrivia, SyntaxTriviaList.Empty.AddRange(leadingWhitespace))); } var newAccessor = accessorList.Accessors[1] .WithBody(secondAccessor.Body) .WithLeadingTrivia(newLeadingTrivia); return newAccessor; }
private static SyntaxTriviaList GetLeadingTriviaWithoutLeadingBlankLines(AccessorDeclarationSyntax secondAccessor) { var leadingTrivia = secondAccessor.GetLeadingTrivia(); var skipIndex = 0; for (var i = 0; i < leadingTrivia.Count; i++) { var currentTrivia = leadingTrivia[i]; if (currentTrivia.IsKind(SyntaxKind.EndOfLineTrivia)) { skipIndex = i + 1; } else if (!currentTrivia.IsKind(SyntaxKind.WhitespaceTrivia)) { // Preceded by whitespace skipIndex = i > 0 && leadingTrivia[i - 1].IsKind(SyntaxKind.WhitespaceTrivia) ? i - 1 : i; break; } } return SyntaxFactory.TriviaList(leadingTrivia.Skip(skipIndex)); }