diff options
| author | bors <bors@rust-lang.org> | 2015-04-08 09:58:05 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2015-04-08 09:58:05 +0000 |
| commit | 926f38e588bb99aff1902fa94ab82b1db89cbbce (patch) | |
| tree | c1551948b685c3a8797592727c01b921a118beac /src/librustc | |
| parent | 3a66c7f6263ca390436a6faa9b8cbd0ef66c1e6c (diff) | |
| parent | 63b36ea7c211406a76c34cba5ac9b7218e003757 (diff) | |
| download | rust-926f38e588bb99aff1902fa94ab82b1db89cbbce.tar.gz rust-926f38e588bb99aff1902fa94ab82b1db89cbbce.zip | |
Auto merge of #23998 - nrc:impl-self, r=nikomatsakis
Closes #23909 r? @nikomatsakis (or anyone else, really)
Diffstat (limited to 'src/librustc')
| -rw-r--r-- | src/librustc/middle/astencode.rs | 6 | ||||
| -rw-r--r-- | src/librustc/middle/def.rs | 12 |
2 files changed, 12 insertions, 6 deletions
diff --git a/src/librustc/middle/astencode.rs b/src/librustc/middle/astencode.rs index b6061f39233..998ce0cac47 100644 --- a/src/librustc/middle/astencode.rs +++ b/src/librustc/middle/astencode.rs @@ -457,7 +457,11 @@ impl tr for def::Def { def::DefMethod(did, p) => { def::DefMethod(did.tr(dcx), p.map(|did2| did2.tr(dcx))) } - def::DefSelfTy(nid) => { def::DefSelfTy(dcx.tr_id(nid)) } + def::DefSelfTy(opt_did, impl_ids) => { def::DefSelfTy(opt_did.map(|did| did.tr(dcx)), + impl_ids.map(|(nid1, nid2)| { + (dcx.tr_id(nid1), + dcx.tr_id(nid2)) + })) } def::DefMod(did) => { def::DefMod(did.tr(dcx)) } def::DefForeignMod(did) => { def::DefForeignMod(did.tr(dcx)) } def::DefStatic(did, m) => { def::DefStatic(did.tr(dcx), m) } diff --git a/src/librustc/middle/def.rs b/src/librustc/middle/def.rs index 6707a4d3fd7..f0b35908854 100644 --- a/src/librustc/middle/def.rs +++ b/src/librustc/middle/def.rs @@ -22,7 +22,8 @@ use std::cell::RefCell; #[derive(Clone, Copy, PartialEq, Eq, RustcEncodable, RustcDecodable, Hash, Debug)] pub enum Def { DefFn(ast::DefId, bool /* is_ctor */), - DefSelfTy(/* trait id */ ast::NodeId), + DefSelfTy(Option<ast::DefId>, // trait id + Option<(ast::NodeId, ast::NodeId)>), // (impl id, self type id) DefMod(ast::DefId), DefForeignMod(ast::DefId), DefStatic(ast::DefId, bool /* is_mutbl */), @@ -139,18 +140,19 @@ impl Def { DefFn(id, _) | DefMod(id) | DefForeignMod(id) | DefStatic(id, _) | DefVariant(_, id, _) | DefTy(id, _) | DefAssociatedTy(_, id) | DefTyParam(_, _, id, _) | DefUse(id) | DefStruct(id) | DefTrait(id) | - DefMethod(id, _) | DefConst(id) => { + DefMethod(id, _) | DefConst(id) | DefSelfTy(Some(id), None)=> { id } DefLocal(id) | - DefSelfTy(id) | DefUpvar(id, _) | DefRegion(id) | - DefLabel(id) => { + DefLabel(id) | + DefSelfTy(_, Some((_, id))) => { local_def(id) } - DefPrimTy(_) => panic!("attempted .def_id() on DefPrimTy") + DefPrimTy(_) => panic!("attempted .def_id() on DefPrimTy"), + DefSelfTy(..) => panic!("attempted .def_id() on invalid DefSelfTy"), } } |
