Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
lwm1986
roslyn
提交
df25ee29
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,发现更多精彩内容 >>
提交
df25ee29
编写于
8月 12, 2017
作者:
C
CyrusNajmabadi
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Improve trivia preservation when converting methods into a property.
上级
0a304b01
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
155 addition
and
22 deletion
+155
-22
src/EditorFeatures/CSharpTest/CodeActions/ReplaceMethodWithProperty/ReplaceMethodWithPropertyTests.cs
...placeMethodWithProperty/ReplaceMethodWithPropertyTests.cs
+141
-14
src/Features/CSharp/Portable/ReplaceMethodWithProperty/CSharpReplaceMethodWithPropertyService.cs
...hodWithProperty/CSharpReplaceMethodWithPropertyService.cs
+14
-8
未找到文件。
src/EditorFeatures/CSharpTest/CodeActions/ReplaceMethodWithProperty/ReplaceMethodWithPropertyTests.cs
浏览文件 @
df25ee29
...
...
@@ -196,8 +196,9 @@ int Goo
ignoreTrivia
:
false
);
}
[
WorkItem
(
21460
,
"https://github.com/dotnet/roslyn/issues/21460"
)]
[
Fact
,
Trait
(
Traits
.
Feature
,
Traits
.
Features
.
CodeActionsReplaceMethodWithProperty
)]
public
async
Task
TestIfDefMethod
()
public
async
Task
TestIfDefMethod
1
()
{
await
TestWithAllCodeStyleOff
(
@"class C
...
...
@@ -210,6 +211,109 @@ public async Task TestIfDefMethod()
}"
,
@"class C
{
#if true
int Goo
{
get
{
}
}
#endif
}"
);
}
[
WorkItem
(
21460
,
"https://github.com/dotnet/roslyn/issues/21460"
)]
[
Fact
,
Trait
(
Traits
.
Feature
,
Traits
.
Features
.
CodeActionsReplaceMethodWithProperty
)]
public
async
Task
TestIfDefMethod2
()
{
await
TestWithAllCodeStyleOff
(
@"class C
{
#if true
int [||]GetGoo()
{
}
void SetGoo(int val)
{
}
#endif
}"
,
@"class C
{
#if true
int Goo
{
get
{
}
}
void SetGoo(int val)
{
}
#endif
}"
);
}
[
WorkItem
(
21460
,
"https://github.com/dotnet/roslyn/issues/21460"
)]
[
Fact
,
Trait
(
Traits
.
Feature
,
Traits
.
Features
.
CodeActionsReplaceMethodWithProperty
)]
public
async
Task
TestIfDefMethod3
()
{
await
TestWithAllCodeStyleOff
(
@"class C
{
#if true
int [||]GetGoo()
{
}
void SetGoo(int val)
{
}
#endif
}"
,
@"class C
{
#if true
int Goo
{
get
{
}
set
{
}
}
#endif
}"
,
index
:
1
);
}
[
WorkItem
(
21460
,
"https://github.com/dotnet/roslyn/issues/21460"
)]
[
Fact
,
Trait
(
Traits
.
Feature
,
Traits
.
Features
.
CodeActionsReplaceMethodWithProperty
)]
public
async
Task
TestIfDefMethod4
()
{
await
TestWithAllCodeStyleOff
(
@"class C
{
#if true
void SetGoo(int val)
{
}
int [||]GetGoo()
{
}
#endif
}"
,
@"class C
{
#if true
void SetGoo(int val)
{
}
int Goo
{
get
...
...
@@ -220,6 +324,42 @@ int Goo
}"
);
}
[
WorkItem
(
21460
,
"https://github.com/dotnet/roslyn/issues/21460"
)]
[
Fact
,
Trait
(
Traits
.
Feature
,
Traits
.
Features
.
CodeActionsReplaceMethodWithProperty
)]
public
async
Task
TestIfDefMethod5
()
{
await
TestWithAllCodeStyleOff
(
@"class C
{
#if true
void SetGoo(int val)
{
}
int [||]GetGoo()
{
}
#endif
}"
,
@"class C
{
#if true
int Goo
{
get
{
}
set
{
}
}
#endif
}"
,
index
:
1
);
}
[
Fact
,
Trait
(
Traits
.
Feature
,
Traits
.
Features
.
CodeActionsReplaceMethodWithProperty
)]
public
async
Task
TestMethodWithTrivia_2
()
{
...
...
@@ -742,7 +882,6 @@ void SetGoo(int i)
class C
{
int Goo
{
get
...
...
@@ -782,7 +921,6 @@ void Bar()
class C
{
int Goo
{
get
...
...
@@ -822,7 +960,6 @@ private void SetGoo(int i)
class C
{
public int Goo
{
get
...
...
@@ -893,7 +1030,6 @@ void Bar()
class C
{
int Goo
{
get
...
...
@@ -934,7 +1070,6 @@ void SetGoo(int i)
class C
{
int Goo
{
get
...
...
@@ -971,7 +1106,6 @@ void SetGoo(int value)
class C
{
int Goo
{
get
...
...
@@ -1008,7 +1142,6 @@ void SetGoo(int i)
class C
{
int Goo
{
get
...
...
@@ -1193,7 +1326,6 @@ void setGoo(int i)
class C
{
int Goo
{
get
...
...
@@ -1249,7 +1381,6 @@ void setGoo((int, string) i)
class C
{
(int, string) Goo
{
get
...
...
@@ -1284,7 +1415,6 @@ void setGoo((int a, string b) i)
class C
{
(int a, string b) Goo
{
get
...
...
@@ -1562,7 +1692,6 @@ void SetGoo(int i)
}"
,
@"class C
{
int Goo { get => 1; set => _i = value; }
}"
,
index
:
1
,
...
...
@@ -1588,7 +1717,6 @@ void SetGoo(int i)
}"
,
@"class C
{
int Goo
{
get
...
...
@@ -1625,7 +1753,6 @@ void SetGoo(int i)
}"
,
@"class C
{
int Goo { get => 1; set => _i = value; }
}"
,
index
:
1
,
...
...
src/Features/CSharp/Portable/ReplaceMethodWithProperty/CSharpReplaceMethodWithPropertyService.cs
浏览文件 @
df25ee29
...
...
@@ -64,11 +64,14 @@ public void RemoveSetMethod(SyntaxEditor editor, SyntaxNode setMethodDeclaration
return
;
}
editor
.
ReplaceNode
(
getMethodDeclaration
,
ConvertMethodsToProperty
(
documentOptions
,
parseOptions
,
semanticModel
,
editor
.
Generator
,
getAndSetMethods
,
propertyName
,
nameChanged
));
var
newProperty
=
ConvertMethodsToProperty
(
documentOptions
,
parseOptions
,
semanticModel
,
editor
.
Generator
,
getAndSetMethods
,
propertyName
,
nameChanged
);
// newProperty = newProperty.WithTriviaFrom(getMethodDeclaration);
editor
.
ReplaceNode
(
getMethodDeclaration
,
newProperty
);
}
public
SyntaxNode
ConvertMethodsToProperty
(
...
...
@@ -147,13 +150,16 @@ public void RemoveSetMethod(SyntaxEditor editor, SyntaxNode setMethodDeclaration
getMethodDeclaration
.
ReturnType
,
getMethodDeclaration
.
ExplicitInterfaceSpecifier
,
nameToken
,
accessorList
:
null
);
IEnumerable
<
SyntaxTrivia
>
trivia
=
getMethodDeclaration
.
GetLeadingTrivia
();
var
finalLeadingTrivia
=
getMethodDeclaration
.
GetLeadingTrivia
().
ToList
();
var
setMethodDeclaration
=
getAndSetMethods
.
SetMethodDeclaration
;
if
(
setMethodDeclaration
!=
null
)
{
trivia
=
trivia
.
Concat
(
setMethodDeclaration
.
GetLeadingTrivia
());
finalLeadingTrivia
.
AddRange
(
setMethodDeclaration
.
GetLeadingTrivia
()
.
SkipWhile
(
t
=>
t
.
Kind
()
==
SyntaxKind
.
EndOfLineTrivia
)
.
Where
(
t
=>
!
t
.
IsDirective
));
}
property
=
property
.
WithLeadingTrivia
(
trivia
.
Where
(
t
=>
!
t
.
IsDirective
)
);
property
=
property
.
WithLeadingTrivia
(
finalLeadingTrivia
);
var
accessorList
=
SyntaxFactory
.
AccessorList
(
SyntaxFactory
.
SingletonList
(
getAccessor
));
if
(
setAccessor
!=
null
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录