Skip to content

advanced_slice_patterns has unreachable expression #37598

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

  1. 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
    
  2. arielb1 commented on Nov 5, 2016

    @arielb1
    Contributor

    regression introduced in #36695.

  3. TimNN commented on Nov 5, 2016

    @TimNN
    Contributor

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

  4. arielb1 commented on Nov 5, 2016

    @arielb1
    Contributor

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

  5. 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.

  6. added a commit that references this issue on Nov 5, 2016
    d3ddb85
  7. added a commit that references this issue on Nov 9, 2016
    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

      Issue actions