Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
int
Rust
提交
1d6657dd
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,发现更多精彩内容 >>
未验证
提交
1d6657dd
编写于
2月 23, 2019
作者:
M
Mazdak Farrokhzad
提交者:
GitHub
2月 23, 2019
浏览文件
操作
浏览文件
下载
差异文件
Rollup merge of #58199 - clintfred:partial-move-err-msg, r=estebank
Add better error message for partial move closes #56657 r? @davidtwco
上级
f19bec89
02fe6a7b
变更
9
隐藏空白更改
内联
并排
Showing
9 changed file
with
18 addition
and
12 deletion
+18
-12
src/librustc_mir/borrow_check/error_reporting.rs
src/librustc_mir/borrow_check/error_reporting.rs
+8
-2
src/test/ui/borrowck/borrowck-uninit-field-access.ast.nll.stderr
...t/ui/borrowck/borrowck-uninit-field-access.ast.nll.stderr
+1
-1
src/test/ui/borrowck/borrowck-uninit-field-access.mir.stderr
src/test/ui/borrowck/borrowck-uninit-field-access.mir.stderr
+1
-1
src/test/ui/moves/moves-based-on-type-cyclic-types-issue-4821.nll.stderr
...es/moves-based-on-type-cyclic-types-issue-4821.nll.stderr
+1
-1
src/test/ui/moves/moves-based-on-type-match-bindings.nll.stderr
...st/ui/moves/moves-based-on-type-match-bindings.nll.stderr
+1
-1
src/test/ui/nll/move-subpaths-moves-root.stderr
src/test/ui/nll/move-subpaths-moves-root.stderr
+1
-1
src/test/ui/ref-suggestion.nll.stderr
src/test/ui/ref-suggestion.nll.stderr
+1
-1
src/test/ui/unsized-locals/borrow-after-move.nll.stderr
src/test/ui/unsized-locals/borrow-after-move.nll.stderr
+3
-3
src/test/ui/unsized-locals/double-move.nll.stderr
src/test/ui/unsized-locals/double-move.nll.stderr
+1
-1
未找到文件。
src/librustc_mir/borrow_check/error_reporting.rs
浏览文件 @
1d6657dd
...
...
@@ -130,6 +130,11 @@ pub(super) fn report_use_of_moved_or_uninitialized(
);
let
mut
is_loop_move
=
false
;
let
is_partial_move
=
move_site_vec
.iter
()
.any
(|
move_site
|
{
let
move_out
=
self
.move_data.moves
[(
*
move_site
)
.moi
];
let
moved_place
=
&
self
.move_data.move_paths
[
move_out
.path
]
.place
;
used_place
!=
moved_place
&&
used_place
.is_prefix_of
(
moved_place
)
});
for
move_site
in
&
move_site_vec
{
let
move_out
=
self
.move_data.moves
[(
*
move_site
)
.moi
];
let
moved_place
=
&
self
.move_data.move_paths
[
move_out
.path
]
.place
;
...
...
@@ -175,8 +180,9 @@ pub(super) fn report_use_of_moved_or_uninitialized(
err
.span_label
(
span
,
format!
(
"value {} here after move"
,
desired_action
.as_verb_in_past_tense
()
"value {} here {}"
,
desired_action
.as_verb_in_past_tense
(),
if
is_partial_move
{
"after partial move"
}
else
{
"after move"
},
),
);
}
...
...
src/test/ui/borrowck/borrowck-uninit-field-access.ast.nll.stderr
浏览文件 @
1d6657dd
...
...
@@ -20,7 +20,7 @@ error[E0382]: use of moved value: `line2`
LL | let _moved = (line2.origin, line2.middle);
| ------------ value moved here
LL | line2.consume(); //[ast]~ ERROR use of partially moved value: `line2` [E0382]
| ^^^^^ value used here after move
| ^^^^^ value used here after
partial
move
|
= note: move occurs because `line2.middle` has type `Point`, which does not implement the `Copy` trait
...
...
src/test/ui/borrowck/borrowck-uninit-field-access.mir.stderr
浏览文件 @
1d6657dd
...
...
@@ -20,7 +20,7 @@ error[E0382]: use of moved value: `line2`
LL | let _moved = (line2.origin, line2.middle);
| ------------ value moved here
LL | line2.consume(); //[ast]~ ERROR use of partially moved value: `line2` [E0382]
| ^^^^^ value used here after move
| ^^^^^ value used here after
partial
move
|
= note: move occurs because `line2.middle` has type `Point`, which does not implement the `Copy` trait
...
...
src/test/ui/moves/moves-based-on-type-cyclic-types-issue-4821.nll.stderr
浏览文件 @
1d6657dd
...
...
@@ -5,7 +5,7 @@ LL | Some(right) => consume(right),
| ----- value moved here
...
LL | consume(node) + r //~ ERROR use of partially moved value: `node`
| ^^^^ value used here after move
| ^^^^ value used here after
partial
move
|
= note: move occurs because value has type `std::boxed::Box<List>`, which does not implement the `Copy` trait
...
...
src/test/ui/moves/moves-based-on-type-match-bindings.nll.stderr
浏览文件 @
1d6657dd
...
...
@@ -5,7 +5,7 @@ LL | Foo {f} => {}
| - value moved here
...
LL | touch(&x); //~ ERROR use of partially moved value: `x`
| ^^ value borrowed here after move
| ^^ value borrowed here after
partial
move
|
= note: move occurs because `x.f` has type `std::string::String`, which does not implement the `Copy` trait
...
...
src/test/ui/nll/move-subpaths-moves-root.stderr
浏览文件 @
1d6657dd
...
...
@@ -4,7 +4,7 @@ error[E0382]: use of moved value: `x`
LL | drop(x.0);
| --- value moved here
LL | drop(x); //~ ERROR use of moved value
| ^ value used here after move
| ^ value used here after
partial
move
|
= note: move occurs because `x.0` has type `std::vec::Vec<i32>`, which does not implement the `Copy` trait
...
...
src/test/ui/ref-suggestion.nll.stderr
浏览文件 @
1d6657dd
...
...
@@ -25,7 +25,7 @@ LL | (Some(y), ()) => {},
| - value moved here
...
LL | x; //~ ERROR use of partially moved value
| ^ value used here after move
| ^ value used here after
partial
move
|
= note: move occurs because value has type `std::vec::Vec<i32>`, which does not implement the `Copy` trait
...
...
src/test/ui/unsized-locals/borrow-after-move.nll.stderr
浏览文件 @
1d6657dd
...
...
@@ -5,7 +5,7 @@ LL | let y = *x;
| -- value moved here
LL | drop_unsized(y);
LL | println!("{}", &x);
| ^^ value borrowed here after move
| ^^ value borrowed here after
partial
move
|
= note: move occurs because `*x` has type `str`, which does not implement the `Copy` trait
...
...
@@ -27,7 +27,7 @@ LL | let y = *x;
| -- value moved here
LL | y.foo();
LL | println!("{}", &x);
| ^^ value borrowed here after move
| ^^ value borrowed here after
partial
move
|
= note: move occurs because `*x` has type `str`, which does not implement the `Copy` trait
...
...
@@ -48,7 +48,7 @@ error[E0382]: borrow of moved value: `x`
LL | x.foo();
| - value moved here
LL | println!("{}", &x);
| ^^ value borrowed here after move
| ^^ value borrowed here after
partial
move
|
= note: move occurs because `*x` has type `str`, which does not implement the `Copy` trait
...
...
src/test/ui/unsized-locals/double-move.nll.stderr
浏览文件 @
1d6657dd
...
...
@@ -14,7 +14,7 @@ error[E0382]: use of moved value: `x`
LL | let _y = *x;
| -- value moved here
LL | drop_unsized(x); //~ERROR use of moved value
| ^ value used here after move
| ^ value used here after
partial
move
|
= note: move occurs because `*x` has type `str`, which does not implement the `Copy` trait
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录