Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
lwm1986
roslyn
提交
dc19ae4f
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,发现更多精彩内容 >>
提交
dc19ae4f
编写于
7月 15, 2019
作者:
C
Cyrus Najmabadi
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Simplify
上级
6db545eb
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
63 addition
and
157 deletion
+63
-157
src/ExpressionEvaluator/Core/Source/ExpressionCompiler/PDB/PdbHelpers.cs
...valuator/Core/Source/ExpressionCompiler/PDB/PdbHelpers.cs
+63
-157
未找到文件。
src/ExpressionEvaluator/Core/Source/ExpressionCompiler/PDB/PdbHelpers.cs
浏览文件 @
dc19ae4f
// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using
System.Diagnostics
;
using
Microsoft.CodeAnalysis.PooledObjects
;
using
Microsoft.DiaSymReader
;
using
Roslyn.Utilities
;
...
...
@@ -82,175 +81,82 @@ public static ConstantValue GetSymConstantValue(ITypeSymbol type, object symValu
type
=
((
INamedTypeSymbol
)
type
).
EnumUnderlyingType
;
}
short
shortValue
;
switch
(
type
.
SpecialType
)
return
type
.
SpecialType
switch
{
case
SpecialType
.
System_Boolean
:
if
(!(
symValue
is
short
))
{
return
ConstantValue
.
Bad
;
}
SpecialType
.
System_Boolean
=>
symValue
is
short
shortVal
?
ConstantValue
.
Create
(
shortVal
!=
0
)
:
ConstantValue
.
Bad
,
return
ConstantValue
.
Create
((
short
)
symValue
!=
0
);
SpecialType
.
System_Byte
=>
symValue
is
short
shortVal
&&
unchecked
((
byte
)
shortVal
)
==
shortVal
?
ConstantValue
.
Create
((
byte
)
shortVal
)
:
ConstantValue
.
Bad
,
case
SpecialType
.
System_Byte
:
if
(!(
symValue
is
short
))
{
return
ConstantValue
.
Bad
;
}
SpecialType
.
System_SByte
=>
symValue
is
short
shortVal
&&
unchecked
((
sbyte
)
shortVal
)
==
shortVal
?
ConstantValue
.
Create
((
sbyte
)
shortVal
)
:
ConstantValue
.
Bad
,
shortValue
=
(
short
)
symValue
;
if
(
unchecked
((
byte
)
shortValue
)
!=
shortValue
)
{
return
ConstantValue
.
Bad
;
}
SpecialType
.
System_Int16
=>
symValue
is
short
shortVal
?
ConstantValue
.
Create
(
shortVal
)
:
ConstantValue
.
Bad
,
return
ConstantValue
.
Create
((
byte
)
shortValue
);
SpecialType
.
System_Char
=>
symValue
is
ushort
ushortVal
?
ConstantValue
.
Create
((
char
)
ushortVal
)
:
ConstantValue
.
Bad
,
case
SpecialType
.
System_SByte
:
if
(!(
symValue
is
short
))
{
return
ConstantValue
.
Bad
;
}
SpecialType
.
System_UInt16
=>
symValue
is
ushort
ushortVal
?
ConstantValue
.
Create
(
ushortVal
)
:
ConstantValue
.
Bad
,
shortValue
=
(
short
)
symValue
;
if
(
unchecked
((
sbyte
)
shortValue
)
!=
shortValue
)
{
return
ConstantValue
.
Bad
;
}
SpecialType
.
System_Int32
=>
symValue
is
int
intVal
?
ConstantValue
.
Create
(
intVal
)
:
ConstantValue
.
Bad
,
return
ConstantValue
.
Create
((
sbyte
)
shortValue
);
SpecialType
.
System_UInt32
=>
symValue
is
uint
uintVal
?
ConstantValue
.
Create
(
uintVal
)
:
ConstantValue
.
Bad
,
case
SpecialType
.
System_Int16
:
if
(!(
symValue
is
short
))
{
return
ConstantValue
.
Bad
;
}
SpecialType
.
System_Int64
=>
symValue
is
long
longVal
?
ConstantValue
.
Create
(
longVal
)
:
ConstantValue
.
Bad
,
return
ConstantValue
.
Create
((
short
)
symValue
);
SpecialType
.
System_UInt64
=>
symValue
is
ulong
ulongVal
?
ConstantValue
.
Create
(
ulongVal
)
:
ConstantValue
.
Bad
,
case
SpecialType
.
System_Char
:
if
(!(
symValue
is
ushort
))
{
return
ConstantValue
.
Bad
;
}
SpecialType
.
System_Single
=>
symValue
is
float
floatVal
?
ConstantValue
.
Create
(
floatVal
)
:
ConstantValue
.
Bad
,
return
ConstantValue
.
Create
((
char
)(
ushort
)
symValue
);
SpecialType
.
System_Double
=>
symValue
is
double
doubleVal
?
ConstantValue
.
Create
(
doubleVal
)
:
ConstantValue
.
Bad
,
case
SpecialType
.
System_UInt16
:
if
(!(
symValue
is
ushort
))
{
return
ConstantValue
.
Bad
;
}
return
ConstantValue
.
Create
((
ushort
)
symValue
);
case
SpecialType
.
System_Int32
:
if
(!(
symValue
is
int
))
{
return
ConstantValue
.
Bad
;
}
return
ConstantValue
.
Create
((
int
)
symValue
);
case
SpecialType
.
System_UInt32
:
if
(!(
symValue
is
uint
))
{
return
ConstantValue
.
Bad
;
}
return
ConstantValue
.
Create
((
uint
)
symValue
);
case
SpecialType
.
System_Int64
:
if
(!(
symValue
is
long
))
{
return
ConstantValue
.
Bad
;
}
return
ConstantValue
.
Create
((
long
)
symValue
);
case
SpecialType
.
System_UInt64
:
if
(!(
symValue
is
ulong
))
{
return
ConstantValue
.
Bad
;
}
return
ConstantValue
.
Create
((
ulong
)
symValue
);
case
SpecialType
.
System_Single
:
if
(!(
symValue
is
float
))
{
return
ConstantValue
.
Bad
;
}
return
ConstantValue
.
Create
((
float
)
symValue
);
case
SpecialType
.
System_Double
:
if
(!(
symValue
is
double
))
{
return
ConstantValue
.
Bad
;
}
return
ConstantValue
.
Create
((
double
)
symValue
);
case
SpecialType
.
System_String
:
if
(
symValue
is
int
intVal1
&&
intVal1
==
0
)
{
return
ConstantValue
.
Null
;
}
if
(
symValue
==
null
)
{
return
ConstantValue
.
Create
(
string
.
Empty
);
}
if
(!(
symValue
is
string
str
))
{
return
ConstantValue
.
Bad
;
}
return
ConstantValue
.
Create
(
str
);
case
SpecialType
.
System_Object
:
if
(
symValue
is
int
intVal2
&&
intVal2
==
0
)
{
return
ConstantValue
.
Null
;
}
return
ConstantValue
.
Bad
;
case
SpecialType
.
System_Decimal
:
if
(!(
symValue
is
decimal
decimalValue
))
{
return
ConstantValue
.
Bad
;
}
return
ConstantValue
.
Create
(
decimalValue
);
case
SpecialType
.
System_DateTime
:
if
(!(
symValue
is
double
))
{
return
ConstantValue
.
Bad
;
}
return
ConstantValue
.
Create
(
DateTimeUtilities
.
ToDateTime
((
double
)
symValue
));
case
SpecialType
.
None
:
if
(
type
.
IsReferenceType
)
{
if
(
symValue
is
int
intValue3
&&
intValue3
==
0
)
{
return
ConstantValue
.
Null
;
}
return
ConstantValue
.
Bad
;
}
return
ConstantValue
.
Bad
;
default
:
return
ConstantValue
.
Bad
;
}
SpecialType
.
System_String
=>
symValue
switch
{
0
=>
ConstantValue
.
Null
,
null
=>
ConstantValue
.
Create
(
string
.
Empty
),
string
str
=>
ConstantValue
.
Create
(
str
),
_
=>
ConstantValue
.
Bad
,
},
SpecialType
.
System_Object
=>
symValue
is
0
?
ConstantValue
.
Null
:
ConstantValue
.
Bad
,
SpecialType
.
System_Decimal
=>
symValue
is
decimal
decimalValue
?
ConstantValue
.
Create
(
decimalValue
)
:
ConstantValue
.
Bad
,
SpecialType
.
System_DateTime
=>
symValue
is
double
doubleVal
?
ConstantValue
.
Create
(
DateTimeUtilities
.
ToDateTime
(
doubleVal
))
:
ConstantValue
.
Bad
,
SpecialType
.
None
=>
type
.
IsReferenceType
&&
symValue
is
0
?
ConstantValue
.
Null
:
ConstantValue
.
Bad
,
_
=>
ConstantValue
.
Bad
,
};
}
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录