提交 916276a4 编写于 作者: C Cyrus Najmabadi

Allow formatting to not block on a background thread.

上级 2b0ece03
......@@ -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(
......
// 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());
}
}
......
......@@ -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);
}
}
......
......@@ -1762,4 +1762,4 @@ class F
Assert.Equal(expected, actual);
}
}
}
}
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册