diff options
| author | Vadim Petrochenkov <vadim.petrochenkov@gmail.com> | 2015-09-29 00:23:54 +0300 |
|---|---|---|
| committer | Vadim Petrochenkov <vadim.petrochenkov@gmail.com> | 2015-09-29 00:23:54 +0300 |
| commit | 4744d56846c0ed137c0a59fcc8ade8078e3a3431 (patch) | |
| tree | e24fb14d5a46d8ec7effd43120086cffd358da72 /src/libsyntax | |
| parent | eedb95101b828c3c6295983ae8d29fd4145ec014 (diff) | |
| download | rust-4744d56846c0ed137c0a59fcc8ade8078e3a3431.tar.gz rust-4744d56846c0ed137c0a59fcc8ade8078e3a3431.zip | |
Fill in some missing parts in the default HIR visitor
Diffstat (limited to 'src/libsyntax')
| -rw-r--r-- | src/libsyntax/visit.rs | 29 |
1 files changed, 18 insertions, 11 deletions
diff --git a/src/libsyntax/visit.rs b/src/libsyntax/visit.rs index 531578c76d4..fd30f47ca20 100644 --- a/src/libsyntax/visit.rs +++ b/src/libsyntax/visit.rs @@ -131,7 +131,7 @@ pub trait Visitor<'v> : Sized { #[macro_export] macro_rules! walk_list { - ($visitor: ident, $method: ident, $list: expr) => { + ($visitor: expr, $method: ident, $list: expr) => { for elem in $list { $visitor.$method(elem) } @@ -530,23 +530,22 @@ pub fn walk_generics<'v, V: Visitor<'v>>(visitor: &mut V, generics: &'v Generics } } +pub fn walk_fn_ret_ty<'v, V: Visitor<'v>>(visitor: &mut V, ret_ty: &'v FunctionRetTy) { + if let Return(ref output_ty) = *ret_ty { + visitor.visit_ty(output_ty) + } +} + pub fn walk_fn_decl<'v, V: Visitor<'v>>(visitor: &mut V, function_declaration: &'v FnDecl) { for argument in &function_declaration.inputs { visitor.visit_pat(&argument.pat); visitor.visit_ty(&argument.ty) } - if let Return(ref output_ty) = function_declaration.output { - visitor.visit_ty(output_ty) - } + walk_fn_ret_ty(visitor, &function_declaration.output) } -pub fn walk_fn<'v, V: Visitor<'v>>(visitor: &mut V, - function_kind: FnKind<'v>, - function_declaration: &'v FnDecl, - function_body: &'v Block, - _span: Span) { - walk_fn_decl(visitor, function_declaration); - +pub fn walk_fn_kind<'v, V: Visitor<'v>>(visitor: &mut V, + function_kind: FnKind<'v>) { match function_kind { FnKind::ItemFn(_, generics, _, _, _, _) => { visitor.visit_generics(generics); @@ -557,7 +556,15 @@ pub fn walk_fn<'v, V: Visitor<'v>>(visitor: &mut V, } FnKind::Closure => {} } +} +pub fn walk_fn<'v, V: Visitor<'v>>(visitor: &mut V, + function_kind: FnKind<'v>, + function_declaration: &'v FnDecl, + function_body: &'v Block, + _span: Span) { + walk_fn_decl(visitor, function_declaration); + walk_fn_kind(visitor, function_kind); visitor.visit_block(function_body) } |
