diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 5df5b596..38eebc6e 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -54,7 +54,7 @@ jobs:
(cd Rewrite && dotnet build Rewrite.sln --no-restore)
- name: test-cs
if: "!startsWith(github.event.head_commit.message, '[lst-change]')"
- run: (cd Rewrite && dotnet test Rewrite.sln --filter "Category!=KnownBug & Category!=Exploratory")
+ run: (cd Rewrite && dotnet test Rewrite.sln --filter "Category!=KnownBug & Category!=Exploratory & Category!=Roslyn")
- name: publish-java-snapshots
if: github.event_name != 'pull_request'
diff --git a/Rewrite/Directory.Build.props b/Rewrite/Directory.Build.props
index ee663f6a..e9143bfc 100644
--- a/Rewrite/Directory.Build.props
+++ b/Rewrite/Directory.Build.props
@@ -10,6 +10,7 @@
openrewrite.png
Apache-2.0
0.9.1
+ ..\..\..\..\..\moderneinc\rewrite-remote\Rewrite.Remote
True
False
True
diff --git a/Rewrite/Rewrite.Sources.sln b/Rewrite/Rewrite.Sources.sln
new file mode 100644
index 00000000..855a5d32
--- /dev/null
+++ b/Rewrite/Rewrite.Sources.sln
@@ -0,0 +1,130 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Rewrite.Core", "src\Rewrite.Core\Rewrite.Core.csproj", "{FB30394C-7930-4BFF-97E2-400CFADE92C2}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Rewrite.Properties", "src\Rewrite.Properties\Rewrite.Properties.csproj", "{C7E280C5-E841-4690-8AA3-653ECBC7C78B}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Rewrite.Yaml", "src\Rewrite.Yaml\Rewrite.Yaml.csproj", "{F7F4F27F-2CAE-422B-B6CE-25A88C3603A1}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Rewrite.Xml", "src\Rewrite.Xml\Rewrite.Xml.csproj", "{D38BB305-3276-4AE1-87B1-C19C7A9F3840}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Rewrite.Json", "src\Rewrite.Json\Rewrite.Json.csproj", "{5DD7D88A-5A10-457D-B1A2-30F7CF67AD9F}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Rewrite.Java", "src\Rewrite.Java\Rewrite.Java.csproj", "{06BCC1C7-9D8C-4D3B-934D-072C35A5C984}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Rewrite.CSharp", "src\Rewrite.CSharp\Rewrite.CSharp.csproj", "{25208A27-E598-4BE3-9CD9-0618A6B9598F}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Rewrite.CSharp.Tests", "tests\Rewrite.CSharp.Tests\Rewrite.CSharp.Tests.csproj", "{25EEACCB-9BAE-4361-A980-9E9CDA37602E}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Rewrite.Test", "src\Rewrite.Test\Rewrite.Test.csproj", "{D3F48947-C702-4D1A-B6EE-96B89D13953D}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{C7A4A8F9-0343-4A3E-AB77-101C458C23B5}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{7B268266-B9CD-4D85-ABC5-3B2C4611FD74}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "_solution", "_solution", "{B5C675AF-506B-47E6-AB10-4E7BC36531D2}"
+ ProjectSection(SolutionItems) = preProject
+ .gitignore = .gitignore
+ Directory.Build.props = Directory.Build.props
+ Directory.Build.targets = Directory.Build.targets
+ README.md = README.md
+ Directory.Build.props.user = Directory.Build.props.user
+ EndProjectSection
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "commercial", "commercial", "{45B6292D-DC7E-46A7-A86E-7455BBEAED70}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Rewrite.Remote", "..\..\..\moderneinc\rewrite-remote\Rewrite.Remote\src\Rewrite.Remote\Rewrite.Remote.csproj", "{0E364862-1ACA-4C94-8EA0-23724FF67AA2}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Rewrite.MSBuild", "..\..\..\moderneinc\rewrite-remote\Rewrite.Remote\src\Rewrite.MSBuild\Rewrite.MSBuild.csproj", "{DE03049F-95A3-483F-939C-C2325548D590}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "_build", "..\_build\_build.csproj", "{C714F4F1-E2DF-4B29-A277-9B40BD7DE406}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Rewrite.Remote.Codec", "src\Rewrite.Remote.Codec\Rewrite.Remote.Codec.csproj", "{40C71491-3CCC-40A0-8F01-3EC7204CF85F}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Rewrite.Test.CSharp", "src\Rewrite.Test.CSharp\Rewrite.Test.CSharp.csproj", "{5C70ACE0-BE37-4D67-A67F-EE69767994D2}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Rewrite.Test.Engine.Remote", "src\Rewrite.Test.Engine.Remote\Rewrite.Test.Engine.Remote.csproj", "{C04C7CA4-69C3-444F-A654-6C722A0FC3BE}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {C714F4F1-E2DF-4B29-A277-9B40BD7DE406}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {C714F4F1-E2DF-4B29-A277-9B40BD7DE406}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {FB30394C-7930-4BFF-97E2-400CFADE92C2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {FB30394C-7930-4BFF-97E2-400CFADE92C2}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {FB30394C-7930-4BFF-97E2-400CFADE92C2}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {FB30394C-7930-4BFF-97E2-400CFADE92C2}.Release|Any CPU.Build.0 = Release|Any CPU
+ {C7E280C5-E841-4690-8AA3-653ECBC7C78B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {C7E280C5-E841-4690-8AA3-653ECBC7C78B}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {C7E280C5-E841-4690-8AA3-653ECBC7C78B}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {C7E280C5-E841-4690-8AA3-653ECBC7C78B}.Release|Any CPU.Build.0 = Release|Any CPU
+ {F7F4F27F-2CAE-422B-B6CE-25A88C3603A1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {F7F4F27F-2CAE-422B-B6CE-25A88C3603A1}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {F7F4F27F-2CAE-422B-B6CE-25A88C3603A1}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {F7F4F27F-2CAE-422B-B6CE-25A88C3603A1}.Release|Any CPU.Build.0 = Release|Any CPU
+ {D38BB305-3276-4AE1-87B1-C19C7A9F3840}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {D38BB305-3276-4AE1-87B1-C19C7A9F3840}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {D38BB305-3276-4AE1-87B1-C19C7A9F3840}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {D38BB305-3276-4AE1-87B1-C19C7A9F3840}.Release|Any CPU.Build.0 = Release|Any CPU
+ {5DD7D88A-5A10-457D-B1A2-30F7CF67AD9F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {5DD7D88A-5A10-457D-B1A2-30F7CF67AD9F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {5DD7D88A-5A10-457D-B1A2-30F7CF67AD9F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {5DD7D88A-5A10-457D-B1A2-30F7CF67AD9F}.Release|Any CPU.Build.0 = Release|Any CPU
+ {06BCC1C7-9D8C-4D3B-934D-072C35A5C984}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {06BCC1C7-9D8C-4D3B-934D-072C35A5C984}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {06BCC1C7-9D8C-4D3B-934D-072C35A5C984}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {06BCC1C7-9D8C-4D3B-934D-072C35A5C984}.Release|Any CPU.Build.0 = Release|Any CPU
+ {25208A27-E598-4BE3-9CD9-0618A6B9598F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {25208A27-E598-4BE3-9CD9-0618A6B9598F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {25208A27-E598-4BE3-9CD9-0618A6B9598F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {25208A27-E598-4BE3-9CD9-0618A6B9598F}.Release|Any CPU.Build.0 = Release|Any CPU
+ {25EEACCB-9BAE-4361-A980-9E9CDA37602E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {25EEACCB-9BAE-4361-A980-9E9CDA37602E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {25EEACCB-9BAE-4361-A980-9E9CDA37602E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {25EEACCB-9BAE-4361-A980-9E9CDA37602E}.Release|Any CPU.Build.0 = Release|Any CPU
+ {D3F48947-C702-4D1A-B6EE-96B89D13953D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {D3F48947-C702-4D1A-B6EE-96B89D13953D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {D3F48947-C702-4D1A-B6EE-96B89D13953D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {D3F48947-C702-4D1A-B6EE-96B89D13953D}.Release|Any CPU.Build.0 = Release|Any CPU
+ {0E364862-1ACA-4C94-8EA0-23724FF67AA2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {0E364862-1ACA-4C94-8EA0-23724FF67AA2}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {0E364862-1ACA-4C94-8EA0-23724FF67AA2}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {0E364862-1ACA-4C94-8EA0-23724FF67AA2}.Release|Any CPU.Build.0 = Release|Any CPU
+ {DE03049F-95A3-483F-939C-C2325548D590}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {DE03049F-95A3-483F-939C-C2325548D590}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {DE03049F-95A3-483F-939C-C2325548D590}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {DE03049F-95A3-483F-939C-C2325548D590}.Release|Any CPU.Build.0 = Release|Any CPU
+ {40C71491-3CCC-40A0-8F01-3EC7204CF85F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {40C71491-3CCC-40A0-8F01-3EC7204CF85F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {40C71491-3CCC-40A0-8F01-3EC7204CF85F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {40C71491-3CCC-40A0-8F01-3EC7204CF85F}.Release|Any CPU.Build.0 = Release|Any CPU
+ {5C70ACE0-BE37-4D67-A67F-EE69767994D2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {5C70ACE0-BE37-4D67-A67F-EE69767994D2}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {5C70ACE0-BE37-4D67-A67F-EE69767994D2}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {5C70ACE0-BE37-4D67-A67F-EE69767994D2}.Release|Any CPU.Build.0 = Release|Any CPU
+ {C04C7CA4-69C3-444F-A654-6C722A0FC3BE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {C04C7CA4-69C3-444F-A654-6C722A0FC3BE}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {C04C7CA4-69C3-444F-A654-6C722A0FC3BE}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {C04C7CA4-69C3-444F-A654-6C722A0FC3BE}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(NestedProjects) = preSolution
+ {25EEACCB-9BAE-4361-A980-9E9CDA37602E} = {7B268266-B9CD-4D85-ABC5-3B2C4611FD74}
+ {FB30394C-7930-4BFF-97E2-400CFADE92C2} = {C7A4A8F9-0343-4A3E-AB77-101C458C23B5}
+ {25208A27-E598-4BE3-9CD9-0618A6B9598F} = {C7A4A8F9-0343-4A3E-AB77-101C458C23B5}
+ {06BCC1C7-9D8C-4D3B-934D-072C35A5C984} = {C7A4A8F9-0343-4A3E-AB77-101C458C23B5}
+ {5DD7D88A-5A10-457D-B1A2-30F7CF67AD9F} = {C7A4A8F9-0343-4A3E-AB77-101C458C23B5}
+ {C7E280C5-E841-4690-8AA3-653ECBC7C78B} = {C7A4A8F9-0343-4A3E-AB77-101C458C23B5}
+ {D3F48947-C702-4D1A-B6EE-96B89D13953D} = {C7A4A8F9-0343-4A3E-AB77-101C458C23B5}
+ {D38BB305-3276-4AE1-87B1-C19C7A9F3840} = {C7A4A8F9-0343-4A3E-AB77-101C458C23B5}
+ {F7F4F27F-2CAE-422B-B6CE-25A88C3603A1} = {C7A4A8F9-0343-4A3E-AB77-101C458C23B5}
+ {0E364862-1ACA-4C94-8EA0-23724FF67AA2} = {45B6292D-DC7E-46A7-A86E-7455BBEAED70}
+ {DE03049F-95A3-483F-939C-C2325548D590} = {45B6292D-DC7E-46A7-A86E-7455BBEAED70}
+ {C714F4F1-E2DF-4B29-A277-9B40BD7DE406} = {B5C675AF-506B-47E6-AB10-4E7BC36531D2}
+ {40C71491-3CCC-40A0-8F01-3EC7204CF85F} = {C7A4A8F9-0343-4A3E-AB77-101C458C23B5}
+ {5C70ACE0-BE37-4D67-A67F-EE69767994D2} = {C7A4A8F9-0343-4A3E-AB77-101C458C23B5}
+ {C04C7CA4-69C3-444F-A654-6C722A0FC3BE} = {C7A4A8F9-0343-4A3E-AB77-101C458C23B5}
+ EndGlobalSection
+EndGlobal
diff --git a/Rewrite/tests/Rewrite.CSharp.Tests/ModuleInitializer.cs b/Rewrite/tests/Rewrite.CSharp.Tests/ModuleInitializer.cs
index cc762f57..ee9de5e5 100644
--- a/Rewrite/tests/Rewrite.CSharp.Tests/ModuleInitializer.cs
+++ b/Rewrite/tests/Rewrite.CSharp.Tests/ModuleInitializer.cs
@@ -1,4 +1,6 @@
using System.Runtime.CompilerServices;
+using Microsoft.Build.Locator;
+using Rewrite.MSBuild;
using Rewrite.Remote;
using Rewrite.Remote.Codec.CSharp;
using Rewrite.Remote.Codec.Java;
@@ -19,6 +21,7 @@ public class ModuleInitializer
[ModuleInitializer]
internal static void OnAssemblyLoad()
{
+ ProjectParser.Init();
if (ITestExecutionContext.Current() == null)
{
ITestExecutionContext.SetCurrent(new LocalTestExecutionContext());
diff --git a/Rewrite/tests/Rewrite.CSharp.Tests/Rewrite.CSharp.Tests.csproj b/Rewrite/tests/Rewrite.CSharp.Tests/Rewrite.CSharp.Tests.csproj
index 68c0c04e..dee12f8d 100644
--- a/Rewrite/tests/Rewrite.CSharp.Tests/Rewrite.CSharp.Tests.csproj
+++ b/Rewrite/tests/Rewrite.CSharp.Tests/Rewrite.CSharp.Tests.csproj
@@ -11,6 +11,7 @@
all
runtime; build; native; contentfiles; analyzers; buildtransitive
+
@@ -19,6 +20,8 @@
+
+
diff --git a/Rewrite/tests/Rewrite.CSharp.Tests/RoslynTestCases/ParseTests.cs b/Rewrite/tests/Rewrite.CSharp.Tests/RoslynTestCases/ParseTests.cs
new file mode 100644
index 00000000..8b0cac92
--- /dev/null
+++ b/Rewrite/tests/Rewrite.CSharp.Tests/RoslynTestCases/ParseTests.cs
@@ -0,0 +1,158 @@
+using System.Collections;
+using System.Diagnostics;
+using System.Text.RegularExpressions;
+using Microsoft.CodeAnalysis;
+using Microsoft.CodeAnalysis.CSharp;
+using Rewrite.Test.CSharp;
+using Rewrite.Test;
+using Socolin.ANSITerminalColor;
+
+namespace Rewrite.CSharp.Tests.RoslynTestCases;
+
+using static Assertions;
+
+public class ParseTests : RewriteTest
+{
+ private readonly ITestOutputHelper _output;
+ private readonly CSharpParser _parser;
+
+ public ParseTests(ITestOutputHelper output)
+ {
+ _output = output;
+ _parser = new CSharpParser.Builder().Build();
+ }
+
+ [Theory]
+ [Exploratory]
+ [InlineData("abc\n123","abc123")]
+ [InlineData("abc123","abc134")]
+ [InlineData("""
+ one
+ two
+ three
+ four
+ NOT five
+ """,
+ """
+ one
+ two
+ four
+ five
+ six
+ """)]
+ public void Delta(string before, string after)
+ {
+ after.ShouldBeSameAs(before);
+ }
+
+ [Fact]
+ [Exploratory]
+ public void TestReport()
+ {
+ var badTestCases = new List<(SourceTestCase, List)>();
+ var testCases = new CSharpSyntaxFragments().Select(x => (SourceTestCase)x[0]).ToList();
+ List report = new();
+ foreach (var testCase in testCases)
+ {
+ var roslynDiagnostics = CSharpSyntaxTree.ParseText(testCase.SourceText).GetDiagnostics().ToList();
+ if (roslynDiagnostics.Any())
+ {
+ badTestCases.Add((testCase,roslynDiagnostics));
+ // report.Add(testCase.Fail("Original.Parse.RoslynIssues"));
+ continue;
+ }
+
+ var lst = _parser.Parse(testCase.SourceText);
+
+ if (lst is ParseError)
+ {
+ report.Add(testCase.Fail("LstParseError"));
+ continue;
+ }
+
+ var lstPrint = lst.ToString()!;
+
+ string StripWhiteSpace(string s) => Regex.Replace(s, @"[\r\n]", "");
+ var equalBeforeTrim = lstPrint == testCase.SourceText;
+ var equalAfterTrim = StripWhiteSpace(lstPrint) == StripWhiteSpace(testCase.SourceText);
+ if (!equalBeforeTrim && equalAfterTrim)
+ {
+ report.Add(testCase.Fail("DifferentWhitespace"));
+ }
+ else if(!equalAfterTrim)
+ {
+ var roslynLstReParse = CSharpSyntaxTree.ParseText(lstPrint);
+ if (roslynLstReParse.GetDiagnostics().Where(x => x.Severity == DiagnosticSeverity.Error).Any())
+ {
+ report.Add(testCase.Fail("DifferentUncompilable"));
+ }
+ else
+ {
+ report.Add(testCase.Fail("DifferentCompilable"));
+ }
+
+
+ }
+ else
+ {
+ report.Add(testCase.Pass());
+ }
+ }
+
+ _output.WriteLine(AnsiColor.ColorizeText($"Total: {report.Count}", AnsiColor.Foreground(Terminal256ColorCodes.Red1C196)));
+ _output.WriteLine($" Successful: {report.Count(x => x.Success)}");
+ var failed = report.Where(x => !x.Success).ToList();
+ _output.WriteLine($" Failed: {failed.Count}");
+ foreach (var (failureReason, count) in failed
+ .GroupBy(x => x.FailureReason)
+ .Select(x => (Reason: x.Key, count: x.Count()))
+ .OrderBy(x => x.Reason))
+ {
+ _output.WriteLine($" {failureReason}: {count}");
+ }
+
+ foreach (var (testCase, diagnostics) in badTestCases)
+ {
+ _output.WriteLine($"\"{testCase.Name}\",");
+ // _output.WriteLine(testCase.SourceText);
+ // _output.WriteLine(string.Join("\n", diagnostics.Select(x => x.ToString())));
+ }
+ }
+
+
+
+
+ [Theory]
+ [ClassData(typeof(CSharpSyntaxFragments))]
+ [Category("Roslyn")]
+ public void ParseAndPrint(SourceTestCase syntax)
+ {
+ var lst = _parser.Parse(syntax.SourceText);
+ lst.Should().NotBeOfType();
+
+ var lstPrint = lst.ToString()!;
+ // lstPrint.Should().Be(syntax.SourceText);
+ lstPrint.ShouldBeSameAs(syntax.SourceText);
+
+ }
+}
+
+public class TestResult
+{
+ public TestResult(SourceTestCase testCase, string? failureReason = null)
+ {
+ TestCase = testCase.Name;
+ FailureReason = failureReason;
+ }
+
+ public bool Success => FailureReason == null;
+ public string TestCase { get; }
+ public string? FailureReason { get; set; }
+}
+
+public static class Extensions
+{
+ public static TestResult Pass(this SourceTestCase testCase) => new TestResult(testCase);
+ public static TestResult Fail(this SourceTestCase testCase, string reason) => new TestResult(testCase, reason);
+}
+
diff --git a/Rewrite/tests/Rewrite.CSharp.Tests/RoslynTestCases/RoslynTestData.g.cs b/Rewrite/tests/Rewrite.CSharp.Tests/RoslynTestCases/RoslynTestData.g.cs
new file mode 100644
index 00000000..cd9f8609
--- /dev/null
+++ b/Rewrite/tests/Rewrite.CSharp.Tests/RoslynTestCases/RoslynTestData.g.cs
@@ -0,0 +1,3497 @@
+using System.Collections;
+namespace Rewrite.CSharp.Tests.RoslynTestCases;
+public class CSharpSyntaxFragments : IEnumerable