Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
int
Rust
提交
b3bf7305
R
Rust
项目概览
int
/
Rust
大约 1 年 前同步成功
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
Rust
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
b3bf7305
编写于
11月 03, 2016
作者:
O
Oliver Schneider
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
don't panic on invalid primval types, report an error instead
上级
19c44dab
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
8 addition
and
3 deletion
+8
-3
src/error.rs
src/error.rs
+6
-1
src/interpreter/mod.rs
src/interpreter/mod.rs
+2
-2
未找到文件。
src/error.rs
浏览文件 @
b3bf7305
use
std
::
error
::
Error
;
use
std
::
fmt
;
use
rustc
::
mir
;
use
rustc
::
ty
::
BareFnTy
;
use
rustc
::
ty
::
{
BareFnTy
,
Ty
}
;
use
memory
::
Pointer
;
use
rustc_const_math
::
ConstMathErr
;
use
syntax
::
codemap
::
Span
;
...
...
@@ -46,6 +46,7 @@ pub enum EvalError<'tcx> {
ModifiedConstantMemory
,
AssumptionNotHeld
,
InlineAsm
,
TypeNotPrimitive
(
Ty
<
'tcx
>
),
}
pub
type
EvalResult
<
'tcx
,
T
>
=
Result
<
T
,
EvalError
<
'tcx
>>
;
...
...
@@ -106,6 +107,8 @@ fn description(&self) -> &str {
"`assume` argument was false"
,
EvalError
::
InlineAsm
=>
"cannot evaluate inline assembly"
,
EvalError
::
TypeNotPrimitive
(
_
)
=>
"expected primitive type, got nonprimitive"
,
}
}
...
...
@@ -134,6 +137,8 @@ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
EvalError
::
AlignmentCheckFailed
{
required
,
has
}
=>
write!
(
f
,
"tried to access memory with alignment {}, but alignment {} is required"
,
has
,
required
),
EvalError
::
TypeNotPrimitive
(
ref
ty
)
=>
write!
(
f
,
"expected primitive type, got {}"
,
ty
),
_
=>
write!
(
f
,
"{}"
,
self
.description
()),
}
}
...
...
src/interpreter/mod.rs
浏览文件 @
b3bf7305
...
...
@@ -1325,11 +1325,11 @@ fn ty_to_primval_kind(&self, ty: Ty<'tcx>) -> EvalResult<'tcx, PrimValKind> {
PrimValKind
::
from_uint_size
(
size
)
}
}
else
{
bug!
(
"primitive read of non-clike enum: {:?}"
,
ty
);
return
Err
(
EvalError
::
TypeNotPrimitive
(
ty
)
);
}
},
_
=>
bug!
(
"primitive read of non-primitive type: {:?}"
,
ty
),
_
=>
return
Err
(
EvalError
::
TypeNotPrimitive
(
ty
)
),
};
Ok
(
kind
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录