Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
lwm1986
roslyn
提交
cca9ed90
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,发现更多精彩内容 >>
提交
cca9ed90
编写于
4月 11, 2019
作者:
G
Gen Lu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Address review comments
上级
43e7e360
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
22 addition
and
20 deletion
+22
-20
src/EditorFeatures/Core/Implementation/IntelliSense/AsyncCompletion/CompletionSource.cs
...entation/IntelliSense/AsyncCompletion/CompletionSource.cs
+13
-9
src/Features/Core/Portable/Completion/Providers/AbstractTypeImportCompletionProvider.cs
...pletion/Providers/AbstractTypeImportCompletionProvider.cs
+3
-7
src/Features/Core/Portable/Completion/Providers/TypeImportCompletionService.cs
...table/Completion/Providers/TypeImportCompletionService.cs
+6
-4
未找到文件。
src/EditorFeatures/Core/Implementation/IntelliSense/AsyncCompletion/CompletionSource.cs
浏览文件 @
cca9ed90
...
...
@@ -201,19 +201,23 @@ internal CompletionSource(ITextView textView, IThreadingContext threadingContext
return
new
AsyncCompletionData
.
CompletionContext
(
ImmutableArray
<
VSCompletionItem
>.
Empty
);
}
ImmutableArray
<
VSCompletionItem
>
items
;
var
filterCache
=
PooledDictionary
<
string
,
AsyncCompletionData
.
CompletionFilter
>.
GetInstance
();
var
itemsBuilder
=
new
ArrayBuilder
<
VSCompletionItem
>(
completionList
.
Items
.
Length
);
foreach
(
var
roslynItem
in
completionList
.
Items
)
try
{
cancellationToken
.
ThrowIfCancellationRequested
();
var
item
=
Convert
(
document
,
roslynItem
,
completionService
,
filterCache
);
itemsBuilder
.
Add
(
item
);
foreach
(
var
roslynItem
in
completionList
.
Items
)
{
cancellationToken
.
ThrowIfCancellationRequested
();
var
item
=
Convert
(
document
,
roslynItem
,
completionService
,
filterCache
);
itemsBuilder
.
Add
(
item
);
}
}
finally
{
filterCache
.
Free
();
items
=
itemsBuilder
.
ToImmutableAndFree
();
}
filterCache
.
Free
();
var
items
=
itemsBuilder
.
ToImmutableAndFree
();
var
suggestionItemOptions
=
completionList
.
SuggestionModeItem
!=
null
?
new
AsyncCompletionData
.
SuggestionItemOptions
(
...
...
src/Features/Core/Portable/Completion/Providers/AbstractTypeImportCompletionProvider.cs
浏览文件 @
cca9ed90
...
...
@@ -68,7 +68,7 @@ private async Task AddCompletionItemsAsync(CompletionContext completionContext,
// Get completion items from current project.
var
compilation
=
await
project
.
GetCompilationAsync
(
cancellationToken
).
ConfigureAwait
(
false
);
await
typeImportCompletionService
.
GetTopLevelTypes
FromProject
Async
(
project
,
HandlePublicAndInternalItem
,
cancellationToken
)
await
typeImportCompletionService
.
GetTopLevelTypesAsync
(
project
,
HandlePublicAndInternalItem
,
cancellationToken
)
.
ConfigureAwait
(
false
);
// Get completion items from source references.
...
...
@@ -79,18 +79,14 @@ await typeImportCompletionService.GetTopLevelTypesFromProjectAsync(project, Hand
var
referencedProject
=
project
.
Solution
.
GetProject
(
projectReference
.
ProjectId
);
var
referencedCompilation
=
await
referencedProject
.
GetCompilationAsync
(
cancellationToken
).
ConfigureAwait
(
false
);
await
typeImportCompletionService
.
GetTopLevelTypes
FromProject
Async
(
await
typeImportCompletionService
.
GetTopLevelTypesAsync
(
referencedProject
,
GetHandler
(
compilation
.
Assembly
,
referencedCompilation
.
Assembly
),
cancellationToken
).
ConfigureAwait
(
false
);
}
// Get completion items from PE references.
var
peReferences
=
project
.
MetadataReferences
.
Where
(
reference
=>
reference
is
PortableExecutableReference
)
.
Cast
<
PortableExecutableReference
>();
foreach
(
var
peReference
in
peReferences
)
foreach
(
var
peReference
in
project
.
MetadataReferences
.
OfType
<
PortableExecutableReference
>())
{
cancellationToken
.
ThrowIfCancellationRequested
();
...
...
src/Features/Core/Portable/Completion/Providers/TypeImportCompletionService.cs
浏览文件 @
cca9ed90
...
...
@@ -21,16 +21,16 @@ internal interface ITypeImportCompletionService : IWorkspaceService
/// getting types from source only, so the project must support compilation.
/// For getting types from PE, use <see cref="GetTopLevelTypesFromPEReference"/>.
/// </summary>
Task
GetTopLevelTypes
FromProject
Async
(
Task
GetTopLevelTypesAsync
(
Project
project
,
Action
<
TypeImportCompletionItemInfo
>
handle
Accessible
Item
,
Action
<
TypeImportCompletionItemInfo
>
handleItem
,
CancellationToken
cancellationToken
);
void
GetTopLevelTypesFromPEReference
(
Solution
solution
,
Compilation
compilation
,
PortableExecutableReference
peReference
,
Action
<
TypeImportCompletionItemInfo
>
handle
Accessible
Item
,
Action
<
TypeImportCompletionItemInfo
>
handleItem
,
CancellationToken
cancellationToken
);
}
...
...
@@ -85,7 +85,7 @@ public Service(ConcurrentDictionary<string, ReferenceCacheEntry> peReferenceCach
_projectItemsCache
=
projectReferenceCache
;
}
public
async
Task
GetTopLevelTypes
FromProject
Async
(
public
async
Task
GetTopLevelTypesAsync
(
Project
project
,
Action
<
TypeImportCompletionItemInfo
>
handleItem
,
CancellationToken
cancellationToken
)
...
...
@@ -96,6 +96,8 @@ public Service(ConcurrentDictionary<string, ReferenceCacheEntry> peReferenceCach
}
var
compilation
=
await
project
.
GetCompilationAsync
(
cancellationToken
).
ConfigureAwait
(
false
);
// Since we only need top level types from source, therefore we only care if source symbol checksum changes.
var
checksum
=
await
SymbolTreeInfo
.
GetSourceSymbolsChecksumAsync
(
project
,
cancellationToken
).
ConfigureAwait
(
false
);
GetAccessibleTopLevelTypesWorker
(
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录