File tree 2 files changed +50
-9
lines changed
tests/rustdoc/inline_local
2 files changed +50
-9
lines changed Original file line number Diff line number Diff line change @@ -305,6 +305,7 @@ impl DocFolder for CacheBuilder<'_, '_> {
305
305
| clean:: MacroItem ( ..)
306
306
| clean:: ProcMacroItem ( ..)
307
307
| clean:: VariantItem ( ..) => {
308
+ use rustc_data_structures:: fx:: IndexEntry as Entry ;
308
309
if !self . cache . stripped_mod {
309
310
// Re-exported items mean that the same id can show up twice
310
311
// in the rustdoc ast that we're looking at. We know,
@@ -313,15 +314,15 @@ impl DocFolder for CacheBuilder<'_, '_> {
313
314
// paths map if there was already an entry present and we're
314
315
// not a public item.
315
316
let item_def_id = item. item_id . expect_def_id ( ) ;
316
- if ! self . cache . paths . contains_key ( & item_def_id)
317
- || self
318
- . cache
319
- . effective_visibilities
320
- . is_directly_public ( self . tcx , item_def_id )
321
- {
322
- self . cache
323
- . paths
324
- . insert ( item_def_id , ( self . cache . stack . clone ( ) , item . type_ ( ) ) ) ;
317
+ match self . cache . paths . entry ( item_def_id) {
318
+ Entry :: Vacant ( entry ) => {
319
+ entry . insert ( ( self . cache . stack . clone ( ) , item . type_ ( ) ) ) ;
320
+ }
321
+ Entry :: Occupied ( mut entry ) => {
322
+ if entry . get ( ) . 0 . len ( ) > self . cache . stack . len ( ) {
323
+ entry . insert ( ( self . cache . stack . clone ( ) , item . type_ ( ) ) ) ;
324
+ }
325
+ }
325
326
}
326
327
}
327
328
}
Original file line number Diff line number Diff line change
1
+ //! Test case for [134702]
2
+ //!
3
+ //! [134702]: https://github.com/rust-lang/rust/issues/134702
4
+ #![ crate_name = "foo" ]
5
+
6
+ pub mod inside1 {
7
+ pub use self :: inner:: Inside1 ;
8
+ mod inner {
9
+ pub struct Inside1 ;
10
+ impl Inside1 {
11
+ pub fn stuff ( self ) { }
12
+ }
13
+ }
14
+ }
15
+
16
+ pub mod inside2 {
17
+ pub use self :: inner:: Inside2 ;
18
+ mod inner {
19
+ pub struct Inside2 ;
20
+ impl Inside2 {
21
+ pub fn stuff ( self ) { }
22
+ }
23
+ }
24
+ }
25
+
26
+ pub mod nested {
27
+ //! [Inside1] [Inside2]
28
+ //@ has foo/nested/index.html '//a[@href="../struct.Inside1.html"]' 'Inside1'
29
+ //@ has foo/nested/index.html '//a[@href="../struct.Inside2.html"]' 'Inside2'
30
+ //! [Inside1::stuff] [Inside2::stuff]
31
+ //@ has foo/nested/index.html '//a[@href="../struct.Inside1.html#method.stuff"]' 'Inside1::stuff'
32
+ //@ has foo/nested/index.html '//a[@href="../struct.Inside2.html#method.stuff"]' 'Inside2::stuff'
33
+ use crate :: inside1:: Inside1 ;
34
+ use crate :: inside2:: Inside2 ;
35
+ }
36
+
37
+ #[ doc( inline) ]
38
+ pub use inside1:: Inside1 ;
39
+ #[ doc( inline) ]
40
+ pub use inside2:: Inside2 ;
You can’t perform that action at this time.
0 commit comments