/
githubmirror
/
roslyn
Обзор
Документация
Войти
/
githubmirror
/
roslyn
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/Workspaces/CoreTest/CodeCleanup/RemoveUnnecessaryLineContinuationTests.cs
1 348 строк
41 KB
Jason Malinowski
Remove AssertEx.NotNull
21 апр 2026, 23:28
21 апр 2026, 23:28
4c5adf0
Код
Авторство
О чём код?
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. using System.Threading; using System.Threading.Tasks; using Microsoft.CodeAnalysis.CodeCleanup; using Microsoft.CodeAnalysis.CodeCleanup.Providers; using Microsoft.CodeAnalysis.Shared.Extensions; using Microsoft.CodeAnalysis.Test.Utilities; using Microsoft.CodeAnalysis.Text; using Microsoft.CodeAnalysis.VisualBasic; using Roslyn.Test.Utilities; using Xunit; namespace Microsoft.CodeAnalysis.UnitTests.CodeCleanup; [UseExportProvider] [Trait(Traits.Feature, Traits.Features.RemoveUnnecessaryLineContinuation)] public sealed class RemoveUnnecessaryLineContinuationTests { [Fact] public Task ColonTrivia() => VerifyAsync(CreateMethod(""" [| ::: Console.WriteLine(")|] """), CreateMethod(""" Console.WriteLine(") """)); [Fact] public Task ColonTrivia_EndOfLine() => VerifyAsync(CreateMethod(""" [| ::: Console.WriteLine(")|] """), CreateMethod(""" Console.WriteLine(") """)); [Fact] public Task ColonTrivia_LineContinuation() => VerifyAsync(CreateMethod(""" [| ::: _ _ _ Console.WriteLine(")|] """), CreateMethod(""" Console.WriteLine(") """)); [Fact] public Task ColonTrivia_LineContinuation2() => VerifyAsync(CreateMethod(""" [| ::: _ _ Console.WriteLine(")|] """), CreateMethod(""" Console.WriteLine(") """)); [Fact] public Task ColonTrivia_LineContinuation3() => VerifyAsync(CreateMethod(""" [| ::: _ Console.WriteLine(")|] """), CreateMethod(""" Console.WriteLine(") """)); [Fact] public Task ColonTrivia_LineContinuation_Comment() => VerifyAsync(CreateMethod(""" [| ::: _ ' test Console.WriteLine(")|] """), CreateMethod(""" _ ' test Console.WriteLine(") """)); [Fact] public Task LineContinuation() => VerifyAsync(CreateMethod(""" [| Console.WriteLine("") _ Console.WriteLine("")|] """), CreateMethod(""" Console.WriteLine("") Console.WriteLine("") """)); [Fact] public Task LineContinuation_MultipleLines() => VerifyAsync(CreateMethod(""" [| Console.WriteLine("") _ _ _ Console.WriteLine("")|] """), CreateMethod(""" Console.WriteLine("") _ _ _ Console.WriteLine("") """)); [Fact] public Task LineContinuation_MultipleLines2() => VerifyAsync(CreateMethod(""" [| Console.WriteLine("") _ _ _ Console.WriteLine("")|] """), CreateMethod(""" Console.WriteLine("") Console.WriteLine("") """)); [Fact] public Task LineContinuation_Invalid() => VerifyAsync(CreateMethod(""" [| Console.WriteLine() _ _ ' test : ' test _ Console.WriteLine()|] """), CreateMethod(""" Console.WriteLine() _ _ ' test ' test _ Console.WriteLine() """)); [Fact] public Task ColonToken_SingleLine() => VerifyAsync(CreateMethod(""" [| Console.WriteLine() : Console.WriteLine()|] """), CreateMethod(""" Console.WriteLine() : Console.WriteLine() """)); [Fact] public Task ColonToken_SingleLine_MultipleColon() => VerifyAsync(CreateMethod(""" [| Console.WriteLine() :::: Console.WriteLine()|] """), CreateMethod(""" Console.WriteLine() : Console.WriteLine() """)); [Fact] public Task ColonToken_SingleLine_SkippedTokens() => VerifyAsync(CreateMethod(""" [| Console.WriteLine() _ : Console.WriteLine()|] """), CreateMethod(""" Console.WriteLine() _ : Console.WriteLine() """)); [Fact] public Task ColonToken_LineContinuation_BeforeColonToken() => VerifyAsync(CreateMethod(""" [| Console.WriteLine() _ : Console.WriteLine()|] """), CreateMethod(""" Console.WriteLine() Console.WriteLine() """)); [Fact] public Task ColonToken_LineContinuation_BeforeColonToken2() => VerifyAsync(CreateMethod(""" [| Console.WriteLine() _ _ : Console.WriteLine()|] """), CreateMethod(""" Console.WriteLine() _ _ Console.WriteLine() """)); [Fact] public Task ColonToken_LineContinuation_Comment_BeforeColonToken() => VerifyAsync(CreateMethod(""" [| Console.WriteLine() _ ' test : Console.WriteLine()|] """), CreateMethod(""" Console.WriteLine() _ ' test Console.WriteLine() """), LanguageVersion.VisualBasic15); [Fact] public Task ColonToken_LineContinuation_Comment_BeforeColonTokenV16() => VerifyAsync(CreateMethod(""" [| Console.WriteLine() _ ' test : Console.WriteLine()|] """), CreateMethod(""" Console.WriteLine() _ ' test Console.WriteLine() """), LanguageVersion.VisualBasic16); [Fact] public Task ColonToken_MultipleLine() => VerifyAsync(CreateMethod(""" [| Console.WriteLine() : Console.WriteLine()|] """), CreateMethod(""" Console.WriteLine() Console.WriteLine() """)); [Fact] public Task ColonToken_LineContinuation_AfterColonToken() => VerifyAsync(CreateMethod(""" [| Console.WriteLine() : _ Console.WriteLine()|] """), CreateMethod(""" Console.WriteLine() Console.WriteLine() """)); [Fact] public Task ColonToken_LineContinuation_AfterColonToken2() => VerifyAsync(CreateMethod(""" [| Console.WriteLine() : _ _ Console.WriteLine()|] """), CreateMethod(""" Console.WriteLine() Console.WriteLine() """)); [Fact] public Task ColonToken_LineContinuation_AfterColonToken_MultipleLine() => VerifyAsync(CreateMethod(""" [| Console.WriteLine() : _ _ _|] """), CreateMethod(""" Console.WriteLine() """)); [Fact] public Task ColonToken_LineContinuation_AfterColonToken_Mixed() => VerifyAsync(CreateMethod(""" [| Console.WriteLine() : _ _ : _ Console.WriteLine()|] """), CreateMethod(""" Console.WriteLine() Console.WriteLine() """)); [Fact] public Task ColonToken_LineContinuation_AfterColonToken_Colon_Comment() => VerifyAsync(CreateMethod(""" [| Console.WriteLine() : _ _ : ' test _ Console.WriteLine()|] """), CreateMethod(""" Console.WriteLine() _ _ ' test _ Console.WriteLine() """)); [Fact] public Task ColonToken_LineContinuation_Mix() => VerifyAsync(CreateMethod(""" [| Console.WriteLine() _ : _ _ : ' test _ Console.WriteLine()|] """), CreateMethod(""" Console.WriteLine() _ _ _ ' test _ Console.WriteLine() """)); [Fact] public Task ColonToken_If() => VerifyAsync(CreateMethod(""" [| If True Then : End If|] """), CreateMethod(""" If True Then End If """)); [Fact] public Task ImplicitLineContinuation() => VerifyAsync(CreateMethod(""" [| Dim i = _ 1 + _ 2|] """), CreateMethod(""" Dim i = 1 + 2 """)); [Fact] public Task ImplicitLineContinuation_Multiple() => VerifyAsync(CreateMethod(""" [| Dim i = _ _ 1 + _ 2|] """), CreateMethod(""" Dim i = _ _ 1 + 2 """)); [Fact] public Task LineContinuation_Mix() => VerifyAsync(""" [|Class _ A Inherits _ System _ . _ Object Public _ Function _ Method _ ( _ i _ As _ Integer _ , _ i2 _ As _ String _ ) _ As _ Integer If _ i _ + _ i2 _ . _ Length _ = _ 1 _ Then Console _ . _ WriteLine _ ( _ vbCrLf _ ) End _ If Return _ 1 End _ Function End _ Class|] """, """ Class _ A Inherits _ System _ . Object Public _ Function _ Method _ ( i _ As _ Integer _ , i2 _ As _ String ) _ As _ Integer If _ i _ + i2 _ . Length _ = 1 _ Then Console _ . WriteLine _ ( vbCrLf ) End _ If Return _ 1 End _ Function End _ Class """); [Fact] public Task ImplicitLineContinuation_Invalid() => VerifyAsync(CreateMethod(""" [| Dim i = _ _ _ _ 1 + _ _ 2|] """), CreateMethod(""" Dim i = _ _ _ _ 1 + _ _ 2 """)); [Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/544470")] public Task AttributeTargetColon() => VerifyAsync(""" [|<Assembly: _ CLSCompliant>|] """, """ <Assembly: _ CLSCompliant> """); [Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/529428")] public Task LineContinuationInImport() => VerifyAsync(""" [|Imports System _ |] """, """ Imports System """); [Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/529425")] public Task ColonInOption() => VerifyAsync(@"[|Option Infer On :: Option Explicit Off|]", @"Option Infer On : Option Explicit Off"); [Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/544524")] public Task LineContinuationInNamedFieldInitializer() => VerifyAsync(""" [|Class C Sub S() Dim o = New With { . _ a = 2 } End Sub End Class|] """, """ Class C Sub S() Dim o = New With { . _ a = 2 } End Sub End Class """); [Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/544523")] public Task IfPart_Colon1() => VerifyAsync(""" [|Module M Sub S() If True Then : Return : End If End Sub End Module|] """, """ Module M Sub S() If True Then Return : End If End Sub End Module """); [Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/544523")] public Task IfPart_Colon2() => VerifyAsync(""" [|Module M Sub S() If True Then : Return : End If End Sub End Module|] """, """ Module M Sub S() If True Then Return : End If End Sub End Module """); [Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/544523")] public Task IfPart_Colon3() => VerifyAsync(""" [|Module M Sub S() If True Then : Return : End If End Sub End Module|] """, """ Module M Sub S() If True Then : Return End If End Sub End Module """); [Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/544523")] public Task IfPart_Colon4() => VerifyAsync(""" [|Module M Sub S() If True Then : Return : End If End Sub End Module|] """, """ Module M Sub S() If True Then : Return End If End Sub End Module """); [Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/544521")] public Task LabelColon() => VerifyAsync(""" [|Module Program Sub S() L: End Sub End Module|] """, """ Module Program Sub S() L: End Sub End Module """); [Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/544521")] public Task LabelColon_ColonTrivia() => VerifyAsync(""" [|Module Program Sub S() L::::::::: End Sub End Module|] """, """ Module Program Sub S() L: End Sub End Module """); [Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/544520")] public Task LineContinuation_MixedWithImplicitLineContinuation() => VerifyAsync(""" [|Module Program Sub Main( _ args _ As String) End Sub End Module|] """, """ Module Program Sub Main( _ args _ As String) End Sub End Module """); [Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/544549")] public Task ColonTrivia_EndOfFile() => VerifyAsync(""" [|::::::: |] """, """ """); [Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/545538")] public Task ColonTriviaBeforeCommentTrivia() => VerifyAsync(""" [|Module M Sub Main() Dim b = <x/>.@x : ' End Sub End Module|] """, """ Module M Sub Main() Dim b = <x/>.@x ' End Sub End Module """); [Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/545540")] public Task InsideWithStatementWithMemberCall() => VerifyAsync(""" [|Module Program Sub Main() With " Dim y = From x In " Distinct : .ToLower() End With End Sub End Module|] """, """ Module Program Sub Main() With " Dim y = From x In " Distinct : .ToLower() End With End Sub End Module """); [Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/545540")] public Task InsideWithStatementWithMemberCall2() => VerifyAsync(""" [|Module Program Sub Main() With " Dim y = From x In "" Distinct : .ToLower() End With End Sub End Module|] """, """ Module Program Sub Main() With " Dim y = From x In "" Distinct : .ToLower() End With End Sub End Module """); [Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/545540")] public Task InsideWithStatementWithMemberCall3() => VerifyAsync(""" [|Module Program Sub Main() With " .ToLower() : .ToLower() End With End Sub End Module|] """, """ Module Program Sub Main() With " .ToLower() : .ToLower() End With End Sub End Module """); [Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/545540")] public Task InsideWithStatementWithMemberCall4() => VerifyAsync(""" [|Module Program Sub Main() With "" .ToLower() : .ToLower() End With End Sub End Module|] """, """ Module Program Sub Main() With "" .ToLower() .ToLower() End With End Sub End Module """); [Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/607791")] public Task InsideWithStatementWithDictionaryAccess() => VerifyAsync(""" [|Imports System.Collections Module Program Sub Main() With New Hashtable Dim x = From c In "" Distinct :!A = !B End With End Sub End Module |] """, """ Imports System.Collections Module Program Sub Main() With New Hashtable Dim x = From c In "" Distinct : !A = !B End With End Sub End Module """); [Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/607791")] public Task InsideWithStatementWithDictionaryAccess2() => VerifyAsync(""" [|Imports System.Collections Module Program Sub Main() With New Hashtable Dim x = From c In "" Distinct : !A = !B End With End Sub End Module|] """, """ Imports System.Collections Module Program Sub Main() With New Hashtable Dim x = From c In "" Distinct : !A = !B End With End Sub End Module """); [Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/529821")] public Task InsideObjectInitializer() => VerifyAsync(""" [|Imports System.Runtime.CompilerServices Module Program Sub Main() Dim s = New StrongBox(Of Object) With { .Value = Sub() Dim y = From x In " Distinct : .Value.ToString() End Sub} End Sub End Module|] """, """ Imports System.Runtime.CompilerServices Module Program Sub Main() Dim s = New StrongBox(Of Object) With { .Value = Sub() Dim y = From x In " Distinct : .Value.ToString() End Sub} End Sub End Module """); [Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/545545")] public Task LineContinuationBetweenXmlAndDot() => VerifyAsync(""" [|Module Program Sub Main() Dim y = <?xml version="1.0"?><root/> _ .ToString() End Sub End Module|] """, """ Module Program Sub Main() Dim y = <?xml version="1.0"?><root/> _ .ToString() End Sub End Module """); [Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/545545")] public Task LineContinuationBetweenXmlAndDot1() => VerifyAsync(""" [|Module Program Sub Main() Dim x = <x/>.. _ .<x> End Sub End Module|] """, """ Module Program Sub Main() Dim x = <x/>.. _ .<x> End Sub End Module """); [Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/545565")] public Task LineContinuationBeforeFromQueryExpression() => VerifyAsync(""" [|Class C Sub Main() Call _ From x In "" Distinct.ToString() End Sub End Class|] """, """ Class C Sub Main() Call _ From x In "" Distinct.ToString() End Sub End Class """); [Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/545565")] public Task LineContinuationBeforeFromAggregateExpression() => VerifyAsync(""" [|Class C Sub Main() Call _ Aggregate x In {1} Into Count().ToString() End Sub End Class|] """, """ Class C Sub Main() Call _ Aggregate x In {1} Into Count().ToString() End Sub End Class """); [Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/530635")] public Task LineContinuationAtEndOfLambdaExpression1() => VerifyAsync(""" [|Interface I Property A As Action End Interface Class C Implements I Property A As Action = Sub() Return _ Implements I.A End Class|] """, """ Interface I Property A As Action End Interface Class C Implements I Property A As Action = Sub() Return _ Implements I.A End Class """); [Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/530635")] public Task LineContinuationAtEndOfLambdaExpression2() => VerifyAsync(""" [|Interface I Property A As Action End Interface Class C Implements I Property A As Action = Sub() Return End Sub _ Implements I.A End Class|] """, """ Interface I Property A As Action End Interface Class C Implements I Property A As Action = Sub() Return End Sub _ Implements I.A End Class """); [Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/546798")] public Task LineContinuationAfterDot() => VerifyAsync(CreateMethod(""" [| System.Diagnostics. _ Debug.Assert(True)|] """), CreateMethod(""" System.Diagnostics. Debug.Assert(True) """)); [Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/530621")] [WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/631933")] public Task DoNotRemoveLineContinuationAfterColonInSingleLineIfStatement() => VerifyAsync(""" [|Module Program Dim x = Sub() If True Then Dim y : _ Exit Sub End Module|] """, """ Module Program Dim x = Sub() If True Then Dim y : _ Exit Sub End Module """); [Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/609481")] [WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/631933")] public Task DoNotRemoveLineContinuationInSingleLineIfStatement() => VerifyAsync(""" [| Module Program Sub Main() ' Single Line If with explicit line continuations If True Then _ Return _ Else _ Return End Sub End Module |] """, """ Module Program Sub Main() ' Single Line If with explicit line continuations If True Then _ Return _ Else _ Return End Sub End Module """); [Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/609481")] [WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/631933")] public Task DoNotRemoveLineContinuationInNestedSingleLineIfStatement() => VerifyAsync(""" [| Module Program Sub Main() ' Nested Single Line If with explicit line continuations If True Then _ If True Then _ Return _ Else _ Return _ Else _ Return If True Then _ If True Then _ Return _ Else _ Return _ Else _ If True Then _ Return _ Else Return End Sub End Module |] """, """ Module Program Sub Main() ' Nested Single Line If with explicit line continuations If True Then _ If True Then _ Return _ Else _ Return _ Else _ Return If True Then _ If True Then _ Return _ Else _ Return _ Else _ If True Then _ Return _ Else Return End Sub End Module """); [Fact, WorkItem("https://github.com/dotnet/roslyn/issues/710")] public Task DoNotRemoveLineContinuationInStringInterpolation1() => VerifyAsync(""" [| Module Program Dim x = $"{ _ 1}" End Module |] """, """ Module Program Dim x = $"{ _ 1}" End Module """); [Fact, WorkItem("https://github.com/dotnet/roslyn/issues/710")] public Task DoNotRemoveLineContinuationInStringInterpolation2() => VerifyAsync(""" [| Module Program Dim x = $"{1 _ }" End Module |] """, """ Module Program Dim x = $"{1 _ }" End Module """); [Fact, WorkItem("https://github.com/dotnet/roslyn/issues/710")] public Task DoNotRemoveLineContinuationInStringInterpolation3() => VerifyAsync(""" [| Module Program Dim x = $"{ _ 1 _ }" End Module |] """, """ Module Program Dim x = $"{ _ 1 _ }" End Module """); [Theory] [InlineData("_")] [InlineData("_ ' Comment")] [WorkItem("https://github.com/dotnet/roslyn/issues/69696")] public Task LineContinuationInString1(string continuation) => VerifyAsync($""" [| Module Program Dim x = "1" {continuation} & "2" {continuation} & "3" End Module |] """, $""" Module Program Dim x = "1" {continuation} & "2" {continuation} & "3" End Module """); [Fact, WorkItem("https://github.com/dotnet/roslyn/issues/69696")] public Task LineContinuationInString2() => VerifyAsync($""" [| Module Program Dim x = "1" & _ "2" & _ "3" End Module |] """, $""" Module Program Dim x = "1" & "2" & "3" End Module """); [Fact, WorkItem("https://github.com/dotnet/roslyn/issues/69696")] public Task LineContinuationInString3() => VerifyAsync($""" [| Module Program Dim x = "1" & ' Comment "2" & ' Comment "3" End Module |] """, $""" Module Program Dim x = "1" & ' Comment "2" & ' Comment "3" End Module """); [Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/1085887")] public Task DoNotRemoveLineContinuationInVisualBasic9() => VerifyAsync(""" [| Module Program Function Add( _ i As Integer, _ j As Integer, _ ) As Integer Return i + j End Function End Module |] """, """ Module Program Function Add( _ i As Integer, _ j As Integer, _ ) As Integer Return i + j End Function End Module """, langVersion: LanguageVersion.VisualBasic9); [Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/1085887")] public async Task RemoveLineContinuationInVisualBasic10_11_12_And_14() { var code = """ [| Module Program Function Add( _ i As Integer, _ j As Integer, _ ) As Integer Return i + j End Function End Module |] """; var expected = """ Module Program Function Add( i As Integer, j As Integer, ) As Integer Return i + j End Function End Module """; await VerifyAsync(code, expected, langVersion: LanguageVersion.VisualBasic10); await VerifyAsync(code, expected, langVersion: LanguageVersion.VisualBasic11); await VerifyAsync(code, expected, langVersion: LanguageVersion.VisualBasic12); await VerifyAsync(code, expected); } private static string CreateMethod(string body) { return """ Imports System Class C Public Sub Method() """ + body + """ End Sub End Class """; } private static async Task VerifyAsync(string codeWithMarker, string expectedResult, LanguageVersion langVersion = LanguageVersion.VisualBasic14) { MarkupTestFile.GetSpans(codeWithMarker, out var codeWithoutMarker, out var textSpans); var document = CreateDocument(codeWithoutMarker, LanguageNames.VisualBasic, langVersion); var codeCleanups = CodeCleaner.GetDefaultProviders(document).WhereAsArray(p => p.Name is PredefinedCodeCleanupProviderNames.RemoveUnnecessaryLineContinuation or PredefinedCodeCleanupProviderNames.Format); var cleanDocument = await CodeCleaner.CleanupAsync(document, textSpans[0], await document.GetCodeCleanupOptionsAsync(CancellationToken.None), codeCleanups); var actualResult = (await cleanDocument.GetRequiredSyntaxRootAsync(CancellationToken.None)).ToFullString(); AssertEx.EqualOrDiff(expectedResult, actualResult); } private static Document CreateDocument(string code, string language, LanguageVersion langVersion) { var solution = new AdhocWorkspace().CurrentSolution; var projectId = ProjectId.CreateNewId(); var project = solution .AddProject(projectId, "Project", "Project.dll", language) .GetRequiredProject(projectId); Assert.NotNull(project.ParseOptions); var parseOptions = (VisualBasicParseOptions)project.ParseOptions; parseOptions = parseOptions.WithLanguageVersion(langVersion); project = project.WithParseOptions(parseOptions); return project.AddDocument("Document", SourceText.From(code)); } }