Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
int
Rust
提交
920cf4b4
R
Rust
项目概览
int
/
Rust
12 个月 前同步成功
通知
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,发现更多精彩内容 >>
提交
920cf4b4
编写于
8月 08, 2015
作者:
B
bors
浏览文件
操作
浏览文件
下载
差异文件
Auto merge of #27596 - tsion:fix-27450, r=arielb1
Fixes #27450. r? @steveklabnik
上级
e5d90d98
f351e762
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
6 addition
and
3 deletion
+6
-3
src/librustc_typeck/check/cast.rs
src/librustc_typeck/check/cast.rs
+4
-1
src/test/compile-fail/cast-rfc0401.rs
src/test/compile-fail/cast-rfc0401.rs
+1
-1
src/test/compile-fail/fat-ptr-cast.rs
src/test/compile-fail/fat-ptr-cast.rs
+1
-1
未找到文件。
src/librustc_typeck/check/cast.rs
浏览文件 @
920cf4b4
...
...
@@ -100,6 +100,7 @@ enum CastError {
DifferingKinds
,
IllegalCast
,
NeedViaPtr
,
NeedViaThinPtr
,
NeedViaInt
,
NeedViaUsize
,
NonScalar
,
...
...
@@ -120,6 +121,7 @@ fn report_cast_error<'a>(&self, fcx: &FnCtxt<'a, 'tcx>,
e
:
CastError
)
{
match
e
{
CastError
::
NeedViaPtr
|
CastError
::
NeedViaThinPtr
|
CastError
::
NeedViaInt
|
CastError
::
NeedViaUsize
=>
{
fcx
.type_error_message
(
self
.span
,
|
actual
|
{
...
...
@@ -130,6 +132,7 @@ fn report_cast_error<'a>(&self, fcx: &FnCtxt<'a, 'tcx>,
fcx
.ccx.tcx.sess
.fileline_help
(
self
.span
,
&
format!
(
"cast through {} first"
,
match
e
{
CastError
::
NeedViaPtr
=>
"a raw pointer"
,
CastError
::
NeedViaThinPtr
=>
"a thin pointer"
,
CastError
::
NeedViaInt
=>
"an integer"
,
CastError
::
NeedViaUsize
=>
"a usize"
,
_
=>
unreachable!
()
...
...
@@ -324,7 +327,7 @@ fn check_ptr_addr_cast<'a>(&self,
if
fcx
.type_is_known_to_be_sized
(
m_expr
.ty
,
self
.span
)
{
Ok
(
CastKind
::
PtrAddrCast
)
}
else
{
Err
(
CastError
::
NeedViaPtr
)
Err
(
CastError
::
NeedVia
Thin
Ptr
)
}
}
...
...
src/test/compile-fail/cast-rfc0401.rs
浏览文件 @
920cf4b4
...
...
@@ -96,7 +96,7 @@ fn main()
let
_
=
&
f
as
*
const
f64
;
//~ ERROR casting
let
_
=
fat_v
as
usize
;
//~^ ERROR casting
//~^^ HELP through a
raw
pointer first
//~^^ HELP through a
thin
pointer first
let
a
:
*
const
str
=
"hello"
;
let
_
=
a
as
*
const
Foo
;
...
...
src/test/compile-fail/fat-ptr-cast.rs
浏览文件 @
920cf4b4
...
...
@@ -21,7 +21,7 @@ fn main() {
b
as
usize
;
//~ ERROR non-scalar cast
p
as
usize
;
//~^ ERROR casting
//~^^ HELP cast through a
raw
pointer
//~^^ HELP cast through a
thin
pointer
// #22955
q
as
*
const
[
i32
];
//~ ERROR casting
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录