diff options
| author | Niko Matsakis <niko@alum.mit.edu> | 2013-01-10 10:59:58 -0800 |
|---|---|---|
| committer | Niko Matsakis <niko@alum.mit.edu> | 2013-01-31 12:09:00 -0800 |
| commit | 0682ad0eb9a6b268498a81b2e16a40544e44f0fa (patch) | |
| tree | 694819bae28cd319401c121afa4daa00adcbdde2 /src/libsyntax/ext/auto_encode.rs | |
| parent | 42b462e0765f02fd7bb0f2613240ae2489a47fee (diff) | |
| download | rust-0682ad0eb9a6b268498a81b2e16a40544e44f0fa.tar.gz rust-0682ad0eb9a6b268498a81b2e16a40544e44f0fa.zip | |
Finalize moves-based-on-type implementation.
Changes: - Refactor move mode computation - Removes move mode arguments, unary move, capture clauses (though they still parse for backwards compatibility) - Simplify how moves are handled in trans - Fix a number of illegal copies that cropped up - Workaround for bug involving def-ids in params (see details below) Future work (I'll open bugs for these...): - Improve error messages for moves that are due to bindings - Add support for moving owned content like a.b.c to borrow check, test in trans (but I think it'll "just work") - Proper fix for def-ids in params Def ids in params: Move captures into a map instead of recomputing. This is a workaround for a larger bug having to do with the def-ids associated with ty_params, which are not always properly preserved when inlining. I am not sure of my preferred fix for the larger bug yet. This current fix removes the only code in trans that I know of which relies on ty_param def-ids, but feels fragile.
Diffstat (limited to 'src/libsyntax/ext/auto_encode.rs')
| -rw-r--r-- | src/libsyntax/ext/auto_encode.rs | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/src/libsyntax/ext/auto_encode.rs b/src/libsyntax/ext/auto_encode.rs index e4ad518cc80..a2484e2d6df 100644 --- a/src/libsyntax/ext/auto_encode.rs +++ b/src/libsyntax/ext/auto_encode.rs @@ -569,7 +569,7 @@ fn mk_ser_method( pat: @ast::pat { id: cx.next_id(), node: ast::pat_ident( - ast::bind_by_value, + ast::bind_by_copy, ast_util::ident_to_path(span, cx.ident_of(~"__s")), None), span: span, @@ -633,7 +633,7 @@ fn mk_deser_method( pat: @ast::pat { id: cx.next_id(), node: ast::pat_ident( - ast::bind_by_value, + ast::bind_by_copy, ast_util::ident_to_path(span, cx.ident_of(~"__d")), None), span: span, @@ -1095,7 +1095,7 @@ fn mk_enum_deser_body( pat: @ast::pat { id: cx.next_id(), node: ast::pat_ident( - ast::bind_by_value, + ast::bind_by_copy, ast_util::ident_to_path(span, cx.ident_of(~"i")), None), span: span, @@ -1114,8 +1114,7 @@ fn mk_enum_deser_body( span, ast::expr_match(cx.expr_var(span, ~"i"), arms) ) - ), - @~[] + ) ) ); |
