diff options
| author | Erick Tryzelaar <erick.tryzelaar@gmail.com> | 2014-02-14 08:09:51 -0800 |
|---|---|---|
| committer | Erick Tryzelaar <erick.tryzelaar@gmail.com> | 2014-02-21 19:57:02 -0800 |
| commit | bb8721da69e4c54fc2e22c3352d74c406e817049 (patch) | |
| tree | 3c9293668bc095df45dc62e1d02702592d1c6c4a | |
| parent | 87f936f193286e54c38245a6853d8b2977f2aa5b (diff) | |
| download | rust-bb8721da69e4c54fc2e22c3352d74c406e817049.tar.gz rust-bb8721da69e4c54fc2e22c3352d74c406e817049.zip | |
syntax: Allow syntax extensions to have attributes
| -rw-r--r-- | src/libsyntax/ext/deriving/clone.rs | 2 | ||||
| -rw-r--r-- | src/libsyntax/ext/deriving/cmp/eq.rs | 1 | ||||
| -rw-r--r-- | src/libsyntax/ext/deriving/cmp/ord.rs | 1 | ||||
| -rw-r--r-- | src/libsyntax/ext/deriving/cmp/totaleq.rs | 1 | ||||
| -rw-r--r-- | src/libsyntax/ext/deriving/cmp/totalord.rs | 1 | ||||
| -rw-r--r-- | src/libsyntax/ext/deriving/decodable.rs | 1 | ||||
| -rw-r--r-- | src/libsyntax/ext/deriving/default.rs | 1 | ||||
| -rw-r--r-- | src/libsyntax/ext/deriving/encodable.rs | 1 | ||||
| -rw-r--r-- | src/libsyntax/ext/deriving/generic.rs | 19 | ||||
| -rw-r--r-- | src/libsyntax/ext/deriving/iter_bytes.rs | 1 | ||||
| -rw-r--r-- | src/libsyntax/ext/deriving/primitive.rs | 1 | ||||
| -rw-r--r-- | src/libsyntax/ext/deriving/rand.rs | 1 | ||||
| -rw-r--r-- | src/libsyntax/ext/deriving/show.rs | 1 | ||||
| -rw-r--r-- | src/libsyntax/ext/deriving/to_str.rs | 1 | ||||
| -rw-r--r-- | src/libsyntax/ext/deriving/zero.rs | 1 |
15 files changed, 26 insertions, 8 deletions
diff --git a/src/libsyntax/ext/deriving/clone.rs b/src/libsyntax/ext/deriving/clone.rs index 5595bdee688..f52a2accd8d 100644 --- a/src/libsyntax/ext/deriving/clone.rs +++ b/src/libsyntax/ext/deriving/clone.rs @@ -21,6 +21,7 @@ pub fn expand_deriving_clone(cx: &mut ExtCtxt, push: |@Item|) { let trait_def = TraitDef { span: span, + attributes: ~[], path: Path::new(~["std", "clone", "Clone"]), additional_bounds: ~[], generics: LifetimeBounds::empty(), @@ -48,6 +49,7 @@ pub fn expand_deriving_deep_clone(cx: &mut ExtCtxt, push: |@Item|) { let trait_def = TraitDef { span: span, + attributes: ~[], path: Path::new(~["std", "clone", "DeepClone"]), additional_bounds: ~[], generics: LifetimeBounds::empty(), diff --git a/src/libsyntax/ext/deriving/cmp/eq.rs b/src/libsyntax/ext/deriving/cmp/eq.rs index 6592dc97f34..b031f69084d 100644 --- a/src/libsyntax/ext/deriving/cmp/eq.rs +++ b/src/libsyntax/ext/deriving/cmp/eq.rs @@ -47,6 +47,7 @@ pub fn expand_deriving_eq(cx: &mut ExtCtxt, let trait_def = TraitDef { span: span, + attributes: ~[], path: Path::new(~["std", "cmp", "Eq"]), additional_bounds: ~[], generics: LifetimeBounds::empty(), diff --git a/src/libsyntax/ext/deriving/cmp/ord.rs b/src/libsyntax/ext/deriving/cmp/ord.rs index c41986fceef..10a416045cb 100644 --- a/src/libsyntax/ext/deriving/cmp/ord.rs +++ b/src/libsyntax/ext/deriving/cmp/ord.rs @@ -37,6 +37,7 @@ pub fn expand_deriving_ord(cx: &mut ExtCtxt, let trait_def = TraitDef { span: span, + attributes: ~[], path: Path::new(~["std", "cmp", "Ord"]), additional_bounds: ~[], generics: LifetimeBounds::empty(), diff --git a/src/libsyntax/ext/deriving/cmp/totaleq.rs b/src/libsyntax/ext/deriving/cmp/totaleq.rs index 63e13b49202..2bfab8646a6 100644 --- a/src/libsyntax/ext/deriving/cmp/totaleq.rs +++ b/src/libsyntax/ext/deriving/cmp/totaleq.rs @@ -26,6 +26,7 @@ pub fn expand_deriving_totaleq(cx: &mut ExtCtxt, let trait_def = TraitDef { span: span, + attributes: ~[], path: Path::new(~["std", "cmp", "TotalEq"]), additional_bounds: ~[], generics: LifetimeBounds::empty(), diff --git a/src/libsyntax/ext/deriving/cmp/totalord.rs b/src/libsyntax/ext/deriving/cmp/totalord.rs index 3e58d2edb29..2e6c4a54228 100644 --- a/src/libsyntax/ext/deriving/cmp/totalord.rs +++ b/src/libsyntax/ext/deriving/cmp/totalord.rs @@ -23,6 +23,7 @@ pub fn expand_deriving_totalord(cx: &mut ExtCtxt, push: |@Item|) { let trait_def = TraitDef { span: span, + attributes: ~[], path: Path::new(~["std", "cmp", "TotalOrd"]), additional_bounds: ~[], generics: LifetimeBounds::empty(), diff --git a/src/libsyntax/ext/deriving/decodable.rs b/src/libsyntax/ext/deriving/decodable.rs index 8b20813e344..623e8ef766c 100644 --- a/src/libsyntax/ext/deriving/decodable.rs +++ b/src/libsyntax/ext/deriving/decodable.rs @@ -28,6 +28,7 @@ pub fn expand_deriving_decodable(cx: &mut ExtCtxt, push: |@Item|) { let trait_def = TraitDef { span: span, + attributes: ~[], path: Path::new_(~["serialize", "Decodable"], None, ~[~Literal(Path::new_local("__D"))], true), additional_bounds: ~[], diff --git a/src/libsyntax/ext/deriving/default.rs b/src/libsyntax/ext/deriving/default.rs index 7ed27168bb6..c5ef86273b6 100644 --- a/src/libsyntax/ext/deriving/default.rs +++ b/src/libsyntax/ext/deriving/default.rs @@ -21,6 +21,7 @@ pub fn expand_deriving_default(cx: &mut ExtCtxt, push: |@Item|) { let trait_def = TraitDef { span: span, + attributes: ~[], path: Path::new(~["std", "default", "Default"]), additional_bounds: ~[], generics: LifetimeBounds::empty(), diff --git a/src/libsyntax/ext/deriving/encodable.rs b/src/libsyntax/ext/deriving/encodable.rs index 9e0439e5375..2bc661ff27a 100644 --- a/src/libsyntax/ext/deriving/encodable.rs +++ b/src/libsyntax/ext/deriving/encodable.rs @@ -95,6 +95,7 @@ pub fn expand_deriving_encodable(cx: &mut ExtCtxt, push: |@Item|) { let trait_def = TraitDef { span: span, + attributes: ~[], path: Path::new_(~["serialize", "Encodable"], None, ~[~Literal(Path::new_local("__E"))], true), additional_bounds: ~[], diff --git a/src/libsyntax/ext/deriving/generic.rs b/src/libsyntax/ext/deriving/generic.rs index fb7f9b74364..a3bef1b5edd 100644 --- a/src/libsyntax/ext/deriving/generic.rs +++ b/src/libsyntax/ext/deriving/generic.rs @@ -196,6 +196,8 @@ pub struct TraitDef<'a> { /// The span for the current #[deriving(Foo)] header. span: Span, + attributes: ~[ast::Attribute], + /// Path of the trait, including any type parameters path: Path<'a>, @@ -355,7 +357,8 @@ impl<'a> TraitDef<'a> { */ fn create_derived_impl(&self, cx: &mut ExtCtxt, - type_ident: Ident, generics: &Generics, + type_ident: Ident, + generics: &Generics, methods: ~[@ast::Method]) -> @ast::Item { let trait_path = self.path.to_path(cx, self.span, type_ident, generics); @@ -408,16 +411,16 @@ impl<'a> TraitDef<'a> { cx.item( self.span, ident, - ~[doc_attr], + vec::append(~[doc_attr], self.attributes), ast::ItemImpl(trait_generics, opt_trait_ref, self_type, methods.map(|x| *x))) } - fn expand_struct_def(&self, - cx: &mut ExtCtxt, - struct_def: &StructDef, - type_ident: Ident, - generics: &Generics) -> @ast::Item { + pub fn expand_struct_def(&self, + cx: &mut ExtCtxt, + struct_def: &StructDef, + type_ident: Ident, + generics: &Generics) -> @ast::Item { let methods = self.methods.map(|method_def| { let (explicit_self, self_args, nonself_args, tys) = method_def.split_self_nonself_args( @@ -447,7 +450,7 @@ impl<'a> TraitDef<'a> { self.create_derived_impl(cx, type_ident, generics, methods) } - fn expand_enum_def(&self, + pub fn expand_enum_def(&self, cx: &mut ExtCtxt, enum_def: &EnumDef, type_ident: Ident, diff --git a/src/libsyntax/ext/deriving/iter_bytes.rs b/src/libsyntax/ext/deriving/iter_bytes.rs index b1adf96b90a..b39e22bc1ad 100644 --- a/src/libsyntax/ext/deriving/iter_bytes.rs +++ b/src/libsyntax/ext/deriving/iter_bytes.rs @@ -22,6 +22,7 @@ pub fn expand_deriving_iter_bytes(cx: &mut ExtCtxt, push: |@Item|) { let trait_def = TraitDef { span: span, + attributes: ~[], path: Path::new(~["std", "to_bytes", "IterBytes"]), additional_bounds: ~[], generics: LifetimeBounds::empty(), diff --git a/src/libsyntax/ext/deriving/primitive.rs b/src/libsyntax/ext/deriving/primitive.rs index 9391c9cd23c..03192cc1cd2 100644 --- a/src/libsyntax/ext/deriving/primitive.rs +++ b/src/libsyntax/ext/deriving/primitive.rs @@ -23,6 +23,7 @@ pub fn expand_deriving_from_primitive(cx: &mut ExtCtxt, push: |@Item|) { let trait_def = TraitDef { span: span, + attributes: ~[], path: Path::new(~["std", "num", "FromPrimitive"]), additional_bounds: ~[], generics: LifetimeBounds::empty(), diff --git a/src/libsyntax/ext/deriving/rand.rs b/src/libsyntax/ext/deriving/rand.rs index 351264fed72..6efe4801592 100644 --- a/src/libsyntax/ext/deriving/rand.rs +++ b/src/libsyntax/ext/deriving/rand.rs @@ -23,6 +23,7 @@ pub fn expand_deriving_rand(cx: &mut ExtCtxt, push: |@Item|) { let trait_def = TraitDef { span: span, + attributes: ~[], path: Path::new(~["std", "rand", "Rand"]), additional_bounds: ~[], generics: LifetimeBounds::empty(), diff --git a/src/libsyntax/ext/deriving/show.rs b/src/libsyntax/ext/deriving/show.rs index d5b08503fd0..56493000a92 100644 --- a/src/libsyntax/ext/deriving/show.rs +++ b/src/libsyntax/ext/deriving/show.rs @@ -31,6 +31,7 @@ pub fn expand_deriving_show(cx: &mut ExtCtxt, let trait_def = TraitDef { span: span, + attributes: ~[], path: Path::new(~["std", "fmt", "Show"]), additional_bounds: ~[], generics: LifetimeBounds::empty(), diff --git a/src/libsyntax/ext/deriving/to_str.rs b/src/libsyntax/ext/deriving/to_str.rs index b1c8e62935b..5cb81d9e762 100644 --- a/src/libsyntax/ext/deriving/to_str.rs +++ b/src/libsyntax/ext/deriving/to_str.rs @@ -24,6 +24,7 @@ pub fn expand_deriving_to_str(cx: &mut ExtCtxt, push: |@Item|) { let trait_def = TraitDef { span: span, + attributes: ~[], path: Path::new(~["std", "to_str", "ToStr"]), additional_bounds: ~[], generics: LifetimeBounds::empty(), diff --git a/src/libsyntax/ext/deriving/zero.rs b/src/libsyntax/ext/deriving/zero.rs index 924ab3c9e00..90f4fa0eb58 100644 --- a/src/libsyntax/ext/deriving/zero.rs +++ b/src/libsyntax/ext/deriving/zero.rs @@ -21,6 +21,7 @@ pub fn expand_deriving_zero(cx: &mut ExtCtxt, push: |@Item|) { let trait_def = TraitDef { span: span, + attributes: ~[], path: Path::new(~["std", "num", "Zero"]), additional_bounds: ~[], generics: LifetimeBounds::empty(), |
