From a2467b945c43eac05e46ac55d990aa9fb89ed581 Mon Sep 17 00:00:00 2001 From: Dzmitry Malyshau Date: Sat, 19 Jul 2014 17:33:17 -0400 Subject: [PATCH] Fixed lifetimes on syntax deriving structs, implemented Clone --- src/libsyntax/ext/deriving/generic/ty.rs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/libsyntax/ext/deriving/generic/ty.rs b/src/libsyntax/ext/deriving/generic/ty.rs index 06eb92e1b27..5d8b5660698 100644 --- a/src/libsyntax/ext/deriving/generic/ty.rs +++ b/src/libsyntax/ext/deriving/generic/ty.rs @@ -24,6 +24,7 @@ use parse::token::special_idents; use std::gc::Gc; /// The types of pointers +#[deriving(Clone)] pub enum PtrTy<'a> { /// &'lifetime mut Borrowed(Option<&'a str>, ast::Mutability), @@ -31,6 +32,7 @@ pub enum PtrTy<'a> { /// A path, e.g. `::std::option::Option::` (global). Has support /// for type parameters and a lifetime. +#[deriving(Clone)] pub struct Path<'a> { pub path: Vec<&'a str> , pub lifetime: Option<&'a str>, @@ -81,6 +83,7 @@ impl<'a> Path<'a> { } /// A type. Supports pointers (except for *), Self, and literals +#[deriving(Clone)] pub enum Ty<'a> { Self, /// &/Box/ Ty @@ -107,7 +110,7 @@ pub fn borrowed_self<'r>() -> Ty<'r> { borrowed(box Self) } -pub fn nil_ty() -> Ty<'static> { +pub fn nil_ty<'r>() -> Ty<'r> { Tuple(Vec::new()) } @@ -205,13 +208,14 @@ fn mk_generics(lifetimes: Vec, ty_params: Vec ) -> } /// Lifetimes and bounds on type parameters +#[deriving(Clone)] pub struct LifetimeBounds<'a> { pub lifetimes: Vec<&'a str>, pub bounds: Vec<(&'a str, Option, Vec>)>, } impl<'a> LifetimeBounds<'a> { - pub fn empty() -> LifetimeBounds<'static> { + pub fn empty() -> LifetimeBounds<'a> { LifetimeBounds { lifetimes: Vec::new(), bounds: Vec::new() }