#![cfg(not(matrix))]
use linked_hash_map::LinkedHashMap;
use std::fmt::Display;
pub(crate) fn check_all_input_lengths(map: &LinkedHashMap<syn::Ident, Vec<syn::Expr>>) -> usize {
let mut arguments: Option<usize> = None;
for (ident, values) in map.iter() {
match arguments {
Some(len) if len == values.len() => continue,
None => arguments = Some(values.len()),
_ => panic_on_inequal_length(map.iter(), ident),
}
}
arguments.unwrap_or_default()
}
fn panic_on_inequal_length<K: Ord + Display, V, D: Display>(
map: impl Iterator<Item = (K, V)>,
ident: D,
) {
let ids: String = map
.map(|(id, _)| format!("{}", id))
.collect::<Vec<String>>()
.join(", ");
panic!(
"[parameterized-macro] error: Inconsistent argument list length for '{}'; all inputs ({}) should have equal length",
ident,
ids
)
}