Skip to content

rustfmt crashes with bad span error #4517

Closed
@brmmm3

Description

@brmmm3

rustfmt (nightly on Linux) crashes with error code -32900.

It is correct that it recognizes the unclosed delimiter, but I would expect a simple error message instead of a crash.

Meta

rustc --version --verbose:

rustc 1.49.0-nightly (ffa2e7ae8 2020-10-24)
binary: rustc
commit-hash: ffa2e7ae8fbf9badc035740db949b9dae271c29f
commit-date: 2020-10-24
host: x86_64-unknown-linux-gnu
release: 1.49.0-nightly
LLVM version: 11.0
Backtrace

error: this file contains an unclosed delimiter
   --> <stdin>:434:3
    |
141 | pub fn add_to_archive(context: &Context) -> Result<(), Error> {
    |                                                               - unclosed delimiter
...
168 |         if let Err(err) = compressor.create_add_new_files(&context) {
    |                                                                     - this delimiter might not be properly closed...
...
173 |     }
    |     - ...as it matches this but it has different indentation
...
434 | }
    |   ^

error: this file contains an unclosed delimiter
   --> <stdin>:438:3
    |
141 | pub fn add_to_archive(context: &Context) -> Result<(), Error> {
    |                                                               - unclosed delimiter
...
168 |         match compressor.create_add_new_files(&context) {
    |                                                         - this delimiter might not be properly closed...
...
186 |     }
    |     - ...as it matches this but it has different indentation
...
438 | }
    |   ^

thread 'main' panicked at 'bad span: `.`: ``', src/tools/rustfmt/src/source_map.rs:52:13
stack backtrace:
   0: rust_begin_unwind
             at /rustc/ffa2e7ae8fbf9badc035740db949b9dae271c29f/library/std/src/panicking.rs:483:5
   1: std::panicking::begin_panic_fmt
             at /rustc/ffa2e7ae8fbf9badc035740db949b9dae271c29f/library/std/src/panicking.rs:437:5
   2: <rustfmt_nightly::visitor::SnippetProvider as rustfmt_nightly::source_map::SpanUtils>::span_before::{{closure}}
   3: rustfmt_nightly::chains::rewrite_chain
   4: rustfmt_nightly::expr::format_expr
   5: rustfmt_nightly::expr::format_expr
   6: <rustfmt_nightly::chains::ChainItem as rustfmt_nightly::rewrite::Rewrite>::rewrite
   7: <rustfmt_nightly::chains::ChainFormatterBlock as rustfmt_nightly::chains::ChainFormatter>::format_root
   8: <rustfmt_nightly::chains::Chain as rustfmt_nightly::rewrite::Rewrite>::rewrite
   9: rustfmt_nightly::chains::rewrite_chain
  10: rustfmt_nightly::expr::format_expr
  11: rustfmt_nightly::closures::rewrite_closure_expr
  12: rustfmt_nightly::closures::rewrite_closure
  13: rustfmt_nightly::expr::format_expr
  14: rustfmt_nightly::closures::rewrite_last_closure
  15: rustfmt_nightly::overflow::Context::rewrite_items
  16: rustfmt_nightly::overflow::Context::rewrite
  17: rustfmt_nightly::expr::rewrite_call
  18: <rustfmt_nightly::chains::ChainItem as rustfmt_nightly::rewrite::Rewrite>::rewrite
  19: rustfmt_nightly::chains::ChainFormatterShared::format_last_child
  20: <rustfmt_nightly::chains::ChainFormatterBlock as rustfmt_nightly::chains::ChainFormatter>::format_last_child
  21: <rustfmt_nightly::chains::Chain as rustfmt_nightly::rewrite::Rewrite>::rewrite
  22: rustfmt_nightly::chains::rewrite_chain
  23: rustfmt_nightly::expr::format_expr
  24: rustfmt_nightly::stmt::format_stmt
  25: rustfmt_nightly::visitor::FmtVisitor::walk_stmts
  26: rustfmt_nightly::visitor::FmtVisitor::walk_stmts
  27: rustfmt_nightly::visitor::FmtVisitor::visit_block
  28: rustfmt_nightly::expr::rewrite_block_with_visitor
  29: <rustfmt_nightly::expr::ControlFlow as rustfmt_nightly::rewrite::Rewrite>::rewrite
  30: rustfmt_nightly::expr::format_expr
  31: rustfmt_nightly::stmt::format_stmt
  32: rustfmt_nightly::visitor::FmtVisitor::walk_stmts
  33: rustfmt_nightly::visitor::FmtVisitor::walk_stmts
  34: rustfmt_nightly::visitor::FmtVisitor::walk_stmts
  35: rustfmt_nightly::visitor::FmtVisitor::walk_stmts
  36: rustfmt_nightly::visitor::FmtVisitor::walk_stmts
  37: rustfmt_nightly::visitor::FmtVisitor::walk_stmts
  38: rustfmt_nightly::visitor::FmtVisitor::walk_stmts
  39: rustfmt_nightly::visitor::FmtVisitor::walk_stmts
  40: rustfmt_nightly::visitor::FmtVisitor::visit_block
  41: rustfmt_nightly::visitor::FmtVisitor::visit_fn
  42: rustfmt_nightly::visitor::FmtVisitor::visit_impl_item
  43: rustfmt_nightly::items::<impl rustfmt_nightly::visitor::FmtVisitor>::visit_impl_items
  44: rustfmt_nightly::items::format_impl
  45: rustfmt_nightly::visitor::FmtVisitor::visit_item
  46: rustfmt_nightly::reorder::<impl rustfmt_nightly::visitor::FmtVisitor>::visit_items_with_reordering
  47: rustfmt_nightly::visitor::FmtVisitor::format_separate_mod
  48: rustfmt_nightly::formatting::format_project
  49: scoped_tls::ScopedKey<T>::set
  50: rustfmt_nightly::Session<T>::format
  51: rustfmt::format_and_emit_report
  52: rustfmt::execute
  53: rustfmt::main
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
[Error - 08:37:07] Request textDocument/formatting failed.
  Message: rustfmt exited with:
                           Status: exit code: 101
                           stdout: 
  Code: -32900 
