Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
lwm1986
roslyn
提交
a9e9b902
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,发现更多精彩内容 >>
提交
a9e9b902
编写于
8月 22, 2017
作者:
C
CyrusNajmabadi
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Use pattern switch
上级
2d90b16f
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
43 addition
and
74 deletion
+43
-74
src/Workspaces/CSharp/Portable/Extensions/SyntaxNodeExtensions.cs
...spaces/CSharp/Portable/Extensions/SyntaxNodeExtensions.cs
+43
-74
未找到文件。
src/Workspaces/CSharp/Portable/Extensions/SyntaxNodeExtensions.cs
浏览文件 @
a9e9b902
...
...
@@ -651,39 +651,22 @@ public static SyntaxNode GetParent(this SyntaxNode node)
public
static
(
SyntaxToken
openBrace
,
SyntaxToken
closeBrace
)
GetBraces
(
this
SyntaxNode
node
)
{
if
(
node
is
NamespaceDeclarationSyntax
namespaceNode
)
{
return
(
namespaceNode
.
OpenBraceToken
,
namespaceNode
.
CloseBraceToken
);
}
if
(
node
is
BaseTypeDeclarationSyntax
baseTypeNode
)
{
return
(
baseTypeNode
.
OpenBraceToken
,
baseTypeNode
.
CloseBraceToken
);
}
if
(
node
is
AccessorListSyntax
accessorListNode
)
{
return
(
accessorListNode
.
OpenBraceToken
,
accessorListNode
.
CloseBraceToken
);
}
if
(
node
is
BlockSyntax
blockNode
)
{
return
(
blockNode
.
OpenBraceToken
,
blockNode
.
CloseBraceToken
);
}
if
(
node
is
SwitchStatementSyntax
switchStatementNode
)
{
return
(
switchStatementNode
.
OpenBraceToken
,
switchStatementNode
.
CloseBraceToken
);
}
if
(
node
is
AnonymousObjectCreationExpressionSyntax
anonymousObjectCreationExpression
)
{
return
(
anonymousObjectCreationExpression
.
OpenBraceToken
,
anonymousObjectCreationExpression
.
CloseBraceToken
);
}
if
(
node
is
InitializerExpressionSyntax
initializeExpressionNode
)
switch
(
node
)
{
return
(
initializeExpressionNode
.
OpenBraceToken
,
initializeExpressionNode
.
CloseBraceToken
);
case
NamespaceDeclarationSyntax
namespaceNode
:
return
(
namespaceNode
.
OpenBraceToken
,
namespaceNode
.
CloseBraceToken
);
case
BaseTypeDeclarationSyntax
baseTypeNode
:
return
(
baseTypeNode
.
OpenBraceToken
,
baseTypeNode
.
CloseBraceToken
);
case
AccessorListSyntax
accessorListNode
:
return
(
accessorListNode
.
OpenBraceToken
,
accessorListNode
.
CloseBraceToken
);
case
BlockSyntax
blockNode
:
return
(
blockNode
.
OpenBraceToken
,
blockNode
.
CloseBraceToken
);
case
SwitchStatementSyntax
switchStatementNode
:
return
(
switchStatementNode
.
OpenBraceToken
,
switchStatementNode
.
CloseBraceToken
);
case
AnonymousObjectCreationExpressionSyntax
anonymousObjectCreationExpression
:
return
(
anonymousObjectCreationExpression
.
OpenBraceToken
,
anonymousObjectCreationExpression
.
CloseBraceToken
);
case
InitializerExpressionSyntax
initializeExpressionNode
:
return
(
initializeExpressionNode
.
OpenBraceToken
,
initializeExpressionNode
.
CloseBraceToken
);
}
return
default
;
...
...
@@ -858,35 +841,29 @@ public static SyntaxNode WithModifiers(this SyntaxNode member, SyntaxTokenList m
public
static
bool
CheckTopLevel
(
this
SyntaxNode
node
,
TextSpan
span
)
{
if
(
node
is
BlockSyntax
block
)
{
return
block
.
ContainsInBlockBody
(
span
);
}
if
(
node
is
ArrowExpressionClauseSyntax
expressionBodiedMember
)
{
return
expressionBodiedMember
.
ContainsInExpressionBodiedMemberBody
(
span
);
}
if
(
node
is
FieldDeclarationSyntax
field
)
switch
(
node
)
{
foreach
(
var
variable
in
field
.
Declaration
.
Variables
)
{
if
(
variable
.
Initializer
!=
null
&&
variable
.
Initializer
.
Span
.
Contains
(
span
))
case
BlockSyntax
block
:
return
block
.
ContainsInBlockBody
(
span
);
case
ArrowExpressionClauseSyntax
expressionBodiedMember
:
return
expressionBodiedMember
.
ContainsInExpressionBodiedMemberBody
(
span
);
case
FieldDeclarationSyntax
field
:
{
return
true
;
}
}
}
foreach
(
var
variable
in
field
.
Declaration
.
Variables
)
{
if
(
variable
.
Initializer
!=
null
&&
variable
.
Initializer
.
Span
.
Contains
(
span
))
{
return
true
;
}
}
if
(
node
is
GlobalStatementSyntax
global
)
{
return
true
;
}
break
;
}
if
(
node
is
ConstructorInitializerSyntax
constructorInitializer
)
{
return
constructorInitializer
.
ContainsInArgument
(
span
);
case
GlobalStatementSyntax
global
:
return
true
;
case
ConstructorInitializerSyntax
constructorInitializer
:
return
constructorInitializer
.
ContainsInArgument
(
span
);
}
return
false
;
...
...
@@ -926,24 +903,16 @@ public static bool ContainsInExpressionBodiedMemberBody(this ArrowExpressionClau
public
static
IEnumerable
<
MemberDeclarationSyntax
>
GetMembers
(
this
SyntaxNode
node
)
{
if
(
node
is
CompilationUnitSyntax
compilation
)
{
return
compilation
.
Members
;
}
if
(
node
is
NamespaceDeclarationSyntax
@namespace
)
{
return
@namespace
.
Members
;
}
if
(
node
is
TypeDeclarationSyntax
type
)
{
return
type
.
Members
;
}
if
(
node
is
EnumDeclarationSyntax
@enum
)
switch
(
node
)
{
return
@enum
.
Members
;
case
CompilationUnitSyntax
compilation
:
return
compilation
.
Members
;
case
NamespaceDeclarationSyntax
@namespace
:
return
@namespace
.
Members
;
case
TypeDeclarationSyntax
type
:
return
type
.
Members
;
case
EnumDeclarationSyntax
@enum
:
return
@enum
.
Members
;
}
return
SpecializedCollections
.
EmptyEnumerable
<
MemberDeclarationSyntax
>();
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录