Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
lwm1986
roslyn
提交
e26735d0
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,发现更多精彩内容 >>
提交
e26735d0
编写于
4月 15, 2019
作者:
G
Gen Lu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Avoid creating immutableDict for import completion if possible
上级
76ee3eb8
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
11 addition
and
19 deletion
+11
-19
src/Features/Core/Portable/Completion/Providers/TypeImportCompletionItem.cs
...Portable/Completion/Providers/TypeImportCompletionItem.cs
+11
-19
未找到文件。
src/Features/Core/Portable/Completion/Providers/TypeImportCompletionItem.cs
浏览文件 @
e26735d0
...
...
@@ -14,27 +14,27 @@ internal static class TypeImportCompletionItem
private
const
string
GenericTypeNameManglingString
=
"`"
;
private
static
readonly
string
[]
s_aritySuffixesOneToNine
=
{
"`1"
,
"`2"
,
"`3"
,
"`4"
,
"`5"
,
"`6"
,
"`7"
,
"`8"
,
"`9"
};
private
const
string
ContainingNamespaceName
=
nameof
(
ContainingNamespaceName
);
private
const
string
TypeAritySuffixName
=
nameof
(
TypeAritySuffixName
);
public
static
CompletionItem
Create
(
INamedTypeSymbol
typeSymbol
,
string
containingNamespace
)
{
var
builder
=
PooledDictionary
<
string
,
string
>.
GetInstance
();
builder
.
Add
(
ContainingNamespaceName
,
containingNamespace
);
PooledDictionary
<
string
,
string
>
builder
=
null
;
if
(
typeSymbol
.
Arity
>
0
)
{
builder
=
PooledDictionary
<
string
,
string
>.
GetInstance
();
builder
.
Add
(
TypeAritySuffixName
,
GetAritySuffix
(
typeSymbol
.
Arity
));
}
// TODO:
// 1. Suffix should be language specific, i.e. `(Of ...)` if triggered from VB.
// 2. Sort the import items to be after in-scope symbols in a less hacky way.
// 2. Add editor support for multiple items with identical display text but different inline description.
// 3. Sort the import items to be after in-scope symbols in a less hacky way.
return
CompletionItem
.
Create
(
displayText
:
typeSymbol
.
Name
,
filterText
:
typeSymbol
.
Name
,
sortText
:
"~"
+
typeSymbol
.
Name
,
// Hack: prepend tilde (ASCII: 126) to make import items show after in-scope items
properties
:
builder
.
ToImmutableDictionaryAndFree
(),
properties
:
builder
?
.
ToImmutableDictionaryAndFree
(),
tags
:
GlyphTags
.
GetTags
(
typeSymbol
.
GetGlyph
()),
rules
:
CompletionItemRules
.
Default
,
displayTextPrefix
:
null
,
...
...
@@ -50,11 +50,7 @@ public static CompletionItem Create(INamedTypeSymbol typeSymbol, string containi
}
public
static
string
GetContainingNamespace
(
CompletionItem
item
)
{
return
item
.
Properties
.
TryGetValue
(
ContainingNamespaceName
,
out
var
containingNamespace
)
?
containingNamespace
:
null
;
}
=>
item
.
InlineDescription
;
public
static
async
Task
<
CompletionDescription
>
GetCompletionDescriptionAsync
(
Document
document
,
CompletionItem
item
,
CancellationToken
cancellationToken
)
{
...
...
@@ -97,18 +93,14 @@ private static string GetFullyQualifiedName(string namespaceName, string typeNam
private
static
string
GetMetadataName
(
CompletionItem
item
)
{
if
(
item
.
Properties
.
TryGetValue
(
ContainingNamespaceName
,
out
var
containingNamespace
))
var
containingNamespace
=
GetContainingNamespace
(
item
);
var
fullyQualifiedName
=
GetFullyQualifiedName
(
containingNamespace
,
item
.
DisplayText
);
if
(
item
.
Properties
.
TryGetValue
(
TypeAritySuffixName
,
out
var
aritySuffix
))
{
var
fullyQualifiedName
=
GetFullyQualifiedName
(
containingNamespace
,
item
.
DisplayText
);
if
(
item
.
Properties
.
TryGetValue
(
TypeAritySuffixName
,
out
var
aritySuffix
))
{
return
fullyQualifiedName
+
aritySuffix
;
}
return
fullyQualifiedName
;
return
fullyQualifiedName
+
aritySuffix
;
}
return
null
;
return
fullyQualifiedName
;
}
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录