2 // aux-build: proc_macro_with_span.rs
4 #![allow(unused_imports, dead_code)]
5 #![deny(clippy::default_trait_access)]
7 extern crate proc_macro_with_span;
9 use proc_macro_with_span::with_span;
11 use std::default::Default as D2;
15 let s1: String = Default::default();
17 let s2 = String::default();
19 let s3: String = D2::default();
21 let s4: String = std::default::Default::default();
23 let s5 = string::String::default();
25 let s6: String = default::Default::default();
27 let s7 = std::string::String::default();
29 let s8: String = DefaultFactory::make_t_badly();
31 let s9: String = DefaultFactory::make_t_nicely();
33 let s10 = DerivedDefault::default();
35 let s11: GenericDerivedDefault<String> = Default::default();
37 let s12 = GenericDerivedDefault::<String>::default();
39 let s13 = TupleDerivedDefault::default();
41 let s14: TupleDerivedDefault = Default::default();
43 let s15: ArrayDerivedDefault = Default::default();
45 let s16 = ArrayDerivedDefault::default();
47 let s17: TupleStructDerivedDefault = Default::default();
49 let s18 = TupleStructDerivedDefault::default();
51 let s19 = <DerivedDefault as Default>::default();
53 let s20 = UpdateSyntax {
58 let _s21: String = with_span!(s Default::default());
61 "[{}] [{}] [{}] [{}] [{}] [{}] [{}] [{}] [{}] [{:?}] [{:?}] [{:?}] [{:?}] [{:?}] [{:?}] [{:?}] [{:?}] [{:?}] [{:?}] [{:?}]",
62 s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, s16, s17, s18, s19, s20,
66 struct DefaultFactory;
69 pub fn make_t_badly<T: Default>() -> T {
73 pub fn make_t_nicely<T: Default>() -> T {
78 #[derive(Debug, Default)]
79 struct DerivedDefault {
83 #[derive(Debug, Default)]
84 struct GenericDerivedDefault<T: Default + std::fmt::Debug> {
88 #[derive(Debug, Default)]
89 struct TupleDerivedDefault {
90 pub s: (String, String),
93 #[derive(Debug, Default)]
94 struct ArrayDerivedDefault {
98 #[derive(Debug, Default)]
99 struct TupleStructDerivedDefault(String);
101 #[derive(Debug, Default)]
102 struct UpdateSyntax {