diff options
| author | bors <bors@rust-lang.org> | 2015-04-23 02:45:06 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2015-04-23 02:45:06 +0000 |
| commit | 6b29a7d5641e5242e1f3459b290e2c7f8e49e85a (patch) | |
| tree | d3a5fb07f59326f4782953bd571975ac60bd192c /src/test | |
| parent | 90cc83015eafb21293fd0cb8fb81f172236325df (diff) | |
| parent | 7d2231aa22c80f47deea5b482ae03ae0cb2ae827 (diff) | |
Auto merge of #24683 - P1start:help-suggestions, r=nrc
This PR uses the inline error suggestions introduced in #24242 to modify a few existing `help` messages. 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.
Diffstat (limited to 'src/test')
5 files changed, 45 insertions, 3 deletions
diff --git a/src/test/compile-fail/cast-to-unsized-trait-object-suggestion.rs b/src/test/compile-fail/cast-to-unsized-trait-object-suggestion.rs new file mode 100644 index 00000000000..4e6ae96e3fc --- /dev/null +++ b/src/test/compile-fail/cast-to-unsized-trait-object-suggestion.rs @@ -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>; +} diff --git a/src/test/compile-fail/issue-17441.rs b/src/test/compile-fail/issue-17441.rs index 68ddef67188..46a64f99354 100644 --- a/src/test/compile-fail/issue-17441.rs +++ b/src/test/compile-fail/issue-17441.rs @@ -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` diff --git a/src/test/compile-fail/issue-6702.rs b/src/test/compile-fail/issue-6702.rs index d035c615ec3..e464ddf54c2 100644 --- a/src/test/compile-fail/issue-6702.rs +++ b/src/test/compile-fail/issue-6702.rs @@ -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 */ }`? } diff --git a/src/test/compile-fail/trait-object-reference-without-parens-suggestion.rs b/src/test/compile-fail/trait-object-reference-without-parens-suggestion.rs new file mode 100644 index 00000000000..fc2ed83b272 --- /dev/null +++ b/src/test/compile-fail/trait-object-reference-without-parens-suggestion.rs @@ -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); +} diff --git a/src/test/parse-fail/parenthesized-box-expr-message.rs b/src/test/parse-fail/parenthesized-box-expr-message.rs index 4d40f86b971..09d32a71dea 100644 --- a/src/test/parse-fail/parenthesized-box-expr-message.rs +++ b/src/test/parse-fail/parenthesized-box-expr-message.rs @@ -11,6 +11,8 @@ // compile-flags: -Z parse-only 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 `;` } |
