File: IndentedTextWriterExtensions.cs
Web Access
Project: src\src\libraries\System.Runtime.InteropServices\gen\Microsoft.Interop.SourceGeneration\Microsoft.Interop.SourceGeneration.csproj (Microsoft.Interop.SourceGeneration)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
using System.CodeDom.Compiler;
using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.CSharp;
 
namespace Microsoft.Interop;
 
public static class IndentedTextWriterExtensions
{
    public static void WriteMultilineNode(this IndentedTextWriter writer, SyntaxNode node)
    {
        foreach (SyntaxToken token in node.DescendantTokens())
        {
            foreach (SyntaxTrivia leadingTrivia in token.LeadingTrivia)
            {
                if (leadingTrivia.IsKind(SyntaxKind.EndOfLineTrivia))
                {
                    writer.WriteLine();
                    continue;
                }
 
                writer.Write(leadingTrivia.ToString());
            }
 
            writer.Write(token.Text);
 
            foreach (SyntaxTrivia trailingTrivia in token.TrailingTrivia)
            {
                if (trailingTrivia.IsKind(SyntaxKind.EndOfLineTrivia))
                {
                    writer.WriteLine();
                    continue;
                }
 
                writer.Write(trailingTrivia.ToString());
            }
        }
 
        writer.WriteLine();
    }
}