1 //@aux-build: proc_macros.rs
2 #![deny(clippy::default_trait_access)]
3 #![allow(dead_code, unused_imports)]
4 #![allow(clippy::uninlined_format_args)]
6 extern crate proc_macros;
8 use proc_macros::with_span;
9 use std::default::Default as D2;
10 use std::{default, string};
13 let s1: String = String::default();
15 let s2 = String::default();
17 let s3: String = String::default();
19 let s4: String = String::default();
21 let s5 = string::String::default();
23 let s6: String = String::default();
25 let s7 = std::string::String::default();
27 let s8: String = DefaultFactory::make_t_badly();
29 let s9: String = DefaultFactory::make_t_nicely();
31 let s10 = DerivedDefault::default();
33 let s11: GenericDerivedDefault<String> = GenericDerivedDefault::default();
35 let s12 = GenericDerivedDefault::<String>::default();
37 let s13 = TupleDerivedDefault::default();
39 let s14: TupleDerivedDefault = TupleDerivedDefault::default();
41 let s15: ArrayDerivedDefault = ArrayDerivedDefault::default();
43 let s16 = ArrayDerivedDefault::default();
45 let s17: TupleStructDerivedDefault = TupleStructDerivedDefault::default();
47 let s18 = TupleStructDerivedDefault::default();
49 let s19 = <DerivedDefault as Default>::default();
51 let s20 = UpdateSyntax {
56 let _s21: String = with_span!(s Default::default());
59 "[{}] [{}] [{}] [{}] [{}] [{}] [{}] [{}] [{}] [{:?}] [{:?}] [{:?}] [{:?}] [{:?}] [{:?}] [{:?}] [{:?}] [{:?}] [{:?}] [{:?}]",
60 s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, s16, s17, s18, s19, s20,
64 struct DefaultFactory;
67 pub fn make_t_badly<T: Default>() -> T {
71 pub fn make_t_nicely<T: Default>() -> T {
76 #[derive(Debug, Default)]
77 struct DerivedDefault {
81 #[derive(Debug, Default)]
82 struct GenericDerivedDefault<T: Default + std::fmt::Debug> {
86 #[derive(Debug, Default)]
87 struct TupleDerivedDefault {
88 pub s: (String, String),
91 #[derive(Debug, Default)]
92 struct ArrayDerivedDefault {
96 #[derive(Debug, Default)]
97 struct TupleStructDerivedDefault(String);
99 #[derive(Debug, Default)]
100 struct UpdateSyntax {