Skip to content

Commit 6388293

Browse files
committed
Support Display and Debug of same path in error message
1 parent dc0359e commit 6388293

File tree

1 file changed

+12
-5
lines changed

1 file changed

+12
-5
lines changed

impl/src/fmt.rs

+12-5
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use crate::scan_expr::scan_expr;
44
use crate::unraw::{IdentUnraw, MemberUnraw};
55
use proc_macro2::{Delimiter, TokenStream, TokenTree};
66
use quote::{format_ident, quote, quote_spanned};
7-
use std::collections::{BTreeSet, HashMap, HashSet};
7+
use std::collections::{BTreeSet, HashMap};
88
use std::iter;
99
use syn::ext::IdentExt;
1010
use syn::parse::discouraged::Speculative;
@@ -34,7 +34,7 @@ impl Display<'_> {
3434
let mut infinite_recursive = false;
3535
let mut implied_bounds = BTreeSet::new();
3636
let mut bindings = Vec::new();
37-
let mut macro_named_args = HashSet::new();
37+
let mut macro_named_args = BTreeSet::new();
3838

3939
self.requires_fmt_machinery = self.requires_fmt_machinery || fmt.contains('}');
4040

@@ -112,15 +112,22 @@ impl Display<'_> {
112112
out += &member.to_string();
113113
continue;
114114
}
115+
let formatvar_prefix = if bonus_display {
116+
"__display"
117+
} else {
118+
"__field"
119+
};
115120
let mut formatvar = IdentUnraw::new(match &member {
116-
MemberUnraw::Unnamed(index) => format_ident!("__field{}", index),
117-
MemberUnraw::Named(ident) => format_ident!("__field_{}", ident.to_string()),
121+
MemberUnraw::Unnamed(index) => format_ident!("{}{}", formatvar_prefix, index),
122+
MemberUnraw::Named(ident) => {
123+
format_ident!("{}_{}", formatvar_prefix, ident.to_string())
124+
}
118125
});
119126
while user_named_args.contains(&formatvar) {
120127
formatvar = IdentUnraw::new(format_ident!("_{}", formatvar.to_string()));
121128
}
122129
out += &formatvar.to_string();
123-
if !macro_named_args.insert(member.clone()) {
130+
if !macro_named_args.insert(formatvar.clone()) {
124131
// Already added to bindings by a previous use.
125132
continue;
126133
}

0 commit comments

Comments
 (0)