diff options
| author | Esteban Küber <esteban@kuber.com.ar> | 2018-12-12 16:54:27 -0800 |
|---|---|---|
| committer | Esteban Küber <esteban@kuber.com.ar> | 2018-12-12 16:54:27 -0800 |
| commit | c7f1b977ed807d987da0350133b1443fd2caa21f (patch) | |
| tree | 6472dcd01318c90b9893e681f2d03f6772db2cc0 | |
| parent | 0076f58d5333f24f709aa46b4bad760ffb51b9b0 (diff) | |
| download | rust-c7f1b977ed807d987da0350133b1443fd2caa21f.tar.gz rust-c7f1b977ed807d987da0350133b1443fd2caa21f.zip | |
Suggest using `.display()` when trying to print a `Path`
| -rw-r--r-- | src/libcore/fmt/mod.rs | 9 | ||||
| -rw-r--r-- | src/test/ui/suggestions/path-display.rs | 7 | ||||
| -rw-r--r-- | src/test/ui/suggestions/path-display.stderr | 14 |
3 files changed, 28 insertions, 2 deletions
diff --git a/src/libcore/fmt/mod.rs b/src/libcore/fmt/mod.rs index 0c5256b981e..de936515698 100644 --- a/src/libcore/fmt/mod.rs +++ b/src/libcore/fmt/mod.rs @@ -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="you need to call `.display()` or `.to_string_lossy()` for safely printing 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")] diff --git a/src/test/ui/suggestions/path-display.rs b/src/test/ui/suggestions/path-display.rs new file mode 100644 index 00000000000..62fc9e79f7a --- /dev/null +++ b/src/test/ui/suggestions/path-display.rs @@ -0,0 +1,7 @@ +use std::path::Path; + +fn main() { + let path = Path::new("/tmp/foo/bar.txt"); + println!("{}", path); + //~^ ERROR E0277 +} diff --git a/src/test/ui/suggestions/path-display.stderr b/src/test/ui/suggestions/path-display.stderr new file mode 100644 index 00000000000..b0493a559f9 --- /dev/null +++ b/src/test/ui/suggestions/path-display.stderr @@ -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: you need to call `.display()` or `.to_string_lossy()` for safely printing 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`. |
