Skip to content

Commit 3708f48

Browse files
committed
Switch HashMap in FormatData to Vec<(_, _)> to remove syn features
1 parent c0754f4 commit 3708f48

5 files changed

Lines changed: 38 additions & 27 deletions

File tree

impl/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ panic = "warn"
3333
proc-macro2 = "1.0.101"
3434
quote = "1.0.40"
3535
regex = "1.11.2"
36-
syn = { version = "2.0.106", features = ["full", "extra-traits"] }
36+
syn = { version = "2.0.106", features = [] }
3737

3838
[dev-dependencies]
3939
error-stack = "0.6.0"

impl/src/types/fmt/input.rs

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
#[cfg(test)]
2+
use std::fmt::{self, Debug, Formatter};
3+
14
use proc_macro2::{Span, TokenStream as TokenStream2};
25
use quote::{ToTokens, quote};
36
use regex::Regex;
@@ -8,12 +11,18 @@ use syn::{
811
token::Comma,
912
};
1013

11-
#[derive(Debug)]
1214
pub(crate) struct StructFormatInput {
1315
lit_str: LitStr,
1416
args: Punctuated<Expr, Comma>,
1517
}
1618

19+
#[cfg(test)]
20+
impl Debug for StructFormatInput {
21+
fn fmt(&self, _: &mut Formatter<'_>) -> fmt::Result {
22+
Ok(())
23+
}
24+
}
25+
1726
impl Parse for StructFormatInput {
1827
fn parse(input: ParseStream) -> syn::Result<Self> {
1928
let mut lit_str: LitStr = input.parse()?;
@@ -66,12 +75,18 @@ impl ToTokens for StructFormatInput {
6675
}
6776
}
6877

69-
#[derive(Debug)]
7078
pub(crate) struct EnumVariantFormatInput {
7179
lit_str: LitStr,
7280
args: Punctuated<Ident, Comma>,
7381
}
7482

83+
#[cfg(test)]
84+
impl Debug for EnumVariantFormatInput {
85+
fn fmt(&self, _: &mut Formatter<'_>) -> fmt::Result {
86+
Ok(())
87+
}
88+
}
89+
7590
impl Parse for EnumVariantFormatInput {
7691
fn parse(input: ParseStream) -> syn::Result<Self> {
7792
let mut lit_str: LitStr = input.parse()?;

impl/src/types/fmt/mod.rs

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
use std::collections::HashMap;
1+
#[cfg(test)]
2+
use std::fmt::{self, Debug, Formatter};
23

34
use proc_macro2::TokenStream as TokenStream2;
45
use quote::{ToTokens, quote};
@@ -12,15 +13,14 @@ use input::{EnumVariantFormatInput, StructFormatInput};
1213

1314
use crate::util::traits::IteratorExt;
1415

15-
#[derive(Debug)]
1616
pub(crate) enum FormatData {
1717
Struct {
1818
display_input: StructFormatInput,
1919
},
2020

2121
Enum {
2222
default_display_input: Option<LitStr>,
23-
variant_display_inputs: HashMap<Variant, EnumVariantFormatInput>,
23+
variant_display_inputs: Vec<(Variant, EnumVariantFormatInput)>,
2424
},
2525

2626
EmptyEnum,
@@ -59,7 +59,7 @@ impl FormatData {
5959
Self::get_format_input(attr)
6060
.map(|input| (variant.clone(), input))
6161
})
62-
.collect_hashmap_and_combine_syn_errors();
62+
.collect_vec_and_combine_syn_errors();
6363

6464
if let Some(attr) = default_display_attr {
6565
let default_display_input =
@@ -143,6 +143,13 @@ impl FormatData {
143143
}
144144
}
145145

146+
#[cfg(test)]
147+
impl Debug for FormatData {
148+
fn fmt(&self, _: &mut Formatter<'_>) -> fmt::Result {
149+
Ok(())
150+
}
151+
}
152+
146153
impl ToTokens for FormatData {
147154
fn to_tokens(&self, tokens: &mut TokenStream2) {
148155
match self {

impl/src/types/mod.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ use syn::{
88
mod fmt;
99
use fmt::FormatData;
1010

11-
#[derive(Debug)]
1211
pub(crate) struct ErrorStackDeriveInput {
1312
ident: Ident,
1413
display_data: FormatData,

impl/src/util/traits.rs

Lines changed: 9 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,15 @@
1-
use std::{collections::HashMap, hash::Hash};
2-
3-
pub(crate) trait IteratorExt<K, V>:
4-
Sized + Iterator<Item = syn::Result<(K, V)>>
5-
where
6-
K: Eq + Hash,
1+
pub(crate) trait IteratorExt<T>:
2+
Sized + Iterator<Item = syn::Result<T>>
73
{
8-
fn collect_hashmap_and_combine_syn_errors(
9-
mut self,
10-
) -> syn::Result<HashMap<K, V>> {
11-
let mut map = HashMap::new();
4+
fn collect_vec_and_combine_syn_errors(mut self) -> syn::Result<Vec<T>> {
5+
let mut vec = Vec::new();
126

137
while let Some(res) = self.next() {
148
match res {
15-
Ok((k, v)) => {
16-
map.insert(k, v);
9+
Ok(item) => {
10+
vec.push(item);
1711
}
12+
1813
Err(mut err) => {
1914
while let Some(Err(err2)) = self.next() {
2015
err.combine(err2);
@@ -25,13 +20,8 @@ where
2520
}
2621
}
2722

28-
Ok(map)
23+
Ok(vec)
2924
}
3025
}
3126

32-
impl<I, K, V> IteratorExt<K, V> for I
33-
where
34-
I: Sized + Iterator<Item = syn::Result<(K, V)>>,
35-
K: Eq + Hash,
36-
{
37-
}
27+
impl<I, T> IteratorExt<T> for I where I: Sized + Iterator<Item = syn::Result<T>> {}

0 commit comments

Comments
 (0)