7d2231aa22
PR #24242 added the ability to the compiler to directly give suggestions about how to modify code to fix an error. The new errors look like this: foobar.rs:5:12: 5:25 error: expected a path on the left-hand side of `+`, not `&'static Copy` [E0178] foobar.rs:5 let x: &'static Copy + 'static; ^~~~~~~~~~~~~ foobar.rs:5:12: 5:35 help: try adding parentheses (per RFC 438): foobar.rs: let x: &'static (Copy + 'static); foobar.rs:2:13: 2:23 error: cast to unsized type: `&_` as `core::marker::Copy` foobar.rs:2 let x = &1 as Copy; ^~~~~~~~~~ foobar.rs:2:19: 2:23 help: try casting to a reference instead: foobar.rs: let x = &1 as &Copy; foobar.rs:7:24: 7:25 error: expected expression, found `;` foobar.rs:7 let x = box (1 + 1); ^ foobar.rs:7:13: 7:16 help: try using `box()` instead: foobar.rs: let x = box() (1 + 1); This also modifies compiletest to give the ability to directly test suggestions given by error messages.
29 lines
1.2 KiB
Rust
29 lines
1.2 KiB
Rust
// Copyright 2014 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.
|
|
|
|
fn main() {
|
|
let _foo = &[1_usize, 2] as [usize];
|
|
//~^ ERROR cast to unsized type: `&[usize; 2]` as `[usize]`
|
|
//~^^ HELP consider using an implicit coercion to `&[usize]` instead
|
|
|
|
// FIXME (#22405): Replace `Box::new` with `box` here when/if possible.
|
|
let _bar = Box::new(1_usize) as std::fmt::Debug;
|
|
//~^ ERROR cast to unsized type: `Box<usize>` as `core::fmt::Debug`
|
|
//~^^ HELP try casting to a `Box` instead
|
|
|
|
let _baz = 1_usize as std::fmt::Debug;
|
|
//~^ ERROR cast to unsized type: `usize` as `core::fmt::Debug`
|
|
//~^^ HELP consider using a box or reference as appropriate
|
|
|
|
let _quux = [1_usize, 2] as [usize];
|
|
//~^ ERROR cast to unsized type: `[usize; 2]` as `[usize]`
|
|
//~^^ HELP consider using a box or reference as appropriate
|
|
}
|