rust-lang/rust

ICE on "byte index 1 is out of bounds of ``"

Closed this issue · 4 comments

I'm seeing an internal compiler error on the following input (found by fuzz-rustc):

fn p() { match s { v, E { [) {) }

(EDIT: the trailing newlines are important)

error: this file contains an un-closed delimiter
 --> main.rs:2:2
  |
1 | fn p() { match s { v, E { [) {) }
  |        -         - un-closed delimiter
  |        |
  |        un-closed delimiter
2 | 
  |  ^

error: expected one of `,` or `}`, found `{`
 --> main.rs:1:25
  |
1 | fn p() { match s { v, E { [) {) }
  |                -        ^ expected one of `,` or `}` here
  |                |
  |                while parsing this struct

error: struct literals are not allowed here
 --> main.rs:1:16
  |
1 |   fn p() { match s { v, E { [) {) }
  |  ________________^
2 | |
  | |_^
thread 'rustc' panicked at 'byte index 1 is out of bounds of ``', src/libcore/str/mod.rs:2019:9
stack backtrace:
   0: std::panicking::default_hook::{{closure}}
   1: std::panicking::default_hook
   2: rustc::util::common::panic_hook
   3: std::panicking::rust_panic_with_hook
   4: std::panicking::continue_panic_fmt
   5: rust_begin_unwind
   6: core::panicking::panic_fmt
   7: core::str::slice_error_fail
   8: core::str::traits::<impl core::slice::SliceIndex<str> for core::ops::range::RangeTo<usize>>::index::{{closure}}
   9: <core::iter::adapters::Map<I,F> as core::iter::traits::iterator::Iterator>::fold
  10: <alloc::vec::Vec<T> as alloc::vec::SpecExtend<T,I>>::from_iter
  11: <rustc_errors::emitter::EmitterWriter as rustc_errors::emitter::Emitter>::emit_diagnostic
  12: rustc_errors::Handler::emit_db
  13: rustc_errors::diagnostic_builder::DiagnosticBuilder::emit
  14: syntax::parse::parser::Parser::parse_bottom_expr
  15: syntax::parse::parser::Parser::parse_dot_or_call_expr
  16: syntax::parse::parser::Parser::parse_prefix_expr
  17: syntax::parse::parser::Parser::parse_assoc_expr_with
  18: syntax::parse::parser::Parser::parse_bottom_expr
  19: syntax::parse::parser::Parser::parse_dot_or_call_expr
  20: syntax::parse::parser::Parser::parse_prefix_expr
  21: syntax::parse::parser::Parser::parse_assoc_expr_with
  22: syntax::parse::parser::Parser::parse_stmt_without_recovery
  23: syntax::parse::parser::Parser::parse_full_stmt
  24: syntax::parse::parser::Parser::parse_block_tail
  25: syntax::parse::parser::Parser::parse_inner_attrs_and_block
  26: syntax::parse::parser::Parser::parse_item_fn
  27: syntax::parse::parser::Parser::parse_item_implementation
  28: syntax::parse::parser::Parser::parse_item_
  29: syntax::parse::parser::Parser::parse_item
  30: syntax::parse::parser::Parser::parse_mod_items
  31: syntax::parse::parser::Parser::parse_crate_mod
  32: syntax::parse::parse_crate_from_file
  33: rustc_interface::passes::parse::{{closure}}
  34: rustc::util::common::time
  35: rustc_interface::passes::parse
  36: rustc_interface::queries::Query<T>::compute
  37: rustc_interface::queries::<impl rustc_interface::interface::Compiler>::parse
  38: rustc_interface::interface::run_compiler_in_existing_thread_pool
  39: std::thread::local::LocalKey<T>::with
  40: scoped_tls::ScopedKey<T>::set
  41: syntax::with_globals
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
query stack during panic:
end of query stack
error: incorrect close delimiter: `)`
 --> main.rs:1:28
  |
1 | fn p() { match s { v, E { [) {) }
  |                           -^ incorrect close delimiter
  |                           |
  |                           un-closed delimiter

error: incorrect close delimiter: `)`
 --> main.rs:1:31
  |
1 | fn p() { match s { v, E { [) {) }
  |                              -^ incorrect close delimiter
  |                              |
  |                              un-closed delimiter

error: aborting due to 4 previous errors


error: internal compiler error: unexpected panic

note: the compiler unexpectedly panicked. this is a bug.

note: we would appreciate a bug report: https://github.com/rust-lang/rust/blob/master/CONTRIBUTING.md#bug-reports

note: rustc 1.38.0-nightly (03f19f7ff 2019-07-24) running on x86_64-apple-darwin

The error happens on stable, beta, and nightly.

I haven't been able to reproduce :-/