summaryrefslogtreecommitdiffstats
path: root/tests/ui/macros/colorful-write-macros.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/ui/macros/colorful-write-macros.rs')
-rw-r--r--tests/ui/macros/colorful-write-macros.rs34
1 files changed, 34 insertions, 0 deletions
diff --git a/tests/ui/macros/colorful-write-macros.rs b/tests/ui/macros/colorful-write-macros.rs
new file mode 100644
index 000000000..eb1872cc7
--- /dev/null
+++ b/tests/ui/macros/colorful-write-macros.rs
@@ -0,0 +1,34 @@
+// run-pass
+#![allow(dead_code)]
+use std::io::Write;
+use std::fmt;
+
+struct Foo<'a> {
+ writer: &'a mut (dyn Write+'a),
+ other: &'a str,
+}
+
+struct Bar;
+
+impl fmt::Write for Bar {
+ fn write_str(&mut self, _: &str) -> fmt::Result {
+ Ok(())
+ }
+}
+
+fn borrowing_writer_from_struct_and_formatting_struct_field(foo: Foo) {
+ write!(foo.writer, "{}", foo.other).unwrap();
+}
+
+fn main() {
+ let mut w = Vec::new();
+ write!(&mut w as &mut dyn Write, "").unwrap();
+ write!(&mut w, "").unwrap(); // should coerce
+ println!("ok");
+
+ let mut s = Bar;
+ {
+ use std::fmt::Write;
+ write!(&mut s, "test").unwrap();
+ }
+}