Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
lwm1986
roslyn
提交
f392bc6c
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,发现更多精彩内容 >>
提交
f392bc6c
编写于
6月 12, 2016
作者:
L
lorcanmooney
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Suggest paramref and typeparamref in VB
上级
c11717e3
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
78 addition
and
21 deletion
+78
-21
src/EditorFeatures/VisualBasicTest/Completion/CompletionProviders/XmlDocCommentCompletionProviderTests.vb
...mpletionProviders/XmlDocCommentCompletionProviderTests.vb
+30
-2
src/Features/CSharp/Portable/Completion/CompletionProviders/XmlDocCommentCompletionProvider.cs
...on/CompletionProviders/XmlDocCommentCompletionProvider.cs
+1
-14
src/Features/Core/Portable/Completion/Providers/AbstractDocCommentCompletionProvider.cs
...pletion/Providers/AbstractDocCommentCompletionProvider.cs
+43
-3
src/Features/VisualBasic/Portable/Completion/CompletionProviders/XmlDocCommentCompletionProvider.vb
...on/CompletionProviders/XmlDocCommentCompletionProvider.vb
+4
-2
未找到文件。
src/EditorFeatures/VisualBasicTest/Completion/CompletionProviders/XmlDocCommentCompletionProviderTests.vb
浏览文件 @
f392bc6c
...
...
@@ -104,7 +104,35 @@ Class C
End Class
"
Await
VerifyItemsExistAsync
(
text
,
"code"
,
"list"
,
"para"
,
"paramref"
,
"typeparamref"
)
Await
VerifyItemsExistAsync
(
text
,
"code"
,
"list"
,
"para"
)
End
Function
<
Fact
,
Trait
(
Traits
.
Feature
,
Traits
.
Features
.
Completion
)
>
Public
Async
Function
TestRepeatableNestedParamRefAndTypeParamRefTagsOnMethod
()
As
Task
Dim
text
=
"
Class C
''' <summary>
''' <$$
''' </summary>
Sub Foo(Of T)(i as Integer)
End Sub
End Class
"
Await
VerifyItemsExistAsync
(
text
,
"paramref name=
""
i
""
"
,
"typeparamref name=
""
T
""
"
)
End
Function
<
Fact
,
Trait
(
Traits
.
Feature
,
Traits
.
Features
.
Completion
)
>
Public
Async
Function
TestRepeatableNestedTypeParamRefTagOnClass
()
As
Task
Dim
text
=
"
''' <summary>
''' <$$
''' </summary>
Class C(Of T)
End Class
"
Await
VerifyItemsExistAsync
(
text
,
"typeparamref name=
""
T
""
"
)
End
Function
<
Fact
,
Trait
(
Traits
.
Feature
,
Traits
.
Features
.
Completion
)
>
...
...
@@ -376,7 +404,7 @@ Module Program
End Module
"
Await
VerifyItemsExistAsync
(
text
,
"code"
,
"list"
,
"para"
,
"paramref"
,
"typeparamref"
)
Await
VerifyItemsExistAsync
(
text
,
"code"
,
"list"
,
"para"
)
End
Function
<
Fact
,
Trait
(
Traits
.
Feature
,
Traits
.
Features
.
Completion
)
>
...
...
src/Features/CSharp/Portable/Completion/CompletionProviders/XmlDocCommentCompletionProvider.cs
浏览文件 @
f392bc6c
...
...
@@ -73,20 +73,7 @@ protected override async Task<IEnumerable<CompletionItem>> GetItemsWorkerAsync(D
// The user is typing inside an XmlElement
if
(
token
.
Parent
.
Parent
.
Kind
()
==
SyntaxKind
.
XmlElement
)
{
// Add corresponding tags except ParamRefTag and TypeParamRefTag
items
.
AddRange
(
NestedTagNames
.
Where
(
name
=>
name
!=
ParamRefTagName
&&
name
!=
TypeParamRefTagName
)
.
Select
(
name
=>
GetItem
(
name
,
span
)));
if
(
declaredSymbol
!=
null
)
{
// Add a ParamRefTag for each available parameter
var
parameters
=
declaredSymbol
.
GetParameters
();
items
.
AddRange
(
parameters
.
Select
(
p
=>
CreateCompletionItem
(
span
,
FormatParameter
(
ParamRefTagName
,
p
.
Name
))));
// Add a TypeParamRefTag for each available type parameter
var
typeParameters
=
declaredSymbol
.
GetTypeParameters
();
items
.
AddRange
(
typeParameters
.
Select
(
t
=>
CreateCompletionItem
(
span
,
FormatParameter
(
TypeParamRefTagName
,
t
.
Name
))));
}
items
.
AddRange
(
GetNestedTags
(
span
,
declaredSymbol
));
}
if
(
token
.
Parent
.
Parent
.
Kind
()
==
SyntaxKind
.
XmlElement
&&
((
XmlElementSyntax
)
token
.
Parent
.
Parent
).
StartTag
.
Name
.
LocalName
.
ValueText
==
ListTagName
)
...
...
src/Features/Core/Portable/Completion/Providers/AbstractDocCommentCompletionProvider.cs
浏览文件 @
f392bc6c
...
...
@@ -4,6 +4,7 @@
using
System.Linq
;
using
System.Threading
;
using
System.Threading.Tasks
;
using
Microsoft.CodeAnalysis.Shared.Extensions
;
using
Microsoft.CodeAnalysis.Text
;
using
Roslyn.Utilities
;
using
System.Collections.Immutable
;
...
...
@@ -117,12 +118,46 @@ protected IEnumerable<CompletionItem> GetAlwaysVisibleItems(TextSpan itemSpan)
protected
IEnumerable
<
string
>
NestedTagNames
{
get
{
return
new
[]
{
CTagName
,
CodeTagName
,
ParaTagName
,
ListTagName
,
ParamRefTagName
,
TypeParamRefTagName
};
}
get
{
return
new
[]
{
CTagName
,
CodeTagName
,
ParaTagName
,
ListTagName
};
}
}
protected
IEnumerable
<
CompletionItem
>
GetNestedTags
(
TextSpan
itemSpan
)
protected
IEnumerable
<
CompletionItem
>
GetNestedTags
(
TextSpan
itemSpan
,
ISymbol
declaredSymbol
)
{
return
NestedTagNames
.
Select
(
t
=>
GetItem
(
t
,
itemSpan
));
return
NestedTagNames
.
Select
(
t
=>
GetItem
(
t
,
itemSpan
))
.
Concat
(
GetParamRefItems
(
itemSpan
,
declaredSymbol
))
.
Concat
(
GetTypeParamRefItems
(
itemSpan
,
declaredSymbol
));
}
private
IEnumerable
<
CompletionItem
>
GetParamRefItems
(
TextSpan
itemSpan
,
ISymbol
declaredSymbol
)
{
var
parameters
=
declaredSymbol
?.
GetParameters
().
Select
(
p
=>
p
.
Name
).
ToSet
();
if
(
parameters
==
null
)
{
return
SpecializedCollections
.
EmptyEnumerable
<
CompletionItem
>();
}
return
parameters
.
Select
(
p
=>
CreateCompletionItem
(
span
:
itemSpan
,
displayText
:
FormatParameter
(
ParamRefTagName
,
p
),
beforeCaretText
:
FormatParameterRefTag
(
ParamRefTagName
,
p
),
afterCaretText
:
string
.
Empty
));
}
private
IEnumerable
<
CompletionItem
>
GetTypeParamRefItems
(
TextSpan
itemSpan
,
ISymbol
declaredSymbol
)
{
var
typeParameters
=
declaredSymbol
?.
GetTypeParameters
().
Select
(
t
=>
t
.
Name
).
ToSet
();
if
(
typeParameters
==
null
)
{
return
SpecializedCollections
.
EmptyEnumerable
<
CompletionItem
>();
}
return
typeParameters
.
Select
(
t
=>
CreateCompletionItem
(
span
:
itemSpan
,
displayText
:
FormatParameter
(
TypeParamRefTagName
,
t
),
beforeCaretText
:
FormatParameterRefTag
(
TypeParamRefTagName
,
t
),
afterCaretText
:
string
.
Empty
));
}
protected
IEnumerable
<
CompletionItem
>
GetTopLevelRepeatableItems
(
TextSpan
itemSpan
)
...
...
@@ -148,6 +183,11 @@ protected string FormatParameter(string kind, string name)
return
$"
{
kind
}
{
NameAttributeName
}
=\"
{
name
}
\""
;
}
private
string
FormatParameterRefTag
(
string
kind
,
string
name
)
{
return
$"<
{
kind
}
{
NameAttributeName
}
=\"
{
name
}
\"/>"
;
}
public
override
async
Task
<
CompletionChange
>
GetChangeAsync
(
Document
document
,
CompletionItem
item
,
char
?
commitChar
=
default
(
char
?),
CancellationToken
cancellationToken
=
default
(
CancellationToken
))
{
var
text
=
await
document
.
GetTextAsync
(
cancellationToken
).
ConfigureAwait
(
false
);
...
...
src/Features/VisualBasic/Portable/Completion/CompletionProviders/XmlDocCommentCompletionProvider.vb
浏览文件 @
f392bc6c
...
...
@@ -94,8 +94,10 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Completion.Providers
Dim
grandParent
=
parentElement
.
Parent
Dim
symbol
=
semanticModel
.
GetDeclaredSymbol
(
declaration
,
cancellationToken
)
If
grandParent
.
IsKind
(
SyntaxKind
.
XmlElement
)
Then
items
.
AddRange
(
GetNestedTags
(
span
))
items
.
AddRange
(
GetNestedTags
(
span
,
symbol
))
If
GetStartTagName
(
grandParent
)
=
ListTagName
Then
items
.
AddRange
(
GetListItems
(
span
))
...
...
@@ -105,7 +107,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Completion.Providers
items
.
AddRange
(
GetListHeaderItems
(
span
))
End
If
ElseIf
token
.
Parent
.
IsKind
(
SyntaxKind
.
XmlText
)
AndAlso
token
.
Parent
.
Parent
.
IsKind
(
SyntaxKind
.
XmlElement
)
Then
items
.
AddRange
(
GetNestedTags
(
span
))
items
.
AddRange
(
GetNestedTags
(
span
,
symbol
))
If
GetStartTagName
(
token
.
Parent
.
Parent
)
=
ListTagName
Then
items
.
AddRange
(
GetListItems
(
span
))
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录