Skip to content

Panic in cargo doc with resolver = "2" when indirectly depending on proc-macro2 #9064

Closed

Description

Problem
cargo doc panics when run on crate A that depends on crate B, when crate B depends on proc-macro2. This does not happen when directly running cargo doc on crate B.

Error & Backtrace
thread 'main' panicked at 'activated_features for invalid package: features did not find PackageId { name: "proc-macro2", version: "1.0.24", source: "registry `https://github.com/rust-lang/crates.io-index`" } false

Stack backtrace:
   0: std::backtrace::Backtrace::create
   1: std::backtrace::Backtrace::capture
   2: cargo::core::resolver::features::ResolvedFeatures::activated_features_int
   3: cargo::core::compiler::unit_dependencies::new_unit_dep_with_profile
   4: cargo::core::compiler::unit_dependencies::compute_deps
   5: cargo::core::compiler::unit_dependencies::deps_of
   6: cargo::core::compiler::unit_dependencies::deps_of
   7: cargo::core::compiler::unit_dependencies::build_unit_dependencies
   8: cargo::ops::cargo_compile::create_bcx
   9: cargo::ops::cargo_compile::compile_ws
  10: cargo::ops::cargo_compile::compile
  11: cargo::ops::cargo_doc::doc
  12: cargo::commands::doc::exec
  13: cargo::cli::main
  14: cargo::main
  15: std::sys_common::backtrace::__rust_begin_short_backtrace
  16: std::rt::lang_start::{{closure}}
  17: std::rt::lang_start_internal
  18: _main', src/tools/cargo/src/cargo/core/resolver/features.rs:235:14
stack backtrace:
   0: _rust_begin_unwind
   1: core::panicking::panic_fmt
   2: core::option::expect_none_failed
   3: cargo::core::compiler::unit_dependencies::new_unit_dep_with_profile
   4: cargo::core::compiler::unit_dependencies::compute_deps
   5: cargo::core::compiler::unit_dependencies::deps_of
   6: cargo::core::compiler::unit_dependencies::deps_of
   7: cargo::core::compiler::unit_dependencies::build_unit_dependencies
   8: cargo::ops::cargo_compile::create_bcx
   9: cargo::ops::cargo_compile::compile_ws
  10: cargo::ops::cargo_compile::compile
  11: cargo::ops::cargo_doc::doc
  12: cargo::commands::doc::exec
  13: cargo::cli::main
  14: cargo::main
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

Steps

  1. Clone the minimal example at https://github.com/nerosnm/proc-macro-resolver-bug
  2. Run cargo doc (or, more explicitly, cargo +nightly-2021-01-10 doc)

Possible Solution(s)
This looks similar to #8774 to me, although from what I can tell it's not explicitly relying on any features specific to the new resolver.

Notes
Output of cargo version: cargo 1.51.0-nightly (329895f 2021-01-06)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Assignees

Labels

A-features2Area: issues specifically related to the v2 feature resolverC-bugCategory: bugCommand-docP-highPriority: High

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions