@@ -73,7 +73,7 @@ pub fn analyze_crate(path: &str) -> Result<AnalysisResult> {
7373
7474 // read the top-level module
7575 let content = std:: fs:: read_to_string ( & root_file) ?;
76- let ( module, structs, enums) = Module :: parse ( & crate_. name , & content) . context ( format ! (
76+ let ( module, structs, enums) = Module :: parse ( & [ & crate_. name ] , & content) . context ( format ! (
7777 "Error parsing module {}" ,
7878 root_file. to_string_lossy( )
7979 ) ) ?;
@@ -85,7 +85,7 @@ pub fn analyze_crate(path: &str) -> Result<AnalysisResult> {
8585 (
8686 root_file. parent ( ) . unwrap ( ) . to_path_buf ( ) ,
8787 s. to_string ( ) ,
88- crate_. name . clone ( ) ,
88+ vec ! [ crate_. name. clone( ) ] ,
8989 )
9090 } )
9191 . collect :: < Vec < _ > > ( ) ;
@@ -94,7 +94,7 @@ pub fn analyze_crate(path: &str) -> Result<AnalysisResult> {
9494
9595 // recursively find/read the public sub-modules
9696 let mut read_modules = vec ! [ ] ;
97- while let Some ( ( parent_dir, module_name, parent_ident ) ) = modules_to_read. pop ( ) {
97+ while let Some ( ( parent_dir, module_name, parent ) ) = modules_to_read. pop ( ) {
9898 let ( module_path, submodule_dir) =
9999 if parent_dir. join ( & module_name) . with_extension ( "rs" ) . exists ( ) {
100100 (
@@ -117,16 +117,20 @@ pub fn analyze_crate(path: &str) -> Result<AnalysisResult> {
117117 read_modules. push ( module_path. clone ( ) ) ;
118118
119119 let content = std:: fs:: read_to_string ( & module_path) ?;
120- let path_name = format ! ( "{}::{}" , parent_ident, module_name) ;
121- let ( module, structs, enums) = Module :: parse ( & path_name, & content) . context ( format ! (
120+ let path: Vec < String > = [ & parent[ ..] , & [ module_name] ] . concat ( ) ;
121+ let ( module, structs, enums) = Module :: parse (
122+ & path. iter ( ) . map ( |s| s. as_str ( ) ) . collect :: < Vec < & str > > ( ) ,
123+ & content,
124+ )
125+ . context ( format ! (
122126 "Error parsing module {}" ,
123127 module_path. to_string_lossy( )
124128 ) ) ?;
125129 modules_to_read. extend (
126130 module
127131 . declarations
128132 . iter ( )
129- . map ( |s| ( submodule_dir. clone ( ) , s. to_string ( ) , path_name . clone ( ) ) )
133+ . map ( |s| ( submodule_dir. clone ( ) , s. to_string ( ) , path . clone ( ) ) )
130134 . collect :: < Vec < _ > > ( ) ,
131135 ) ;
132136 result_. modules . push ( module) ;
@@ -256,30 +260,49 @@ mod tests {
256260
257261 assert_yaml_snapshot ! ( crate_, @r###"
258262 ---
259- crates :
260- - name: my_crate
261- version: 0.1.0
262- docstring: The crate docstring
263+ crate_ :
264+ name: my_crate
265+ version: 0.1.0
266+ docstring: The crate docstring
263267 modules:
264- - name: "my_crate::my_module"
268+ - path:
269+ - my_crate
270+ - my_module
265271 docstring: The module docstring
266272 declarations:
267273 - my_submodule
268- - name: "my_crate::my_module::my_submodule"
274+ - path:
275+ - my_crate
276+ - my_module
277+ - my_submodule
269278 docstring: The sub-module docstring
270279 declarations: []
271280 structs:
272- - name: "my_crate::my_module::DummyStruct1"
281+ - path:
282+ - my_crate
283+ - my_module
284+ - DummyStruct1
273285 docstring: The struct1 docstring
274286 fields: []
275- - name: "my_crate::my_module::my_submodule::DummyStruct2"
287+ - path:
288+ - my_crate
289+ - my_module
290+ - my_submodule
291+ - DummyStruct2
276292 docstring: The struct2 docstring
277293 fields: []
278294 enums:
279- - name: "my_crate::my_module::DummyEnum1"
295+ - path:
296+ - my_crate
297+ - my_module
298+ - DummyEnum1
280299 docstring: The enum1 docstring
281300 variants: []
282- - name: "my_crate::my_module::my_submodule::DummyEnum2"
301+ - path:
302+ - my_crate
303+ - my_module
304+ - my_submodule
305+ - DummyEnum2
283306 docstring: The enum2 docstring
284307 variants: []
285308 "### ) ;
0 commit comments