Skip to content

Reach unreachable code on use super::self as x; #3645

Closed
@czipperz

Description

@czipperz

Minimum example:

mod x {
    use super::self as x;
}

However, this does not crash

mod x {
    use super::self::z as x;
}

Backtrace:

RUST_BACKTRACE=1 cargo fmt --all
thread 'main' panicked at 'internal error: entered unreachable code', src/tools/rustfmt/src/imports.rs:453:22
stack backtrace:
   0: std::sys::unix::backtrace::tracing::imp::unwind_backtrace
             at src/libstd/sys/unix/backtrace/tracing/gcc_s.rs:39
   1: std::sys_common::backtrace::_print
             at src/libstd/sys_common/backtrace.rs:71
   2: std::panicking::default_hook::{{closure}}
             at src/libstd/sys_common/backtrace.rs:59
             at src/libstd/panicking.rs:197
   3: std::panicking::default_hook
             at src/libstd/panicking.rs:211
   4: std::panicking::rust_panic_with_hook
             at src/libstd/panicking.rs:474
   5: std::panicking::begin_panic
   6: rustfmt_nightly::imports::UseTree::normalize
   7: rustfmt_nightly::imports::UseTree::from_ast_with_normalization
   8: <core::iter::adapters::FilterMap<I,F> as core::iter::traits::iterator::Iterator>::next
   9: <alloc::vec::Vec<T> as alloc::vec::SpecExtend<T,I>>::from_iter
  10: rustfmt_nightly::reorder::rewrite_reorderable_items
  11: rustfmt_nightly::reorder::<impl rustfmt_nightly::visitor::FmtVisitor>::visit_items_with_reordering
  12: rustfmt_nightly::visitor::FmtVisitor::walk_mod_items
  13: rustfmt_nightly::visitor::FmtVisitor::visit_item
  14: rustfmt_nightly::reorder::<impl rustfmt_nightly::visitor::FmtVisitor>::visit_items_with_reordering
  15: rustfmt_nightly::visitor::FmtVisitor::walk_mod_items
  16: rustfmt_nightly::visitor::FmtVisitor::format_separate_mod
  17: rustfmt_nightly::formatting::format_project
  18: scoped_tls::ScopedKey<T>::set
  19: syntax::with_globals
  20: rustfmt_nightly::Session<T>::format
  21: rustfmt::format_and_emit_report
  22: rustfmt_nightly::Session<T>::override_config
  23: rustfmt::execute
  24: rustfmt::main
  25: std::rt::lang_start::{{closure}}
  26: std::panicking::try::do_call
             at src/libstd/rt.rs:49
             at src/libstd/panicking.rs:293
  27: __rust_maybe_catch_panic
             at src/libpanic_unwind/lib.rs:85
  28: std::rt::lang_start_internal
             at src/libstd/panicking.rs:272
             at src/libstd/panic.rs:388
             at src/libstd/rt.rs:48
  29: main
  30: __libc_start_main
  31: <unknown>

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugPanic, non-idempotency, invalid code, etc.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions