about summary refs log tree commit diff
path: root/src/test
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2021-04-17 04:48:36 +0000
committerbors <bors@rust-lang.org>2021-04-17 04:48:36 +0000
commit57e28ef86fdf528d1e348312f5b2775d9de2cbd0 (patch)
treece49f426a085adec9844564cabe0198857b1f4ea /src/test
parent42e5621c534b9367ae8e8e332d95929206720a23 (diff)
parent9ecfae44d74cadd58c9909da8f4a2410dd583c03 (diff)
downloadrust-57e28ef86fdf528d1e348312f5b2775d9de2cbd0.tar.gz
rust-57e28ef86fdf528d1e348312f5b2775d9de2cbd0.zip
Auto merge of #84243 - Soveu:fix-derive-macro-const-default, r=petrochenkov
Builtin derive macros: fix error with const generics default

This fixes a bug where builtin derive macros (like Clone, Debug) would basically copy-paste the default from a const generic, causing a compile error with very confusing message - it would say defaults are not allowed in impl blocks, while pointing at struct/enum/union definition.
Diffstat (limited to 'src/test')
-rw-r--r--src/test/ui/derives/derive-macro-const-default.rs14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/test/ui/derives/derive-macro-const-default.rs b/src/test/ui/derives/derive-macro-const-default.rs
new file mode 100644
index 00000000000..a844f2d2023
--- /dev/null
+++ b/src/test/ui/derives/derive-macro-const-default.rs
@@ -0,0 +1,14 @@
+// check-pass
+#![allow(incomplete_features)]
+#![feature(const_generics_defaults)]
+
+#[derive(Clone, PartialEq, Debug)]
+struct Example<T, const N: usize = 1usize>([T; N]);
+
+fn main() {
+    let a = Example([(); 16]);
+    let b = a.clone();
+    if a != b {
+        let _c = format!("{:?}", a);
+    }
+}