Closed
Description
I was told I should submit a report with regards to an internal compiler error.
I tried this code:
src\lib.rs
mod read;
use read::read;
src\read\mod.rs
mod parse;
use std::io;
#[derive(Debug)]
pub enum UserInput {
EOF,
Value(String),
}
pub fn read() -> UserInput {
let stream = io::stdin();
let handle = stream.lock();
read_line(handle).unwrap()
}
fn read_line<R>(mut reader: R) -> io::Result<UserInput>
where
R: io::BufRead,
{
let mut input = String::new();
match reader.read_line(&mut input)? {
0 => Ok(UserInput::EOF),
_ => Ok(UserInput::Value(input)),
}
}
#[cfg(test)]
mod tests {
use super::*;
// This might be the wrong way to implement testing input strings
fn test_string(string: &str) {
let input = string;
let result = {
let buffer = io::BufReader::new(input.as_bytes());
match read_line(buffer).unwrap() {
UserInput::EOF => panic!("The input should not be empty"),
UserInput::Value(output) => output,
}
};
assert_eq!(input, result);
}
#[test]
fn test_read_line() {
test_string("abcABC123");
test_string("hello mal world");
test_string("[]{}'\" ;:()");
test_string("hello world abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789 (;:() []{}\"'* ;:() []{}\"'* ;:() []{}\"'*)");
}
}
src\read\parse.rs
extern crate regex;
use self::regex::Regex;
fn tokenize_re(input: &str) -> Vec<String> {
let mut _tags = Vec::<String>::new();
let mut _stream = input.chars();
let _regexpr = r".";
let _matcher = Regex::new(_regexpr).unwrap();
_tags
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_tokenize() {
let test_tokens = |input: &str, expected: Vec<&str>| {
tokenize_re(input)
.iter()
.zip(expected.iter())
.inspect(|(&x, &y)| {
println!("{}, {}", x, y);
})
.for_each(|(x, y)| {
assert_eq!(x, y);
});
};
test_tokens("()", vec!["(", ")"]);
test_tokens("(some)", vec!["(", "some", ")"]);
}
}
Output
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: (MoveData { move_paths: [MovePath { place: _0 }, MovePath { place: _1 }, MovePath { place: _2 }, MovePath { place: _3 }, MovePath { place: _4 }, MovePath { place: _5 }, MovePath { place: _6 }, MovePath { place: _7 }, MovePath { place: _8 }, MovePath { place: _9 }, MovePath { place: _10 }, MovePath { place: _11 }, MovePath { place: _12 }, MovePath { place: _13 }, MovePath { place: _14 }, MovePath { place: _15 }, MovePath { place: _16 }, MovePath { place: _17 }, MovePath { place: _18 }, MovePath { place: _19 }, MovePath { place: _20 }, MovePath { place: _21 }, MovePath { place: _22 }, MovePath { place: _23 }, MovePath { place: _24 }, MovePath { place: _25 }, MovePath { place: _26 }, MovePath { place: _27 }, MovePath { place: _28 }, MovePath { place: _29 }, MovePath { place: _30 }, MovePath { place: _31 }, MovePath { place: _32 }, MovePath { place: _33 }, MovePath { place: _34 }, MovePath { place: _35 }, MovePath { place: _36 }, MovePath { place: _37 }, MovePath { place: _38 }, MovePath { place: _39 }, MovePath { place: _40 }, MovePath { place: _41 }, MovePath { place: _42 }, MovePath { place: _43 }, MovePath { place: _44 }, MovePath { place: _45 }, MovePath { place: _46 }, MovePath { place: _47 }, MovePath { place: _48 }], moves: [mp8@bb0[10], mp8@bb0[11], mp22@bb0[21], mp23@bb0[21], mp23@bb0[22], mp22@bb0[23], mp28@bb0[34], mp29@bb0[34], mp29@bb2[0], mp28@bb2[1], mp31@bb2[7], mp32@bb2[7], mp3@bb3[0], mp32@bb4[0], mp31@bb4[1], mp27@bb4[2], mp30@bb4[2], mp30@bb4[3], mp27@bb4[4], mp26@bb4[5], mp25@bb4[6], mp18@bb4[9], mp18@bb4[10], mp34@bb4[16], mp34@bb4[17], mp7@bb4[18], mp17@bb4[18], mp33@bb4[18], mp33@bb5[0], mp17@bb5[1], mp7@bb5[2], mp6@bb5[3], mp6@bb6[0], mp35@bb6[1], mp19@bb6[2], mp20@bb6[3], mp21@bb6[4], mp9@bb6[5], mp4@bb6[7], mp3@bb6[8], mp3@bb7[0], mp0@bb7[1]], loc_map: LocationMap { map: [[[], [], [], [], [], [], [], [], [], [], [mo0], [mo1], [], [], [], [], [], [], [], [], [], [mo2, mo3], [mo4], [mo5], [], [], [], [], [], [], [], [], [], [], [mo6, mo7]], [[]], [[mo8], [mo9], [], [], [], [], [], [mo10, mo11]], [[mo12]], [[mo13], [mo14], [mo15, mo16], [mo17], [mo18], [mo19], [mo20], [], [], [mo21], [mo22], [], [], [], [], [], [mo23], [mo24], [mo25, mo26, mo27]], [[mo28], [mo29], [mo30], [mo31]], [[mo32], [mo33], [mo34], [mo35], [mo36], [mo37], [], [mo38], [mo39]], [[mo40], [mo41]]] }, path_map: [[mo41], [], [], [mo12, mo39, mo40], [mo38], [], [mo31, mo32], [mo25, mo30], [mo0, mo1], [mo37], [], [], [], [], [], [], [], [mo26, mo29], [mo21, mo22], [mo34], [mo35], [mo36], [mo2, mo5], [mo3, mo4], [], [mo20], [mo19], [mo15, mo18], [mo6, mo9], [mo7, mo8], [mo16, mo17], [mo10, mo14], [mo11, mo13], [mo27, mo28], [mo23, mo24], [mo33], [], [], [], [], [], [], [], [], [], [], [], [], []], rev_lookup: MovePathLookup { locals: [mp0, mp1, mp2, mp3, mp4, mp5, mp6, mp7, mp8, mp9, mp10, mp11, mp12, mp13, mp14, mp15, mp16, mp17, mp18, mp19, mp20, mp21, mp22, mp23, mp24, mp25, mp26, mp27, mp28, mp29, mp30, mp31, mp32, mp33, mp34, mp35, mp36, mp37, mp38, mp39, mp40, mp41, mp42, mp43, mp44, mp45, mp46, mp47, mp48], projections: {} }, inits: [mp1@slur\src\read\parse.rs:144:26: 146:18 (Deep), mp2@slur\src\read\parse.rs:144:27: 144:35 (Deep), mp3@slur\src\read\parse.rs:144:29: 144:30 (Deep), mp4@slur\src\read\parse.rs:144:33: 144:34 (Deep), mp9@<println macros>:3:18: 3:43 (Deep), mp8@<println macros>:3:18: 3:43 (Deep), mp7@<println macros>:3:18: 3:43 (Deep), mp22@slur\src\read\parse.rs:145:40: 145:41 (Deep), mp23@slur\src\read\parse.rs:145:43: 145:44 (Deep), mp21@<println macros>:3:18: 3:43 (Deep), mp24@<println macros>:3:18: 3:43 (Deep), mp25@slur\src\lib.rs:1:1: 1:1 (Deep), mp26@slur\src\lib.rs:1:1: 1:1 (Deep), mp28@slur\src\read\parse.rs:145:40: 145:41 (Deep), mp29@slur\src\read\parse.rs:145:40: 145:41 (Deep), mp27@<print macros>:2:27: 2:58 (NonPanicPathOnly), mp31@slur\src\read\parse.rs:145:43: 145:44 (Deep), mp32@slur\src\read\parse.rs:145:43: 145:44 (Deep), mp30@<print macros>:2:27: 2:58 (NonPanicPathOnly), mp20@<println macros>:3:18: 3:43 (Deep), mp19@<println macros>:3:18: 3:43 (Deep), mp18@<println macros>:3:18: 3:43 (Deep), mp17@<println macros>:3:18: 3:43 (Deep), mp35@<print macros>:2:27: 2:58 (Deep), mp34@<print macros>:2:27: 2:58 (Deep), mp33@<print macros>:2:27: 2:58 (Deep), mp6@<print macros>:2:27: 2:58 (NonPanicPathOnly), mp5@<print macros>:2:1: 2:60 (NonPanicPathOnly), mp0@slur\src\read\parse.rs:144:37: 146:18 (Deep)], init_loc_map: LocationMap { map: [[[], [in2], [], [in3], [], [], [], [], [in4], [in5], [in6], [], [], [], [], [], [], [], [in7], [], [in8], [in9], [], [], [in10], [], [in11], [], [in12], [], [], [in13], [], [in14], [in15]], [[]], [[], [], [], [], [in16], [], [in17], [in18]], [[]], [[], [], [in19], [], [], [], [], [in20], [in21], [in22], [], [], [], [], [in23], [in24], [in25], [], [in26]], [[], [], [], [in27]], [[], [], [], [], [], [], [in28], [], []], [[], []]] }, init_path_map: [[in28], [in0], [in1], [in2], [in3], [in27], [in26], [in6], [in5], [in4], [], [], [], [], [], [], [], [in22], [in21], [in20], [in19], [in9], [in7], [in8], [in10], [in11], [in12], [in15], [in13], [in14], [in18], [in16], [in17], [in25], [in24], [in23], [], [], [], [], [], [], [], [], [], [], [], [], []] }, [IllegalMove { cannot_move_out_of: IllegalMoveOrigin { span: slur\src\read\parse.rs:144:29: 144:30, kind: BorrowedContent } }])', libcore\result.rs:945:5
note: Run with `RUST_BACKTRACE=1` for a backtrace.
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.27.0 (3eda71b00 2018-06-19) running on x86_64-pc-windows-msvc
note: compiler flags: -C debuginfo=2 -C incremental
note: some of the compiler flags provided by cargo are hidden