Skip to content

advanced_slice_patterns has unreachable expression #37598

Closed
@adjivas

Description

@adjivas

Hello,

According to this chapiter, I have writted this example:

#![feature(advanced_slice_patterns, slice_patterns)]


fn check(list: &[u8]) {
    match list {
        &[] => {},
        &[u1 @ b'\xF0' ... b'\xF4', u2 @ b'\x8F' ... b'\x90',
          u3 @ b'\x80' ... b'\xBF', u4 @ b'\x80' ... b'\xBF', ref next..] => {
            println!("{} {} {} {}", u1, u2, u3, u4);
            check(next)
        },
        &[u1, ref next..] => {
            println!("{}", u1);
            check(next)
        },
    }
}

fn main() {
    let buf = &[b'0', b'1', b'4'];
    
    check(&buf[..]);
}

But after the rustc 1.14.0-nightly version from 2016-10-25 -aef18be1b-,
I expected to see this happen:

error[E0001]: unreachable pattern
  --> <anon>:12:9
   |
12 |         &[u1 @ b'\xF0' ... b'\xF4',
   |         ^ this is an unreachable pattern

error: aborting due to previous error

Activity

djzin

djzin commented on Nov 5, 2016

@djzin
Contributor

Minimal example

#![feature(slice_patterns)]

fn check(list: &[u8]) {
    match list {
        &[] => {},
        &[u1, u2, ref next..] => {},
        &[u1] => {},
    }
}

Fails with

rustc 1.14.0-nightly (7c69b0d5a 2016-11-01)
error[E0001]: unreachable pattern
 --> <anon>:6:9
  |
6 |         &[u1, u2, ref next..] => {},
  |         ^^^^^^^^^^^^^^^^^^^^^ this is an unreachable pattern

error: aborting due to previous error
arielb1

arielb1 commented on Nov 5, 2016

@arielb1
Contributor

regression introduced in #36695.

TimNN

TimNN commented on Nov 5, 2016

@TimNN
Contributor

@arielb1: How can this be a stable-nightly regression when this affects a gated feature?

arielb1

arielb1 commented on Nov 5, 2016

@arielb1
Contributor

Not sure what's the policy about it. It's a regression.

TimNN

TimNN commented on Nov 5, 2016

@TimNN
Contributor

Yeah, I totally agree that this is a regression, although the label is inaccurate. I have wanted a regression-from-nightly-to-nightly label in the past (for eg. #36954), and think that once upon a time there even was such a label.

added a commit that references this issue on Nov 5, 2016
d3ddb85
added a commit that references this issue on Nov 9, 2016

Auto merge of #37603 - arielb1:max-slice-length, r=nikomatsakis

0b46947
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

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

      Development

      No branches or pull requests

        Participants

        @TimNN@arielb1@adjivas@djzin

        Issue actions

          advanced_slice_patterns has unreachable expression · Issue #37598 · rust-lang/rust