diff --git a/src/cargo/ops/cargo_compile/unit_generator.rs b/src/cargo/ops/cargo_compile/unit_generator.rs index 18bbab12dc1..b2d86b7531c 100644 --- a/src/cargo/ops/cargo_compile/unit_generator.rs +++ b/src/cargo/ops/cargo_compile/unit_generator.rs @@ -198,7 +198,9 @@ impl<'a> UnitGenerator<'a, '_> { .filter(|t| { t.documented() && (!t.is_bin() - || !targets.iter().any(|l| l.is_lib() && l.name() == t.name())) + || !targets + .iter() + .any(|l| l.is_lib() && l.crate_name() == t.crate_name())) }) .collect() } diff --git a/tests/testsuite/doc.rs b/tests/testsuite/doc.rs index 40ad5f45108..a809f306cfe 100644 --- a/tests/testsuite/doc.rs +++ b/tests/testsuite/doc.rs @@ -478,6 +478,28 @@ fn doc_lib_bin_same_name_documents_lib_when_requested() { assert!(!doc_html.contains("Binary")); } +#[cargo_test] +fn doc_lib_bin_same_name_with_dash() { + // Checks `doc` behavior when there is a dash in the package name, and + // there is a lib and bin, and the lib name is inferred. + let p = project() + .file("Cargo.toml", &basic_manifest("foo-bar", "1.0.0")) + .file("src/lib.rs", "") + .file("src/main.rs", "fn main() {}") + .build(); + p.cargo("doc") + .with_stderr( + "\ +[DOCUMENTING] foo-bar v1.0.0 ([ROOT]/foo) +[FINISHED] [..] +[GENERATED] [ROOT]/foo/target/doc/foo_bar/index.html +", + ) + .run(); + assert!(p.build_dir().join("doc/foo_bar/index.html").exists()); + assert!(!p.build_dir().join("doc/foo_bar/fn.main.html").exists()); +} + #[cargo_test] fn doc_lib_bin_same_name_documents_named_bin_when_requested() { let p = project()