Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
lwm1986
roslyn
提交
2ac434a2
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,发现更多精彩内容 >>
提交
2ac434a2
编写于
1月 06, 2020
作者:
I
Ivan Basov
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add parameter service unit tests
上级
ece16f44
变更
4
展开全部
隐藏空白更改
内联
并排
Showing
4 changed file
with
1066 addition
and
22 deletion
+1066
-22
src/EditorFeatures/CSharpTest/ChangeSignature/AddParameterTests.cs
...rFeatures/CSharpTest/ChangeSignature/AddParameterTests.cs
+1013
-1
src/Features/CSharp/Portable/ChangeSignature/CSharpChangeSignatureService.cs
.../Portable/ChangeSignature/CSharpChangeSignatureService.cs
+47
-13
src/Features/Core/Portable/ChangeSignature/AbstractChangeSignatureService.cs
...ortable/ChangeSignature/AbstractChangeSignatureService.cs
+4
-6
src/Features/VisualBasic/Portable/ChangeSignature/VisualBasicChangeSignatureService.vb
...able/ChangeSignature/VisualBasicChangeSignatureService.vb
+2
-2
未找到文件。
src/EditorFeatures/CSharpTest/ChangeSignature/AddParameterTests.cs
浏览文件 @
2ac434a2
此差异已折叠。
点击以展开。
src/Features/CSharp/Portable/ChangeSignature/CSharpChangeSignatureService.cs
浏览文件 @
2ac434a2
...
...
@@ -393,7 +393,7 @@ private SyntaxNode GetNodeContainingTargetNode(SyntaxNode matchingNode)
SignatureChange
signaturePermutationWithoutAddedParameters
=
signaturePermutation
.
WithoutAddedParameters
();
var
newArguments
=
PermuteArgumentList
(
d
ocument
,
d
eclarationSymbol
,
invocation
.
ArgumentList
.
Arguments
,
signaturePermutationWithoutAddedParameters
,
isReducedExtensionMethod
);
var
newArguments
=
PermuteArgumentList
(
declarationSymbol
,
invocation
.
ArgumentList
.
Arguments
,
signaturePermutationWithoutAddedParameters
,
isReducedExtensionMethod
);
newArguments
=
AddNewArgumentsToList
(
newArguments
,
signaturePermutation
,
isReducedExtensionMethod
);
return
invocation
.
WithArgumentList
(
invocation
.
ArgumentList
.
WithArguments
(
newArguments
).
WithAdditionalAnnotations
(
changeSignatureFormattingAnnotation
));
}
...
...
@@ -401,7 +401,7 @@ private SyntaxNode GetNodeContainingTargetNode(SyntaxNode matchingNode)
if
(
updatedNode
.
IsKind
(
SyntaxKind
.
ObjectCreationExpression
))
{
var
objCreation
=
(
ObjectCreationExpressionSyntax
)
updatedNode
;
var
newArguments
=
PermuteArgumentList
(
d
ocument
,
d
eclarationSymbol
,
objCreation
.
ArgumentList
.
Arguments
,
signaturePermutation
);
var
newArguments
=
PermuteArgumentList
(
declarationSymbol
,
objCreation
.
ArgumentList
.
Arguments
,
signaturePermutation
);
return
objCreation
.
WithArgumentList
(
objCreation
.
ArgumentList
.
WithArguments
(
newArguments
).
WithAdditionalAnnotations
(
changeSignatureFormattingAnnotation
));
}
...
...
@@ -409,21 +409,21 @@ private SyntaxNode GetNodeContainingTargetNode(SyntaxNode matchingNode)
updatedNode
.
IsKind
(
SyntaxKind
.
BaseConstructorInitializer
))
{
var
objCreation
=
(
ConstructorInitializerSyntax
)
updatedNode
;
var
newArguments
=
PermuteArgumentList
(
d
ocument
,
d
eclarationSymbol
,
objCreation
.
ArgumentList
.
Arguments
,
signaturePermutation
);
var
newArguments
=
PermuteArgumentList
(
declarationSymbol
,
objCreation
.
ArgumentList
.
Arguments
,
signaturePermutation
);
return
objCreation
.
WithArgumentList
(
objCreation
.
ArgumentList
.
WithArguments
(
newArguments
).
WithAdditionalAnnotations
(
changeSignatureFormattingAnnotation
));
}
if
(
updatedNode
.
IsKind
(
SyntaxKind
.
ElementAccessExpression
))
{
var
elementAccess
=
(
ElementAccessExpressionSyntax
)
updatedNode
;
var
newArguments
=
PermuteArgumentList
(
d
ocument
,
d
eclarationSymbol
,
elementAccess
.
ArgumentList
.
Arguments
,
signaturePermutation
);
var
newArguments
=
PermuteArgumentList
(
declarationSymbol
,
elementAccess
.
ArgumentList
.
Arguments
,
signaturePermutation
);
return
elementAccess
.
WithArgumentList
(
elementAccess
.
ArgumentList
.
WithArguments
(
newArguments
).
WithAdditionalAnnotations
(
changeSignatureFormattingAnnotation
));
}
if
(
updatedNode
.
IsKind
(
SyntaxKind
.
Attribute
))
{
var
attribute
=
(
AttributeSyntax
)
updatedNode
;
var
newArguments
=
PermuteAttributeArgumentList
(
d
ocument
,
d
eclarationSymbol
,
attribute
.
ArgumentList
.
Arguments
,
signaturePermutation
);
var
newArguments
=
PermuteAttributeArgumentList
(
declarationSymbol
,
attribute
.
ArgumentList
.
Arguments
,
signaturePermutation
);
return
attribute
.
WithArgumentList
(
attribute
.
ArgumentList
.
WithArguments
(
newArguments
).
WithAdditionalAnnotations
(
changeSignatureFormattingAnnotation
));
}
...
...
@@ -538,7 +538,7 @@ private SyntaxNode GetNodeContainingTargetNode(SyntaxNode matchingNode)
}
private
SeparatedSyntaxList
<
T
>
PermuteDeclaration
<
T
>(
SeparatedSyntaxList
<
T
>
list
,
SeparatedSyntaxList
<
T
>
list
,
SignatureChange
updatedSignature
)
where
T
:
SyntaxNode
{
var
originalParameters
=
updatedSignature
.
OriginalConfiguration
.
ToListOfParameters
();
...
...
@@ -603,12 +603,11 @@ private SyntaxNode GetNodeContainingTargetNode(SyntaxNode matchingNode)
}
private
SeparatedSyntaxList
<
AttributeArgumentSyntax
>
PermuteAttributeArgumentList
(
Document
document
,
ISymbol
declarationSymbol
,
SeparatedSyntaxList
<
AttributeArgumentSyntax
>
arguments
,
SignatureChange
updatedSignature
)
{
var
newArguments
=
PermuteArguments
(
document
,
declarationSymbol
,
arguments
.
Select
(
a
=>
UnifiedArgumentSyntax
.
Create
(
a
)).
ToList
(),
updatedSignature
);
var
newArguments
=
PermuteArguments
<
AttributeArgumentSyntax
>(
declarationSymbol
,
arguments
.
Select
(
a
=>
UnifiedArgumentSyntax
.
Create
(
a
)).
ToList
(),
updatedSignature
);
var
numSeparatorsToSkip
=
arguments
.
Count
-
newArguments
.
Count
;
// copy whitespace trivia from original position
...
...
@@ -619,13 +618,12 @@ private SyntaxNode GetNodeContainingTargetNode(SyntaxNode matchingNode)
}
private
SeparatedSyntaxList
<
ArgumentSyntax
>
PermuteArgumentList
(
Document
document
,
ISymbol
declarationSymbol
,
SeparatedSyntaxList
<
ArgumentSyntax
>
arguments
,
SignatureChange
updatedSignature
,
bool
isReducedExtensionMethod
=
false
)
{
var
newArguments
=
PermuteArguments
(
document
,
declarationSymbol
,
arguments
.
Select
(
a
=>
UnifiedArgumentSyntax
.
Create
(
a
)).
ToList
(),
updatedSignature
,
isReducedExtensionMethod
);
var
newArguments
=
PermuteArguments
<
ArgumentSyntax
>(
declarationSymbol
,
arguments
.
Select
(
a
=>
UnifiedArgumentSyntax
.
Create
(
a
)).
ToList
(),
updatedSignature
,
isReducedExtensionMethod
);
// copy whitespace trivia from original position
var
newArgumentsWithTrivia
=
TransferLeadingWhitespaceTrivia
(
...
...
@@ -643,7 +641,15 @@ private SyntaxNode GetNodeContainingTargetNode(SyntaxNode matchingNode)
var
index
=
0
;
foreach
(
var
newArgument
in
newArguments
)
{
result
.
Add
(
TransferLeadingWhitespaceTrivia
(
newArgument
,
oldArguments
[
index
]));
if
(
index
<
oldArguments
.
Count
)
{
result
.
Add
(
TransferLeadingWhitespaceTrivia
(
newArgument
,
oldArguments
[
index
]));
}
else
{
result
.
Add
(
newArgument
);
}
index
++;
}
...
...
@@ -786,6 +792,23 @@ private List<SyntaxTrivia> GetPermutedTrivia(CSharpSyntaxNode node, List<XmlElem
updatedLeadingTrivia
.
Add
(
newTrivia
);
}
var
extraNodeList
=
new
List
<
XmlNodeSyntax
>();
while
(
index
<
permutedParamNodes
.
Count
)
{
extraNodeList
.
Add
(
permutedParamNodes
[
index
]);
//.WithLeadingTrivia(node.GetLeadingTrivia()).WithTrailingTrivia(node.GetTrailingTrivia()));
index
++;
}
if
(
extraNodeList
.
Any
())
{
var
extraDocComments
=
SyntaxFactory
.
DocumentationCommentTrivia
(
SyntaxKind
.
MultiLineDocumentationCommentTrivia
,
SyntaxFactory
.
List
(
extraNodeList
.
AsEnumerable
()));
extraDocComments
=
extraDocComments
.
WithEndOfComment
(
SyntaxFactory
.
Token
(
SyntaxKind
.
EndOfDocumentationCommentToken
));
extraDocComments
=
extraDocComments
.
WithLeadingTrivia
(
node
.
GetLeadingTrivia
()).
WithTrailingTrivia
(
node
.
GetTrailingTrivia
());
var
newTrivia
=
SyntaxFactory
.
Trivia
(
extraDocComments
);
updatedLeadingTrivia
.
Add
(
newTrivia
);
}
return
updatedLeadingTrivia
;
}
...
...
@@ -852,9 +875,20 @@ protected override IEnumerable<AbstractFormattingRule> GetFormattingRules(Docume
return
new
[]
{
new
ChangeSignatureFormattingRule
()
}.
Concat
(
Formatter
.
GetDefaultFormattingRules
(
document
));
}
protected
override
IUnifiedArgumentSyntax
CreateRegularArgumentSyntax
(
string
callsiteValue
)
protected
override
IUnifiedArgumentSyntax
CreateRegularArgumentSyntax
<
T
>
(
string
callsiteValue
)
{
return
UnifiedArgumentSyntax
.
Create
(
SyntaxFactory
.
Argument
(
SyntaxFactory
.
ParseExpression
(
callsiteValue
)));
var
type
=
typeof
(
T
);
if
(
type
==
typeof
(
ArgumentSyntax
))
{
return
UnifiedArgumentSyntax
.
Create
(
SyntaxFactory
.
Argument
(
SyntaxFactory
.
ParseExpression
(
callsiteValue
)));
}
if
(
type
==
typeof
(
AttributeArgumentSyntax
))
{
return
UnifiedArgumentSyntax
.
Create
(
SyntaxFactory
.
AttributeArgument
(
SyntaxFactory
.
ParseExpression
(
callsiteValue
)));
}
return
default
;
}
}
}
src/Features/Core/Portable/ChangeSignature/AbstractChangeSignatureService.cs
浏览文件 @
2ac434a2
...
...
@@ -46,7 +46,7 @@ internal abstract class AbstractChangeSignatureService : ILanguageService
SignatureChange
signaturePermutation
,
CancellationToken
cancellationToken
);
protected
abstract
IUnifiedArgumentSyntax
CreateRegularArgumentSyntax
(
string
callsiteValue
);
protected
abstract
IUnifiedArgumentSyntax
CreateRegularArgumentSyntax
<
T
>
(
string
callsiteValue
);
protected
abstract
IEnumerable
<
AbstractFormattingRule
>
GetFormattingRules
(
Document
document
);
...
...
@@ -387,8 +387,7 @@ private bool TryGetNodeWithEditableSignatureOrAttributes(Location location, Solu
return
nodeToUpdate
!=
null
;
}
protected
List
<
IUnifiedArgumentSyntax
>
PermuteArguments
(
Document
document
,
protected
List
<
IUnifiedArgumentSyntax
>
PermuteArguments
<
T
>(
ISymbol
declarationSymbol
,
List
<
IUnifiedArgumentSyntax
>
arguments
,
SignatureChange
updatedSignature
,
...
...
@@ -469,13 +468,12 @@ private bool TryGetNodeWithEditableSignatureOrAttributes(Location location, Solu
}
}
// 6. TODO MOVE AROUND. Add added arguments (only at end for the moment)
// 6. Add added arguments (only at end for the moment)
var
brandNewParameters
=
updatedSignature
.
UpdatedConfiguration
.
ToListOfParameters
().
Where
(
p
=>
p
is
AddedParameter
).
Cast
<
AddedParameter
>();
foreach
(
var
brandNewParameter
in
brandNewParameters
)
{
newArguments
.
Add
(
CreateRegularArgumentSyntax
(
brandNewParameter
.
CallsiteValu
e
));
newArguments
.
Add
(
CreateRegularArgumentSyntax
<
T
>(
brandNewParameter
.
CallsiteValue
).
WithName
(
brandNewParameter
.
ParameterNam
e
));
}
return
newArguments
;
...
...
src/Features/VisualBasic/Portable/ChangeSignature/VisualBasicChangeSignatureService.vb
浏览文件 @
2ac434a2
...
...
@@ -419,7 +419,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.ChangeSignature
declarationSymbol
As
ISymbol
,
Optional
isReducedExtensionMethod
As
Boolean
=
False
)
As
SeparatedSyntaxList
(
Of
ArgumentSyntax
)
Dim
newArguments
As
List
(
Of
IUnifiedArgumentSyntax
)
=
MyBase
.
PermuteArguments
(
document
,
declarationSymbol
,
arguments
.
Select
(
Function
(
a
)
UnifiedArgumentSyntax
.
Create
(
a
)).
ToList
(),
permutedSignature
,
isReducedExtensionMethod
)
Dim
newArguments
As
List
(
Of
IUnifiedArgumentSyntax
)
=
MyBase
.
PermuteArguments
(
Of
ArgumentSyntax
)(
declarationSymbol
,
arguments
.
Select
(
Function
(
a
)
UnifiedArgumentSyntax
.
Create
(
a
)).
ToList
(),
permutedSignature
,
isReducedExtensionMethod
)
Dim
numSeparatorsToSkip
=
arguments
.
Count
-
newArguments
.
Count
Return
SyntaxFactory
.
SeparatedList
(
newArguments
.
Select
(
Function
(
a
)
CType
(
DirectCast
(
a
,
UnifiedArgumentSyntax
),
ArgumentSyntax
)),
GetSeparators
(
arguments
,
numSeparatorsToSkip
))
...
...
@@ -618,7 +618,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.ChangeSignature
Return
New
AbstractFormattingRule
()
{
New
ChangeSignatureFormattingRule
()}.
Concat
(
Formatter
.
GetDefaultFormattingRules
(
document
))
End
Function
Protected
Overrides
Function
CreateRegularArgumentSyntax
(
callsiteValue
As
String
)
As
IUnifiedArgumentSyntax
Protected
Overrides
Function
CreateRegularArgumentSyntax
(
Of
T
)(
callsiteValue
As
String
)
As
IUnifiedArgumentSyntax
Return
UnifiedArgumentSyntax
.
Create
(
SyntaxFactory
.
SimpleArgument
(
SyntaxFactory
.
ParseExpression
(
callsiteValue
)))
End
Function
End
Class
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录