Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
lwm1986
roslyn
提交
3344bc74
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,发现更多精彩内容 >>
提交
3344bc74
编写于
4月 26, 2020
作者:
A
Alireza Habibi
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Simplify code
上级
867dcd26
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
7 addition
and
18 deletion
+7
-18
src/Features/CSharp/Portable/UsePatternCombinators/CSharpUsePatternCombinatorsAnalyzer.cs
...PatternCombinators/CSharpUsePatternCombinatorsAnalyzer.cs
+7
-18
未找到文件。
src/Features/CSharp/Portable/UsePatternCombinators/CSharpUsePatternCombinatorsAnalyzer.cs
浏览文件 @
3344bc74
...
...
@@ -18,9 +18,7 @@ internal static class CSharpUsePatternCombinatorsAnalyzer
public
static
AnalyzedPattern
?
Analyze
(
IOperation
operation
)
{
var
pattern
=
ParsePattern
(
operation
);
return
pattern
?.
Target
.
Syntax
is
ExpressionSyntax
?
pattern
:
null
;
return
pattern
?.
Target
.
Syntax
is
ExpressionSyntax
?
pattern
:
null
;
}
private
enum
ConstantResult
...
...
@@ -64,10 +62,10 @@ private enum ConstantResult
return
Not
.
Create
(
ParsePattern
(
op
.
Operand
));
case
IIsTypeOperation
{
Syntax
:
BinaryExpressionSyntax
{
Right
:
TypeSyntax
type
}
}
op
:
return
new
Type
(
type
,
GetTarget
(
op
.
ValueOperand
)
);
return
new
Type
(
type
,
op
.
ValueOperand
);
case
IIsPatternOperation
{
Pattern
:
{
Syntax
:
PatternSyntax
pattern
}
}
op
:
return
new
Source
(
pattern
,
GetTarget
(
op
.
Value
)
);
return
new
Source
(
pattern
,
op
.
Value
);
case
IParenthesizedOperation
op
:
return
ParsePattern
(
op
.
Operand
);
...
...
@@ -107,9 +105,9 @@ private static ConstantResult DetermineConstant(IBinaryOperation op)
// We need to flip the operator if the constant is on the left-hand-side.
// This is because relational patterns only come in the prefix form.
// For instance: `123 > x` would be rewritten as `x is < 123`.
=>
new
Relational
(
Flip
(
op
.
OperatorKind
),
left
,
GetTarget
(
op
.
RightOperand
)
),
=>
new
Relational
(
Flip
(
op
.
OperatorKind
),
left
,
op
.
RightOperand
),
ConstantResult
.
Right
when
op
.
RightOperand
.
Syntax
is
ExpressionSyntax
right
=>
new
Relational
(
op
.
OperatorKind
,
right
,
GetTarget
(
op
.
LeftOperand
)
),
=>
new
Relational
(
op
.
OperatorKind
,
right
,
op
.
LeftOperand
),
_
=>
null
};
}
...
...
@@ -119,9 +117,9 @@ private static ConstantResult DetermineConstant(IBinaryOperation op)
return
DetermineConstant
(
op
)
switch
{
ConstantResult
.
Left
when
op
.
LeftOperand
.
Syntax
is
ExpressionSyntax
left
=>
new
Constant
(
left
,
GetTarget
(
op
.
RightOperand
)
),
=>
new
Constant
(
left
,
op
.
RightOperand
),
ConstantResult
.
Right
when
op
.
RightOperand
.
Syntax
is
ExpressionSyntax
right
=>
new
Constant
(
right
,
GetTarget
(
op
.
LeftOperand
)
),
=>
new
Constant
(
right
,
op
.
LeftOperand
),
_
=>
null
};
}
...
...
@@ -166,15 +164,6 @@ private static bool IsConstant(IOperation operation)
?
IsConstant
(
op
.
Operand
)
:
operation
.
ConstantValue
.
HasValue
;
}
private
static
IOperation
GetTarget
(
IOperation
operation
)
{
// Unwrap explicit casts because the pattern will emit those anyways.
// For instance, `(int)o == 123` would be the same as `o is 123`.
return
operation
is
IConversionOperation
{
IsImplicit
:
false
}
op
?
op
.
Operand
:
operation
;
}
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录