Skip to content

Commit

Permalink
Rollup merge of rust-lang#56761 - estebank:path-display, r=zackmdavis
Browse files Browse the repository at this point in the history
Suggest using `.display()` when trying to print a `Path`

Fix rust-lang#38997.
  • Loading branch information
Centril committed Dec 16, 2018
2 parents af3f907 + 33a34b0 commit c52a13d
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 2 deletions.
9 changes: 7 additions & 2 deletions src/libcore/fmt/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -609,10 +609,15 @@ pub trait Debug {
/// println!("The origin is: {}", origin);
/// ```
#[rustc_on_unimplemented(
on(
_Self="std::path::Path",
label="`{Self}` cannot be formatted with the default formatter; call `.display()` on it",
note="call `.display()` or `.to_string_lossy()` to safely print paths, \
as they may contain non-Unicode data"
),
message="`{Self}` doesn't implement `{Display}`",
label="`{Self}` cannot be formatted with the default formatter",
note="in format strings you may be able to use `{{:?}}` \
(or {{:#?}} for pretty-print) instead",
note="in format strings you may be able to use `{{:?}}` (or {{:#?}} for pretty-print) instead",
)]
#[doc(alias = "{}")]
#[stable(feature = "rust1", since = "1.0.0")]
Expand Down
7 changes: 7 additions & 0 deletions src/test/ui/suggestions/path-display.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
use std::path::Path;

fn main() {
let path = Path::new("/tmp/foo/bar.txt");
println!("{}", path);
//~^ ERROR E0277
}
14 changes: 14 additions & 0 deletions src/test/ui/suggestions/path-display.stderr
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
error[E0277]: `std::path::Path` doesn't implement `std::fmt::Display`
--> $DIR/path-display.rs:5:20
|
LL | println!("{}", path);
| ^^^^ `std::path::Path` cannot be formatted with the default formatter; call `.display()` on it
|
= help: the trait `std::fmt::Display` is not implemented for `std::path::Path`
= note: call `.display()` or `.to_string_lossy()` to safely print paths, as they may contain non-Unicode data
= note: required because of the requirements on the impl of `std::fmt::Display` for `&std::path::Path`
= note: required by `std::fmt::Display::fmt`

error: aborting due to previous error

For more information about this error, try `rustc --explain E0277`.

0 comments on commit c52a13d

Please sign in to comment.