Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
lwm1986
roslyn
提交
bb452d27
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,发现更多精彩内容 >>
提交
bb452d27
编写于
8月 16, 2015
作者:
C
CyrusNajmabadi
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #4584 from CyrusNajmabadi/usingTaggers
Place taggers in using blocks in tests.
上级
54a80068
fe894f89
变更
7
隐藏空白更改
内联
并排
Showing
7 changed file
with
94 addition
and
79 deletion
+94
-79
src/EditorFeatures/Core/Tagging/AbstractAsynchronousTaggerProvider.TagSource_ReferenceCounting.cs
...AsynchronousTaggerProvider.TagSource_ReferenceCounting.cs
+4
-2
src/EditorFeatures/Core/Tagging/AbstractAsynchronousTaggerProvider.cs
...atures/Core/Tagging/AbstractAsynchronousTaggerProvider.cs
+13
-3
src/EditorFeatures/Test/Diagnostics/DiagnosticTagSourceTests.cs
...itorFeatures/Test/Diagnostics/DiagnosticTagSourceTests.cs
+22
-20
src/EditorFeatures/Test/Preview/PreviewWorkspaceTests.cs
src/EditorFeatures/Test/Preview/PreviewWorkspaceTests.cs
+27
-26
src/EditorFeatures/Test/Squiggles/AbstractSquiggleProducerTests.cs
...rFeatures/Test/Squiggles/AbstractSquiggleProducerTests.cs
+18
-17
src/Test/Utilities/Portable/TestBase.cs
src/Test/Utilities/Portable/TestBase.cs
+1
-1
src/VisualStudio/Core/Test/Diagnostics/MiscDiagnosticUpdateSourceTests.vb
.../Core/Test/Diagnostics/MiscDiagnosticUpdateSourceTests.vb
+9
-10
未找到文件。
src/EditorFeatures/Core/Tagging/AbstractAsynchronousTaggerProvider.TagSource_ReferenceCounting.cs
浏览文件 @
bb452d27
...
...
@@ -19,9 +19,11 @@ private partial class TagSource
{
#if DEBUG
Contract
.
Fail
(
$@"Should have been disposed!
DataSource-StackTrace:
{
_dataSource
.
StackTrace
}
{
_stackTrace
}
"
);
StackTrace:
{
_stackTrace
}
"
);
#else
Contract
.
Fail
(
$@"Should have been disposed! Try running in Debug to get the allocation callstack"
);
#endif
...
...
src/EditorFeatures/Core/Tagging/AbstractAsynchronousTaggerProvider.cs
浏览文件 @
bb452d27
// 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.Collections.Generic
;
using
System.Linq
;
#if DEBUG
using
System.Diagnostics
;
#endif
using
System.Threading.Tasks
;
using
Microsoft.CodeAnalysis.Editor.Shared.Extensions
;
using
Microsoft.CodeAnalysis.Editor.Shared.Options
;
...
...
@@ -67,12 +69,20 @@ internal abstract partial class AbstractAsynchronousTaggerProvider<TTag> where T
protected
virtual
IEnumerable
<
Option
<
bool
>>
Options
=>
SpecializedCollections
.
EmptyEnumerable
<
Option
<
bool
>>();
protected
virtual
IEnumerable
<
PerLanguageOption
<
bool
>>
PerLanguageOptions
=>
SpecializedCollections
.
EmptyEnumerable
<
PerLanguageOption
<
bool
>>();
#if DEBUG
public
readonly
string
StackTrace
;
#endif
protected
AbstractAsynchronousTaggerProvider
(
IAsynchronousOperationListener
asyncListener
,
IForegroundNotificationService
notificationService
)
{
this
.
_asyncListener
=
asyncListener
;
this
.
_notificationService
=
notificationService
;
_asyncListener
=
asyncListener
;
_notificationService
=
notificationService
;
#if DEBUG
StackTrace
=
new
StackTrace
().
ToString
();
#endif
}
private
TagSource
CreateTagSource
(
ITextView
textViewOpt
,
ITextBuffer
subjectBuffer
)
...
...
src/EditorFeatures/Test/Diagnostics/DiagnosticTagSourceTests.cs
浏览文件 @
bb452d27
...
...
@@ -46,36 +46,38 @@ public void Test_TagSourceDiffer()
workspace
.
Services
.
GetService
<
IOptionService
>(),
diagnosticService
,
workspace
.
GetService
<
IForegroundNotificationService
>(),
listeners
);
var
tagger
=
provider
.
CreateTagger
<
IErrorTag
>(
workspace
.
Documents
.
First
().
GetTextBuffer
());
using
(
var
disposable
=
tagger
as
IDisposable
)
{
var
service
=
workspace
.
Services
.
GetService
<
ISolutionCrawlerRegistrationService
>()
as
SolutionCrawlerRegistrationService
;
var
incrementalAnalyzers
=
ImmutableArray
.
Create
(
analyzerService
.
CreateIncrementalAnalyzer
(
workspace
));
var
service
=
workspace
.
Services
.
GetService
<
ISolutionCrawlerRegistrationService
>()
as
SolutionCrawlerRegistrationService
;
var
incrementalAnalyzers
=
ImmutableArray
.
Create
(
analyzerService
.
CreateIncrementalAnalyzer
(
workspace
));
// test first update
service
.
WaitUntilCompletion_ForTestingPurposesOnly
(
workspace
,
incrementalAnalyzers
);
// test first update
service
.
WaitUntilCompletion_ForTestingPurposesOnly
(
workspace
,
incrementalAnalyzers
);
listener
.
CreateWaitTask
().
PumpingWait
();
listener
.
CreateWaitTask
().
PumpingWait
();
var
snapshot
=
workspace
.
Documents
.
First
().
GetTextBuffer
().
CurrentSnapshot
;
var
spans
=
tagger
.
GetTags
(
new
NormalizedSnapshotSpanCollection
(
new
SnapshotSpan
(
snapshot
,
0
,
snapshot
.
Length
))).
ToList
();
Assert
.
True
(
spans
.
First
().
Span
.
Contains
(
new
Span
(
0
,
1
)));
var
snapshot
=
workspace
.
Documents
.
First
().
GetTextBuffer
().
CurrentSnapshot
;
var
spans
=
tagger
.
GetTags
(
new
NormalizedSnapshotSpanCollection
(
new
SnapshotSpan
(
snapshot
,
0
,
snapshot
.
Length
))).
ToList
();
Assert
.
True
(
spans
.
First
().
Span
.
Contains
(
new
Span
(
0
,
1
)));
// test second update
analyzer
.
ChangeSeverity
();
// test second update
analyzer
.
ChangeSeverity
();
var
document
=
workspace
.
CurrentSolution
.
GetDocument
(
workspace
.
Documents
.
First
().
Id
);
var
text
=
document
.
GetTextAsync
().
Result
;
workspace
.
TryApplyChanges
(
document
.
WithText
(
text
.
WithChanges
(
new
TextChange
(
new
TextSpan
(
text
.
Length
-
1
,
1
),
string
.
Empty
))).
Project
.
Solution
);
var
document
=
workspace
.
CurrentSolution
.
GetDocument
(
workspace
.
Documents
.
First
().
Id
);
var
text
=
document
.
GetTextAsync
().
Result
;
workspace
.
TryApplyChanges
(
document
.
WithText
(
text
.
WithChanges
(
new
TextChange
(
new
TextSpan
(
text
.
Length
-
1
,
1
),
string
.
Empty
))).
Project
.
Solution
);
service
.
WaitUntilCompletion_ForTestingPurposesOnly
(
workspace
,
incrementalAnalyzers
);
service
.
WaitUntilCompletion_ForTestingPurposesOnly
(
workspace
,
incrementalAnalyzers
);
listener
.
CreateWaitTask
().
PumpingWait
();
listener
.
CreateWaitTask
().
PumpingWait
();
snapshot
=
workspace
.
Documents
.
First
().
GetTextBuffer
().
CurrentSnapshot
;
spans
=
tagger
.
GetTags
(
new
NormalizedSnapshotSpanCollection
(
new
SnapshotSpan
(
snapshot
,
0
,
snapshot
.
Length
))).
ToList
();
Assert
.
True
(
spans
.
First
().
Span
.
Contains
(
new
Span
(
0
,
1
)));
snapshot
=
workspace
.
Documents
.
First
().
GetTextBuffer
().
CurrentSnapshot
;
spans
=
tagger
.
GetTags
(
new
NormalizedSnapshotSpanCollection
(
new
SnapshotSpan
(
snapshot
,
0
,
snapshot
.
Length
))).
ToList
();
Assert
.
True
(
spans
.
First
().
Span
.
Contains
(
new
Span
(
0
,
1
)));
((
IDisposable
)
tagger
).
Dispose
(
);
registrationService
.
Unregister
(
workspace
);
registrationService
.
Unregister
(
workspace
);
}
}
}
...
...
src/EditorFeatures/Test/Preview/PreviewWorkspaceTests.cs
浏览文件 @
bb452d27
...
...
@@ -238,34 +238,35 @@ public void TestPreviewDiagnosticTaggerInPreviewPane()
var
leftBuffer
=
diffView
.
LeftView
.
BufferGraph
.
GetTextBuffers
(
t
=>
t
.
ContentType
.
IsOfType
(
ContentTypeNames
.
CSharpContentType
)).
First
();
var
leftProvider
=
new
DiagnosticsSquiggleTaggerProvider
(
optionsService
,
diagnosticService
,
foregroundService
,
listeners
);
var
leftTagger
=
leftProvider
.
CreateTagger
<
IErrorTag
>(
leftBuffer
);
var
rightBuffer
=
diffView
.
RightView
.
BufferGraph
.
GetTextBuffers
(
t
=>
t
.
ContentType
.
IsOfType
(
ContentTypeNames
.
CSharpContentType
)).
First
();
var
rightProvider
=
new
DiagnosticsSquiggleTaggerProvider
(
optionsService
,
diagnosticService
,
foregroundService
,
listeners
);
var
rightTagger
=
rightProvider
.
CreateTagger
<
IErrorTag
>(
rightBuffer
);
// wait up to 20 seconds for diagnostics
taskSource
.
Task
.
Wait
(
20000
);
if
(!
taskSource
.
Task
.
IsCompleted
)
using
(
var
leftDisposable
=
leftTagger
as
IDisposable
)
{
// something is wrong
FatalError
.
Report
(
new
System
.
Exception
(
"not finished after 20 seconds"
));
var
rightBuffer
=
diffView
.
RightView
.
BufferGraph
.
GetTextBuffers
(
t
=>
t
.
ContentType
.
IsOfType
(
ContentTypeNames
.
CSharpContentType
)).
First
();
var
rightProvider
=
new
DiagnosticsSquiggleTaggerProvider
(
optionsService
,
diagnosticService
,
foregroundService
,
listeners
);
var
rightTagger
=
rightProvider
.
CreateTagger
<
IErrorTag
>(
rightBuffer
);
using
(
var
rightDisposable
=
rightTagger
as
IDisposable
)
{
// wait up to 20 seconds for diagnostics
taskSource
.
Task
.
Wait
(
20000
);
if
(!
taskSource
.
Task
.
IsCompleted
)
{
// something is wrong
FatalError
.
Report
(
new
System
.
Exception
(
"not finished after 20 seconds"
));
}
// wait taggers
waiter
.
CreateWaitTask
().
PumpingWait
();
// check left buffer
var
leftSnapshot
=
leftBuffer
.
CurrentSnapshot
;
var
leftSpans
=
leftTagger
.
GetTags
(
new
NormalizedSnapshotSpanCollection
(
new
SnapshotSpan
(
leftSnapshot
,
0
,
leftSnapshot
.
Length
))).
ToList
();
Assert
.
Equal
(
1
,
leftSpans
.
Count
);
// check right buffer
var
rightSnapshot
=
rightBuffer
.
CurrentSnapshot
;
var
rightSpans
=
rightTagger
.
GetTags
(
new
NormalizedSnapshotSpanCollection
(
new
SnapshotSpan
(
rightSnapshot
,
0
,
rightSnapshot
.
Length
))).
ToList
();
Assert
.
Equal
(
0
,
rightSpans
.
Count
);
}
}
// wait taggers
waiter
.
CreateWaitTask
().
PumpingWait
();
// check left buffer
var
leftSnapshot
=
leftBuffer
.
CurrentSnapshot
;
var
leftSpans
=
leftTagger
.
GetTags
(
new
NormalizedSnapshotSpanCollection
(
new
SnapshotSpan
(
leftSnapshot
,
0
,
leftSnapshot
.
Length
))).
ToList
();
Assert
.
Equal
(
1
,
leftSpans
.
Count
);
// check right buffer
var
rightSnapshot
=
rightBuffer
.
CurrentSnapshot
;
var
rightSpans
=
rightTagger
.
GetTags
(
new
NormalizedSnapshotSpanCollection
(
new
SnapshotSpan
(
rightSnapshot
,
0
,
rightSnapshot
.
Length
))).
ToList
();
Assert
.
Equal
(
0
,
rightSpans
.
Count
);
((
IDisposable
)
leftTagger
).
Dispose
();
((
IDisposable
)
rightTagger
).
Dispose
();
}
}
...
...
src/EditorFeatures/Test/Squiggles/AbstractSquiggleProducerTests.cs
浏览文件 @
bb452d27
...
...
@@ -47,19 +47,20 @@ public static class SquiggleUtilities
var
foregroundService
=
workspace
.
GetService
<
IForegroundNotificationService
>();
var
taggerProvider
=
new
DiagnosticsSquiggleTaggerProvider
(
optionsService
,
diagnosticService
,
foregroundService
,
listeners
);
var
tagger
=
taggerProvider
.
CreateTagger
<
IErrorTag
>(
buffer
);
using
(
var
disposable
=
tagger
as
IDisposable
)
{
var
service
=
workspace
.
Services
.
GetService
<
ISolutionCrawlerRegistrationService
>()
as
SolutionCrawlerRegistrationService
;
service
.
WaitUntilCompletion_ForTestingPurposesOnly
(
workspace
,
ImmutableArray
.
Create
(
analyzerService
.
CreateIncrementalAnalyzer
(
workspace
)));
var
service
=
workspace
.
Services
.
GetService
<
ISolutionCrawlerRegistrationService
>()
as
SolutionCrawlerRegistrationService
;
service
.
WaitUntilCompletion_ForTestingPurposesOnly
(
workspace
,
ImmutableArray
.
Create
(
analyzerService
.
CreateIncrementalAnalyzer
(
workspace
)));
listener
.
CreateWaitTask
().
PumpingWait
();
listener
.
CreateWaitTask
().
PumpingWait
();
var
snapshot
=
buffer
.
CurrentSnapshot
;
var
spans
=
tagger
.
GetTags
(
new
NormalizedSnapshotSpanCollection
(
new
SnapshotSpan
(
snapshot
,
0
,
snapshot
.
Length
))).
ToList
();
var
snapshot
=
buffer
.
CurrentSnapshot
;
var
spans
=
tagger
.
GetTags
(
new
NormalizedSnapshotSpanCollection
(
new
SnapshotSpan
(
snapshot
,
0
,
snapshot
.
Length
))).
ToList
();
((
IDisposable
)
tagger
).
Dispose
();
registrationService
.
Unregister
(
workspace
);
registrationService
.
Unregister
(
workspace
);
return
spans
;
return
spans
;
}
}
}
...
...
@@ -89,17 +90,17 @@ internal static IList<ITagSpan<IErrorTag>> GetErrorsFromUpdateSource(TestWorkspa
var
buffer
=
document
.
GetTextBuffer
();
var
provider
=
new
DiagnosticsSquiggleTaggerProvider
(
optionsService
,
diagnosticService
,
foregroundService
,
listeners
);
var
tagger
=
provider
.
CreateTagger
<
IErrorTag
>(
buffer
);
using
(
var
disposable
=
tagger
as
IDisposable
)
{
source
.
RaiseDiagnosticsUpdated
(
updateArgs
);
source
.
RaiseDiagnosticsUpdated
(
updateArgs
);
listener
.
CreateWaitTask
().
PumpingWait
();
var
snapshot
=
buffer
.
CurrentSnapshot
;
var
spans
=
tagger
.
GetTags
(
new
NormalizedSnapshotSpanCollection
(
new
SnapshotSpan
(
snapshot
,
0
,
snapshot
.
Length
))).
ToImmutableArray
();
listener
.
CreateWaitTask
().
PumpingWait
();
((
IDisposable
)
tagger
).
Dispose
();
var
snapshot
=
buffer
.
CurrentSnapshot
;
var
spans
=
tagger
.
GetTags
(
new
NormalizedSnapshotSpanCollection
(
new
SnapshotSpan
(
snapshot
,
0
,
snapshot
.
Length
))).
ToImmutableArray
();
return
spans
;
return
spans
;
}
}
internal
static
DiagnosticData
CreateDiagnosticData
(
TestWorkspace
workspace
,
TestHostDocument
document
,
TextSpan
span
)
...
...
src/Test/Utilities/Portable/TestBase.cs
浏览文件 @
bb452d27
...
...
@@ -586,6 +586,6 @@ protected static string NormalizeDiagnosticString(string inputString)
return
inputString
;
}
#
endregion
#endregion
}
}
src/VisualStudio/Core/Test/Diagnostics/MiscDiagnosticUpdateSourceTests.vb
浏览文件 @
bb452d27
...
...
@@ -42,19 +42,18 @@ class 123 { }
Dim
foregroundService
=
workspace
.
GetService
(
Of
IForegroundNotificationService
)()
Dim
provider
=
New
DiagnosticsSquiggleTaggerProvider
(
optionsService
,
diagnosticService
,
foregroundService
,
listeners
)
Dim
tagger
=
provider
.
CreateTagger
(
Of
IErrorTag
)(
buffer
)
Using
disposable
=
TryCast
(
tagger
,
IDisposable
)
Dim
analyzer
=
miscService
.
CreateIncrementalAnalyzer
(
workspace
)
analyzer
.
AnalyzeSyntaxAsync
(
workspace
.
CurrentSolution
.
Projects
.
First
().
Documents
.
First
(),
CancellationToken
.
None
).
PumpingWait
()
Dim
analyzer
=
miscService
.
CreateIncrementalAnalyzer
(
workspace
)
analyzer
.
AnalyzeSyntaxAsync
(
workspace
.
CurrentSolution
.
Projects
.
First
().
Documents
.
First
(),
CancellationToken
.
None
).
PumpingWait
()
listener
.
CreateWaitTask
().
PumpingWait
()
Dim
snapshot
=
buffer
.
CurrentSnapshot
Dim
spans
=
tagger
.
GetTags
(
New
NormalizedSnapshotSpanCollection
(
New
SnapshotSpan
(
snapshot
,
0
,
snapshot
.
Length
))).
ToImmutableArray
()
listener
.
CreateWaitTask
().
PumpingWait
()
Assert
.
True
(
spans
.
Count
()
>
0
)
Assert
.
True
(
spans
.
All
(
Function
(
s
)
s
.
Span
.
Length
>
0
)
)
Dim
snapshot
=
buffer
.
CurrentSnapshot
Dim
spans
=
tagger
.
GetTags
(
New
NormalizedSnapshotSpanCollection
(
New
SnapshotSpan
(
snapshot
,
0
,
snapshot
.
Length
))).
ToImmutableArray
(
)
DirectCast
(
tagger
,
IDisposable
).
Dispose
()
Assert
.
True
(
spans
.
Count
()
>
0
)
Assert
.
True
(
spans
.
All
(
Function
(
s
)
s
.
Span
.
Length
>
0
))
End
Using
End
Using
End
Sub
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录