Skip to content

ICE: unprintable span #28288

Closed
Closed
@GuillaumeGomez

Description

@GuillaumeGomez

The following code:

use nom::{IResult, not_line_ending, line_ending};

fn csv_line(input: &[u8]) -> IResult<&[u8], Vec<&[u8]>> {
    terminated!(input, separated_list!(filter!(apply!(check_characters, b"\n\r,")), not_line_ending), line_ending)
}

fn check_characters(data: &[u8], characters: &[u8]) -> bool {
    for i in 0..data.len() {
        for c in characters {
            if data[i] == *c {
                return false;
            }
        }
    }
    true
}

#[test]
fn check_file() {
    let f = b"nom,age\ncarles,30\nlaure,28";

    csv_line(f);
}

which gives the following error (and ICE):

<nom macros>:15:56: 5:48 error: mismatched types:
 expected `&[u8]`,
    found `u8`
(expected &-ptr,
    found u8) [E0308]
(internal compiler error: unprintable span)
<nom macros>:1:1: 13:71 note: in expansion of apply!
<nom macros>:5:20: 5:67 note: expansion site
note: in expansion of for loop expansion
<nom macros>:3:45: 6:27 note: expansion site
<nom macros>:1:1: 12:79 note: in expansion of filter!
<nom macros>:15:46: 16:2 note: expansion site
note: in expansion of if let expansion
<nom macros>:15:1: 20:43 note: expansion site
<nom macros>:1:1: 27:65 note: in expansion of separated_list!
<nom macros>:23:1: 23:74 note: expansion site
<nom macros>:1:1: 27:65 note: in expansion of separated_list!
<nom macros>:5:7: 5:42 note: expansion site
<nom macros>:1:1: 18:61 note: in expansion of terminated!
<nom macros>:14:6: 14:75 note: expansion site
<nom macros>:1:1: 18:61 note: in expansion of terminated!
src/parser.rs:4:2: 4:112 note: expansion site
<nom macros>:15:56: 5:48 help: run `rustc --explain E0308` to see a detailed explanation
<nom macros>:15:56: 5:48 error: mismatched types:
 expected `&[u8]`,
    found `u8`
(expected &-ptr,
    found u8) [E0308]
(internal compiler error: unprintable span)
<nom macros>:1:1: 13:71 note: in expansion of apply!
<nom macros>:5:20: 5:67 note: expansion site
note: in expansion of for loop expansion
<nom macros>:3:45: 6:27 note: expansion site
<nom macros>:1:1: 12:79 note: in expansion of filter!
<nom macros>:15:46: 16:2 note: expansion site
note: in expansion of if let expansion
<nom macros>:15:1: 20:43 note: expansion site
<nom macros>:1:1: 27:65 note: in expansion of separated_list!
<nom macros>:23:1: 23:74 note: expansion site
<nom macros>:1:1: 27:65 note: in expansion of separated_list!
<nom macros>:5:7: 5:42 note: expansion site
<nom macros>:1:1: 18:61 note: in expansion of terminated!
<nom macros>:14:6: 14:75 note: expansion site
<nom macros>:1:1: 18:61 note: in expansion of terminated!
src/parser.rs:4:2: 4:112 note: expansion site
<nom macros>:15:56: 5:48 help: run `rustc --explain E0308` to see a detailed explanation
error: aborting due to previous error
error: aborting due to previous error

I have the following rustc version:

rustc 1.4.0-nightly (f6aac8037 2015-09-06)

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