diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/libsyntax/ext/deriving/bounds.rs | 1 | ||||
| -rw-r--r-- | src/libsyntax/ext/deriving/clone.rs | 1 | ||||
| -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/partial_eq.rs | 1 | ||||
| -rw-r--r-- | src/libsyntax/ext/deriving/cmp/partial_ord.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/mod.rs | 12 | ||||
| -rw-r--r-- | src/libsyntax/ext/deriving/hash.rs | 1 | ||||
| -rw-r--r-- | src/libsyntax/ext/deriving/primitive.rs | 1 | ||||
| -rw-r--r-- | src/libsyntax/ext/deriving/show.rs | 1 | ||||
| -rw-r--r-- | src/test/auxiliary/custom_derive_plugin.rs | 1 | ||||
| -rw-r--r-- | src/test/auxiliary/custom_derive_plugin_attr.rs | 1 |
15 files changed, 25 insertions, 1 deletions
diff --git a/src/libsyntax/ext/deriving/bounds.rs b/src/libsyntax/ext/deriving/bounds.rs index 71b6184390a..87a6d0805b5 100644 --- a/src/libsyntax/ext/deriving/bounds.rs +++ b/src/libsyntax/ext/deriving/bounds.rs @@ -40,6 +40,7 @@ pub fn expand_deriving_copy(cx: &mut ExtCtxt, path: path, additional_bounds: Vec::new(), generics: LifetimeBounds::empty(), + is_unsafe: false, methods: Vec::new(), associated_types: Vec::new(), }; diff --git a/src/libsyntax/ext/deriving/clone.rs b/src/libsyntax/ext/deriving/clone.rs index 9261c0162c7..f1a2983479c 100644 --- a/src/libsyntax/ext/deriving/clone.rs +++ b/src/libsyntax/ext/deriving/clone.rs @@ -31,6 +31,7 @@ pub fn expand_deriving_clone(cx: &mut ExtCtxt, path: path_std!(cx, core::clone::Clone), additional_bounds: Vec::new(), generics: LifetimeBounds::empty(), + is_unsafe: false, methods: vec!( MethodDef { name: "clone", diff --git a/src/libsyntax/ext/deriving/cmp/eq.rs b/src/libsyntax/ext/deriving/cmp/eq.rs index b370757e8fb..bd6b27fb44e 100644 --- a/src/libsyntax/ext/deriving/cmp/eq.rs +++ b/src/libsyntax/ext/deriving/cmp/eq.rs @@ -51,6 +51,7 @@ pub fn expand_deriving_eq(cx: &mut ExtCtxt, path: path_std!(cx, core::cmp::Eq), additional_bounds: Vec::new(), generics: LifetimeBounds::empty(), + is_unsafe: false, methods: vec!( MethodDef { name: "assert_receiver_is_total_eq", diff --git a/src/libsyntax/ext/deriving/cmp/ord.rs b/src/libsyntax/ext/deriving/cmp/ord.rs index 815448ac610..ff36e01d6cc 100644 --- a/src/libsyntax/ext/deriving/cmp/ord.rs +++ b/src/libsyntax/ext/deriving/cmp/ord.rs @@ -32,6 +32,7 @@ pub fn expand_deriving_ord(cx: &mut ExtCtxt, path: path_std!(cx, core::cmp::Ord), additional_bounds: Vec::new(), generics: LifetimeBounds::empty(), + is_unsafe: false, methods: vec!( MethodDef { name: "cmp", diff --git a/src/libsyntax/ext/deriving/cmp/partial_eq.rs b/src/libsyntax/ext/deriving/cmp/partial_eq.rs index e5d6408ca1b..495761c499b 100644 --- a/src/libsyntax/ext/deriving/cmp/partial_eq.rs +++ b/src/libsyntax/ext/deriving/cmp/partial_eq.rs @@ -85,6 +85,7 @@ pub fn expand_deriving_partial_eq(cx: &mut ExtCtxt, path: path_std!(cx, core::cmp::PartialEq), additional_bounds: Vec::new(), generics: LifetimeBounds::empty(), + is_unsafe: false, methods: vec!( md!("eq", cs_eq), md!("ne", cs_ne) diff --git a/src/libsyntax/ext/deriving/cmp/partial_ord.rs b/src/libsyntax/ext/deriving/cmp/partial_ord.rs index a11e9f473a4..084e3ef3f91 100644 --- a/src/libsyntax/ext/deriving/cmp/partial_ord.rs +++ b/src/libsyntax/ext/deriving/cmp/partial_ord.rs @@ -73,6 +73,7 @@ pub fn expand_deriving_partial_ord(cx: &mut ExtCtxt, path: path_std!(cx, core::cmp::PartialOrd), additional_bounds: vec![], generics: LifetimeBounds::empty(), + is_unsafe: false, methods: vec![ partial_cmp_def, md!("lt", true, false), diff --git a/src/libsyntax/ext/deriving/decodable.rs b/src/libsyntax/ext/deriving/decodable.rs index 99fac991e7f..0fdcbec8447 100644 --- a/src/libsyntax/ext/deriving/decodable.rs +++ b/src/libsyntax/ext/deriving/decodable.rs @@ -59,6 +59,7 @@ fn expand_deriving_decodable_imp(cx: &mut ExtCtxt, path: Path::new_(vec!(krate, "Decodable"), None, vec!(), true), additional_bounds: Vec::new(), generics: LifetimeBounds::empty(), + is_unsafe: false, methods: vec!( MethodDef { name: "decode", diff --git a/src/libsyntax/ext/deriving/default.rs b/src/libsyntax/ext/deriving/default.rs index 3f4e9da0ed5..6a25088782a 100644 --- a/src/libsyntax/ext/deriving/default.rs +++ b/src/libsyntax/ext/deriving/default.rs @@ -31,6 +31,7 @@ pub fn expand_deriving_default(cx: &mut ExtCtxt, path: path_std!(cx, core::default::Default), additional_bounds: Vec::new(), generics: LifetimeBounds::empty(), + is_unsafe: false, methods: vec!( MethodDef { name: "default", diff --git a/src/libsyntax/ext/deriving/encodable.rs b/src/libsyntax/ext/deriving/encodable.rs index 3c77effe5f5..786739938e5 100644 --- a/src/libsyntax/ext/deriving/encodable.rs +++ b/src/libsyntax/ext/deriving/encodable.rs @@ -135,6 +135,7 @@ fn expand_deriving_encodable_imp(cx: &mut ExtCtxt, path: Path::new_(vec!(krate, "Encodable"), None, vec!(), true), additional_bounds: Vec::new(), generics: LifetimeBounds::empty(), + is_unsafe: false, methods: vec!( MethodDef { name: "encode", diff --git a/src/libsyntax/ext/deriving/generic/mod.rs b/src/libsyntax/ext/deriving/generic/mod.rs index 3196380ec6c..9fc2745cf92 100644 --- a/src/libsyntax/ext/deriving/generic/mod.rs +++ b/src/libsyntax/ext/deriving/generic/mod.rs @@ -229,6 +229,9 @@ pub struct TraitDef<'a> { /// Any extra lifetimes and/or bounds, e.g. `D: serialize::Decoder` pub generics: LifetimeBounds<'a>, + /// Is it an `unsafe` trait? + pub is_unsafe: bool, + pub methods: Vec<MethodDef<'a>>, pub associated_types: Vec<(ast::Ident, Ty<'a>)>, @@ -625,11 +628,18 @@ impl<'a> TraitDef<'a> { InternedString::new("unused_qualifications"))])); let mut a = vec![attr, unused_qual]; a.extend(self.attributes.iter().cloned()); + + let unsafety = if self.is_unsafe { + ast::Unsafety::Unsafe + } else { + ast::Unsafety::Normal + }; + cx.item( self.span, ident, a, - ast::ItemImpl(ast::Unsafety::Normal, + ast::ItemImpl(unsafety, ast::ImplPolarity::Positive, trait_generics, opt_trait_ref, diff --git a/src/libsyntax/ext/deriving/hash.rs b/src/libsyntax/ext/deriving/hash.rs index 97c50ed1eea..96be774ebdc 100644 --- a/src/libsyntax/ext/deriving/hash.rs +++ b/src/libsyntax/ext/deriving/hash.rs @@ -32,6 +32,7 @@ pub fn expand_deriving_hash(cx: &mut ExtCtxt, path: path, additional_bounds: Vec::new(), generics: LifetimeBounds::empty(), + is_unsafe: false, methods: vec!( MethodDef { name: "hash", diff --git a/src/libsyntax/ext/deriving/primitive.rs b/src/libsyntax/ext/deriving/primitive.rs index 5eb98d3aa15..5d3cc50557c 100644 --- a/src/libsyntax/ext/deriving/primitive.rs +++ b/src/libsyntax/ext/deriving/primitive.rs @@ -32,6 +32,7 @@ pub fn expand_deriving_from_primitive(cx: &mut ExtCtxt, path: path_std!(cx, core::num::FromPrimitive), additional_bounds: Vec::new(), generics: LifetimeBounds::empty(), + is_unsafe: false, methods: vec!( MethodDef { name: "from_i64", diff --git a/src/libsyntax/ext/deriving/show.rs b/src/libsyntax/ext/deriving/show.rs index 3a478884c6a..4d70ca1ebf1 100644 --- a/src/libsyntax/ext/deriving/show.rs +++ b/src/libsyntax/ext/deriving/show.rs @@ -34,6 +34,7 @@ pub fn expand_deriving_show(cx: &mut ExtCtxt, path: path_std!(cx, core::fmt::Debug), additional_bounds: Vec::new(), generics: LifetimeBounds::empty(), + is_unsafe: false, methods: vec![ MethodDef { name: "fmt", diff --git a/src/test/auxiliary/custom_derive_plugin.rs b/src/test/auxiliary/custom_derive_plugin.rs index 8c1445a172d..44ab4cc89a0 100644 --- a/src/test/auxiliary/custom_derive_plugin.rs +++ b/src/test/auxiliary/custom_derive_plugin.rs @@ -46,6 +46,7 @@ fn expand(cx: &mut ExtCtxt, additional_bounds: vec![], generics: LifetimeBounds::empty(), associated_types: vec![], + is_unsafe: false, methods: vec![ MethodDef { name: "total_sum", diff --git a/src/test/auxiliary/custom_derive_plugin_attr.rs b/src/test/auxiliary/custom_derive_plugin_attr.rs index 01fde91fef5..82d0edfb163 100644 --- a/src/test/auxiliary/custom_derive_plugin_attr.rs +++ b/src/test/auxiliary/custom_derive_plugin_attr.rs @@ -48,6 +48,7 @@ fn expand(cx: &mut ExtCtxt, additional_bounds: vec![], generics: LifetimeBounds::empty(), associated_types: vec![], + is_unsafe: false, methods: vec