neo_solidity/solidity/analyse/modifiers/rewrite/
substitutions.rs

1fn build_parameter_substitutions(
2    params: &[ParameterIR],
3    args: &[Expression],
4) -> Result<std::collections::HashMap<String, Expression>, SolidityError> {
5    if params.len() != args.len() {
6        return Err(SolidityError::Analysis(format!(
7            "modifier/constructor argument mismatch: expected {}, got {}",
8            params.len(),
9            args.len()
10        )));
11    }
12
13    let mut map = std::collections::HashMap::new();
14    for (param, arg) in params.iter().zip(args.iter()) {
15        let Some(name) = param.name.as_ref() else {
16            return Err(SolidityError::Analysis(
17                "modifier/constructor parameter is missing an identifier".to_string(),
18            ));
19        };
20        map.insert(name.clone(), arg.clone());
21    }
22    Ok(map)
23}