diff options
| author | Eduard Burtescu <edy.burt@gmail.com> | 2014-01-30 19:28:02 +0200 |
|---|---|---|
| committer | Eduard Burtescu <edy.burt@gmail.com> | 2014-01-30 19:28:41 +0200 |
| commit | 7d967741c388a4c2e8f1e45f350d5a0abb083961 (patch) | |
| tree | 29a48dde22730fb4e1a36e10915dcb772a3802d1 /src/libsyntax/ext | |
| parent | 30e9bbaa2ce0042406c197cee142cbcbcbb7bc64 (diff) | |
| download | rust-7d967741c388a4c2e8f1e45f350d5a0abb083961.tar.gz rust-7d967741c388a4c2e8f1e45f350d5a0abb083961.zip | |
Implement default type parameters in generics.
Diffstat (limited to 'src/libsyntax/ext')
| -rw-r--r-- | src/libsyntax/ext/build.rs | 17 | ||||
| -rw-r--r-- | src/libsyntax/ext/deriving/generic.rs | 2 | ||||
| -rw-r--r-- | src/libsyntax/ext/deriving/ty.rs | 2 |
3 files changed, 16 insertions, 5 deletions
diff --git a/src/libsyntax/ext/build.rs b/src/libsyntax/ext/build.rs index 3b43c96a184..9ad4f4f7fac 100644 --- a/src/libsyntax/ext/build.rs +++ b/src/libsyntax/ext/build.rs @@ -66,7 +66,10 @@ pub trait AstBuilder { fn ty_field_imm(&self, span: Span, name: Ident, ty: P<ast::Ty>) -> ast::TypeField; fn strip_bounds(&self, bounds: &Generics) -> Generics; - fn typaram(&self, id: ast::Ident, bounds: OptVec<ast::TyParamBound>) -> ast::TyParam; + fn typaram(&self, + id: ast::Ident, + bounds: OptVec<ast::TyParamBound>, + default: Option<P<ast::Ty>>) -> ast::TyParam; fn trait_ref(&self, path: ast::Path) -> ast::TraitRef; fn typarambound(&self, path: ast::Path) -> ast::TyParamBound; @@ -354,8 +357,16 @@ impl<'a> AstBuilder for ExtCtxt<'a> { }) } - fn typaram(&self, id: ast::Ident, bounds: OptVec<ast::TyParamBound>) -> ast::TyParam { - ast::TyParam { ident: id, id: ast::DUMMY_NODE_ID, bounds: bounds } + fn typaram(&self, + id: ast::Ident, + bounds: OptVec<ast::TyParamBound>, + default: Option<P<ast::Ty>>) -> ast::TyParam { + ast::TyParam { + ident: id, + id: ast::DUMMY_NODE_ID, + bounds: bounds, + default: default + } } // these are strange, and probably shouldn't be used outside of diff --git a/src/libsyntax/ext/deriving/generic.rs b/src/libsyntax/ext/deriving/generic.rs index 3c9401b109f..9ebb771f5da 100644 --- a/src/libsyntax/ext/deriving/generic.rs +++ b/src/libsyntax/ext/deriving/generic.rs @@ -375,7 +375,7 @@ impl<'a> TraitDef<'a> { // require the current trait bounds.push(cx.typarambound(trait_path.clone())); - trait_generics.ty_params.push(cx.typaram(ty_param.ident, bounds)); + trait_generics.ty_params.push(cx.typaram(ty_param.ident, bounds, None)); } // Create the reference to the trait. diff --git a/src/libsyntax/ext/deriving/ty.rs b/src/libsyntax/ext/deriving/ty.rs index b22dcfe0da2..893a1c68426 100644 --- a/src/libsyntax/ext/deriving/ty.rs +++ b/src/libsyntax/ext/deriving/ty.rs @@ -196,7 +196,7 @@ fn mk_ty_param(cx: &ExtCtxt, span: Span, name: &str, bounds: &[Path], let path = b.to_path(cx, span, self_ident, self_generics); cx.typarambound(path) })); - cx.typaram(cx.ident_of(name), bounds) + cx.typaram(cx.ident_of(name), bounds, None) } fn mk_generics(lifetimes: ~[ast::Lifetime], ty_params: ~[ast::TyParam]) -> Generics { |
