Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
lwm1986
roslyn
提交
597a4f4b
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,发现更多精彩内容 >>
提交
597a4f4b
编写于
1月 24, 2017
作者:
R
Ravi Chande
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Enable override completion to use expression body accessors
Fixes #16334
上级
1ee8539e
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
91 addition
and
1 deletion
+91
-1
src/EditorFeatures/CSharpTest/CSharpEditorServicesTest.csproj
...EditorFeatures/CSharpTest/CSharpEditorServicesTest.csproj
+1
-0
src/EditorFeatures/CSharpTest/Completion/CompletionProviders/OverrideCompletionProviderTests_ExpressionBody.cs
...oviders/OverrideCompletionProviderTests_ExpressionBody.cs
+87
-0
src/Features/CSharp/Portable/Completion/CompletionProviders/OverrideCompletionProvider.cs
...pletion/CompletionProviders/OverrideCompletionProvider.cs
+3
-1
未找到文件。
src/EditorFeatures/CSharpTest/CSharpEditorServicesTest.csproj
浏览文件 @
597a4f4b
...
...
@@ -195,6 +195,7 @@
<Compile
Include=
"Classification\TotalClassifierTests.cs"
/>
<Compile
Include=
"Classification\TotalClassifierTests_Dynamic.cs"
/>
<Compile
Include=
"CodeActions\AbstractCSharpCodeActionTest.cs"
/>
<Compile
Include=
"Completion\CompletionProviders\OverrideCompletionProviderTests_ExpressionBody.cs"
/>
<Compile
Include=
"ConvertToInterpolatedString\ConvertConcatenationToInterpolatedStringTests.cs"
/>
<Compile
Include=
"ConvertToInterpolatedString\ConvertPlaceholderToInterpolatedStringTests.cs"
/>
<Compile
Include=
"CodeActions\EncapsulateField\EncapsulateFieldTests.cs"
/>
...
...
src/EditorFeatures/CSharpTest/Completion/CompletionProviders/OverrideCompletionProviderTests_ExpressionBody.cs
0 → 100644
浏览文件 @
597a4f4b
using
System.Linq
;
using
System.Threading.Tasks
;
using
Microsoft.CodeAnalysis.CodeStyle
;
using
Microsoft.CodeAnalysis.Completion
;
using
Microsoft.CodeAnalysis.CSharp
;
using
Microsoft.CodeAnalysis.CSharp.CodeStyle
;
using
Microsoft.CodeAnalysis.CSharp.Completion.Providers
;
using
Microsoft.CodeAnalysis.Editor.UnitTests.Workspaces
;
using
Microsoft.CodeAnalysis.Options
;
using
Microsoft.CodeAnalysis.Text
;
using
Roslyn.Test.Utilities
;
using
Roslyn.Utilities
;
using
Xunit
;
namespace
Microsoft.CodeAnalysis.Editor.CSharp.UnitTests.Completion.CompletionProviders
{
// OverrideCompletionProviderTests overrides SetWorkspaceOptions to disable
// expression-body members. This class does the opposite.
public
class
OverrideCompletionProviderTests_ExpressionBody
:
AbstractCSharpCompletionProviderTests
{
public
OverrideCompletionProviderTests_ExpressionBody
(
CSharpTestWorkspaceFixture
workspaceFixture
)
:
base
(
workspaceFixture
)
{
}
internal
override
CompletionProvider
CreateCompletionProvider
()
{
return
new
OverrideCompletionProvider
();
}
protected
override
void
SetWorkspaceOptions
(
TestWorkspace
workspace
)
{
workspace
.
Options
=
workspace
.
Options
.
WithChangedOption
(
CSharpCodeStyleOptions
.
PreferExpressionBodiedAccessors
,
CodeStyleOptions
.
TrueWithSuggestionEnforcement
)
.
WithChangedOption
(
CSharpCodeStyleOptions
.
PreferExpressionBodiedProperties
,
CodeStyleOptions
.
TrueWithSuggestionEnforcement
)
.
WithChangedOption
(
CSharpCodeStyleOptions
.
PreferExpressionBodiedMethods
,
CodeStyleOptions
.
TrueWithSuggestionEnforcement
);
}
[
WorkItem
(
16331
,
"https://github.com/dotnet/roslyn/issues/16334"
)]
[
WpfFact
,
Trait
(
Traits
.
Feature
,
Traits
.
Features
.
Completion
)]
public
async
Task
CommitProducesExpressionBodyProperties
()
{
var
markupBeforeCommit
=
@"class B
{
public virtual int A { get; set; }
class C : B
{
override A$$
}
}"
;
var
expectedCodeAfterCommit
=
@"class B
{
public virtual int A { get; set; }
class C : B
{
public override int A { get => base.A$$; set => base.A = value; }
}
}"
;
await
VerifyCustomCommitProviderAsync
(
markupBeforeCommit
,
"A"
,
expectedCodeAfterCommit
);
}
[
WorkItem
(
16331
,
"https://github.com/dotnet/roslyn/issues/16334"
)]
[
WpfFact
,
Trait
(
Traits
.
Feature
,
Traits
.
Features
.
Completion
)]
public
async
Task
CommitProducesExpressionBodyMethod
()
{
var
markupBeforeCommit
=
@"class B
{
public virtual int A() => 2;
class C : B
{
override A$$
}
}"
;
var
expectedCodeAfterCommit
=
@"class B
{
public virtual int A() => 2;
class C : B
{
public override int A() => base.A();$$
}
}"
;
await
VerifyCustomCommitProviderAsync
(
markupBeforeCommit
,
"A()"
,
expectedCodeAfterCommit
);
}
}
}
\ No newline at end of file
src/Features/CSharp/Portable/Completion/CompletionProviders/OverrideCompletionProvider.cs
浏览文件 @
597a4f4b
...
...
@@ -205,7 +205,9 @@ protected override int GetTargetCaretPosition(SyntaxNode caretTarget)
if
(
propertyDeclaration
.
AccessorList
!=
null
&&
propertyDeclaration
.
AccessorList
.
Accessors
.
Any
())
{
// move to the end of the last statement of the first accessor
var
firstAccessorStatement
=
propertyDeclaration
.
AccessorList
.
Accessors
.
First
().
Body
.
Statements
.
Last
();
var
firstAccessor
=
propertyDeclaration
.
AccessorList
.
Accessors
[
0
];
var
firstAccessorStatement
=
(
SyntaxNode
)
firstAccessor
.
Body
?.
Statements
.
LastOrDefault
()
??
firstAccessor
.
ExpressionBody
.
Expression
;
return
firstAccessorStatement
.
GetLocation
().
SourceSpan
.
End
;
}
else
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录