thread 'main' panicked at 'bad span: `.`: ``', src/tools/rustfmt/src/source_map.rs:52:13
stack backtrace:
   0: rust_begin_unwind
             at /rustc/ffa2e7ae8fbf9badc035740db949b9dae271c29f/library/std/src/panicking.rs:483:5
   1: std::panicking::begin_panic_fmt
             at /rustc/ffa2e7ae8fbf9badc035740db949b9dae271c29f/library/std/src/panicking.rs:437:5
   2: <rustfmt_nightly::visitor::SnippetProvider as rustfmt_nightly::source_map::SpanUtils>::span_before::{{closure}}
   3: rustfmt_nightly::chains::rewrite_chain
   4: rustfmt_nightly::expr::format_expr
   5: rustfmt_nightly::expr::format_expr
   6: <rustfmt_nightly::chains::ChainItem as rustfmt_nightly::rewrite::Rewrite>::rewrite
   7: <rustfmt_nightly::chains::ChainFormatterBlock as rustfmt_nightly::chains::ChainFormatter>::format_root
   8: <rustfmt_nightly::chains::Chain as rustfmt_nightly::rewrite::Rewrite>::rewrite
   9: rustfmt_nightly::chains::rewrite_chain
  10: rustfmt_nightly::expr::format_expr
  11: rustfmt_nightly::closures::rewrite_closure_expr
  12: rustfmt_nightly::closures::rewrite_closure
  13: rustfmt_nightly::expr::format_expr
  14: rustfmt_nightly::closures::rewrite_last_closure
  15: rustfmt_nightly::overflow::Context::rewrite_items
  16: rustfmt_nightly::overflow::Context::rewrite
  17: rustfmt_nightly::expr::rewrite_call
  18: <rustfmt_nightly::chains::ChainItem as rustfmt_nightly::rewrite::Rewrite>::rewrite
  19: rustfmt_nightly::chains::ChainFormatterShared::format_last_child
  20: <rustfmt_nightly::chains::ChainFormatterBlock as rustfmt_nightly::chains::ChainFormatter>::format_last_child
  21: <rustfmt_nightly::chains::Chain as rustfmt_nightly::rewrite::Rewrite>::rewrite
  22: rustfmt_nightly::chains::rewrite_chain
  23: rustfmt_nightly::expr::format_expr
  24: rustfmt_nightly::stmt::format_stmt
  25: rustfmt_nightly::visitor::FmtVisitor::walk_stmts
  26: rustfmt_nightly::visitor::FmtVisitor::walk_stmts
  27: rustfmt_nightly::visitor::FmtVisitor::visit_block
  28: rustfmt_nightly::expr::rewrite_block_with_visitor
  29: <rustfmt_nightly::expr::ControlFlow as rustfmt_nightly::rewrite::Rewrite>::rewrite
  30: rustfmt_nightly::expr::format_expr
  31: rustfmt_nightly::stmt::format_stmt
  32: rustfmt_nightly::visitor::FmtVisitor::walk_stmts
  33: rustfmt_nightly::visitor::FmtVisitor::walk_stmts
  34: rustfmt_nightly::visitor::FmtVisitor::walk_stmts
  35: rustfmt_nightly::visitor::FmtVisitor::walk_stmts
  36: rustfmt_nightly::visitor::FmtVisitor::walk_stmts
  37: rustfmt_nightly::visitor::FmtVisitor::walk_stmts
  38: rustfmt_nightly::visitor::FmtVisitor::walk_stmts
  39: rustfmt_nightly::visitor::FmtVisitor::walk_stmts
  40: rustfmt_nightly::visitor::FmtVisitor::visit_block
  41: rustfmt_nightly::visitor::FmtVisitor::visit_fn
  42: rustfmt_nightly::visitor::FmtVisitor::visit_impl_item
  43: rustfmt_nightly::items::<impl rustfmt_nightly::visitor::FmtVisitor>::visit_impl_items
  44: rustfmt_nightly::items::format_impl
  45: rustfmt_nightly::visitor::FmtVisitor::visit_item
  46: rustfmt_nightly::reorder::<impl rustfmt_nightly::visitor::FmtVisitor>::visit_items_with_reordering
  47: rustfmt_nightly::visitor::FmtVisitor::format_separate_mod
  48: rustfmt_nightly::formatting::format_project
  49: scoped_tls::ScopedKey<T>::set
  50: rustfmt_nightly::Session<T>::format
  51: rustfmt::format_and_emit_report
  52: rustfmt::execute
  53: rustfmt::main
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
[Error - 08:37:22] Request textDocument/formatting failed.
  Message: rustfmt exited with:
                           Status: exit code: 101
                           stdout: 
  Code: -32900 

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