提交 7c1dd49d 编写于 作者: B Balaji Soundrarajan

Merge pull request #4198 from basoundr/ToGoDefMASCrash

Dont fail format on MAS with Tabs on
......@@ -74,7 +74,8 @@ private bool ShouldFormat(FormattingContext context)
var commonToken1 = this.Token1;
var commonToken2 = this.Token2;
var span = TextSpan.FromBounds(commonToken1.Span.End, commonToken2.Span.Start);
var formatSpanEnd = commonToken2.Kind() == SyntaxKind.None ? commonToken1.Span.End : commonToken2.Span.Start;
var span = TextSpan.FromBounds(commonToken1.Span.End, formatSpanEnd);
if (context.IsSpacingSuppressed(span))
{
return false;
......
// 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 Microsoft.CodeAnalysis.CSharp;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Microsoft.CodeAnalysis.Test.Utilities;
using Microsoft.CodeAnalysis.Formatting;
using Microsoft.CodeAnalysis.Options;
using Roslyn.Test.Utilities;
using Xunit;
......@@ -1723,5 +1720,45 @@ public void NewLineOptions_LineFeedOnly()
Assert.Equal(expected, actual);
}
[WorkItem(4019, "https://github.com/dotnet/roslyn/issues/4019")]
[Fact, Trait(Traits.Feature, Traits.Features.Formatting)]
public void FormatWithTabs()
{
var code = @"#region Assembly mscorlib
// C:\
#endregion
using System.Collections;
class F
{
string s;
}";
var expected = @"#region Assembly mscorlib
// C:\
#endregion
using System.Collections;
class F
{
string s;
}";
var tree = SyntaxFactory.ParseCompilationUnit(code);
var newLineText = SyntaxFactory.ElasticEndOfLine(DefaultWorkspace.Options.GetOption(FormattingOptions.NewLine, LanguageNames.CSharp));
tree = tree.ReplaceTokens(tree.DescendantTokens(descendIntoTrivia: true)
.Where(tr => tr.IsKind(SyntaxKind.EndOfDirectiveToken)), (o, r) => o.WithTrailingTrivia(o.LeadingTrivia.Add(newLineText))
.WithLeadingTrivia(SyntaxFactory.TriviaList())
.WithAdditionalAnnotations(SyntaxAnnotation.ElasticAnnotation));
var formatted = Formatter.Format(tree, DefaultWorkspace, DefaultWorkspace.Options.WithChangedOption(FormattingOptions.UseTabs, LanguageNames.CSharp, true));
var actual = formatted.ToFullString();
Assert.Equal(expected, actual);
}
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册