Closed as not planned
Description
I tried this code:
fn private_no_docs() {
let nobody_ever_use_this = include_str!("/etc/passwd-FILE_DOES_NOT_EXIST");
}
fn main() {}
I expected to see this happen: Nothing, because rustdoc
is just taking the documentation comments and creates a HTML document from it.
Instead, this happened:
The include_str!
macro is executed by rustdoc
even though it is in unreachable code.
The macro tries to load a non-existing file and compilation stops.
rustdoc
would be expected to not run this macro.
This also happens with cargo doc
$ cargo doc
Documenting evildependency v0.1.0 (./cargo-rustdoc/evildependency)
Checking evildependency v0.1.0 (./cargo-rustdoc/evildependency)
error: couldn't read `/etc/passwd-FILE_DOES_NOT_EXIST`: No such file or directory (os error 2)
--> ./cargo-rustdoc/evildependency/src/lib.rs:8:31
|
8 | let nobody_ever_uses_this = include_str!("/etc/passwd-FILE_DOES_NOT_EXIST");
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= note: this error originates in the macro `include_str` (in Nightly builds, run with -Z macro-backtrace for more info)
error: could not document `evildependency`
warning: build failed, waiting for other jobs to finish...
error: could not compile `evildependency` (lib) due to 1 previous error
Meta
rustc --version --verbose
:
rustc 1.83.0 (90b35a623 2024-11-26) (Arch Linux rust 1:1.83.0-1)
binary: rustc
commit-hash: 90b35a6239c3d8bdabc530a6a0816f7ff89a0aaf
commit-date: 2024-11-26
host: x86_64-unknown-linux-gnu
release: 1.83.0
LLVM version: 18.1.8