Skip to content

attempted .def_id() on invalid res: Err in rustdoc for pub(restricted) struct fields using derive helper macros #67006

Closed

Description

Originally from #64705 (comment) and #64705 (comment).

Reduced down to

Cargo.toml:

[package]
name = "repro-ironoxide"
version = "0.1.0"
edition = "2018"

[dependencies]
serde = { version = "~1.0", features = ["derive"] }

lib.rs:

mod internal {
    use serde::Serialize;
    #[derive(Serialize)]
    pub struct GroupAdmin {
        #[serde(flatten)]
        pub(in crate::internal) encrypted_msg: (),
    }
}
backtrace
error: internal compiler error: src\librustc\hir\def.rs:385: attempted .def_id() on invalid res: Err

thread 'rustc' panicked at 'Box<Any>', src\librustc_errors\lib.rs:892:9
stack backtrace:
   0: backtrace::backtrace::trace_unsynchronized<closure-1>
             at C:\Users\Oliver\AppData\Local\Cargo\registry\src\github.com-1ecc6299db9ec823\backtrace-0.3.40\src\backtrace\mod.rs:66
   1: std::sys_common::backtrace::_print_fmt
             at C:\Source\rust\src\libstd\sys_common\backtrace.rs:84
   2: std::sys_common::backtrace::_print::{{impl}}::fmt
             at C:\Source\rust\src\libstd\sys_common\backtrace.rs:61
   3: core::fmt::write
             at C:\Source\rust\src\libcore\fmt\mod.rs:1024
   4: std::io::Write::write_fmt<std::sys::windows::stdio::Stderr>
             at C:\Source\rust\src\libstd\io\mod.rs:1428
   5: std::sys_common::backtrace::_print
             at C:\Source\rust\src\libstd\sys_common\backtrace.rs:65
   6: std::sys_common::backtrace::print
             at C:\Source\rust\src\libstd\sys_common\backtrace.rs:50
   7: std::panicking::default_hook::{{closure}}
             at C:\Source\rust\src\libstd\panicking.rs:193
   8: std::panicking::default_hook
             at C:\Source\rust\src\libstd\panicking.rs:210
   9: std::panicking::rust_panic_with_hook
             at C:\Source\rust\src\libstd\panicking.rs:471
  10: std::panicking::begin_panic<rustc_errors::ExplicitBug>
             at C:\Source\rust\src\libstd\panicking.rs:404
  11: rustc_errors::HandlerInner::bug
             at C:\Source\rust\src\librustc_errors\lib.rs:892
  12: rustc_errors::Handler::bug
             at C:\Source\rust\src\librustc_errors\lib.rs:658
  13: rustc::util::bug::opt_span_bug_fmt::{{closure}}<syntax_pos::span_encoding::Span>
             at C:\Source\rust\src\librustc\util\bug.rs:36
  14: rustc::ty::context::tls::with_opt::{{closure}}<closure-0,!>
             at C:\Source\rust\src\librustc\ty\context.rs:1964
  15: rustc::ty::context::tls::with_context_opt<closure-0,!>
             at C:\Source\rust\src\librustc\ty\context.rs:1914
  16: rustc::ty::context::tls::with_opt<closure-0,!>
             at C:\Source\rust\src\librustc\ty\context.rs:1964
  17: rustc::util::bug::opt_span_bug_fmt<syntax_pos::span_encoding::Span>
             at C:\Source\rust\src\librustc\util\bug.rs:32
  18: rustc::util::bug::bug_fmt
             at C:\Source\rust\src\librustc\util\bug.rs:12
  19: rustc::hir::def::{{impl}}::def_id::{{closure}}<rustc::hir::HirId>
             at C:\Source\rust\src\librustc\macros.rs:42
  20: core::option::Option<rustc::hir::def_id::DefId>::unwrap_or_else
             at C:\Source\rust\src\libcore\option.rs:422
  21: rustc::hir::def::Res<rustc::hir::HirId>::def_id
             at C:\Source\rust\src\librustc\hir\def.rs:384
  22: rustdoc::clean::register_res
             at C:\Source\rust\src\librustdoc\clean\mod.rs:4327
  23: rustdoc::clean::{{impl}}::clean
             at C:\Source\rust\src\librustdoc\clean\mod.rs:3331
  24: rustdoc::clean::{{impl}}::clean
             at C:\Source\rust\src\librustdoc\clean\mod.rs:3291
  25: rustdoc::clean::{{impl}}::clean::{{closure}}
             at C:\Source\rust\src\librustdoc\clean\mod.rs:3414
  26: core::iter::adapters::map_fold::{{closure}}
             at C:\Source\rust\src\libcore\iter\adapters\mod.rs:704
  27: core::iter::traits::iterator::Iterator::fold::ok::{{closure}}
             at C:\Source\rust\src\libcore\iter\traits\iterator.rs:1829
  28: core::iter::traits::iterator::Iterator::try_fold
             at C:\Source\rust\src\libcore\iter\traits\iterator.rs:1710
  29: core::iter::traits::iterator::Iterator::fold
             at C:\Source\rust\src\libcore\iter\traits\iterator.rs:1832
  30: core::iter::adapters::{{impl}}::fold
             at C:\Source\rust\src\libcore\iter\adapters\mod.rs:737
  31: core::iter::traits::iterator::Iterator::for_each
             at C:\Source\rust\src\libcore\iter\traits\iterator.rs:632
  32: alloc::vec::{{impl}}::spec_extend
             at C:\Source\rust\src\liballoc\vec.rs:2022
  33: alloc::vec::{{impl}}::from_iter<rustdoc::clean::Item,core::iter::adapters::Map<core::slice::Iter<rustc::hir::StructField>, closure-0>>
             at C:\Source\rust\src\liballoc\vec.rs:2005
  34: alloc::vec::{{impl}}::from_iter
             at C:\Source\rust\src\liballoc\vec.rs:1892
  35: core::iter::traits::iterator::Iterator::collect
             at C:\Source\rust\src\libcore\iter\traits\iterator.rs:1494
  36: rustdoc::clean::{{impl}}::clean
             at C:\Source\rust\src\librustdoc\clean\mod.rs:85
  37: rustdoc::clean::{{impl}}::clean
             at C:\Source\rust\src\librustdoc\clean\mod.rs:3373
  38: rustdoc::clean::{{impl}}::clean::{{closure}}
             at C:\Source\rust\src\librustdoc\clean\mod.rs:601
  39: core::iter::adapters::map_fold::{{closure}}
             at C:\Source\rust\src\libcore\iter\adapters\mod.rs:704
  40: core::iter::traits::iterator::Iterator::fold::ok::{{closure}}
             at C:\Source\rust\src\libcore\iter\traits\iterator.rs:1829
  41: core::iter::traits::iterator::Iterator::try_fold
             at C:\Source\rust\src\libcore\iter\traits\iterator.rs:1710
  42: core::iter::traits::iterator::Iterator::fold
             at C:\Source\rust\src\libcore\iter\traits\iterator.rs:1832
  43: core::iter::adapters::{{impl}}::fold
             at C:\Source\rust\src\libcore\iter\adapters\mod.rs:737
  44: core::iter::traits::iterator::Iterator::for_each
             at C:\Source\rust\src\libcore\iter\traits\iterator.rs:632
  45: alloc::vec::{{impl}}::spec_extend
             at C:\Source\rust\src\liballoc\vec.rs:2022
  46: alloc::vec::{{impl}}::extend
             at C:\Source\rust\src\liballoc\vec.rs:1960
  47: rustdoc::clean::{{impl}}::clean
             at C:\Source\rust\src\librustdoc\clean\mod.rs:601
  48: rustdoc::clean::{{impl}}::clean::{{closure}}
             at C:\Source\rust\src\librustdoc\clean\mod.rs:606
  49: core::iter::adapters::map_fold::{{closure}}
             at C:\Source\rust\src\libcore\iter\adapters\mod.rs:704
  50: core::iter::traits::iterator::Iterator::fold::ok::{{closure}}
             at C:\Source\rust\src\libcore\iter\traits\iterator.rs:1829
  51: core::iter::traits::iterator::Iterator::try_fold
             at C:\Source\rust\src\libcore\iter\traits\iterator.rs:1710
  52: core::iter::traits::iterator::Iterator::fold
             at C:\Source\rust\src\libcore\iter\traits\iterator.rs:1832
  53: core::iter::adapters::{{impl}}::fold
             at C:\Source\rust\src\libcore\iter\adapters\mod.rs:737
  54: core::iter::traits::iterator::Iterator::for_each
             at C:\Source\rust\src\libcore\iter\traits\iterator.rs:632
  55: alloc::vec::{{impl}}::spec_extend
             at C:\Source\rust\src\liballoc\vec.rs:2022
  56: alloc::vec::{{impl}}::extend
             at C:\Source\rust\src\liballoc\vec.rs:1960
  57: rustdoc::clean::{{impl}}::clean
             at C:\Source\rust\src\librustdoc\clean\mod.rs:606
  58: rustdoc::clean::krate
             at C:\Source\rust\src\librustdoc\clean\mod.rs:161
  59: rustc::ty::context::tls::enter_global<closure-0,(rustdoc::clean::Crate, rustdoc::html::render::RenderInfo, rustdoc::config::RenderOptions)>
             at C:\Source\rust\src\librustc\ty\context.rs:1867
  60: rustdoc::core::run_core::{{closure}}::{{closure}}
             at C:\Source\rust\src\librustdoc\core.rs:379
  61: rustc_interface::interface::Compiler::enter
             at C:\Source\rust\src\librustc_interface\queries.rs:335
  62: rustdoc::core::run_core::{{closure}}
             at C:\Source\rust\src\librustdoc\core.rs:346
  63: rustc_interface::interface::run_compiler_in_existing_thread_pool<(rustdoc::clean::Crate, rustdoc::html::render::RenderInfo, rustdoc::config::RenderOptions),closure-6>
             at C:\Source\rust\src\librustc_interface\interface.rs:179
  64: rustdoc::core::run_core
             at C:\Source\rust\src\librustdoc\core.rs:346
  65: rustdoc::rust_input::{{closure}}
             at C:\Source\rust\src\librustdoc\lib.rs:485
  66: std::panic::{{impl}}::call_once<i32,closure-0>
             at C:\Source\rust\src\libstd\panic.rs:318
  67: std::panicking::try::do_call<std::panic::AssertUnwindSafe<closure-0>,i32>
             at C:\Source\rust\src\libstd\panicking.rs:292
  68: panic_unwind::__rust_maybe_catch_panic
             at C:\Source\rust\src\libpanic_unwind\lib.rs:81
  69: std::panicking::try
             at C:\Source\rust\src\libstd\panicking.rs:270
  70: std::panic::catch_unwind
             at C:\Source\rust\src\libstd\panic.rs:394
  71: rustc_driver::catch_fatal_errors<closure-0,i32>
             at C:\Source\rust\src\librustc_driver\lib.rs:1143
  72: rustdoc::rust_input
             at C:\Source\rust\src\librustdoc\lib.rs:482
  73: rustdoc::main_options
             at C:\Source\rust\src\librustdoc\lib.rs:441
  74: rustdoc::main_args::{{closure}}
             at C:\Source\rust\src\librustdoc\lib.rs:414
  75: rustc_interface::util::spawn_thread_pool::{{closure}}::{{closure}}::{{closure}}::{{closure}}
             at C:\Source\rust\src\librustc_interface\util.rs:167
  76: rustc::ty::context::tls::with_thread_locals::{{closure}}::{{closure}}
             at C:\Source\rust\src\librustc\ty\context.rs:1824
  77: std::thread::local::LocalKey<core::cell::Cell<fn(rustc_errors::diagnostic::Diagnostic*)>>::try_with
             at C:\Source\rust\src\libstd\thread\local.rs:262
  78: std::thread::local::LocalKey<core::cell::Cell<fn(rustc_errors::diagnostic::Diagnostic*)>>::with
             at C:\Source\rust\src\libstd\thread\local.rs:239
  79: rustc::ty::context::tls::with_thread_locals::{{closure}}
             at C:\Source\rust\src\librustc\ty\context.rs:1816
  80: std::thread::local::LocalKey<core::cell::Cell<fn(syntax_pos::span_encoding::Span, mut core::fmt::Formatter*) -> core::result::Result<(), core::fmt::Error>>>::try_with
             at C:\Source\rust\src\libstd\thread\local.rs:262
  81: std::thread::local::LocalKey<core::cell::Cell<fn(syntax_pos::span_encoding::Span, mut core::fmt::Formatter*) -> core::result::Result<(), core::fmt::Error>>>::with<core::cell::Cell<fn(syntax_pos::span_encoding::Span, mut core::fmt::Formatter*) -> core::res
             at C:\Source\rust\src\libstd\thread\local.rs:239
  82: rustc::ty::context::tls::with_thread_locals
             at C:\Source\rust\src\librustc\ty\context.rs:1808
  83: rustc_interface::util::spawn_thread_pool::{{closure}}::{{closure}}::{{closure}}
             at C:\Source\rust\src\librustc_interface\util.rs:167
  84: scoped_tls::ScopedKey<rustc_data_structures::sync::Lock<usize>>::set
             at C:\Users\Oliver\AppData\Local\Cargo\registry\src\github.com-1ecc6299db9ec823\scoped-tls-1.0.0\src\lib.rs:137
  85: rustc_interface::util::spawn_thread_pool::{{closure}}::{{closure}}
             at C:\Source\rust\src\librustc_interface\util.rs:163
  86: scoped_tls::ScopedKey<syntax_pos::Globals>::set
             at C:\Users\Oliver\AppData\Local\Cargo\registry\src\github.com-1ecc6299db9ec823\scoped-tls-1.0.0\src\lib.rs:137
  87: syntax::with_globals::{{closure}}
             at C:\Source\rust\src\libsyntax\lib.rs:62
  88: scoped_tls::ScopedKey<syntax::Globals>::set<syntax::Globals,closure-0,i32>
             at C:\Users\Oliver\AppData\Local\Cargo\registry\src\github.com-1ecc6299db9ec823\scoped-tls-1.0.0\src\lib.rs:137
  89: syntax::with_globals<closure-0,i32>
             at C:\Source\rust\src\libsyntax\lib.rs:61
  90: rustc_interface::util::scoped_thread::{{closure}}
             at C:\Source\rust\src\librustc_interface\util.rs:139
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
error: aborting due to previous error

error: Could not document `repro-ironoxide`.

This bisects to 5c5b8af namely #64694 (cc. @petrochenkov). This may have the same root cause as #64705 because again we're seeing a Def::Err in the path for pub(in crate::internal).

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

Metadata

Assignees

Labels

A-macrosArea: All kinds of macros (custom derive, macro_rules!, proc macros, ..)A-resolveArea: Name resolutionA-visibilityArea: Visibility / privacyC-bugCategory: This is a bug.I-ICEIssue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️P-highHigh priorityT-compilerRelevant to the compiler team, which will review and decide on the PR/issue.T-rustdocRelevant to the rustdoc team, which will review and decide on the PR/issue.regression-from-stable-to-stablePerformance or correctness regression from one stable version to another.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions