@@ -1211,6 +1211,31 @@ impl<'l, 'tcx: 'l, 'll, D: Dump + 'll> DumpVisitor<'l, 'tcx, 'll, D> {
12111211}
12121212
12131213impl < ' l , ' tcx : ' l , ' ll , D : Dump +' ll > Visitor < ' l > for DumpVisitor < ' l , ' tcx , ' ll , D > {
1214+ fn visit_mod ( & mut self , m : & ' l ast:: Mod , span : Span , attrs : & [ ast:: Attribute ] , id : NodeId ) {
1215+ // Since we handle explicit modules ourselves in visit_item, this should
1216+ // only get called for the root module of a crate.
1217+ assert_eq ! ( id, ast:: CRATE_NODE_ID ) ;
1218+
1219+ let qualname = format ! ( "::{}" , self . tcx. node_path_str( id) ) ;
1220+
1221+ let cm = self . tcx . sess . codemap ( ) ;
1222+ let filename = cm. span_to_filename ( span) ;
1223+ self . dumper . mod_data ( ModData {
1224+ id : id,
1225+ name : String :: new ( ) ,
1226+ qualname : qualname,
1227+ span : span,
1228+ scope : id,
1229+ filename : filename,
1230+ items : m. items . iter ( ) . map ( |i| i. id ) . collect ( ) ,
1231+ visibility : Visibility :: Public ,
1232+ docs : docs_for_attrs ( attrs) ,
1233+ sig : None ,
1234+ attributes : attrs. to_owned ( ) ,
1235+ } . lower ( self . tcx ) ) ;
1236+ self . nest_scope ( id, |v| visit:: walk_mod ( v, m) ) ;
1237+ }
1238+
12141239 fn visit_item ( & mut self , item : & ' l ast:: Item ) {
12151240 use syntax:: ast:: ItemKind :: * ;
12161241 self . process_macro_use ( item. span , item. id ) ;
0 commit comments