42 lines
1.6 KiB
C#
42 lines
1.6 KiB
C#
|
using System;
|
|||
|
using System.Linq;
|
|||
|
using System.Text;
|
|||
|
using Microsoft.CodeAnalysis;
|
|||
|
|
|||
|
namespace MapTo.Tests.Extensions
|
|||
|
{
|
|||
|
internal static class RoslynExtensions
|
|||
|
{
|
|||
|
internal static SyntaxTree? GetGeneratedSyntaxTree(this Compilation compilation, string className) =>
|
|||
|
compilation.SyntaxTrees.SingleOrDefault(s => s.FilePath.EndsWith($"{className}.g.cs"));
|
|||
|
|
|||
|
internal static string PrintSyntaxTree(this Compilation compilation)
|
|||
|
{
|
|||
|
var builder = new StringBuilder();
|
|||
|
|
|||
|
return string.Join(
|
|||
|
Environment.NewLine,
|
|||
|
compilation.SyntaxTrees
|
|||
|
.Reverse()
|
|||
|
.Select((s, i) =>
|
|||
|
{
|
|||
|
builder
|
|||
|
.Clear()
|
|||
|
.AppendLine("----------------------------------------")
|
|||
|
.AppendFormat("File Path: \"{0}\"", s.FilePath).AppendLine()
|
|||
|
.AppendFormat("Index: \"{0}\"", i).AppendLine()
|
|||
|
.AppendLine();
|
|||
|
|
|||
|
var lines = s.ToString().Split(Environment.NewLine);
|
|||
|
var lineNumber = 0;
|
|||
|
foreach (var line in lines)
|
|||
|
{
|
|||
|
builder.AppendFormat("{0:00}: {1}", lineNumber, line).AppendLine();
|
|||
|
lineNumber++;
|
|||
|
}
|
|||
|
|
|||
|
return builder.ToString();
|
|||
|
}));
|
|||
|
}
|
|||
|
}
|
|||
|
}
|