Skip to content

"panicked at 'bad span: .: `'" when formatting tuple.0.0` #4355

Closed
@yvt

Description

@yvt

Describe the bug

The tuple.0.0 syntax, whose support was recently merged to rustc (rust-lang/rust#71322), causes rustfmt to panic.

To Reproduce

fn main() {
    let _ = ((1,),).0.0;
}

Playground Link

thread 'main' panicked at 'bad span: `.`: ``', src/tools/rustfmt/src/source_map.rs:52:13
Backtrace
stack backtrace:
   0: <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt
   1: core::fmt::write
   2: std::io::Write::write_fmt
   3: std::panicking::default_hook::{{closure}}
   4: std::panicking::default_hook
   5: std::panicking::rust_panic_with_hook
   6: rust_begin_unwind
   7: std::panicking::begin_panic_fmt
   8: <rustfmt_nightly::visitor::SnippetProvider as rustfmt_nightly::source_map::SpanUtils>::span_before::{{closure}}
   9: <rustfmt_nightly::visitor::SnippetProvider as rustfmt_nightly::source_map::SpanUtils>::span_before
  10: rustfmt_nightly::chains::rewrite_chain
  11: rustfmt_nightly::expr::format_expr
  12: rustfmt_nightly::expr::rewrite_assign_rhs_with
  13: rustfmt_nightly::items::<impl rustfmt_nightly::rewrite::Rewrite for rustc_ap_rustc_ast::ast::Local>::rewrite
  14: rustfmt_nightly::stmt::format_stmt
  15: rustfmt_nightly::visitor::FmtVisitor::walk_stmts
  16: rustfmt_nightly::visitor::FmtVisitor::visit_block
  17: rustfmt_nightly::visitor::FmtVisitor::visit_fn
  18: rustfmt_nightly::visitor::FmtVisitor::visit_item
  19: rustfmt_nightly::reorder::<impl rustfmt_nightly::visitor::FmtVisitor>::visit_items_with_reordering
  20: rustfmt_nightly::visitor::FmtVisitor::walk_mod_items
  21: rustfmt_nightly::visitor::FmtVisitor::format_separate_mod
  22: rustfmt_nightly::formatting::format_project
  23: scoped_tls::ScopedKey<T>::set
  24: rustc_ap_rustc_ast::attr::with_session_globals
  25: rustfmt_nightly::Session<T>::format
  26: rustfmt::format_and_emit_report
  27: rustfmt_nightly::Session<T>::override_config
  28: rustfmt::execute
  29: rustfmt::main
  30: std::rt::lang_start::{{closure}}
  31: std::rt::lang_start_internal
  32: main

Expected behavior

rustfmt completes without panicking.

Meta

  • rustfmt version: rustfmt 1.4.19-nightly (cef1c0d5 2020-07-21)
  • From where did you install rustfmt?: rustup
  • How do you run rustfmt: rustfmt +nightly-2020-07-27 filename.rs

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