diff options
| author | Vadim Petrochenkov <vadim.petrochenkov@gmail.com> | 2015-09-22 19:42:51 +0300 |
|---|---|---|
| committer | Vadim Petrochenkov <vadim.petrochenkov@gmail.com> | 2015-09-22 19:58:30 +0300 |
| commit | 45b445e5a3a1f084becad71cd1ffbbff399a6462 (patch) | |
| tree | b22950a56385755f26065b550a9e711b53a52702 | |
| parent | 2a779062d8aaa157d1f9b4244745b980b7e10925 (diff) | |
| download | rust-45b445e5a3a1f084becad71cd1ffbbff399a6462.tar.gz rust-45b445e5a3a1f084becad71cd1ffbbff399a6462.zip | |
Restore `fold_ident` and `visit_ident`
| -rw-r--r-- | src/librustc_front/fold.rs | 24 | ||||
| -rw-r--r-- | src/librustc_front/visit.rs | 11 |
2 files changed, 22 insertions, 13 deletions
diff --git a/src/librustc_front/fold.rs b/src/librustc_front/fold.rs index b305114ced7..8ef0b5e6648 100644 --- a/src/librustc_front/fold.rs +++ b/src/librustc_front/fold.rs @@ -151,6 +151,10 @@ pub trait Folder : Sized { noop_fold_name(n, self) } + fn fold_ident(&mut self, i: Ident) -> Ident { + noop_fold_ident(i, self) + } + fn fold_usize(&mut self, i: usize) -> usize { noop_fold_usize(i, self) } @@ -284,10 +288,6 @@ pub trait Folder : Sized { } } -fn fold_ident<T: Folder>(f: &mut T, i: Ident) -> Ident { - Ident { name: f.fold_name(i.name), ctxt: i.ctxt } -} - pub fn noop_fold_meta_items<T: Folder>(meta_items: Vec<P<MetaItem>>, fld: &mut T) -> Vec<P<MetaItem>> { meta_items.move_map(|x| fld.fold_meta_item(x)) @@ -443,6 +443,10 @@ pub fn noop_fold_name<T: Folder>(n: Name, _: &mut T) -> Name { n } +pub fn noop_fold_ident<T: Folder>(i: Ident, _: &mut T) -> Ident { + i +} + pub fn noop_fold_usize<T: Folder>(i: usize, _: &mut T) -> usize { i } @@ -451,7 +455,7 @@ pub fn noop_fold_path<T: Folder>(Path {global, segments, span}: Path, fld: &mut Path { global: global, segments: segments.move_map(|PathSegment {identifier, parameters}| PathSegment { - identifier: fold_ident(fld, identifier), + identifier: fld.fold_ident(identifier), parameters: fld.fold_path_parameters(parameters), }), span: fld.new_span(span) @@ -992,7 +996,7 @@ pub fn noop_fold_pat<T: Folder>(p: P<Pat>, folder: &mut T) -> P<Pat> { PatIdent(binding_mode, pth1, sub) => { PatIdent(binding_mode, Spanned{span: folder.new_span(pth1.span), - node: fold_ident(folder, pth1.node)}, + node: folder.fold_ident(pth1.node)}, sub.map(|x| folder.fold_pat(x))) } PatLit(e) => PatLit(folder.fold_expr(e)), @@ -1077,11 +1081,11 @@ pub fn noop_fold_expr<T: Folder>(Expr {id, node, span}: Expr, folder: &mut T) -> ExprWhile(cond, body, opt_ident) => { ExprWhile(folder.fold_expr(cond), folder.fold_block(body), - opt_ident.map(|i| fold_ident(folder, i))) + opt_ident.map(|i| folder.fold_ident(i))) } ExprLoop(body, opt_ident) => { ExprLoop(folder.fold_block(body), - opt_ident.map(|i| fold_ident(folder, i))) + opt_ident.map(|i| folder.fold_ident(i))) } ExprMatch(expr, arms, source) => { ExprMatch(folder.fold_expr(expr), @@ -1130,11 +1134,11 @@ pub fn noop_fold_expr<T: Folder>(Expr {id, node, span}: Expr, folder: &mut T) -> } ExprBreak(opt_ident) => ExprBreak(opt_ident.map(|label| respan(folder.new_span(label.span), - fold_ident(folder, label.node))) + folder.fold_ident(label.node))) ), ExprAgain(opt_ident) => ExprAgain(opt_ident.map(|label| respan(folder.new_span(label.span), - fold_ident(folder, label.node))) + folder.fold_ident(label.node))) ), ExprRet(e) => ExprRet(e.map(|x| folder.fold_expr(x))), ExprInlineAsm(InlineAsm { diff --git a/src/librustc_front/visit.rs b/src/librustc_front/visit.rs index a167e962db0..342d2a729c7 100644 --- a/src/librustc_front/visit.rs +++ b/src/librustc_front/visit.rs @@ -24,7 +24,7 @@ //! those that are created by the expansion of a macro. use syntax::abi::Abi; -use syntax::ast::{NodeId, CRATE_NODE_ID, Name, Attribute}; +use syntax::ast::{Ident, NodeId, CRATE_NODE_ID, Name, Attribute}; use hir::*; use hir; use syntax::codemap::Span; @@ -57,6 +57,7 @@ pub trait Visitor<'v> : Sized { fn visit_name(&mut self, _span: Span, _name: Name) { // Nothing to do. } + fn visit_ident(&mut self, span: Span, ident: Ident) { walk_ident(self, span, ident) } fn visit_mod(&mut self, m: &'v Mod, _s: Span, _n: NodeId) { walk_mod(self, m) } fn visit_foreign_item(&mut self, i: &'v ForeignItem) { walk_foreign_item(self, i) } fn visit_item(&mut self, i: &'v Item) { walk_item(self, i) } @@ -133,6 +134,10 @@ pub trait Visitor<'v> : Sized { fn visit_attribute(&mut self, _attr: &'v Attribute) {} } +pub fn walk_ident<'v, V: Visitor<'v>>(visitor: &mut V, span: Span, ident: Ident) { + visitor.visit_name(span, ident.name); +} + pub fn walk_crate<'v, V: Visitor<'v>>(visitor: &mut V, krate: &'v Crate) { visitor.visit_mod(&krate.module, krate.span, CRATE_NODE_ID); for attr in &krate.attrs { @@ -409,7 +414,7 @@ pub fn walk_path_list_item<'v, V: Visitor<'v>>(visitor: &mut V, prefix: &'v Path pub fn walk_path_segment<'v, V: Visitor<'v>>(visitor: &mut V, path_span: Span, segment: &'v PathSegment) { - visitor.visit_name(path_span, segment.identifier.name); + visitor.visit_ident(path_span, segment.identifier); visitor.visit_path_parameters(path_span, &segment.parameters); } @@ -475,7 +480,7 @@ pub fn walk_pat<'v, V: Visitor<'v>>(visitor: &mut V, pattern: &'v Pat) { visitor.visit_pat(&**subpattern) } PatIdent(_, ref pth1, ref optional_subpattern) => { - visitor.visit_name(pth1.span, pth1.node.name); + visitor.visit_ident(pth1.span, pth1.node); match *optional_subpattern { None => {} Some(ref subpattern) => visitor.visit_pat(&**subpattern), |
