Skip to content

rustfmt: Bad span when double indexing a tuple. #76449

Closed
@ptersilie

Description

@ptersilie

I may have found a bug in rustfmt, resulting in the following error

bad span: `.`: ``', src/tools/rustfmt/src/source_map.rs:52:13

The problem can be reproduced in rustfmt 1.4.21-nightly using the following program:

fn main() {
    let t1 = (1u8, 2u8);
    let mut t2 = (t1, 3u8);
    t2.1 = t2.0.1;
}

Compiling works fine. Changing the code to t2.1 = (t2.0).1; fixes the problem, so it appears like it's parsing the double indexing as a float.

Backtrace:

   0: rust_begin_unwind
             at /rustc/73dc675b9437c2a51a975a9f58cc66f05463c351/library/std/src/panicking.rs:483
   1: std::panicking::begin_panic_fmt
             at /rustc/73dc675b9437c2a51a975a9f58cc66f05463c351/library/std/src/panicking.rs:437
   2: <rustfmt_nightly::visitor::SnippetProvider as rustfmt_nightly::source_map::SpanUtils>::span_before::{{closure}}
   3: <rustfmt_nightly::visitor::SnippetProvider as rustfmt_nightly::source_map::SpanUtils>::span_before
   4: rustfmt_nightly::chains::rewrite_chain
   5: rustfmt_nightly::expr::format_expr
   6: rustfmt_nightly::expr::rewrite_assign_rhs_with
   7: rustfmt_nightly::expr::rewrite_assignment
   8: rustfmt_nightly::expr::format_expr
   9: rustfmt_nightly::stmt::format_stmt
  10: rustfmt_nightly::visitor::FmtVisitor::walk_stmts
  11: rustfmt_nightly::visitor::FmtVisitor::walk_stmts
  12: rustfmt_nightly::visitor::FmtVisitor::walk_stmts
  13: rustfmt_nightly::visitor::FmtVisitor::visit_block
  14: rustfmt_nightly::visitor::FmtVisitor::visit_fn
  15: rustfmt_nightly::visitor::FmtVisitor::visit_item
  16: rustfmt_nightly::reorder::<impl rustfmt_nightly::visitor::FmtVisitor>::visit_items_with_reordering
  17: rustfmt_nightly::visitor::FmtVisitor::walk_mod_items
  18: rustfmt_nightly::visitor::FmtVisitor::format_separate_mod
  19: rustfmt_nightly::formatting::format_project
  20: scoped_tls::ScopedKey<T>::set
  21: rustfmt_nightly::Session<T>::format
  22: rustfmt::format_and_emit_report
  23: rustfmt_nightly::Session<T>::override_config
  24: rustfmt::execute
  25: rustfmt::main

Metadata

Metadata

Assignees

No one assigned

    Labels

    C-bugCategory: This is a bug.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions