diff options
| author | Patrick Walton <pcwalton@mimiga.net> | 2014-08-04 13:56:56 -0700 |
|---|---|---|
| committer | Patrick Walton <pcwalton@mimiga.net> | 2014-08-14 11:40:22 -0700 |
| commit | 9907fa4acc2af5b2b07d1362b3ceb29171954c58 (patch) | |
| tree | 6acf4c541c9321d8a304eb16f486b09755983c52 /src/libsyntax/ext | |
| parent | 404978ea722c0257cc763540c93243e8a21f82ed (diff) | |
| download | rust-9907fa4acc2af5b2b07d1362b3ceb29171954c58.tar.gz rust-9907fa4acc2af5b2b07d1362b3ceb29171954c58.zip | |
librustc: Stop assuming that implementations and traits only contain
methods.
This paves the way to associated items by introducing an extra level of
abstraction ("impl-or-trait item") between traits/implementations and
methods. This new abstraction is encoded in the metadata and used
throughout the compiler where appropriate.
There are no functional changes; this is purely a refactoring.
Diffstat (limited to 'src/libsyntax/ext')
| -rw-r--r-- | src/libsyntax/ext/deriving/generic/mod.rs | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/libsyntax/ext/deriving/generic/mod.rs b/src/libsyntax/ext/deriving/generic/mod.rs index 5842ca4a0d5..7a8ee6d1416 100644 --- a/src/libsyntax/ext/deriving/generic/mod.rs +++ b/src/libsyntax/ext/deriving/generic/mod.rs @@ -452,8 +452,13 @@ impl<'a> TraitDef<'a> { self.span, ident, (vec!(attr)).append(self.attributes.as_slice()), - ast::ItemImpl(trait_generics, opt_trait_ref, - self_type, methods)) + ast::ItemImpl(trait_generics, + opt_trait_ref, + self_type, + methods.move_iter() + .map(|method| { + ast::MethodImplItem(method) + }).collect())) } fn expand_struct_def(&self, |
