diff options
| author | Patrick Walton <pcwalton@mimiga.net> | 2012-12-10 11:58:37 -0800 |
|---|---|---|
| committer | Patrick Walton <pcwalton@mimiga.net> | 2012-12-13 15:49:07 -0800 |
| commit | cd120736cbe9a8157a8d0e3fb66f48a32545ef68 (patch) | |
| tree | b996632e467b591f6d2cdde343017dc25ab3efbd /src/libsyntax | |
| parent | 45848b20402cb3ad07dd0b0442155ca9c6b14f01 (diff) | |
| download | rust-cd120736cbe9a8157a8d0e3fb66f48a32545ef68.tar.gz rust-cd120736cbe9a8157a8d0e3fb66f48a32545ef68.zip | |
librustc: Allow moves out of `self`. r=nmatsakis
Diffstat (limited to 'src/libsyntax')
| -rw-r--r-- | src/libsyntax/ast.rs | 13 | ||||
| -rw-r--r-- | src/libsyntax/ast_util.rs | 6 |
2 files changed, 13 insertions, 6 deletions
diff --git a/src/libsyntax/ast.rs b/src/libsyntax/ast.rs index c21aa7d248e..444f90c7f04 100644 --- a/src/libsyntax/ast.rs +++ b/src/libsyntax/ast.rs @@ -118,7 +118,8 @@ enum def { def_static_method(/* method */ def_id, /* trait */ Option<def_id>, purity), - def_self(node_id), + def_self(node_id, bool /* is_implicit */), + def_self_ty(node_id), def_mod(def_id), def_foreign_mod(def_id), def_const(def_id), @@ -156,9 +157,15 @@ impl def : cmp::Eq { _ => false } } - def_self(e0a) => { + def_self(e0a, e1a) => { match (*other) { - def_self(e0b) => e0a == e0b, + def_self(e0b, e1b) => e0a == e0b && e1a == e1b, + _ => false + } + } + def_self_ty(e0a) => { + match (*other) { + def_self_ty(e0b) => e0a == e0b, _ => false } } diff --git a/src/libsyntax/ast_util.rs b/src/libsyntax/ast_util.rs index 3a8d399a45c..ef7bd1d8928 100644 --- a/src/libsyntax/ast_util.rs +++ b/src/libsyntax/ast_util.rs @@ -71,8 +71,8 @@ pure fn def_id_of_def(d: def) -> def_id { def_use(id) | def_struct(id) => { id } - def_arg(id, _) | def_local(id, _) | def_self(id) | - def_upvar(id, _, _, _) | def_binding(id, _) | def_region(id) + def_arg(id, _) | def_local(id, _) | def_self(id, _) | def_self_ty(id) + | def_upvar(id, _, _, _) | def_binding(id, _) | def_region(id) | def_typaram_binder(id) | def_label(id) => { local_def(id) } @@ -384,7 +384,7 @@ impl inlined_item: inlined_item_utils { referring to a def_self */ fn is_self(d: ast::def) -> bool { match d { - def_self(_) => true, + def_self(*) => true, def_upvar(_, d, _, _) => is_self(*d), _ => false } |
