Change a few error messages to give code suggestions
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.
This commit is contained in:
parent
049de3fe7f
commit
7d2231aa22
10 changed files with 113 additions and 25 deletions
|
|
@ -0,0 +1,20 @@
|
|||
// Copyright 2015 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() {
|
||||
&1 as Copy;
|
||||
//~^ ERROR cast to unsized type
|
||||
//~| HELP try casting to a reference instead:
|
||||
//~| SUGGESTION &1 as &Copy;
|
||||
Box::new(1) as Copy;
|
||||
//~^ ERROR cast to unsized type
|
||||
//~| HELP try casting to a `Box` instead:
|
||||
//~| SUGGESTION Box::new(1) as Box<Copy>;
|
||||
}
|
||||
|
|
@ -16,7 +16,7 @@ fn main() {
|
|||
// 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 did you mean `Box<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`
|
||||
|
|
|
|||
|
|
@ -15,5 +15,5 @@ struct Monster {
|
|||
|
||||
fn main() {
|
||||
let _m = Monster(); //~ ERROR `Monster` is a structure name, but
|
||||
//~^ HELP Did you mean to write: `Monster { /* fields */ }`?
|
||||
//~^ HELP did you mean to write: `Monster { /* fields */ }`?
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,20 @@
|
|||
// Copyright 2015 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 _: &Copy + 'static;
|
||||
//~^ ERROR expected a path
|
||||
//~| HELP try adding parentheses
|
||||
//~| SUGGESTION let _: &(Copy + 'static);
|
||||
let _: &'static Copy + 'static;
|
||||
//~^ ERROR expected a path
|
||||
//~| HELP try adding parentheses
|
||||
//~| SUGGESTION let _: &'static (Copy + 'static);
|
||||
}
|
||||
|
|
@ -9,6 +9,8 @@
|
|||
// except according to those terms.
|
||||
|
||||
fn main() {
|
||||
box(1 + 1) //~ HELP perhaps you meant `box() (foo)` instead?
|
||||
box (1 + 1)
|
||||
//~^ HELP try using `box()` instead:
|
||||
//~| SUGGESTION box() (1 + 1)
|
||||
; //~ ERROR expected expression, found `;`
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue