Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
lwm1986
roslyn
提交
1a881baa
R
roslyn
项目概览
lwm1986
/
roslyn
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
roslyn
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
1a881baa
编写于
10月 29, 2015
作者:
C
Cyrus Najmabadi
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Make it so we can't produce invalid update args.
上级
2971c626
变更
14
隐藏空白更改
内联
并排
Showing
14 changed file
with
172 addition
and
130 deletion
+172
-130
src/EditorFeatures/CSharpTest/Squiggles/ErrorSquiggleProducerTests.cs
...atures/CSharpTest/Squiggles/ErrorSquiggleProducerTests.cs
+4
-6
src/EditorFeatures/Core/Implementation/Diagnostics/AbstractDiagnosticsTaggerProvider.AggregatingTagger.cs
...cs/AbstractDiagnosticsTaggerProvider.AggregatingTagger.cs
+1
-1
src/EditorFeatures/Core/Implementation/EditAndContinue/EditAndContinueDiagnosticUpdateSource.cs
.../EditAndContinue/EditAndContinueDiagnosticUpdateSource.cs
+24
-18
src/EditorFeatures/Test/Diagnostics/DiagnosticServiceTests.cs
...EditorFeatures/Test/Diagnostics/DiagnosticServiceTests.cs
+1
-2
src/Features/Core/Portable/Diagnostics/AbstractHostDiagnosticUpdateSource.cs
...ortable/Diagnostics/AbstractHostDiagnosticUpdateSource.cs
+15
-17
src/Features/Core/Portable/Diagnostics/DiagnosticsUpdatedArgs.cs
...tures/Core/Portable/Diagnostics/DiagnosticsUpdatedArgs.cs
+28
-1
src/Features/Core/Portable/Diagnostics/EngineV1/DiagnosticIncrementalAnalyzer.cs
...ble/Diagnostics/EngineV1/DiagnosticIncrementalAnalyzer.cs
+38
-27
src/Features/Core/Portable/Diagnostics/EngineV1/DiagnosticIncrementalAnalyzer_BuildSynchronization.cs
...eV1/DiagnosticIncrementalAnalyzer_BuildSynchronization.cs
+2
-4
src/Features/Core/Portable/Diagnostics/EngineV2/DiagnosticIncrementalAnalyzer.cs
...ble/Diagnostics/EngineV2/DiagnosticIncrementalAnalyzer.cs
+8
-14
src/Features/Core/Portable/Diagnostics/HostAnalyzerManager.cs
...Features/Core/Portable/Diagnostics/HostAnalyzerManager.cs
+2
-3
src/VisualStudio/Core/Def/Implementation/Diagnostics/MiscellaneousDiagnosticAnalyzerService.cs
...ion/Diagnostics/MiscellaneousDiagnosticAnalyzerService.cs
+4
-5
src/VisualStudio/Core/Def/Implementation/TaskList/ExternalErrorDiagnosticUpdateSource.cs
...mentation/TaskList/ExternalErrorDiagnosticUpdateSource.cs
+15
-8
src/VisualStudio/Core/Def/Implementation/TaskList/HostDiagnosticUpdateSource.cs
...Def/Implementation/TaskList/HostDiagnosticUpdateSource.cs
+22
-12
src/VisualStudio/Core/Test/Diagnostics/DiagnosticTableDataSourceTests.vb
...o/Core/Test/Diagnostics/DiagnosticTableDataSourceTests.vb
+8
-12
未找到文件。
src/EditorFeatures/CSharpTest/Squiggles/ErrorSquiggleProducerTests.cs
浏览文件 @
1a881baa
...
@@ -200,12 +200,11 @@ class Test
...
@@ -200,12 +200,11 @@ class Test
{
{
var
document
=
workspace
.
Documents
.
First
();
var
document
=
workspace
.
Documents
.
First
();
var
updateArgs
=
new
DiagnosticsUpdatedArgs
(
var
updateArgs
=
DiagnosticsUpdatedArgs
.
DiagnosticsCreated
(
new
object
(),
workspace
,
workspace
.
CurrentSolution
,
document
.
Project
.
Id
,
document
.
Id
,
new
object
(),
workspace
,
workspace
.
CurrentSolution
,
document
.
Project
.
Id
,
document
.
Id
,
ImmutableArray
.
Create
(
ImmutableArray
.
Create
(
CreateDiagnosticData
(
workspace
,
document
,
new
TextSpan
(
0
,
0
)),
CreateDiagnosticData
(
workspace
,
document
,
new
TextSpan
(
0
,
0
)),
CreateDiagnosticData
(
workspace
,
document
,
new
TextSpan
(
0
,
1
))),
CreateDiagnosticData
(
workspace
,
document
,
new
TextSpan
(
0
,
1
))));
DiagnosticsUpdatedKind
.
DiagnosticsCreated
);
var
spans
=
await
GetErrorsFromUpdateSource
(
workspace
,
document
,
updateArgs
).
ConfigureAwait
(
true
);
var
spans
=
await
GetErrorsFromUpdateSource
(
workspace
,
document
,
updateArgs
).
ConfigureAwait
(
true
);
...
@@ -234,12 +233,11 @@ class Test
...
@@ -234,12 +233,11 @@ class Test
{
{
var
document
=
workspace
.
Documents
.
First
();
var
document
=
workspace
.
Documents
.
First
();
var
updateArgs
=
new
DiagnosticsUpdatedArgs
(
var
updateArgs
=
DiagnosticsUpdatedArgs
.
DiagnosticsCreated
(
new
LiveId
(),
workspace
,
workspace
.
CurrentSolution
,
document
.
Project
.
Id
,
document
.
Id
,
new
LiveId
(),
workspace
,
workspace
.
CurrentSolution
,
document
.
Project
.
Id
,
document
.
Id
,
ImmutableArray
.
Create
(
ImmutableArray
.
Create
(
CreateDiagnosticData
(
workspace
,
document
,
new
TextSpan
(
0
,
0
)),
CreateDiagnosticData
(
workspace
,
document
,
new
TextSpan
(
0
,
0
)),
CreateDiagnosticData
(
workspace
,
document
,
new
TextSpan
(
0
,
1
))),
CreateDiagnosticData
(
workspace
,
document
,
new
TextSpan
(
0
,
1
))));
DiagnosticsUpdatedKind
.
DiagnosticsCreated
);
var
spans
=
await
GetErrorsFromUpdateSource
(
workspace
,
document
,
updateArgs
).
ConfigureAwait
(
true
);
var
spans
=
await
GetErrorsFromUpdateSource
(
workspace
,
document
,
updateArgs
).
ConfigureAwait
(
true
);
...
...
src/EditorFeatures/Core/Implementation/Diagnostics/AbstractDiagnosticsTaggerProvider.AggregatingTagger.cs
浏览文件 @
1a881baa
...
@@ -64,7 +64,7 @@ private void GetInitialDiagnostics(CancellationToken cancellationToken)
...
@@ -64,7 +64,7 @@ private void GetInitialDiagnostics(CancellationToken cancellationToken)
foreach
(
var
updateArgs
in
_owner
.
_diagnosticService
.
GetDiagnosticsUpdatedEventArgs
(
workspace
,
project
.
Id
,
document
.
Id
,
cancellationToken
))
foreach
(
var
updateArgs
in
_owner
.
_diagnosticService
.
GetDiagnosticsUpdatedEventArgs
(
workspace
,
project
.
Id
,
document
.
Id
,
cancellationToken
))
{
{
var
diagnostics
=
_owner
.
_diagnosticService
.
GetDiagnostics
(
updateArgs
.
Workspace
,
updateArgs
.
ProjectId
,
updateArgs
.
DocumentId
,
updateArgs
.
Id
,
includeSuppressedDiagnostics
:
false
,
cancellationToken
:
cancellationToken
);
var
diagnostics
=
_owner
.
_diagnosticService
.
GetDiagnostics
(
updateArgs
.
Workspace
,
updateArgs
.
ProjectId
,
updateArgs
.
DocumentId
,
updateArgs
.
Id
,
includeSuppressedDiagnostics
:
false
,
cancellationToken
:
cancellationToken
);
OnDiagnosticsUpdated
(
new
DiagnosticsUpdatedArgs
(
updateArgs
.
Id
,
updateArgs
.
Workspace
,
project
.
Solution
,
updateArgs
.
ProjectId
,
updateArgs
.
DocumentId
,
diagnostics
.
AsImmutableOrEmpty
(),
DiagnosticsUpdatedKind
.
DiagnosticsCreated
));
OnDiagnosticsUpdated
(
DiagnosticsUpdatedArgs
.
DiagnosticsCreated
(
updateArgs
.
Id
,
updateArgs
.
Workspace
,
project
.
Solution
,
updateArgs
.
ProjectId
,
updateArgs
.
DocumentId
,
diagnostics
.
AsImmutableOrEmpty
()
));
}
}
}
}
}
}
...
...
src/EditorFeatures/Core/Implementation/EditAndContinue/EditAndContinueDiagnosticUpdateSource.cs
浏览文件 @
1a881baa
...
@@ -49,8 +49,7 @@ public void ClearDiagnostics(DebuggingSession session, Workspace workspace, obje
...
@@ -49,8 +49,7 @@ public void ClearDiagnostics(DebuggingSession session, Workspace workspace, obje
public
void
ClearDiagnostics
(
DebuggingSession
session
,
Workspace
workspace
,
object
errorId
,
ProjectId
projectId
,
DocumentId
documentId
)
public
void
ClearDiagnostics
(
DebuggingSession
session
,
Workspace
workspace
,
object
errorId
,
ProjectId
projectId
,
DocumentId
documentId
)
{
{
RaiseDiagnosticsUpdated
(
MakeArgs
(
session
,
workspace
,
errorId
,
projectId
,
documentId
,
ImmutableArray
.
Create
<
DiagnosticData
>(),
RaiseDiagnosticsUpdated
(
MakeRemovedArgs
(
session
,
workspace
,
errorId
,
projectId
,
documentId
));
DiagnosticsUpdatedKind
.
DiagnosticsRemoved
));
}
}
public
ImmutableArray
<
DocumentId
>
ReportDiagnostics
(
DebuggingSession
session
,
object
errorId
,
ProjectId
projectId
,
Solution
solution
,
IEnumerable
<
Diagnostic
>
diagnostics
)
public
ImmutableArray
<
DocumentId
>
ReportDiagnostics
(
DebuggingSession
session
,
object
errorId
,
ProjectId
projectId
,
Solution
solution
,
IEnumerable
<
Diagnostic
>
diagnostics
)
...
@@ -61,7 +60,7 @@ public ImmutableArray<DocumentId> ReportDiagnostics(DebuggingSession session, ob
...
@@ -61,7 +60,7 @@ public ImmutableArray<DocumentId> ReportDiagnostics(DebuggingSession session, ob
where
document
!=
null
where
document
!=
null
let
item
=
MakeDiagnosticData
(
projectId
,
document
,
solution
,
diagnostic
)
let
item
=
MakeDiagnosticData
(
projectId
,
document
,
solution
,
diagnostic
)
group
item
by
document
.
Id
into
itemsByDocumentId
group
item
by
document
.
Id
into
itemsByDocumentId
select
Make
Args
(
session
,
errorId
,
solution
.
Workspace
,
solution
,
projectId
,
itemsByDocumentId
.
Key
,
ImmutableArray
.
CreateRange
(
itemsByDocumentId
),
DiagnosticsUpdatedKind
.
DiagnosticsCreated
));
select
Make
CreatedArgs
(
session
,
errorId
,
solution
.
Workspace
,
solution
,
projectId
,
itemsByDocumentId
.
Key
,
ImmutableArray
.
CreateRange
(
itemsByDocumentId
)
));
foreach
(
var
args
in
argsByDocument
)
foreach
(
var
args
in
argsByDocument
)
{
{
...
@@ -85,27 +84,34 @@ private static DiagnosticData MakeDiagnosticData(ProjectId projectId, Document d
...
@@ -85,27 +84,34 @@ private static DiagnosticData MakeDiagnosticData(ProjectId projectId, Document d
}
}
}
}
private
DiagnosticsUpdatedArgs
MakeArgs
(
private
DiagnosticsUpdatedArgs
MakeCreatedArgs
(
DebuggingSession
session
,
Workspace
workspace
,
object
errorId
,
ProjectId
projectId
,
DocumentId
documentId
,
ImmutableArray
<
DiagnosticData
>
items
,
DebuggingSession
session
,
Workspace
workspace
,
object
errorId
,
ProjectId
projectId
,
DocumentId
documentId
,
ImmutableArray
<
DiagnosticData
>
items
)
DiagnosticsUpdatedKind
kind
)
{
{
return
Make
Args
(
session
,
errorId
,
workspace
,
solution
:
null
,
projectId
:
projectId
,
documentId
:
documentId
,
items
:
items
,
kind
:
kind
);
return
Make
CreatedArgs
(
session
,
errorId
,
workspace
,
solution
:
null
,
projectId
:
projectId
,
documentId
:
documentId
,
items
:
items
);
}
}
private
DiagnosticsUpdatedArgs
MakeArgs
(
private
DiagnosticsUpdatedArgs
MakeRemovedArgs
(
DebuggingSession
session
,
object
errorId
,
Workspace
workspace
,
Solution
solution
,
ProjectId
projectId
,
DocumentId
documentId
,
ImmutableArray
<
DiagnosticData
>
items
,
DebuggingSession
session
,
Workspace
workspace
,
object
errorId
,
ProjectId
projectId
,
DocumentId
documentId
)
DiagnosticsUpdatedKind
kind
)
{
{
return
new
DiagnosticsUpdatedArgs
(
return
MakeRemovedArgs
(
session
,
errorId
,
workspace
,
solution
:
null
,
projectId
:
projectId
,
documentId
:
documentId
);
id
:
new
EnCId
(
session
,
errorId
),
workspace
:
workspace
,
solution
:
solution
,
projectId
:
projectId
,
documentId
:
documentId
,
diagnostics
:
items
,
kind
:
kind
);
}
}
private
DiagnosticsUpdatedArgs
MakeCreatedArgs
(
DebuggingSession
session
,
object
errorId
,
Workspace
workspace
,
Solution
solution
,
ProjectId
projectId
,
DocumentId
documentId
,
ImmutableArray
<
DiagnosticData
>
items
)
{
return
DiagnosticsUpdatedArgs
.
DiagnosticsCreated
(
CreateId
(
session
,
errorId
),
workspace
,
solution
,
projectId
,
documentId
,
items
);
}
private
DiagnosticsUpdatedArgs
MakeRemovedArgs
(
DebuggingSession
session
,
object
errorId
,
Workspace
workspace
,
Solution
solution
,
ProjectId
projectId
,
DocumentId
documentId
)
{
return
DiagnosticsUpdatedArgs
.
DiagnosticsRemoved
(
CreateId
(
session
,
errorId
),
workspace
,
solution
,
projectId
,
documentId
);
}
private
static
EnCId
CreateId
(
DebuggingSession
session
,
object
errorId
)
=>
new
EnCId
(
session
,
errorId
);
private
void
RaiseDiagnosticsUpdated
(
DiagnosticsUpdatedArgs
args
)
private
void
RaiseDiagnosticsUpdated
(
DiagnosticsUpdatedArgs
args
)
{
{
var
updated
=
this
.
DiagnosticsUpdated
;
var
updated
=
this
.
DiagnosticsUpdated
;
...
...
src/EditorFeatures/Test/Diagnostics/DiagnosticServiceTests.cs
浏览文件 @
1a881baa
...
@@ -97,8 +97,7 @@ private static DiagnosticData RaiseDiagnosticEvent(ManualResetEvent set, TestDia
...
@@ -97,8 +97,7 @@ private static DiagnosticData RaiseDiagnosticEvent(ManualResetEvent set, TestDia
var
diagnostic
=
CreateDiagnosticData
(
workspace
,
project
,
document
);
var
diagnostic
=
CreateDiagnosticData
(
workspace
,
project
,
document
);
source
.
RaiseUpdateEvent
(
source
.
RaiseUpdateEvent
(
new
DiagnosticsUpdatedArgs
(
id
,
workspace
,
workspace
.
CurrentSolution
,
project
,
document
,
ImmutableArray
.
Create
(
diagnostic
),
DiagnosticsUpdatedArgs
.
DiagnosticsCreated
(
id
,
workspace
,
workspace
.
CurrentSolution
,
project
,
document
,
ImmutableArray
.
Create
(
diagnostic
)));
DiagnosticsUpdatedKind
.
DiagnosticsCreated
));
set
.
WaitOne
();
set
.
WaitOne
();
...
...
src/Features/Core/Portable/Diagnostics/AbstractHostDiagnosticUpdateSource.cs
浏览文件 @
1a881baa
...
@@ -79,7 +79,7 @@ internal void ReportAnalyzerDiagnostic(DiagnosticAnalyzer analyzer, Diagnostic d
...
@@ -79,7 +79,7 @@ internal void ReportAnalyzerDiagnostic(DiagnosticAnalyzer analyzer, Diagnostic d
if
(
raiseDiagnosticsUpdated
)
if
(
raiseDiagnosticsUpdated
)
{
{
RaiseDiagnosticsUpdated
(
Make
Args
(
analyzer
,
dxs
,
project
,
DiagnosticsUpdatedKind
.
DiagnosticsCreated
));
RaiseDiagnosticsUpdated
(
Make
CreatedArgs
(
analyzer
,
dxs
,
project
));
}
}
}
}
...
@@ -115,37 +115,35 @@ private void ClearAnalyzerDiagnostics(DiagnosticAnalyzer analyzer, ProjectId pro
...
@@ -115,37 +115,35 @@ private void ClearAnalyzerDiagnostics(DiagnosticAnalyzer analyzer, ProjectId pro
ImmutableInterlocked
.
TryUpdate
(
ref
_analyzerHostDiagnosticsMap
,
analyzer
,
newDiags
,
existing
))
ImmutableInterlocked
.
TryUpdate
(
ref
_analyzerHostDiagnosticsMap
,
analyzer
,
newDiags
,
existing
))
{
{
var
project
=
this
.
Workspace
.
CurrentSolution
.
GetProject
(
projectId
);
var
project
=
this
.
Workspace
.
CurrentSolution
.
GetProject
(
projectId
);
RaiseDiagnosticsUpdated
(
MakeArgs
(
analyzer
,
ImmutableHashSet
<
DiagnosticData
>.
Empty
,
project
,
RaiseDiagnosticsUpdated
(
MakeRemovedArgs
(
analyzer
,
project
));
DiagnosticsUpdatedKind
.
DiagnosticsRemoved
));
}
}
}
}
else
if
(
ImmutableInterlocked
.
TryRemove
(
ref
_analyzerHostDiagnosticsMap
,
analyzer
,
out
existing
))
else
if
(
ImmutableInterlocked
.
TryRemove
(
ref
_analyzerHostDiagnosticsMap
,
analyzer
,
out
existing
))
{
{
var
project
=
this
.
Workspace
.
CurrentSolution
.
GetProject
(
projectId
);
var
project
=
this
.
Workspace
.
CurrentSolution
.
GetProject
(
projectId
);
RaiseDiagnosticsUpdated
(
MakeArgs
(
analyzer
,
ImmutableHashSet
<
DiagnosticData
>.
Empty
,
project
,
RaiseDiagnosticsUpdated
(
MakeRemovedArgs
(
analyzer
,
project
));
DiagnosticsUpdatedKind
.
DiagnosticsRemoved
));
if
(
existing
.
Any
(
d
=>
d
.
ProjectId
==
null
))
if
(
existing
.
Any
(
d
=>
d
.
ProjectId
==
null
))
{
{
RaiseDiagnosticsUpdated
(
MakeArgs
(
analyzer
,
ImmutableHashSet
<
DiagnosticData
>.
Empty
,
project
:
null
,
RaiseDiagnosticsUpdated
(
MakeRemovedArgs
(
analyzer
,
project
:
null
));
kind
:
DiagnosticsUpdatedKind
.
DiagnosticsRemoved
));
}
}
}
}
}
}
private
DiagnosticsUpdatedArgs
MakeArgs
(
DiagnosticAnalyzer
analyzer
,
ImmutableHashSet
<
DiagnosticData
>
items
,
Project
project
,
private
DiagnosticsUpdatedArgs
MakeCreatedArgs
(
DiagnosticAnalyzer
analyzer
,
ImmutableHashSet
<
DiagnosticData
>
items
,
Project
project
)
DiagnosticsUpdatedKind
kind
)
{
{
return
new
DiagnosticsUpdatedArgs
(
return
DiagnosticsUpdatedArgs
.
DiagnosticsCreated
(
kind
:
kind
,
CreateId
(
analyzer
,
project
),
this
.
Workspace
,
project
?.
Solution
,
project
?.
Id
,
documentId
:
null
,
diagnostics
:
items
.
ToImmutableArray
());
id
:
new
HostArgsId
(
this
,
analyzer
,
project
?.
Id
),
workspace
:
this
.
Workspace
,
solution
:
project
?.
Solution
,
projectId
:
project
?.
Id
,
documentId
:
null
,
diagnostics
:
items
.
ToImmutableArray
());
}
}
private
DiagnosticsUpdatedArgs
MakeRemovedArgs
(
DiagnosticAnalyzer
analyzer
,
Project
project
)
{
return
DiagnosticsUpdatedArgs
.
DiagnosticsRemoved
(
CreateId
(
analyzer
,
project
),
this
.
Workspace
,
project
?.
Solution
,
project
?.
Id
,
documentId
:
null
);
}
private
HostArgsId
CreateId
(
DiagnosticAnalyzer
analyzer
,
Project
project
)
=>
new
HostArgsId
(
this
,
analyzer
,
project
?.
Id
);
internal
ImmutableArray
<
DiagnosticData
>
TestOnly_GetReportedDiagnostics
()
internal
ImmutableArray
<
DiagnosticData
>
TestOnly_GetReportedDiagnostics
()
{
{
return
_analyzerHostDiagnosticsMap
.
Values
.
Flatten
().
ToImmutableArray
();
return
_analyzerHostDiagnosticsMap
.
Values
.
Flatten
().
ToImmutableArray
();
...
...
src/Features/Core/Portable/Diagnostics/DiagnosticsUpdatedArgs.cs
浏览文件 @
1a881baa
...
@@ -2,6 +2,7 @@
...
@@ -2,6 +2,7 @@
using
System
;
using
System
;
using
System.Collections.Immutable
;
using
System.Collections.Immutable
;
using
System.Diagnostics
;
using
Microsoft.CodeAnalysis.Common
;
using
Microsoft.CodeAnalysis.Common
;
namespace
Microsoft.CodeAnalysis.Diagnostics
namespace
Microsoft.CodeAnalysis.Diagnostics
...
@@ -12,7 +13,7 @@ internal class DiagnosticsUpdatedArgs : UpdatedEventArgs
...
@@ -12,7 +13,7 @@ internal class DiagnosticsUpdatedArgs : UpdatedEventArgs
public
Solution
Solution
{
get
;
}
public
Solution
Solution
{
get
;
}
public
ImmutableArray
<
DiagnosticData
>
Diagnostics
{
get
;
}
public
ImmutableArray
<
DiagnosticData
>
Diagnostics
{
get
;
}
p
ublic
DiagnosticsUpdatedArgs
(
p
rivate
DiagnosticsUpdatedArgs
(
object
id
,
object
id
,
Workspace
workspace
,
Workspace
workspace
,
Solution
solution
,
Solution
solution
,
...
@@ -25,6 +26,32 @@ internal class DiagnosticsUpdatedArgs : UpdatedEventArgs
...
@@ -25,6 +26,32 @@ internal class DiagnosticsUpdatedArgs : UpdatedEventArgs
Solution
=
solution
;
Solution
=
solution
;
Diagnostics
=
diagnostics
;
Diagnostics
=
diagnostics
;
Kind
=
kind
;
Kind
=
kind
;
if
(
kind
==
DiagnosticsUpdatedKind
.
DiagnosticsRemoved
)
{
Debug
.
Assert
(
diagnostics
.
IsEmpty
);
}
}
public
static
DiagnosticsUpdatedArgs
DiagnosticsCreated
(
object
id
,
Workspace
workspace
,
Solution
solution
,
ProjectId
projectId
,
DocumentId
documentId
,
ImmutableArray
<
DiagnosticData
>
diagnostics
)
{
return
new
DiagnosticsUpdatedArgs
(
id
,
workspace
,
solution
,
projectId
,
documentId
,
diagnostics
,
DiagnosticsUpdatedKind
.
DiagnosticsCreated
);
}
public
static
DiagnosticsUpdatedArgs
DiagnosticsRemoved
(
object
id
,
Workspace
workspace
,
Solution
solution
,
ProjectId
projectId
,
DocumentId
documentId
)
{
return
new
DiagnosticsUpdatedArgs
(
id
,
workspace
,
solution
,
projectId
,
documentId
,
ImmutableArray
<
DiagnosticData
>.
Empty
,
DiagnosticsUpdatedKind
.
DiagnosticsCreated
);
}
}
}
}
...
...
src/Features/Core/Portable/Diagnostics/EngineV1/DiagnosticIncrementalAnalyzer.cs
浏览文件 @
1a881baa
...
@@ -156,7 +156,7 @@ private async Task AnalyzeSyntaxAsync(Document document, ImmutableHashSet<string
...
@@ -156,7 +156,7 @@ private async Task AnalyzeSyntaxAsync(Document document, ImmutableHashSet<string
var
data
=
await
_executor
.
GetSyntaxAnalysisDataAsync
(
userDiagnosticDriver
,
stateSet
,
versions
).
ConfigureAwait
(
false
);
var
data
=
await
_executor
.
GetSyntaxAnalysisDataAsync
(
userDiagnosticDriver
,
stateSet
,
versions
).
ConfigureAwait
(
false
);
if
(
data
.
FromCache
)
if
(
data
.
FromCache
)
{
{
RaiseDiagnostics
Updated
(
StateType
.
Syntax
,
document
.
Id
,
stateSet
,
new
SolutionArgument
(
document
),
data
.
Items
,
DiagnosticsUpdatedKind
.
DiagnosticsCreated
);
RaiseDiagnostics
Created
(
StateType
.
Syntax
,
document
.
Id
,
stateSet
,
new
SolutionArgument
(
document
),
data
.
Items
);
continue
;
continue
;
}
}
...
@@ -244,7 +244,7 @@ private async Task AnalyzeBodyDocumentAsync(Document document, SyntaxNode member
...
@@ -244,7 +244,7 @@ private async Task AnalyzeBodyDocumentAsync(Document document, SyntaxNode member
if
(
data
.
FromCache
)
if
(
data
.
FromCache
)
{
{
RaiseDiagnostics
Updated
(
StateType
.
Document
,
document
.
Id
,
stateSet
,
new
SolutionArgument
(
document
),
data
.
Items
,
DiagnosticsUpdatedKind
.
DiagnosticsCreated
);
RaiseDiagnostics
Created
(
StateType
.
Document
,
document
.
Id
,
stateSet
,
new
SolutionArgument
(
document
),
data
.
Items
);
continue
;
continue
;
}
}
...
@@ -281,7 +281,7 @@ private async Task AnalyzeDocumentAsync(Document document, VersionArgument versi
...
@@ -281,7 +281,7 @@ private async Task AnalyzeDocumentAsync(Document document, VersionArgument versi
var
data
=
await
_executor
.
GetDocumentAnalysisDataAsync
(
userDiagnosticDriver
,
stateSet
,
versions
).
ConfigureAwait
(
false
);
var
data
=
await
_executor
.
GetDocumentAnalysisDataAsync
(
userDiagnosticDriver
,
stateSet
,
versions
).
ConfigureAwait
(
false
);
if
(
data
.
FromCache
)
if
(
data
.
FromCache
)
{
{
RaiseDiagnostics
Updated
(
StateType
.
Document
,
document
.
Id
,
stateSet
,
new
SolutionArgument
(
document
),
data
.
Items
,
DiagnosticsUpdatedKind
.
DiagnosticsCreated
);
RaiseDiagnostics
Created
(
StateType
.
Document
,
document
.
Id
,
stateSet
,
new
SolutionArgument
(
document
),
data
.
Items
);
continue
;
continue
;
}
}
...
@@ -434,8 +434,7 @@ public override void RemoveDocument(DocumentId documentId)
...
@@ -434,8 +434,7 @@ public override void RemoveDocument(DocumentId documentId)
var
solutionArgs
=
new
SolutionArgument
(
null
,
documentId
.
ProjectId
,
documentId
);
var
solutionArgs
=
new
SolutionArgument
(
null
,
documentId
.
ProjectId
,
documentId
);
for
(
var
stateType
=
0
;
stateType
<
s_stateTypeCount
;
stateType
++)
for
(
var
stateType
=
0
;
stateType
<
s_stateTypeCount
;
stateType
++)
{
{
RaiseDiagnosticsUpdated
((
StateType
)
stateType
,
documentId
,
stateSet
,
solutionArgs
,
ImmutableArray
<
DiagnosticData
>.
Empty
,
RaiseDiagnosticsRemoved
((
StateType
)
stateType
,
documentId
,
stateSet
,
solutionArgs
);
DiagnosticsUpdatedKind
.
DiagnosticsRemoved
);
}
}
}
}
}
}
...
@@ -450,8 +449,7 @@ public override void RemoveProject(ProjectId projectId)
...
@@ -450,8 +449,7 @@ public override void RemoveProject(ProjectId projectId)
stateSet
.
Remove
(
projectId
);
stateSet
.
Remove
(
projectId
);
var
solutionArgs
=
new
SolutionArgument
(
null
,
projectId
,
null
);
var
solutionArgs
=
new
SolutionArgument
(
null
,
projectId
,
null
);
RaiseDiagnosticsUpdated
(
StateType
.
Project
,
projectId
,
stateSet
,
solutionArgs
,
ImmutableArray
<
DiagnosticData
>.
Empty
,
RaiseDiagnosticsRemoved
(
StateType
.
Project
,
projectId
,
stateSet
,
solutionArgs
);
DiagnosticsUpdatedKind
.
DiagnosticsRemoved
);
}
}
}
}
...
@@ -603,8 +601,7 @@ private static bool CheckSemanticVersions(Project project, AnalysisData existing
...
@@ -603,8 +601,7 @@ private static bool CheckSemanticVersions(Project project, AnalysisData existing
return
;
return
;
}
}
RaiseDiagnosticsUpdated
(
type
,
document
.
Id
,
stateSet
,
new
SolutionArgument
(
document
),
newItems
,
RaiseDiagnosticsCreated
(
type
,
document
.
Id
,
stateSet
,
new
SolutionArgument
(
document
),
newItems
);
DiagnosticsUpdatedKind
.
DiagnosticsCreated
);
}
}
private
void
RaiseProjectDiagnosticsUpdatedIfNeeded
(
private
void
RaiseProjectDiagnosticsUpdatedIfNeeded
(
...
@@ -633,15 +630,13 @@ private static bool CheckSemanticVersions(Project project, AnalysisData existing
...
@@ -633,15 +630,13 @@ private static bool CheckSemanticVersions(Project project, AnalysisData existing
{
{
if
(
documentId
==
null
)
if
(
documentId
==
null
)
{
{
RaiseDiagnosticsUpdated
(
StateType
.
Project
,
project
.
Id
,
stateSet
,
new
SolutionArgument
(
project
),
ImmutableArray
<
DiagnosticData
>.
Empty
,
RaiseDiagnosticsRemoved
(
StateType
.
Project
,
project
.
Id
,
stateSet
,
new
SolutionArgument
(
project
));
DiagnosticsUpdatedKind
.
DiagnosticsRemoved
);
continue
;
continue
;
}
}
var
document
=
project
.
GetDocument
(
documentId
);
var
document
=
project
.
GetDocument
(
documentId
);
var
argument
=
documentId
==
null
?
new
SolutionArgument
(
null
,
documentId
.
ProjectId
,
documentId
)
:
new
SolutionArgument
(
document
);
var
argument
=
documentId
==
null
?
new
SolutionArgument
(
null
,
documentId
.
ProjectId
,
documentId
)
:
new
SolutionArgument
(
document
);
RaiseDiagnosticsUpdated
(
StateType
.
Project
,
documentId
,
stateSet
,
argument
,
ImmutableArray
<
DiagnosticData
>.
Empty
,
RaiseDiagnosticsRemoved
(
StateType
.
Project
,
documentId
,
stateSet
,
argument
);
DiagnosticsUpdatedKind
.
DiagnosticsRemoved
);
}
}
}
}
...
@@ -652,13 +647,11 @@ private void RaiseProjectDiagnosticsUpdated(Project project, StateSet stateSet,
...
@@ -652,13 +647,11 @@ private void RaiseProjectDiagnosticsUpdated(Project project, StateSet stateSet,
{
{
if
(
kv
.
Key
==
null
)
if
(
kv
.
Key
==
null
)
{
{
RaiseDiagnosticsUpdated
(
StateType
.
Project
,
project
.
Id
,
stateSet
,
new
SolutionArgument
(
project
),
kv
.
ToImmutableArrayOrEmpty
(),
RaiseDiagnosticsCreated
(
StateType
.
Project
,
project
.
Id
,
stateSet
,
new
SolutionArgument
(
project
),
kv
.
ToImmutableArrayOrEmpty
());
DiagnosticsUpdatedKind
.
DiagnosticsCreated
);
continue
;
continue
;
}
}
RaiseDiagnosticsUpdated
(
StateType
.
Project
,
kv
.
Key
,
stateSet
,
new
SolutionArgument
(
project
.
GetDocument
(
kv
.
Key
)),
kv
.
ToImmutableArrayOrEmpty
(),
RaiseDiagnosticsCreated
(
StateType
.
Project
,
kv
.
Key
,
stateSet
,
new
SolutionArgument
(
project
.
GetDocument
(
kv
.
Key
)),
kv
.
ToImmutableArrayOrEmpty
());
DiagnosticsUpdatedKind
.
DiagnosticsCreated
);
}
}
}
}
...
@@ -667,9 +660,8 @@ private static ImmutableArray<DiagnosticData> GetDiagnosticData(ILookup<Document
...
@@ -667,9 +660,8 @@ private static ImmutableArray<DiagnosticData> GetDiagnosticData(ILookup<Document
return
lookup
.
Contains
(
documentId
)
?
lookup
[
documentId
].
ToImmutableArrayOrEmpty
()
:
ImmutableArray
<
DiagnosticData
>.
Empty
;
return
lookup
.
Contains
(
documentId
)
?
lookup
[
documentId
].
ToImmutableArrayOrEmpty
()
:
ImmutableArray
<
DiagnosticData
>.
Empty
;
}
}
private
void
RaiseDiagnosticsUpdated
(
private
void
RaiseDiagnosticsCreated
(
StateType
type
,
object
key
,
StateSet
stateSet
,
SolutionArgument
solution
,
ImmutableArray
<
DiagnosticData
>
diagnostics
,
StateType
type
,
object
key
,
StateSet
stateSet
,
SolutionArgument
solution
,
ImmutableArray
<
DiagnosticData
>
diagnostics
)
DiagnosticsUpdatedKind
kind
)
{
{
if
(
Owner
==
null
)
if
(
Owner
==
null
)
{
{
...
@@ -677,11 +669,32 @@ private static ImmutableArray<DiagnosticData> GetDiagnosticData(ILookup<Document
...
@@ -677,11 +669,32 @@ private static ImmutableArray<DiagnosticData> GetDiagnosticData(ILookup<Document
}
}
// get right arg id for the given analyzer
// get right arg id for the given analyzer
var
id
=
stateSet
.
ErrorSourceName
!=
null
?
var
id
=
CreateArgumentKey
(
type
,
key
,
stateSet
);
new
HostAnalyzerKey
(
stateSet
.
Analyzer
,
type
,
key
,
stateSet
.
ErrorSourceName
)
:
(
object
)
new
ArgumentKey
(
stateSet
.
Analyzer
,
type
,
key
);
Owner
.
RaiseDiagnosticsUpdated
(
this
,
Owner
.
RaiseDiagnosticsUpdated
(
this
,
new
DiagnosticsUpdatedArgs
(
id
,
Workspace
,
solution
.
Solution
,
solution
.
ProjectId
,
solution
.
DocumentId
,
diagnostics
,
kind
));
DiagnosticsUpdatedArgs
.
DiagnosticsCreated
(
id
,
Workspace
,
solution
.
Solution
,
solution
.
ProjectId
,
solution
.
DocumentId
,
diagnostics
));
}
private
static
ArgumentKey
CreateArgumentKey
(
StateType
type
,
object
key
,
StateSet
stateSet
)
{
return
stateSet
.
ErrorSourceName
!=
null
?
new
HostAnalyzerKey
(
stateSet
.
Analyzer
,
type
,
key
,
stateSet
.
ErrorSourceName
)
:
new
ArgumentKey
(
stateSet
.
Analyzer
,
type
,
key
);
}
private
void
RaiseDiagnosticsRemoved
(
StateType
type
,
object
key
,
StateSet
stateSet
,
SolutionArgument
solution
)
{
if
(
Owner
==
null
)
{
return
;
}
// get right arg id for the given analyzer
var
id
=
CreateArgumentKey
(
type
,
key
,
stateSet
);
Owner
.
RaiseDiagnosticsUpdated
(
this
,
DiagnosticsUpdatedArgs
.
DiagnosticsRemoved
(
id
,
Workspace
,
solution
.
Solution
,
solution
.
ProjectId
,
solution
.
DocumentId
));
}
}
private
ImmutableArray
<
DiagnosticData
>
UpdateDocumentDiagnostics
(
private
ImmutableArray
<
DiagnosticData
>
UpdateDocumentDiagnostics
(
...
@@ -928,8 +941,7 @@ private void ClearDocumentState(Document document, StateSet stateSet, StateType
...
@@ -928,8 +941,7 @@ private void ClearDocumentState(Document document, StateSet stateSet, StateType
var
documentId
=
document
.
Id
;
var
documentId
=
document
.
Id
;
var
solutionArgs
=
new
SolutionArgument
(
document
);
var
solutionArgs
=
new
SolutionArgument
(
document
);
RaiseDiagnosticsUpdated
(
type
,
document
.
Id
,
stateSet
,
solutionArgs
,
ImmutableArray
<
DiagnosticData
>.
Empty
,
RaiseDiagnosticsRemoved
(
type
,
document
.
Id
,
stateSet
,
solutionArgs
);
DiagnosticsUpdatedKind
.
DiagnosticsRemoved
);
}
}
}
}
...
@@ -956,8 +968,7 @@ private void ClearProjectState(Project project, StateSet stateSet)
...
@@ -956,8 +968,7 @@ private void ClearProjectState(Project project, StateSet stateSet)
// raise diagnostic updated event
// raise diagnostic updated event
var
solutionArgs
=
new
SolutionArgument
(
project
);
var
solutionArgs
=
new
SolutionArgument
(
project
);
RaiseDiagnosticsUpdated
(
StateType
.
Project
,
project
.
Id
,
stateSet
,
solutionArgs
,
ImmutableArray
<
DiagnosticData
>.
Empty
,
RaiseDiagnosticsRemoved
(
StateType
.
Project
,
project
.
Id
,
stateSet
,
solutionArgs
);
DiagnosticsUpdatedKind
.
DiagnosticsRemoved
);
}
}
private
async
Task
ClearExistingDiagnostics
(
Document
document
,
StateSet
stateSet
,
StateType
type
,
CancellationToken
cancellationToken
)
private
async
Task
ClearExistingDiagnostics
(
Document
document
,
StateSet
stateSet
,
StateType
type
,
CancellationToken
cancellationToken
)
...
...
src/Features/Core/Portable/Diagnostics/EngineV1/DiagnosticIncrementalAnalyzer_BuildSynchronization.cs
浏览文件 @
1a881baa
...
@@ -39,8 +39,7 @@ public override async Task SynchronizeWithBuildAsync(Project project, ImmutableA
...
@@ -39,8 +39,7 @@ public override async Task SynchronizeWithBuildAsync(Project project, ImmutableA
var
mergedDiagnostics
=
MergeDiagnostics
(
liveDiagnostics
,
GetExistingDiagnostics
(
existingDiagnostics
));
var
mergedDiagnostics
=
MergeDiagnostics
(
liveDiagnostics
,
GetExistingDiagnostics
(
existingDiagnostics
));
await
state
.
PersistAsync
(
project
,
new
AnalysisData
(
projectTextVersion
,
semanticVersion
,
mergedDiagnostics
),
CancellationToken
.
None
).
ConfigureAwait
(
false
);
await
state
.
PersistAsync
(
project
,
new
AnalysisData
(
projectTextVersion
,
semanticVersion
,
mergedDiagnostics
),
CancellationToken
.
None
).
ConfigureAwait
(
false
);
RaiseDiagnosticsUpdated
(
StateType
.
Project
,
project
.
Id
,
stateSet
,
new
SolutionArgument
(
project
),
mergedDiagnostics
,
RaiseDiagnosticsCreated
(
StateType
.
Project
,
project
.
Id
,
stateSet
,
new
SolutionArgument
(
project
),
mergedDiagnostics
);
DiagnosticsUpdatedKind
.
DiagnosticsCreated
);
}
}
}
}
}
}
...
@@ -106,8 +105,7 @@ private bool PreferLiveErrorsOnOpenedFiles(Workspace workspace)
...
@@ -106,8 +105,7 @@ private bool PreferLiveErrorsOnOpenedFiles(Workspace workspace)
var
mergedDiagnostics
=
MergeDiagnostics
(
diagnostics
,
GetExistingDiagnostics
(
existingDiagnostics
));
var
mergedDiagnostics
=
MergeDiagnostics
(
diagnostics
,
GetExistingDiagnostics
(
existingDiagnostics
));
await
state
.
PersistAsync
(
document
,
new
AnalysisData
(
textVersion
,
semanticVersion
,
mergedDiagnostics
),
CancellationToken
.
None
).
ConfigureAwait
(
false
);
await
state
.
PersistAsync
(
document
,
new
AnalysisData
(
textVersion
,
semanticVersion
,
mergedDiagnostics
),
CancellationToken
.
None
).
ConfigureAwait
(
false
);
RaiseDiagnosticsUpdated
(
stateType
,
document
.
Id
,
stateSet
,
new
SolutionArgument
(
document
),
mergedDiagnostics
,
RaiseDiagnosticsCreated
(
stateType
,
document
.
Id
,
stateSet
,
new
SolutionArgument
(
document
),
mergedDiagnostics
);
DiagnosticsUpdatedKind
.
DiagnosticsCreated
);
}
}
private
static
ImmutableArray
<
DiagnosticData
>
GetExistingDiagnostics
(
AnalysisData
analysisData
)
private
static
ImmutableArray
<
DiagnosticData
>
GetExistingDiagnostics
(
AnalysisData
analysisData
)
...
...
src/Features/Core/Portable/Diagnostics/EngineV2/DiagnosticIncrementalAnalyzer.cs
浏览文件 @
1a881baa
...
@@ -61,18 +61,14 @@ public override Task NewSolutionSnapshotAsync(Solution solution, CancellationTok
...
@@ -61,18 +61,14 @@ public override Task NewSolutionSnapshotAsync(Solution solution, CancellationTok
public
override
void
RemoveDocument
(
DocumentId
documentId
)
public
override
void
RemoveDocument
(
DocumentId
documentId
)
{
{
Owner
.
RaiseDiagnosticsUpdated
(
Owner
.
RaiseDiagnosticsUpdated
(
this
,
DiagnosticsUpdatedArgs
.
DiagnosticsRemoved
(
this
,
new
DiagnosticsUpdatedArgs
(
ValueTuple
.
Create
(
this
,
documentId
),
Workspace
,
null
,
null
,
null
));
ValueTuple
.
Create
(
this
,
documentId
),
Workspace
,
null
,
null
,
null
,
ImmutableArray
<
DiagnosticData
>.
Empty
,
DiagnosticsUpdatedKind
.
DiagnosticsRemoved
));
}
}
public
override
void
RemoveProject
(
ProjectId
projectId
)
public
override
void
RemoveProject
(
ProjectId
projectId
)
{
{
Owner
.
RaiseDiagnosticsUpdated
(
Owner
.
RaiseDiagnosticsUpdated
(
this
,
DiagnosticsUpdatedArgs
.
DiagnosticsRemoved
(
this
,
new
DiagnosticsUpdatedArgs
(
ValueTuple
.
Create
(
this
,
projectId
),
Workspace
,
null
,
null
,
null
));
ValueTuple
.
Create
(
this
,
projectId
),
Workspace
,
null
,
null
,
null
,
ImmutableArray
<
DiagnosticData
>.
Empty
,
DiagnosticsUpdatedKind
.
DiagnosticsRemoved
));
}
}
#
endregion
#
endregion
...
@@ -218,16 +214,14 @@ private void RaiseEvents(Project project, ImmutableArray<DiagnosticData> diagnos
...
@@ -218,16 +214,14 @@ private void RaiseEvents(Project project, ImmutableArray<DiagnosticData> diagnos
if
(
kv
.
Key
==
null
)
if
(
kv
.
Key
==
null
)
{
{
Owner
.
RaiseDiagnosticsUpdated
(
Owner
.
RaiseDiagnosticsUpdated
(
this
,
new
DiagnosticsUpdatedArgs
(
this
,
DiagnosticsUpdatedArgs
.
DiagnosticsCreated
(
ValueTuple
.
Create
(
this
,
project
.
Id
),
workspace
,
solution
,
project
.
Id
,
null
,
kv
.
ToImmutableArrayOrEmpty
(),
ValueTuple
.
Create
(
this
,
project
.
Id
),
workspace
,
solution
,
project
.
Id
,
null
,
kv
.
ToImmutableArrayOrEmpty
()));
kind
:
DiagnosticsUpdatedKind
.
DiagnosticsCreated
));
continue
;
continue
;
}
}
Owner
.
RaiseDiagnosticsUpdated
(
Owner
.
RaiseDiagnosticsUpdated
(
this
,
new
DiagnosticsUpdatedArgs
(
this
,
DiagnosticsUpdatedArgs
.
DiagnosticsCreated
(
ValueTuple
.
Create
(
this
,
kv
.
Key
),
workspace
,
solution
,
project
.
Id
,
kv
.
Key
,
kv
.
ToImmutableArrayOrEmpty
(),
ValueTuple
.
Create
(
this
,
kv
.
Key
),
workspace
,
solution
,
project
.
Id
,
kv
.
Key
,
kv
.
ToImmutableArrayOrEmpty
()));
kind
:
DiagnosticsUpdatedKind
.
DiagnosticsCreated
));
}
}
}
}
}
}
...
...
src/Features/Core/Portable/Diagnostics/HostAnalyzerManager.cs
浏览文件 @
1a881baa
...
@@ -530,14 +530,13 @@ public void OnAnalyzerLoadFailed(object sender, AnalyzerLoadFailureEventArgs e)
...
@@ -530,14 +530,13 @@ public void OnAnalyzerLoadFailed(object sender, AnalyzerLoadFailureEventArgs e)
var
diagnostic
=
AnalyzerHelper
.
CreateAnalyzerLoadFailureDiagnostic
(
reference
.
FullPath
,
e
);
var
diagnostic
=
AnalyzerHelper
.
CreateAnalyzerLoadFailureDiagnostic
(
reference
.
FullPath
,
e
);
// diagnostic from host analyzer can never go away
// diagnostic from host analyzer can never go away
var
args
=
new
DiagnosticsUpdatedArgs
(
var
args
=
DiagnosticsUpdatedArgs
.
DiagnosticsCreated
(
id
:
Tuple
.
Create
(
this
,
reference
.
FullPath
,
e
.
ErrorCode
,
e
.
TypeName
),
id
:
Tuple
.
Create
(
this
,
reference
.
FullPath
,
e
.
ErrorCode
,
e
.
TypeName
),
workspace
:
PrimaryWorkspace
.
Workspace
,
workspace
:
PrimaryWorkspace
.
Workspace
,
solution
:
null
,
solution
:
null
,
projectId
:
null
,
projectId
:
null
,
documentId
:
null
,
documentId
:
null
,
diagnostics
:
ImmutableArray
.
Create
<
DiagnosticData
>(
diagnostic
),
diagnostics
:
ImmutableArray
.
Create
<
DiagnosticData
>(
diagnostic
));
kind
:
DiagnosticsUpdatedKind
.
DiagnosticsCreated
);
_hostUpdateSource
.
RaiseDiagnosticsUpdated
(
args
);
_hostUpdateSource
.
RaiseDiagnosticsUpdated
(
args
);
}
}
...
...
src/VisualStudio/Core/Def/Implementation/Diagnostics/MiscellaneousDiagnosticAnalyzerService.cs
浏览文件 @
1a881baa
...
@@ -92,9 +92,8 @@ public async Task AnalyzeSyntaxAsync(Document document, CancellationToken cancel
...
@@ -92,9 +92,8 @@ public async Task AnalyzeSyntaxAsync(Document document, CancellationToken cancel
var
diagnosticData
=
diagnostics
==
null
?
ImmutableArray
<
DiagnosticData
>.
Empty
:
diagnostics
.
Select
(
d
=>
DiagnosticData
.
Create
(
document
,
d
)).
ToImmutableArrayOrEmpty
();
var
diagnosticData
=
diagnostics
==
null
?
ImmutableArray
<
DiagnosticData
>.
Empty
:
diagnostics
.
Select
(
d
=>
DiagnosticData
.
Create
(
document
,
d
)).
ToImmutableArrayOrEmpty
();
_service
.
RaiseDiagnosticsUpdated
(
_service
.
RaiseDiagnosticsUpdated
(
new
DiagnosticsUpdatedArgs
(
new
MiscUpdateArgsId
(
document
.
Id
),
DiagnosticsUpdatedArgs
.
DiagnosticsCreated
(
new
MiscUpdateArgsId
(
document
.
Id
),
_workspace
,
document
.
Project
.
Solution
,
document
.
Project
.
Id
,
document
.
Id
,
diagnosticData
,
_workspace
,
document
.
Project
.
Solution
,
document
.
Project
.
Id
,
document
.
Id
,
diagnosticData
));
DiagnosticsUpdatedKind
.
DiagnosticsCreated
));
}
}
public
void
RemoveDocument
(
DocumentId
documentId
)
public
void
RemoveDocument
(
DocumentId
documentId
)
...
@@ -121,8 +120,8 @@ public Task DocumentCloseAsync(Document document, CancellationToken cancellation
...
@@ -121,8 +120,8 @@ public Task DocumentCloseAsync(Document document, CancellationToken cancellation
private
void
RaiseEmptyDiagnosticUpdated
(
DocumentId
documentId
)
private
void
RaiseEmptyDiagnosticUpdated
(
DocumentId
documentId
)
{
{
_service
.
RaiseDiagnosticsUpdated
(
new
DiagnosticsUpdatedArgs
(
ValueTuple
.
Create
(
this
,
documentId
),
_workspace
,
null
,
documentId
.
ProjectId
,
documentId
,
ImmutableArray
<
DiagnosticData
>.
Empty
,
_service
.
RaiseDiagnosticsUpdated
(
DiagnosticsUpdatedArgs
.
DiagnosticsRemoved
(
DiagnosticsUpdatedKind
.
DiagnosticsRemove
d
));
ValueTuple
.
Create
(
this
,
documentId
),
_workspace
,
null
,
documentId
.
ProjectId
,
documentI
d
));
}
}
// method we don't care. misc project only supports syntax errors
// method we don't care. misc project only supports syntax errors
...
...
src/VisualStudio/Core/Def/Implementation/TaskList/ExternalErrorDiagnosticUpdateSource.cs
浏览文件 @
1a881baa
...
@@ -282,13 +282,13 @@ private void ReportBuildErrors<T>(T item, ImmutableArray<DiagnosticData> buildEr
...
@@ -282,13 +282,13 @@ private void ReportBuildErrors<T>(T item, ImmutableArray<DiagnosticData> buildEr
var
project
=
item
as
Project
;
var
project
=
item
as
Project
;
if
(
project
!=
null
)
if
(
project
!=
null
)
{
{
RaiseDiagnostics
Updated
(
project
.
Id
,
project
.
Id
,
null
,
buildErrors
,
DiagnosticsUpdatedKind
.
DiagnosticsCreated
);
RaiseDiagnostics
Created
(
project
.
Id
,
project
.
Id
,
null
,
buildErrors
);
return
;
return
;
}
}
// must be not null
// must be not null
var
document
=
item
as
Document
;
var
document
=
item
as
Document
;
RaiseDiagnostics
Updated
(
document
.
Id
,
document
.
Project
.
Id
,
document
.
Id
,
buildErrors
,
DiagnosticsUpdatedKind
.
DiagnosticsCreated
);
RaiseDiagnostics
Created
(
document
.
Id
,
document
.
Project
.
Id
,
document
.
Id
,
buildErrors
);
}
}
private
Dictionary
<
ProjectId
,
HashSet
<
string
>>
GetSupportedLiveDiagnosticId
(
Solution
solution
,
InprogressState
state
)
private
Dictionary
<
ProjectId
,
HashSet
<
string
>>
GetSupportedLiveDiagnosticId
(
Solution
solution
,
InprogressState
state
)
...
@@ -308,7 +308,7 @@ private void ReportBuildErrors<T>(T item, ImmutableArray<DiagnosticData> buildEr
...
@@ -308,7 +308,7 @@ private void ReportBuildErrors<T>(T item, ImmutableArray<DiagnosticData> buildEr
private
void
ClearProjectErrors
(
ProjectId
projectId
,
Solution
solution
=
null
)
private
void
ClearProjectErrors
(
ProjectId
projectId
,
Solution
solution
=
null
)
{
{
// remove all project errors
// remove all project errors
RaiseDiagnostics
Updated
(
projectId
,
projectId
,
null
,
ImmutableArray
<
DiagnosticData
>.
Empty
,
DiagnosticsUpdatedKind
.
DiagnosticsRemoved
);
RaiseDiagnostics
Removed
(
projectId
,
projectId
,
documentId
:
null
);
var
project
=
(
solution
??
_workspace
.
CurrentSolution
).
GetProject
(
projectId
);
var
project
=
(
solution
??
_workspace
.
CurrentSolution
).
GetProject
(
projectId
);
if
(
project
==
null
)
if
(
project
==
null
)
...
@@ -325,7 +325,7 @@ private void ClearProjectErrors(ProjectId projectId, Solution solution = null)
...
@@ -325,7 +325,7 @@ private void ClearProjectErrors(ProjectId projectId, Solution solution = null)
private
void
ClearDocumentErrors
(
ProjectId
projectId
,
DocumentId
documentId
)
private
void
ClearDocumentErrors
(
ProjectId
projectId
,
DocumentId
documentId
)
{
{
RaiseDiagnostics
Updated
(
documentId
,
projectId
,
documentId
,
ImmutableArray
<
DiagnosticData
>.
Empty
,
DiagnosticsUpdatedKind
.
DiagnosticsRemove
d
);
RaiseDiagnostics
Removed
(
documentId
,
projectId
,
documentI
d
);
}
}
public
void
AddNewErrors
(
DocumentId
documentId
,
DiagnosticData
diagnostic
)
public
void
AddNewErrors
(
DocumentId
documentId
,
DiagnosticData
diagnostic
)
...
@@ -363,13 +363,20 @@ private InprogressState GetOrCreateInprogressState()
...
@@ -363,13 +363,20 @@ private InprogressState GetOrCreateInprogressState()
return
_state
;
return
_state
;
}
}
private
void
RaiseDiagnosticsUpdated
(
object
id
,
ProjectId
projectId
,
DocumentId
documentId
,
ImmutableArray
<
DiagnosticData
>
items
,
private
void
RaiseDiagnosticsCreated
(
object
id
,
ProjectId
projectId
,
DocumentId
documentId
,
ImmutableArray
<
DiagnosticData
>
items
)
DiagnosticsUpdatedKind
kind
)
{
{
DiagnosticsUpdated
?.
Invoke
(
this
,
new
DiagnosticsUpdatedArgs
(
DiagnosticsUpdated
?.
Invoke
(
this
,
DiagnosticsUpdatedArgs
.
DiagnosticsCreated
(
new
ArgumentKey
(
id
),
_workspace
,
_workspace
.
CurrentSolution
,
projectId
,
documentId
,
items
,
kind
));
CreateArgumentKey
(
id
),
_workspace
,
_workspace
.
CurrentSolution
,
projectId
,
documentId
,
items
));
}
}
private
void
RaiseDiagnosticsRemoved
(
object
id
,
ProjectId
projectId
,
DocumentId
documentId
)
{
DiagnosticsUpdated
?.
Invoke
(
this
,
DiagnosticsUpdatedArgs
.
DiagnosticsRemoved
(
CreateArgumentKey
(
id
),
_workspace
,
_workspace
.
CurrentSolution
,
projectId
,
documentId
));
}
private
static
ArgumentKey
CreateArgumentKey
(
object
id
)
=>
new
ArgumentKey
(
id
);
private
void
RaiseBuildStarted
(
bool
started
)
private
void
RaiseBuildStarted
(
bool
started
)
{
{
BuildStarted
?.
Invoke
(
this
,
started
);
BuildStarted
?.
Invoke
(
this
,
started
);
...
...
src/VisualStudio/Core/Def/Implementation/TaskList/HostDiagnosticUpdateSource.cs
浏览文件 @
1a881baa
...
@@ -37,21 +37,33 @@ internal override Workspace Workspace
...
@@ -37,21 +37,33 @@ internal override Workspace Workspace
}
}
}
}
private
void
RaiseDiagnosticsUpdatedForProject
(
ProjectId
projectId
,
object
key
,
IEnumerable
<
DiagnosticData
>
items
,
private
void
RaiseDiagnosticsCreatedForProject
(
ProjectId
projectId
,
object
key
,
IEnumerable
<
DiagnosticData
>
items
)
DiagnosticsUpdatedKind
kind
)
{
{
var
args
=
new
DiagnosticsUpdatedArgs
(
var
args
=
DiagnosticsUpdatedArgs
.
DiagnosticsCreated
(
id
:
Tuple
.
Create
(
this
,
projectId
,
key
),
CreateId
(
projectId
,
key
),
workspace
:
_workspace
,
_workspace
,
solution
:
null
,
solution
:
null
,
projectId
:
projectId
,
projectId
:
projectId
,
documentId
:
null
,
documentId
:
null
,
diagnostics
:
items
.
AsImmutableOrEmpty
(),
diagnostics
:
items
.
AsImmutableOrEmpty
());
kind
:
kind
);
RaiseDiagnosticsUpdated
(
args
);
RaiseDiagnosticsUpdated
(
args
);
}
}
private
void
RaiseDiagnosticsRemovedForProject
(
ProjectId
projectId
,
object
key
)
{
var
args
=
DiagnosticsUpdatedArgs
.
DiagnosticsRemoved
(
CreateId
(
projectId
,
key
),
_workspace
,
solution
:
null
,
projectId
:
projectId
,
documentId
:
null
);
RaiseDiagnosticsUpdated
(
args
);
}
private
object
CreateId
(
ProjectId
projectId
,
object
key
)
=>
Tuple
.
Create
(
this
,
projectId
,
key
);
public
void
UpdateDiagnosticsForProject
(
ProjectId
projectId
,
object
key
,
IEnumerable
<
DiagnosticData
>
items
)
public
void
UpdateDiagnosticsForProject
(
ProjectId
projectId
,
object
key
,
IEnumerable
<
DiagnosticData
>
items
)
{
{
Contract
.
ThrowIfNull
(
projectId
);
Contract
.
ThrowIfNull
(
projectId
);
...
@@ -63,7 +75,7 @@ public void UpdateDiagnosticsForProject(ProjectId projectId, object key, IEnumer
...
@@ -63,7 +75,7 @@ public void UpdateDiagnosticsForProject(ProjectId projectId, object key, IEnumer
_diagnosticMap
.
GetOrAdd
(
projectId
,
id
=>
new
HashSet
<
object
>()).
Add
(
key
);
_diagnosticMap
.
GetOrAdd
(
projectId
,
id
=>
new
HashSet
<
object
>()).
Add
(
key
);
}
}
RaiseDiagnostics
UpdatedForProject
(
projectId
,
key
,
items
,
DiagnosticsUpdatedKind
.
DiagnosticsCreated
);
RaiseDiagnostics
CreatedForProject
(
projectId
,
key
,
items
);
}
}
public
void
ClearAllDiagnosticsForProject
(
ProjectId
projectId
)
public
void
ClearAllDiagnosticsForProject
(
ProjectId
projectId
)
...
@@ -83,8 +95,7 @@ public void ClearAllDiagnosticsForProject(ProjectId projectId)
...
@@ -83,8 +95,7 @@ public void ClearAllDiagnosticsForProject(ProjectId projectId)
{
{
foreach
(
var
key
in
projectDiagnosticKeys
)
foreach
(
var
key
in
projectDiagnosticKeys
)
{
{
RaiseDiagnosticsUpdatedForProject
(
projectId
,
key
,
SpecializedCollections
.
EmptyEnumerable
<
DiagnosticData
>(),
RaiseDiagnosticsRemovedForProject
(
projectId
,
key
);
DiagnosticsUpdatedKind
.
DiagnosticsRemoved
);
}
}
}
}
}
}
...
@@ -106,8 +117,7 @@ public void ClearDiagnosticsForProject(ProjectId projectId, object key)
...
@@ -106,8 +117,7 @@ public void ClearDiagnosticsForProject(ProjectId projectId, object key)
if
(
raiseEvent
)
if
(
raiseEvent
)
{
{
RaiseDiagnosticsUpdatedForProject
(
projectId
,
key
,
SpecializedCollections
.
EmptyEnumerable
<
DiagnosticData
>(),
RaiseDiagnosticsRemovedForProject
(
projectId
,
key
);
DiagnosticsUpdatedKind
.
DiagnosticsRemoved
);
}
}
}
}
}
}
...
...
src/VisualStudio/Core/Test/Diagnostics/DiagnosticTableDataSourceTests.vb
浏览文件 @
1a881baa
...
@@ -737,33 +737,29 @@ Namespace Microsoft.VisualStudio.LanguageServices.UnitTests.Diagnostics
...
@@ -737,33 +737,29 @@ Namespace Microsoft.VisualStudio.LanguageServices.UnitTests.Diagnostics
Dim
item
=
items
(
0
)
Dim
item
=
items
(
0
)
Dim
id
=
If
(
CObj
(
item
.
DocumentId
),
item
.
ProjectId
)
Dim
id
=
If
(
CObj
(
item
.
DocumentId
),
item
.
ProjectId
)
RaiseEvent
DiagnosticsUpdated
(
Me
,
New
DiagnosticsUpdatedArgs
(
RaiseEvent
DiagnosticsUpdated
(
Me
,
DiagnosticsUpdatedArgs
.
DiagnosticsCreated
(
New
ErrorId
(
Me
,
id
),
workspace
,
workspace
.
CurrentSolution
,
item
.
ProjectId
,
item
.
DocumentId
,
items
.
ToImmutableArray
(),
New
ErrorId
(
Me
,
id
),
workspace
,
workspace
.
CurrentSolution
,
item
.
ProjectId
,
item
.
DocumentId
,
items
.
ToImmutableArray
()))
DiagnosticsUpdatedKind
.
DiagnosticsCreated
))
End
Sub
End
Sub
Public
Sub
RaiseDiagnosticsUpdated
(
workspace
As
Workspace
)
Public
Sub
RaiseDiagnosticsUpdated
(
workspace
As
Workspace
)
Dim
documentMap
=
Items
.
Where
(
Function
(
t
)
t
.
DocumentId
IsNot
Nothing
).
Where
(
Function
(
t
)
t
.
Workspace
Is
workspace
).
ToLookup
(
Function
(
t
)
t
.
DocumentId
)
Dim
documentMap
=
Items
.
Where
(
Function
(
t
)
t
.
DocumentId
IsNot
Nothing
).
Where
(
Function
(
t
)
t
.
Workspace
Is
workspace
).
ToLookup
(
Function
(
t
)
t
.
DocumentId
)
For
Each
group
In
documentMap
For
Each
group
In
documentMap
RaiseEvent
DiagnosticsUpdated
(
Me
,
New
DiagnosticsUpdatedArgs
(
RaiseEvent
DiagnosticsUpdated
(
Me
,
DiagnosticsUpdatedArgs
.
DiagnosticsCreated
(
New
ErrorId
(
Me
,
group
.
Key
),
workspace
,
workspace
.
CurrentSolution
,
group
.
Key
.
ProjectId
,
group
.
Key
,
group
.
ToImmutableArrayOrEmpty
(),
New
ErrorId
(
Me
,
group
.
Key
),
workspace
,
workspace
.
CurrentSolution
,
group
.
Key
.
ProjectId
,
group
.
Key
,
group
.
ToImmutableArrayOrEmpty
()))
DiagnosticsUpdatedKind
.
DiagnosticsCreated
))
Next
Next
Dim
projectMap
=
Items
.
Where
(
Function
(
t
)
t
.
DocumentId
Is
Nothing
).
Where
(
Function
(
t
)
t
.
Workspace
Is
workspace
).
ToLookup
(
Function
(
t
)
t
.
ProjectId
)
Dim
projectMap
=
Items
.
Where
(
Function
(
t
)
t
.
DocumentId
Is
Nothing
).
Where
(
Function
(
t
)
t
.
Workspace
Is
workspace
).
ToLookup
(
Function
(
t
)
t
.
ProjectId
)
For
Each
group
In
projectMap
For
Each
group
In
projectMap
RaiseEvent
DiagnosticsUpdated
(
Me
,
New
DiagnosticsUpdatedArgs
(
RaiseEvent
DiagnosticsUpdated
(
Me
,
DiagnosticsUpdatedArgs
.
DiagnosticsCreated
(
New
ErrorId
(
Me
,
group
.
Key
),
workspace
,
workspace
.
CurrentSolution
,
group
.
Key
,
Nothing
,
group
.
ToImmutableArrayOrEmpty
(),
New
ErrorId
(
Me
,
group
.
Key
),
workspace
,
workspace
.
CurrentSolution
,
group
.
Key
,
Nothing
,
group
.
ToImmutableArrayOrEmpty
()))
DiagnosticsUpdatedKind
.
DiagnosticsCreated
))
Next
Next
End
Sub
End
Sub
Public
Sub
RaiseClearDiagnosticsUpdated
(
workspace
As
Workspace
,
projectId
As
ProjectId
,
documentId
As
DocumentId
)
Public
Sub
RaiseClearDiagnosticsUpdated
(
workspace
As
Workspace
,
projectId
As
ProjectId
,
documentId
As
DocumentId
)
RaiseEvent
DiagnosticsUpdated
(
Me
,
New
DiagnosticsUpdatedArgs
(
RaiseEvent
DiagnosticsUpdated
(
Me
,
DiagnosticsUpdatedArgs
.
DiagnosticsRemoved
(
New
ErrorId
(
Me
,
documentId
),
workspace
,
workspace
.
CurrentSolution
,
projectId
,
documentId
,
ImmutableArray
(
Of
DiagnosticData
).
Empty
,
New
ErrorId
(
Me
,
documentId
),
workspace
,
workspace
.
CurrentSolution
,
projectId
,
documentId
))
DiagnosticsUpdatedKind
.
DiagnosticsRemoved
))
End
Sub
End
Sub
Private
Class
ErrorId
Private
Class
ErrorId
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录