about summary refs log tree commit diff
path: root/tests/ui/fmt/fmt_debug/none.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/ui/fmt/fmt_debug/none.rs')
-rw-r--r--tests/ui/fmt/fmt_debug/none.rs37
1 files changed, 37 insertions, 0 deletions
diff --git a/tests/ui/fmt/fmt_debug/none.rs b/tests/ui/fmt/fmt_debug/none.rs
new file mode 100644
index 00000000000..f45d37d9da2
--- /dev/null
+++ b/tests/ui/fmt/fmt_debug/none.rs
@@ -0,0 +1,37 @@
+//@ compile-flags: -Zfmt-debug=none
+//@ run-pass
+#![feature(fmt_debug)]
+#![allow(dead_code)]
+#![allow(unused)]
+
+#[derive(Debug)]
+struct Foo {
+    bar: u32,
+}
+
+#[derive(Debug)]
+enum Baz {
+    Quz,
+}
+
+#[cfg(fmt_debug = "full")]
+compile_error!("nope");
+
+#[cfg(fmt_debug = "none")]
+struct Custom;
+
+impl std::fmt::Debug for Custom {
+    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
+        f.write_str("custom_fmt")
+    }
+}
+
+fn main() {
+    let c = Custom;
+    let s = format!("Debug is '{:?}', '{:#?}', and '{c:?}'", Foo { bar: 1 }, Baz::Quz);
+    assert_eq!("Debug is '', '', and ''", s);
+
+    let f = 3.0;
+    let s = format_args!("{:?}x{:#?}y{f:?}", 1234, "can't debug this").to_string();
+    assert_eq!("xy", s);
+}