@@ -105,6 +105,7 @@ impl<'a> LoweringContext<'a> {
105105 fn lower_crate ( & mut self , c : & Crate ) -> hir:: Crate {
106106 struct ItemLowerer < ' lcx , ' interner : ' lcx > {
107107 items : BTreeMap < NodeId , hir:: Item > ,
108+ impl_items : BTreeMap < hir:: ImplItemId , hir:: ImplItem > ,
108109 lctx : & ' lcx mut LoweringContext < ' interner > ,
109110 }
110111
@@ -113,12 +114,20 @@ impl<'a> LoweringContext<'a> {
113114 self . items . insert ( item. id , self . lctx . lower_item ( item) ) ;
114115 visit:: walk_item ( self , item) ;
115116 }
117+
118+ fn visit_impl_item ( & mut self , item : & ImplItem ) {
119+ let id = self . lctx . lower_impl_item_id ( item) ;
120+ self . impl_items . insert ( id, self . lctx . lower_impl_item ( item) ) ;
121+ visit:: walk_impl_item ( self , item) ;
122+ }
116123 }
117124
118- let items = {
119- let mut item_lowerer = ItemLowerer { items : BTreeMap :: new ( ) , lctx : self } ;
125+ let ( items, impl_items) = {
126+ let mut item_lowerer = ItemLowerer { items : BTreeMap :: new ( ) ,
127+ impl_items : BTreeMap :: new ( ) ,
128+ lctx : self } ;
120129 visit:: walk_crate ( & mut item_lowerer, c) ;
121- item_lowerer. items
130+ ( item_lowerer. items , item_lowerer . impl_items )
122131 } ;
123132
124133 hir:: Crate {
@@ -127,6 +136,7 @@ impl<'a> LoweringContext<'a> {
127136 span : c. span ,
128137 exported_macros : c. exported_macros . iter ( ) . map ( |m| self . lower_macro_def ( m) ) . collect ( ) ,
129138 items : items,
139+ impl_items : impl_items,
130140 }
131141 }
132142
@@ -631,7 +641,7 @@ impl<'a> LoweringContext<'a> {
631641 }
632642 ItemKind :: Impl ( unsafety, polarity, ref generics, ref ifce, ref ty, ref impl_items) => {
633643 let new_impl_items = impl_items. iter ( )
634- . map ( |item| self . lower_impl_item ( item) )
644+ . map ( |item| self . lower_impl_item_id ( item) )
635645 . collect ( ) ;
636646 let ifce = ifce. as_ref ( ) . map ( |trait_ref| self . lower_trait_ref ( trait_ref) ) ;
637647 hir:: ItemImpl ( self . lower_unsafety ( unsafety) ,
@@ -707,6 +717,10 @@ impl<'a> LoweringContext<'a> {
707717 } )
708718 }
709719
720+ fn lower_impl_item_id ( & mut self , i : & ImplItem ) -> hir:: ImplItemId {
721+ hir:: ImplItemId { id : i. id }
722+ }
723+
710724 fn lower_mod ( & mut self , m : & Mod ) -> hir:: Mod {
711725 hir:: Mod {
712726 inner : m. inner ,
0 commit comments