Closed ChAoSUnItY closed 1 year ago
@rustbot label +T-rustdoc
I'm a bit confused about the problem here: so the current code doesn't have this problem but if you update it, it does have this problem?
Yes. Current code doesn't lead to any ICE, and reproduction code is meant to demonstrate the issue.
Ok I think I got it. So currently, a module without documentation still has an intra-doc link on it, which is supposed to be impossible. Did I get it right?
That's correct.
Ok perfect, thanks! So the code is:
mod m {
pub enum ValueEnum {}
}
mod m2 {
/// [`ValueEnum`]
pub use crate::m::ValueEnum;
}
pub use m2::ValueEnum;
I suppose the inlining of docs is doing something wrong here.
Also cc @petrochenkov
Just took a look. So in clean/mod.rs
, if we have a re-export of a non-public item, we inline it. So in this case, pub use m2::ValueEnum
becomes ValueEnum
. So that makes 1 item. For the other, it's m2::ValueEnum
which we keep around in case it is re-exported by some other re-exports.
So it's not the m
module which has the documentation but the inlined m::ValueEnum
. So it's completely expected. I'll comment on your PR to tell you how to detect such a case.
Steps to reproduce
Apply this quick patch diff to see the issue:
@@ -35,8 +37,19 @@ pub(super) fn visititem(cx: &DocContext<'>, item: &Item) { }); };
let Some(item_id) = item.def_id()
else {
return;
};
let module_id = match cx.tcx.def_kind(item_id) {
DefKind::Mod if item.inner_docs(cx.tcx) => item_id,
_ => find_nearest_parent_module(cx.tcx, item_id).unwrap(),
};
println!("{} /--/ {}", cx.tcx.def_path_debug_str(module_id), item.doc_value());
x test tests\rustdoc-ui\issues\issue-109282-import-inline-merge.rs
You will see that module
m
has a link[`EnumValue`]
whilem
does not have any document.Relates to
Meta
rustc --version --verbose
:Backtrace
``` Testing stage1 compiletest suite=rustdoc-ui mode=ui (x86_64-pc-windows-msvc) running 1 tests F failures: ---- [ui] tests\rustdoc-ui\issues\issue-109282-import-inline-merge.rs stdout ---- normalized stdout: issue_109282_import_inline_merge[3240]::m2 /--/ [`ValueEnum`] issue_109282_import_inline_merge[3240]::m /--/ [`ValueEnum`] The actual stdout differed from the expected stdout. Actual stdout saved to D:\projects\rs\rust\build\x86_64-pc-windows-msvc\test\rustdoc-ui\issues\issue-109282-import-inline-merge\issue-109282-import-inline-merge.stdout To update references, rerun the tests and pass the `--bless` flag To only update this specific test, also pass `--test-args issues\issue-109282-import-inline-merge.rs` error: 1 errors occurred comparing output. status: exit code: 0 command: PATH="D:\projects\rs\rust\build\x86_64-pc-windows-msvc\stage1\bin;C:\Program Files (x86)\Windows Kits\10\bin\x64;C:\Program Files (x86)\Windows Kits\10\bin\10.0.19041.0\x64;C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\bin\HostX64\x64;C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\bin\HostX64\x64;D:\projects\rs\rust\build\x86_64-pc-windows-msvc\stage0-bootstrap-tools\x86_64-pc-windows-msvc\release\deps;D:\projects\rs\rust\build\x86_64-pc-windows-msvc\stage0\bin;C:\Users\chaos\.oh-my-posh;C:\Program Files\WindowsApps\Microsoft.PowerShell_7.3.5.0_x64__8wekyb3d8bbwe;C:\Program Files\Common Files\Oracle\Java\javapath;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Python311\Scripts\;C:\Python311\;C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;C:\Program Files\Git\cmd;C:\ProgramData\chocolatey\bin;C:\Program Files\Java\jdk-17\bin;C:\Program Files\dotnet\;C:\Program Files\Neovim\/bin;C:\Program Files\nodejs\;C:\Program Files\Go\bin;D:\projects\v\v\.bin;C:\Users\chaos\projects\v\v\.bin;C:\Users\chaos\.cargo\bin;C:\Users\chaos\scoop\apps\gsudo\current;C:\Users\chaos\projects\v\.bin;C:\Users\chaos\scoop\shims;C:\Users\chaos\AppData\Local\Microsoft\WindowsApps;C:\Program Files\mingw-w64\bin;C:\Program Files\CMake\bin;C:\Program Files (x86)\Dr. Memory\bin;C:\Program Files\JetBrains\IntelliJ IDEA 2021.3.2\bin;C:\Users\chaos\AppData\Local\Programs\Microsoft VS Code\bin;C:\Users\chaos\.dotnet\tools;C:\ProgramData\chocolatey\lib\mingw\tools\install\mingw64\bin;C:\Users\chaos\AppData\Roaming\npm;C:\Users\chaos\AppData\Local\Coursier\data\bin;C:\Users\chaos\AppData\Local\JetBrains\Toolbox\scripts;C:\Users\chaos\go\bin;C:\Users\chaos\.deno\bin;C:\Users\chaos\.dotnet\tools;C:\Program Files\Java\jdk-17.0.2\bin\server;C:\altera\13.1\modelsim_ase\win32aloem;C:\Users\chaos\AppData\Local\Microsoft\WindowsApps;D:\qemu" "D:\\projects\\rs\\rust\\build\\x86_64-pc-windows-msvc\\stage1\\bin\\rustdoc.exe" "D:\\projects\\rs\\rust\\tests\\rustdoc-ui\\issues\\issue-109282-import-inline-merge.rs" "-Zthreads=1" "-Zsimulate-remapped-rust-src-base=/rustc/FAKE_PREFIX" "-Ztranslate-remapped-path-to-local-path=no" "--sysroot" "D:\\projects\\rs\\rust\\build\\x86_64-pc-windows-msvc\\stage1" "--target=x86_64-pc-windows-msvc" "--error-format" "json" "--json" "future-incompat" "-Ccodegen-units=1" "-Zui-testing" "-Zdeduplicate-diagnostics=no" "-Cstrip=debuginfo" "-o" "D:\\projects\\rs\\rust\\build\\x86_64-pc-windows-msvc\\test\\rustdoc-ui\\issues\\issue-109282-import-inline-merge" "-Cdebuginfo=0" "-Lnative=D:\\projects\\rs\\rust\\build\\x86_64-pc-windows-msvc\\native\\rust-test-helpers" "-L" "D:\\projects\\rs\\rust\\build\\x86_64-pc-windows-msvc\\test\\rustdoc-ui\\issues\\issue-109282-import-inline-merge\\auxiliary" --- stdout ------------------------------- issue_109282_import_inline_merge[3240]::m2 /--/ [`ValueEnum`] issue_109282_import_inline_merge[3240]::m /--/ [`ValueEnum`] ------------------------------------------ stderr: none failures: [ui] tests\rustdoc-ui\issues\issue-109282-import-inline-merge.rs test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 227 filtered out; finished in 511.48ms Some tests failed in compiletest suite=rustdoc-ui mode=ui host=x86_64-pc-windows-msvc target=x86_64-pc-windows-msvc Build completed unsuccessfully in 0:02:29 ```