Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
lwm1986
roslyn
提交
d2907a4f
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,发现更多精彩内容 >>
提交
d2907a4f
编写于
7月 18, 2017
作者:
C
CyrusNajmabadi
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Remove dead code from GenerateConstructor.
上级
6b99a66a
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
4 addition
and
63 deletion
+4
-63
src/Features/Core/Portable/GenerateMember/GenerateConstructor/AbstractGenerateConstructorService.Editor.cs
...eConstructor/AbstractGenerateConstructorService.Editor.cs
+4
-61
src/Features/Core/Portable/GenerateMember/GenerateConstructor/AbstractGenerateConstructorService.State.cs
...teConstructor/AbstractGenerateConstructorService.State.cs
+0
-2
未找到文件。
src/Features/Core/Portable/GenerateMember/GenerateConstructor/AbstractGenerateConstructorService.Editor.cs
浏览文件 @
d2907a4f
...
...
@@ -44,29 +44,17 @@ private partial class Editor
internal
async
Task
<
Document
>
GetEditAsync
()
{
// First, if we were just given the constructor and the type to generate it into
// then just go generat that constructor. There's nothing special we need to do.
var
edit
=
await
GenerateDelegatedConstructorAsync
().
ConfigureAwait
(
false
);
if
(
edit
!=
null
)
{
return
edit
;
}
// then, see if there's an accessible base constructor that would accept these
// See if there's an accessible base constructor that would accept these
// types, then just call into that instead of generating fields.
//
// then, see if there are any constructors that would take the first 'n' arguments
// we've provided. If so, delegate to those, and then create a field for any
// remaining arguments. Try to match from largest to smallest.
edit
=
await
GenerateThisOrBaseDelegatingConstructorAsync
().
ConfigureAwait
(
false
);
if
(
edit
!=
null
)
{
return
edit
;
}
//
// Otherwise, just generate a normal constructor that assigns any provided
// parameters into fields.
return
await
GenerateFieldDelegatingConstructorAsync
().
ConfigureAwait
(
false
);
return
await
GenerateThisOrBaseDelegatingConstructorAsync
().
ConfigureAwait
(
false
)
??
await
GenerateFieldDelegatingConstructorAsync
().
ConfigureAwait
(
false
);
}
private
async
Task
<
Document
>
GenerateThisOrBaseDelegatingConstructorAsync
()
...
...
@@ -97,51 +85,6 @@ private async Task<Document> GenerateThisOrBaseDelegatingConstructorAsync(int ar
return
null
;
}
private
async
Task
<
Document
>
GenerateDelegatedConstructorAsync
()
{
var
delegatedConstructor
=
_state
.
DelegatedConstructorOpt
;
if
(
delegatedConstructor
==
null
)
{
return
null
;
}
var
namedType
=
_state
.
TypeToGenerateIn
;
if
(
namedType
==
null
)
{
return
null
;
}
// There was a best match. Call it directly.
var
provider
=
_document
.
Project
.
Solution
.
Workspace
.
Services
.
GetLanguageServices
(
_state
.
TypeToGenerateIn
.
Language
);
var
syntaxFactory
=
provider
.
GetService
<
SyntaxGenerator
>();
var
codeGenerationService
=
provider
.
GetService
<
ICodeGenerationService
>();
var
isThis
=
namedType
.
Equals
(
delegatedConstructor
.
ContainingType
);
var
delegatingArguments
=
syntaxFactory
.
CreateArguments
(
delegatedConstructor
.
Parameters
);
var
baseConstructorArguments
=
isThis
?
default
:
delegatingArguments
;
var
thisConstructorArguments
=
isThis
?
delegatingArguments
:
default
;
var
constructor
=
CodeGenerationSymbolFactory
.
CreateConstructorSymbol
(
attributes
:
default
,
accessibility
:
Accessibility
.
Public
,
modifiers
:
default
,
typeName
:
_state
.
TypeToGenerateIn
.
Name
,
parameters
:
delegatedConstructor
.
Parameters
,
baseConstructorArguments
:
baseConstructorArguments
,
thisConstructorArguments
:
thisConstructorArguments
);
var
result
=
await
codeGenerationService
.
AddMembersAsync
(
_document
.
Project
.
Solution
,
_state
.
TypeToGenerateIn
,
new
List
<
ISymbol
>
{
constructor
},
new
CodeGenerationOptions
(
_state
.
Token
.
GetLocation
()),
_cancellationToken
)
.
ConfigureAwait
(
false
);
return
result
;
}
private
async
Task
<
Document
>
GenerateDelegatingConstructorAsync
(
int
argumentCount
,
INamedTypeSymbol
namedType
)
...
...
src/Features/Core/Portable/GenerateMember/GenerateConstructor/AbstractGenerateConstructorService.State.cs
浏览文件 @
d2907a4f
...
...
@@ -29,8 +29,6 @@ protected internal class State
public
IList
<
RefKind
>
ParameterRefKinds
{
get
;
private
set
;
}
public
ImmutableArray
<
ITypeSymbol
>
ParameterTypes
{
get
;
private
set
;
}
public
IMethodSymbol
DelegatedConstructorOpt
{
get
;
private
set
;
}
public
SyntaxToken
Token
{
get
;
private
set
;
}
public
bool
IsConstructorInitializerGeneration
{
get
;
private
set
;
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录