diff options
| author | Eduard Burtescu <edy.burt@gmail.com> | 2015-01-13 06:02:56 +0200 |
|---|---|---|
| committer | Eduard Burtescu <edy.burt@gmail.com> | 2015-01-15 18:51:14 +0200 |
| commit | 2cdc86c180296ff2c929ec55fcf33a0f6b391b3a (patch) | |
| tree | 1d9e7cc7086adb4c17ba82171d3696ac633a8648 /src/libsyntax/visit.rs | |
| parent | 1c78ad937b4da9dd872b0a865025f3e2e885f90d (diff) | |
| download | rust-2cdc86c180296ff2c929ec55fcf33a0f6b391b3a.tar.gz rust-2cdc86c180296ff2c929ec55fcf33a0f6b391b3a.zip | |
syntax: add fully qualified UFCS expressions.
Diffstat (limited to 'src/libsyntax/visit.rs')
| -rw-r--r-- | src/libsyntax/visit.rs | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/src/libsyntax/visit.rs b/src/libsyntax/visit.rs index 3f91304dcc5..7778b4fa34a 100644 --- a/src/libsyntax/visit.rs +++ b/src/libsyntax/visit.rs @@ -126,6 +126,9 @@ pub trait Visitor<'v> : Sized { fn visit_path(&mut self, path: &'v Path, _id: ast::NodeId) { walk_path(self, path) } + fn visit_qpath(&mut self, qpath_span: Span, qpath: &'v QPath) { + walk_qpath(self, qpath_span, qpath) + } fn visit_path_segment(&mut self, path_span: Span, path_segment: &'v PathSegment) { walk_path_segment(self, path_span, path_segment) } @@ -419,9 +422,7 @@ pub fn walk_ty<'v, V: Visitor<'v>>(visitor: &mut V, typ: &'v Ty) { walk_ty_param_bounds_helper(visitor, bounds); } TyQPath(ref qpath) => { - visitor.visit_ty(&*qpath.self_type); - visitor.visit_trait_ref(&*qpath.trait_ref); - visitor.visit_ident(typ.span, qpath.item_name); + visitor.visit_qpath(typ.span, &**qpath); } TyFixedLengthVec(ref ty, ref expression) => { visitor.visit_ty(&**ty); @@ -450,6 +451,14 @@ pub fn walk_path<'v, V: Visitor<'v>>(visitor: &mut V, path: &'v Path) { } } +pub fn walk_qpath<'v, V: Visitor<'v>>(visitor: &mut V, + qpath_span: Span, + qpath: &'v QPath) { + visitor.visit_ty(&*qpath.self_type); + visitor.visit_trait_ref(&*qpath.trait_ref); + visitor.visit_path_segment(qpath_span, &qpath.item_path); +} + pub fn walk_path_segment<'v, V: Visitor<'v>>(visitor: &mut V, path_span: Span, segment: &'v PathSegment) { @@ -881,6 +890,9 @@ pub fn walk_expr<'v, V: Visitor<'v>>(visitor: &mut V, expression: &'v Expr) { ExprPath(ref path) => { visitor.visit_path(path, expression.id) } + ExprQPath(ref qpath) => { + visitor.visit_qpath(expression.span, &**qpath) + } ExprBreak(_) | ExprAgain(_) => {} ExprRet(ref optional_expression) => { walk_expr_opt(visitor, optional_expression) |
