]> git.proxmox.com Git - rustc.git/blob - src/librustc_middle/traits/structural_impls.rs
New upstream version 1.47.0+dfsg1
[rustc.git] / src / librustc_middle / traits / structural_impls.rs
1 use crate::traits;
2
3 use std::fmt;
4
5 // Structural impls for the structs in `traits`.
6
7 impl<'tcx, N: fmt::Debug> fmt::Debug for traits::ImplSource<'tcx, N> {
8 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
9 match *self {
10 super::ImplSourceUserDefined(ref v) => write!(f, "{:?}", v),
11
12 super::ImplSourceAutoImpl(ref t) => write!(f, "{:?}", t),
13
14 super::ImplSourceClosure(ref d) => write!(f, "{:?}", d),
15
16 super::ImplSourceGenerator(ref d) => write!(f, "{:?}", d),
17
18 super::ImplSourceFnPointer(ref d) => write!(f, "ImplSourceFnPointer({:?})", d),
19
20 super::ImplSourceDiscriminantKind(ref d) => write!(f, "{:?}", d),
21
22 super::ImplSourceObject(ref d) => write!(f, "{:?}", d),
23
24 super::ImplSourceParam(ref n) => write!(f, "ImplSourceParam({:?})", n),
25
26 super::ImplSourceBuiltin(ref d) => write!(f, "{:?}", d),
27
28 super::ImplSourceTraitAlias(ref d) => write!(f, "{:?}", d),
29 }
30 }
31 }
32
33 impl<'tcx, N: fmt::Debug> fmt::Debug for traits::ImplSourceUserDefinedData<'tcx, N> {
34 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
35 write!(
36 f,
37 "ImplSourceUserDefinedData(impl_def_id={:?}, substs={:?}, nested={:?})",
38 self.impl_def_id, self.substs, self.nested
39 )
40 }
41 }
42
43 impl<'tcx, N: fmt::Debug> fmt::Debug for traits::ImplSourceGeneratorData<'tcx, N> {
44 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
45 write!(
46 f,
47 "ImplSourceGeneratorData(generator_def_id={:?}, substs={:?}, nested={:?})",
48 self.generator_def_id, self.substs, self.nested
49 )
50 }
51 }
52
53 impl<'tcx, N: fmt::Debug> fmt::Debug for traits::ImplSourceClosureData<'tcx, N> {
54 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
55 write!(
56 f,
57 "ImplSourceClosureData(closure_def_id={:?}, substs={:?}, nested={:?})",
58 self.closure_def_id, self.substs, self.nested
59 )
60 }
61 }
62
63 impl<N: fmt::Debug> fmt::Debug for traits::ImplSourceBuiltinData<N> {
64 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
65 write!(f, "ImplSourceBuiltinData(nested={:?})", self.nested)
66 }
67 }
68
69 impl<N: fmt::Debug> fmt::Debug for traits::ImplSourceAutoImplData<N> {
70 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
71 write!(
72 f,
73 "ImplSourceAutoImplData(trait_def_id={:?}, nested={:?})",
74 self.trait_def_id, self.nested
75 )
76 }
77 }
78
79 impl<'tcx, N: fmt::Debug> fmt::Debug for traits::ImplSourceObjectData<'tcx, N> {
80 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
81 write!(
82 f,
83 "ImplSourceObjectData(upcast={:?}, vtable_base={}, nested={:?})",
84 self.upcast_trait_ref, self.vtable_base, self.nested
85 )
86 }
87 }
88
89 impl<'tcx, N: fmt::Debug> fmt::Debug for traits::ImplSourceFnPointerData<'tcx, N> {
90 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
91 write!(f, "ImplSourceFnPointerData(fn_ty={:?}, nested={:?})", self.fn_ty, self.nested)
92 }
93 }
94
95 impl<'tcx, N: fmt::Debug> fmt::Debug for traits::ImplSourceTraitAliasData<'tcx, N> {
96 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
97 write!(
98 f,
99 "ImplSourceTraitAlias(alias_def_id={:?}, substs={:?}, nested={:?})",
100 self.alias_def_id, self.substs, self.nested
101 )
102 }
103 }
104
105 ///////////////////////////////////////////////////////////////////////////
106 // Lift implementations
107
108 CloneTypeFoldableAndLiftImpls! {
109 super::IfExpressionCause,
110 super::ImplSourceDiscriminantKindData,
111 }