add an help message when using an old-style slice pattern
This commit is contained in:
parent
5cf4139d21
commit
fcabfa9735
@ -345,9 +345,20 @@ impl<'a, 'gcx, 'tcx> PatCtxt<'a, 'gcx, 'tcx> {
|
||||
ty::TySlice(inner_ty) => (inner_ty, expected_ty),
|
||||
_ => {
|
||||
if !expected_ty.references_error() {
|
||||
span_err!(tcx.sess, pat.span, E0529,
|
||||
let mut err = struct_span_err!(
|
||||
tcx.sess, pat.span, E0529,
|
||||
"expected an array or slice, found `{}`",
|
||||
expected_ty);
|
||||
if let ty::TyRef(_, ty::TypeAndMut { mutbl: _, ty }) = expected_ty.sty {
|
||||
match ty.sty {
|
||||
ty::TyArray(..) | ty::TySlice(..) => {
|
||||
err.help("the semantics of slice patterns changed \
|
||||
recently; see issue #23121");
|
||||
}
|
||||
_ => {}
|
||||
}
|
||||
}
|
||||
err.emit();
|
||||
}
|
||||
(tcx.types.err, tcx.types.err)
|
||||
}
|
||||
|
22
src/test/compile-fail/pat-slice-old-style.rs
Normal file
22
src/test/compile-fail/pat-slice-old-style.rs
Normal file
@ -0,0 +1,22 @@
|
||||
// Copyright 2016 The Rust Project Developers. See the COPYRIGHT
|
||||
// file at the top-level directory of this distribution and at
|
||||
// http://rust-lang.org/COPYRIGHT.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
#![feature(slice_patterns)]
|
||||
|
||||
fn slice_pat(x: &[u8]) {
|
||||
// OLD!
|
||||
match x {
|
||||
[a, b..] => {}
|
||||
//~^ ERROR expected an array or slice, found `&[u8]`
|
||||
//~| HELP the semantics of slice patterns changed recently; see issue #23121
|
||||
}
|
||||
}
|
||||
|
||||
fn main() {}
|
Loading…
Reference in New Issue
Block a user