diff options
Diffstat (limited to 'src/libsyntax/ast_util.rs')
| -rw-r--r-- | src/libsyntax/ast_util.rs | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/libsyntax/ast_util.rs b/src/libsyntax/ast_util.rs index d45ea206792..da6278aaae9 100644 --- a/src/libsyntax/ast_util.rs +++ b/src/libsyntax/ast_util.rs @@ -11,6 +11,7 @@ use ast::*; use ast; use ast_util; +use codemap; use codemap::Span; use opt_vec; use parse::token; @@ -208,6 +209,12 @@ pub fn ident_to_pat(id: NodeId, s: Span, i: Ident) -> @Pat { span: s } } +pub fn name_to_dummy_lifetime(name: Name) -> Lifetime { + Lifetime { id: DUMMY_NODE_ID, + span: codemap::DUMMY_SP, + name: name } +} + pub fn is_unguarded(a: &Arm) -> bool { match a.guard { None => true, @@ -684,6 +691,20 @@ pub fn lit_is_str(lit: @Lit) -> bool { } } +pub fn get_inner_tys(ty: P<Ty>) -> Vec<P<Ty>> { + match ty.node { + ast::TyRptr(_, mut_ty) | ast::TyPtr(mut_ty) => { + vec!(mut_ty.ty) + } + ast::TyBox(ty) + | ast::TyVec(ty) + | ast::TyUniq(ty) + | ast::TyFixedLengthVec(ty, _) => vec!(ty), + ast::TyTup(ref tys) => tys.clone(), + _ => Vec::new() + } +} + #[cfg(test)] mod test { |
