Description
Running cargo +nightly doc
on the crate off-rs
fails with a (semi-unrelated) panic.
This currently also fails to build on docs.rs
: https://docs.rs/crate/off-rs/0.1.3/builds/500166
This started to occur with the latest nightly version (rustc 1.60.0-nightly (21b4a9cfd 2022-01-27)
).
Probable cause
The issue is probably related to the following doc comment line: https://github.com/michidk/off-rs/blob/6a0146d4f2cadb1e46ce8849abd0269cd97d3528/src/parser/options.rs#L7.
Specifically the intra doc link causes rustdoc
to fail.
/// When these limits are exceeded during the [`parse`](`crate::parser::Parser::parse`)
When this line is replaced with the follwing (adding an anonymous lifetime) line rustdoc
finishes successfully:
/// When these limits are exceeded during the [`parse`](`crate::parser::Parser::<'_>::parse`)
Minimal viable example
The example below will also panic
- The intra doc link beeing in an extra module is important as it otherwise will not panic but succeed
- It must be
[`crate:: ...`]
, with[`super:: ...`]
it will succeed.
pub struct Test<'a> {
data: &'a (),
}
impl<'a> Test<'a> {
pub fn do_test(&self) {}
}
pub mod demo {
//! [`crate::Test::do_test`]
}
Related
Related issues:
- docs.rs fails to build docs because
--resource-suffix
was removed from rustc in 1.58.1 docs.rs#1630 - docs.rs fails to build #93422
Meta
rustc --version --verbose
:
rustc 1.60.0-nightly (21b4a9cfd 2022-01-27)
binary: rustc
commit-hash: 21b4a9cfdcbb1e76f4b36b5c3cfd64d627285093
commit-date: 2022-01-27
host: x86_64-unknown-linux-gnu
release: 1.60.0-nightly
LLVM version: 13.0.0
Backtrace
docs.rs
error: https://docs.rs/crate/off-rs/0.1.3/builds/500166
RUST_BACKTRACE=1 cargo +nightly doc
:
Documenting off-rs v0.1.3 (/home/mtx/tmp/off-rs)
thread 'rustc' panicked at 'no entry found for key', src/librustdoc/passes/collect_intra_doc_links.rs:929:16
stack backtrace:
0: rust_begin_unwind
at /rustc/21b4a9cfdcbb1e76f4b36b5c3cfd64d627285093/library/std/src/panicking.rs:577:5
1: core::panicking::panic_fmt
at /rustc/21b4a9cfdcbb1e76f4b36b5c3cfd64d627285093/library/core/src/panicking.rs:135:14
2: core::panicking::panic_display
at /rustc/21b4a9cfdcbb1e76f4b36b5c3cfd64d627285093/library/core/src/panicking.rs:65:5
3: core::panicking::panic_str
at /rustc/21b4a9cfdcbb1e76f4b36b5c3cfd64d627285093/library/core/src/panicking.rs:56:5
4: core::option::expect_failed
at /rustc/21b4a9cfdcbb1e76f4b36b5c3cfd64d627285093/library/core/src/option.rs:1840:5
5: rustdoc::passes::collect_intra_doc_links::resolve_associated_trait_item
6: <rustdoc::passes::collect_intra_doc_links::LinkCollector>::resolve_associated_item
7: <rustdoc::passes::collect_intra_doc_links::LinkCollector>::resolve
8: <rustdoc::passes::collect_intra_doc_links::LinkCollector>::resolve_link
9: <rustdoc::passes::collect_intra_doc_links::LinkCollector as rustdoc::visit::DocVisitor>::visit_item
10: <rustdoc::passes::collect_intra_doc_links::LinkCollector as rustdoc::visit::DocVisitor>::visit_inner_recur
11: <rustdoc::passes::collect_intra_doc_links::LinkCollector as rustdoc::visit::DocVisitor>::visit_item
12: <rustdoc::passes::collect_intra_doc_links::LinkCollector as rustdoc::visit::DocVisitor>::visit_inner_recur
13: <rustdoc::passes::collect_intra_doc_links::LinkCollector as rustdoc::visit::DocVisitor>::visit_item
14: <rustdoc::passes::collect_intra_doc_links::LinkCollector as rustdoc::visit::DocVisitor>::visit_inner_recur
15: <rustdoc::passes::collect_intra_doc_links::LinkCollector as rustdoc::visit::DocVisitor>::visit_item
16: rustdoc::passes::collect_intra_doc_links::collect_intra_doc_links
17: <rustc_session::session::Session>::time::<rustdoc::clean::types::Crate, rustdoc::core::run_global_ctxt::{closure#8}>
18: rustdoc::core::run_global_ctxt
19: <rustc_session::session::Session>::time::<(rustdoc::clean::types::Crate, rustdoc::config::RenderOptions, rustdoc::formats::cache::Cache), rustdoc::main_options::{closure#0}::{closure#0}::{closure#1}::{closure#0}>
20: <rustc_interface::interface::Compiler>::enter::<rustdoc::main_options::{closure#0}::{closure#0}, core::result::Result<(), rustc_errors::ErrorReported>>
21: rustc_span::with_source_map::<core::result::Result<(), rustc_errors::ErrorReported>, rustc_interface::interface::create_compiler_and_run<core::result::Result<(), rustc_errors::ErrorReported>, rustdoc::main_options::{closure#0}>::{closure#1}>
22: rustc_interface::interface::create_compiler_and_run::<core::result::Result<(), rustc_errors::ErrorReported>, rustdoc::main_options::{closure#0}>
23: rustdoc::main_options
24: <scoped_tls::ScopedKey<rustc_span::SessionGlobals>>::set::<rustc_interface::util::setup_callbacks_and_run_in_thread_pool_with_globals<rustdoc::main_args::{closure#0}, core::result::Result<(), rustc_errors::ErrorReported>>::{closure#0}::{closure#0}, core::result::Result<(), rustc_errors::ErrorReported>>
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
error: internal compiler error: unexpected panic
error: Unrecognized option: 'crate-version'
error: could not document `off-rs`
Caused by:
process didn't exit successfully: `rustdoc --edition=2021 --crate-type lib --crate-name off_rs src/lib.rs -o /home/mtx/tmp/off-rs/target/doc --error-format=json --json=diagnostic-rendered-ansi,artifacts,future-incompat -C metadata=d6899838058215b9 -L dependency=/home/mtx/tmp/off-rs/target/debug/deps --crate-version 0.1.3` (exit status: 1)