From 916276a4225d1e06811b4623da8ad2a7b18026cb Mon Sep 17 00:00:00 2001 From: Cyrus Najmabadi Date: Wed, 11 Nov 2015 00:15:24 -0800 Subject: [PATCH] Allow formatting to not block on a background thread. --- .../CSharpStructuredTriviaFormatEngine.cs | 2 +- .../Formatting/FormattingElasticTriviaTests.cs | 17 +++++++++-------- .../Formatting/FormattingMultipleSpanTests.cs | 4 ++-- .../Formatting/FormattingTriviaTests.cs | 2 +- 4 files changed, 13 insertions(+), 12 deletions(-) diff --git a/src/Workspaces/CSharp/Portable/Formatting/Engine/CSharpStructuredTriviaFormatEngine.cs b/src/Workspaces/CSharp/Portable/Formatting/Engine/CSharpStructuredTriviaFormatEngine.cs index bd7067b7750..701d4aefad1 100644 --- a/src/Workspaces/CSharp/Portable/Formatting/Engine/CSharpStructuredTriviaFormatEngine.cs +++ b/src/Workspaces/CSharp/Portable/Formatting/Engine/CSharpStructuredTriviaFormatEngine.cs @@ -23,7 +23,7 @@ internal class CSharpStructuredTriviaFormatEngine : AbstractFormatEngine { var root = trivia.GetStructure(); var formatter = new CSharpStructuredTriviaFormatEngine(trivia, initialColumn, optionSet, formattingRules, root.GetFirstToken(includeZeroWidth: true), root.GetLastToken(includeZeroWidth: true)); - return formatter.FormatAsync(cancellationToken).WaitAndGetResult(cancellationToken); + return formatter.FormatAsync(cancellationToken).WaitAndGetResult_CanCallOnBackground(cancellationToken); } private CSharpStructuredTriviaFormatEngine( diff --git a/src/Workspaces/CSharpTest/Formatting/FormattingElasticTriviaTests.cs b/src/Workspaces/CSharpTest/Formatting/FormattingElasticTriviaTests.cs index 57cfa4bb700..36b35a7478f 100644 --- a/src/Workspaces/CSharpTest/Formatting/FormattingElasticTriviaTests.cs +++ b/src/Workspaces/CSharpTest/Formatting/FormattingElasticTriviaTests.cs @@ -1,6 +1,7 @@ // Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System.Linq; +using System.Threading.Tasks; using Microsoft.CodeAnalysis.CSharp.Syntax; using Microsoft.CodeAnalysis.Editing; using Microsoft.CodeAnalysis.Formatting; @@ -14,7 +15,7 @@ public class FormattingEngineElasticTriviaTests : CSharpFormattingTestBase { [Fact(Skip = "530167")] [Trait(Traits.Feature, Traits.Features.Formatting)] - public void FormatElasticTrivia() + public async Task FormatElasticTrivia() { var expected = @"extern alias A1; @@ -84,14 +85,14 @@ class B Assert.NotNull(compilation); - var newCompilation = Formatter.Format(compilation, new AdhocWorkspace()); + var newCompilation = await Formatter.FormatAsync(compilation, new AdhocWorkspace()); Assert.Equal(expected, newCompilation.ToFullString()); } [WorkItem(1947, "https://github.com/dotnet/roslyn/issues/1947")] [Fact] [Trait(Traits.Feature, Traits.Features.Formatting)] - public void ElasticLineBreaksBetweenMembers() + public async Task ElasticLineBreaksBetweenMembers() { var text = @" public class C @@ -125,20 +126,20 @@ public class C public class SomeAttribute : System.Attribute { } "; - var formatted = Formatter.Format(newRoot, ws).ToFullString(); + var formatted = (await Formatter.FormatAsync(newRoot, ws)).ToFullString(); Assert.Equal(expected, formatted); - var elasticOnlyFormatted = Formatter.Format(newRoot, SyntaxAnnotation.ElasticAnnotation, ws).ToFullString(); + var elasticOnlyFormatted = (await Formatter.FormatAsync(newRoot, SyntaxAnnotation.ElasticAnnotation, ws)).ToFullString(); Assert.Equal(expected, elasticOnlyFormatted); - var annotationFormatted = Formatter.Format(newRoot, Formatter.Annotation, ws).ToFullString(); + var annotationFormatted = (await Formatter.FormatAsync(newRoot, Formatter.Annotation, ws)).ToFullString(); Assert.Equal(expected, annotationFormatted); } [WorkItem(408, "https://roslyn.codeplex.com/workitem/408")] [Fact] [Trait(Traits.Feature, Traits.Features.Formatting)] - public void FormatElasticTriviaBetweenPropertiesWithoutAccessors() + public async Task FormatElasticTriviaBetweenPropertiesWithoutAccessors() { var expected = @"class PropertyTest { @@ -187,7 +188,7 @@ public void FormatElasticTriviaBetweenPropertiesWithoutAccessors() Assert.NotNull(compilation); - var newCompilation = Formatter.Format(compilation, new AdhocWorkspace()); + var newCompilation = await Formatter.FormatAsync(compilation, new AdhocWorkspace()); Assert.Equal(expected, newCompilation.ToFullString()); } } diff --git a/src/Workspaces/CSharpTest/Formatting/FormattingMultipleSpanTests.cs b/src/Workspaces/CSharpTest/Formatting/FormattingMultipleSpanTests.cs index 0651fedc8c6..92fd220cbcc 100644 --- a/src/Workspaces/CSharpTest/Formatting/FormattingMultipleSpanTests.cs +++ b/src/Workspaces/CSharpTest/Formatting/FormattingMultipleSpanTests.cs @@ -157,7 +157,7 @@ void F() [WorkItem(539231, "DevDiv")] [Fact, Trait(Traits.Feature, Traits.Features.Formatting)] - public void EmptySpan() + public async Task EmptySpan() { using (var workspace = new AdhocWorkspace()) { @@ -165,7 +165,7 @@ public void EmptySpan() var document = project.AddDocument("Document", SourceText.From("")); var syntaxTree = document.GetSyntaxTreeAsync().Result; - var result = Formatter.Format(syntaxTree.GetRoot(CancellationToken.None), TextSpan.FromBounds(0, 0), workspace, cancellationToken: CancellationToken.None); + var result = await Formatter.FormatAsync(syntaxTree.GetRoot(CancellationToken.None), TextSpan.FromBounds(0, 0), workspace, cancellationToken: CancellationToken.None); } } diff --git a/src/Workspaces/CSharpTest/Formatting/FormattingTriviaTests.cs b/src/Workspaces/CSharpTest/Formatting/FormattingTriviaTests.cs index afae5b7107e..5d849a238cf 100644 --- a/src/Workspaces/CSharpTest/Formatting/FormattingTriviaTests.cs +++ b/src/Workspaces/CSharpTest/Formatting/FormattingTriviaTests.cs @@ -1762,4 +1762,4 @@ class F Assert.Equal(expected, actual); } } -} +} \ No newline at end of file -- GitLab