未验证 提交 886f6c55 编写于 作者: D dotnet-automerge-bot 提交者: GitHub

Merge pull request #30334 from dotnet/merges/dev15.9.x-to-dev16.0.x

Merge dev15.9.x to dev16.0.x
......@@ -1195,6 +1195,55 @@ public class B
Assert.Equal("public int field5, field6 = 1;", diagnostics(3).Message)
End Using
End Sub
<WpfFact, WorkItem(27703, "https://github.com/dotnet/roslyn/issues/27703")>
Public Sub TestDiagnosticsForSpanWorksWithEmptySpan()
Dim test = <Workspace>
<Project Language="C#" CommonReferences="true">
<Document>
public class B
{
public string field0;
public string field1, field2;
public int field3 = 0, field4 = 1;
public int field5, field6 = 1;
}
</Document>
</Project>
</Workspace>
Using workspace = TestWorkspace.CreateWorkspace(test)
Dim project = workspace.CurrentSolution.Projects.Single()
Dim analyzer = New FieldDeclarationAnalyzer()
Dim analyzerReference = New AnalyzerImageReference(ImmutableArray.Create(Of DiagnosticAnalyzer)(analyzer))
project = project.AddAnalyzerReference(analyzerReference)
Dim mefExportProvider = DirectCast(workspace.Services.HostServices, IMefHostExportProvider)
Dim diagnosticService = New TestDiagnosticAnalyzerService(hostDiagnosticUpdateSource:=Nothing, mefExportProvider.GetExports(Of PrimaryWorkspace).Single.Value)
Dim descriptorsMap = diagnosticService.GetDiagnosticDescriptors(project)
Assert.Equal(1, descriptorsMap.Count)
Dim document = project.Documents.Single()
Dim fullSpan = document.GetSyntaxRootAsync().WaitAndGetResult(CancellationToken.None).FullSpan
Dim incrementalAnalyzer = diagnosticService.CreateIncrementalAnalyzer(workspace)
Dim diagnostics = diagnosticService.GetDiagnosticsForSpanAsync(document, fullSpan).
WaitAndGetResult(CancellationToken.None).
OrderBy(Function(d) d.TextSpan.Start).
ToArray()
For Each diagnostic In diagnostics
Dim spanAtCaret = New TextSpan(diagnostic.DataLocation.SourceSpan.Value.Start, 0)
Dim otherDiagnostics = diagnosticService.GetDiagnosticsForSpanAsync(document, spanAtCaret).
WaitAndGetResult(CancellationToken.None).
ToArray()
Assert.Equal(1, otherDiagnostics.Length)
Assert.Equal(diagnostic.Message, otherDiagnostics(0).Message)
Next
End Using
End Sub
Public Class FieldDeclarationAnalyzer
Inherits DiagnosticAnalyzer
......
......@@ -602,7 +602,7 @@ private IEnumerable<DiagnosticData> ConvertToLocalDiagnosticsWithCompilation(Doc
continue;
}
if (span.HasValue && !span.Value.Contains(diagnostic.Location.SourceSpan))
if (span.HasValue && !span.Value.IntersectsWith(diagnostic.Location.SourceSpan))
{
continue;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册