diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index aa81261..873c6fb 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -13,3 +13,18 @@ repos: - id: ruff-check args: [--fix] - id: ruff-format + + - repo: local + hooks: + - id: cargo-fmt + name: Rust format check + entry: bash -c 'cd rust && cargo fmt --all -- --check' + language: system + files: \.rs$ + pass_filenames: false + - id: cargo-clippy + name: Rust clippy + entry: bash -c 'cd rust && cargo clippy -- -D warnings' + language: system + files: \.rs$ + pass_filenames: false diff --git a/rust/src/lib.rs b/rust/src/lib.rs index 0749890..a33a96e 100644 --- a/rust/src/lib.rs +++ b/rust/src/lib.rs @@ -1919,47 +1919,44 @@ impl Linter { ); } } - Expr::Name(name) => { - if name.id.as_str() == "concat" { - if !call.arguments.args.is_empty() { - if let Expr::List(list) = &call.arguments.args[0] { - let mut schemas = Vec::new(); - for el in &list.elts { - if let Expr::Name(n) = el { - if let Some((s, _)) = - self.variables.get(n.id.as_str()) - { - schemas.push(s.clone()); - } + Expr::Name(name) if name.id.as_str() == "concat" => { + if !call.arguments.args.is_empty() { + if let Expr::List(list) = &call.arguments.args[0] { + let mut schemas = Vec::new(); + for el in &list.elts { + if let Expr::Name(n) = el { + if let Some((s, _)) = self.variables.get(n.id.as_str()) + { + schemas.push(s.clone()); } } - if schemas.len() >= 2 { - is_merge_or_concat = true; - merge_schema = - Some((schemas[0].clone(), schemas[1].clone())); - } } - } else if let Some(keyword) = - call.arguments.keywords.iter().find(|k| { - k.arg.as_ref().map(|s| s.as_str()) == Some("objs") - }) - { - if let Expr::List(list) = &keyword.value { - let mut schemas = Vec::new(); - for el in &list.elts { - if let Expr::Name(n) = el { - if let Some((s, _)) = - self.variables.get(n.id.as_str()) - { - schemas.push(s.clone()); - } + if schemas.len() >= 2 { + is_merge_or_concat = true; + merge_schema = + Some((schemas[0].clone(), schemas[1].clone())); + } + } + } else if let Some(keyword) = call + .arguments + .keywords + .iter() + .find(|k| k.arg.as_ref().map(|s| s.as_str()) == Some("objs")) + { + if let Expr::List(list) = &keyword.value { + let mut schemas = Vec::new(); + for el in &list.elts { + if let Expr::Name(n) = el { + if let Some((s, _)) = self.variables.get(n.id.as_str()) + { + schemas.push(s.clone()); } } - if schemas.len() >= 2 { - is_merge_or_concat = true; - merge_schema = - Some((schemas[0].clone(), schemas[1].clone())); - } + } + if schemas.len() >= 2 { + is_merge_or_concat = true; + merge_schema = + Some((schemas[0].clone(), schemas[1].clone())); } } }