Skip to content

Compiler unexpectedly panics #52170

Description

@wagk

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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    I-ICEIssue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions