From bf40db71d54475502d2063654a993e44562e7b67 Mon Sep 17 00:00:00 2001 From: Artemy Fedotov Date: Sat, 11 Oct 2025 10:10:14 +0400 Subject: [PATCH] Apply clippy fixes --- src/formatter.rs | 2 +- src/linter.rs | 4 +-- src/linter/rules/comparison_with_itself.rs | 4 +-- src/linter/rules/constant_name.rs | 14 ++++---- src/linter/rules/duplicated_load.rs | 34 ++++++++++---------- src/linter/rules/enum_member_name.rs | 37 +++++++++++----------- src/linter/rules/no_else_return.rs | 8 ++--- src/linter/rules/standalone_expression.rs | 24 +++++++------- src/linter/rules/variable_name.rs | 10 +++--- src/main.rs | 2 +- src/reorder.rs | 5 +-- 11 files changed, 73 insertions(+), 71 deletions(-) diff --git a/src/formatter.rs b/src/formatter.rs index 4aa6524..7ec1aa4 100644 --- a/src/formatter.rs +++ b/src/formatter.rs @@ -52,7 +52,7 @@ impl Formatter { .set_language(&tree_sitter_gdscript::LANGUAGE.into()) .unwrap(); let tree = parser.parse(&content, None).unwrap(); - let mut input_tree = GdTree::from_ts_tree(&tree, content.as_bytes()); + let input_tree = GdTree::from_ts_tree(&tree, content.as_bytes()); Self { content, diff --git a/src/linter.rs b/src/linter.rs index 1594ab8..4ea057d 100644 --- a/src/linter.rs +++ b/src/linter.rs @@ -170,7 +170,7 @@ impl GDScriptLinter { ) -> Result> { let gdscript_files: Vec<&PathBuf> = input_files .iter() - .filter(|path| path.extension().map_or(false, |ext| ext == "gd")) + .filter(|path| path.extension().is_some_and(|ext| ext == "gd")) .collect(); if gdscript_files.is_empty() { @@ -230,7 +230,7 @@ impl GDScriptLinter { sorted_lines.sort(); for (i, &line_num) in sorted_lines.iter().enumerate() { - if let Some(line_issues) = line_issues.get(&line_num) { + if let Some(line_issues) = line_issues.get(line_num) { println!(" {}:{}", file_path, line_num); for issue in line_issues { let (severity_str, severity_color) = match issue.severity { diff --git a/src/linter/rules/comparison_with_itself.rs b/src/linter/rules/comparison_with_itself.rs index be91833..83cba77 100644 --- a/src/linter/rules/comparison_with_itself.rs +++ b/src/linter/rules/comparison_with_itself.rs @@ -24,7 +24,7 @@ impl Rule for ComparisonWithItselfRule { let right_text = get_node_text(&right_node, source_code); if left_text == right_text { - let (line, column) = get_line_column(&node); + let (line, column) = get_line_column(node); issues.push(LintIssue::new( line, column, @@ -32,7 +32,7 @@ impl Rule for ComparisonWithItselfRule { LintSeverity::Warning, format!( "Redundant comparison '{}' - comparing expression with itself", - get_node_text(&node, source_code) + get_node_text(node, source_code) ), )); } diff --git a/src/linter/rules/constant_name.rs b/src/linter/rules/constant_name.rs index bba7156..fb6c039 100644 --- a/src/linter/rules/constant_name.rs +++ b/src/linter/rules/constant_name.rs @@ -19,11 +19,11 @@ impl ConstantNameRule { } fn is_preload_call(&self, node: &Node, source_code: &str) -> bool { - if node.kind() == "call" { - if let Some(function_node) = node.child(0) { - let function_name = get_node_text(&function_node, source_code); - return function_name == "preload"; - } + if node.kind() == "call" + && let Some(function_node) = node.child(0) + { + let function_name = get_node_text(&function_node, source_code); + return function_name == "preload"; } false @@ -50,7 +50,7 @@ impl Rule for ConstantNameRule { if is_preload_const { // For all load/preload constants, check load naming rules - if !self.is_valid_load_constant_name(&name) { + if !self.is_valid_load_constant_name(name) { let (line, column) = get_line_column(&name_node); issues.push(LintIssue::new( line, @@ -65,7 +65,7 @@ impl Rule for ConstantNameRule { } } else { // For regular constants, just check regular rules - if !self.is_valid_constant_name(&name) { + if !self.is_valid_constant_name(name) { let (line, column) = get_line_column(&name_node); issues.push(LintIssue::new( line, diff --git a/src/linter/rules/duplicated_load.rs b/src/linter/rules/duplicated_load.rs index 7a899a4..b467a95 100644 --- a/src/linter/rules/duplicated_load.rs +++ b/src/linter/rules/duplicated_load.rs @@ -16,23 +16,23 @@ impl Rule for DuplicatedLoadRule { fn check_node(&mut self, node: &Node, source_code: &str) -> Vec { if let Some(function_node) = node.child(0) { let function_name = get_node_text(&function_node, source_code); - if function_name == "load" || function_name == "preload" { - if let Some(args_node) = node.child_by_field_name("arguments") { - let mut args_cursor = args_node.walk(); - if args_cursor.goto_first_child() { - loop { - let arg_node = args_cursor.node(); - if arg_node.kind() == "string" { - let path = get_node_text(&arg_node, source_code); - let (line, column) = get_line_column(&arg_node); - self.load_paths - .entry(path.to_string()) - .or_insert_with(Vec::new) - .push((line, column)); - } - if !args_cursor.goto_next_sibling() { - break; - } + if (function_name == "load" || function_name == "preload") + && let Some(args_node) = node.child_by_field_name("arguments") + { + let mut args_cursor = args_node.walk(); + if args_cursor.goto_first_child() { + loop { + let arg_node = args_cursor.node(); + if arg_node.kind() == "string" { + let path = get_node_text(&arg_node, source_code); + let (line, column) = get_line_column(&arg_node); + self.load_paths + .entry(path.to_string()) + .or_default() + .push((line, column)); + } + if !args_cursor.goto_next_sibling() { + break; } } } diff --git a/src/linter/rules/enum_member_name.rs b/src/linter/rules/enum_member_name.rs index 2b0cdfb..8a246fa 100644 --- a/src/linter/rules/enum_member_name.rs +++ b/src/linter/rules/enum_member_name.rs @@ -25,25 +25,24 @@ impl Rule for EnumMemberNameRule { if enum_cursor.goto_first_child() { loop { let enum_member = enum_cursor.node(); - if enum_member.kind() == "enumerator" { - if let Some(element_name_node) = enum_member.child_by_field_name("left") { - let element_name = get_node_text(&element_name_node, source_code); - // Skip empty enum member names (happens with empty enums) - if !element_name.is_empty() - && !self.is_valid_enum_member_name(element_name) - { - let (line, column) = get_line_column(&element_name_node); - issues.push(LintIssue::new( - line, - column, - "enum-member-name".to_string(), - LintSeverity::Error, - format!( - "Enum element name '{}' should be in CONSTANT_CASE format", - element_name - ), - )); - } + if enum_member.kind() == "enumerator" + && let Some(element_name_node) = enum_member.child_by_field_name("left") + { + let element_name = get_node_text(&element_name_node, source_code); + // Skip empty enum member names (happens with empty enums) + if !element_name.is_empty() && !self.is_valid_enum_member_name(element_name) + { + let (line, column) = get_line_column(&element_name_node); + issues.push(LintIssue::new( + line, + column, + "enum-member-name".to_string(), + LintSeverity::Error, + format!( + "Enum element name '{}' should be in CONSTANT_CASE format", + element_name + ), + )); } } if !enum_cursor.goto_next_sibling() { diff --git a/src/linter/rules/no_else_return.rs b/src/linter/rules/no_else_return.rs index 13f5742..bd55450 100644 --- a/src/linter/rules/no_else_return.rs +++ b/src/linter/rules/no_else_return.rs @@ -65,10 +65,10 @@ impl Rule for NoElseReturnRule { )); } - if let Some(elif_body) = child_node.child_by_field_name("body") { - if !self.body_ends_with_return(&elif_body, source_code) { - all_branches_return = false; - } + if let Some(elif_body) = child_node.child_by_field_name("body") + && !self.body_ends_with_return(&elif_body, source_code) + { + all_branches_return = false; } } else if child_node.kind() == "else_clause" { let (line, column) = get_line_column(&child_node); diff --git a/src/linter/rules/standalone_expression.rs b/src/linter/rules/standalone_expression.rs index d4c0cf6..c823372 100644 --- a/src/linter/rules/standalone_expression.rs +++ b/src/linter/rules/standalone_expression.rs @@ -15,17 +15,20 @@ impl Rule for StandaloneExpressionRule { if let Some(expr_child) = node.child(0) { let expr_kind = expr_child.kind(); - if expr_kind != "call" - && expr_kind != "assignment" - && expr_kind != "augmented_assignment" + if expr_kind == "call" + || expr_kind == "assignment" + || expr_kind == "augmented_assignment" { - if matches!( - expr_kind, - "binary_operator" | "integer" | "float" | "string" | "true" | "false" | "null" - ) { - let (line, column) = get_line_column(&expr_child); - let expr_text = get_node_text(&expr_child, source_code); - issues.push(LintIssue::new( + return issues; + } + + if matches!( + expr_kind, + "binary_operator" | "integer" | "float" | "string" | "true" | "false" | "null" + ) { + let (line, column) = get_line_column(&expr_child); + let expr_text = get_node_text(&expr_child, source_code); + issues.push(LintIssue::new( line, column, "standalone-expression".to_string(), @@ -35,7 +38,6 @@ impl Rule for StandaloneExpressionRule { expr_text ), )); - } } } diff --git a/src/linter/rules/variable_name.rs b/src/linter/rules/variable_name.rs index 05dfd58..5cab5ce 100644 --- a/src/linter/rules/variable_name.rs +++ b/src/linter/rules/variable_name.rs @@ -15,11 +15,11 @@ impl VariableNameRule { } fn is_load_call(&self, node: &Node, source_code: &str) -> bool { - if node.kind() == "call" { - if let Some(function_node) = node.child(0) { - let function_name = get_node_text(&function_node, source_code); - return function_name == "load" || function_name == "preload"; - } + if node.kind() == "call" + && let Some(function_node) = node.child(0) + { + let function_name = get_node_text(&function_node, source_code); + return function_name == "load" || function_name == "preload"; } false } diff --git a/src/main.rs b/src/main.rs index 7fa6b1a..f0eeeff 100644 --- a/src/main.rs +++ b/src/main.rs @@ -207,7 +207,7 @@ fn main() -> Result<(), Box> { let input_gdscript_files: Vec<&PathBuf> = args .input .iter() - .filter(|path| path.extension().map_or(false, |ext| ext == "gd")) + .filter(|path| path.extension().is_some_and(|ext| ext == "gd")) .collect(); if input_gdscript_files.is_empty() { diff --git a/src/reorder.rs b/src/reorder.rs index 8095b05..875e5ba 100644 --- a/src/reorder.rs +++ b/src/reorder.rs @@ -15,7 +15,7 @@ pub fn reorder_gdscript_elements( tree: &Tree, content: &str, ) -> Result> { - let tokens = extract_tokens_to_reorder(&tree, content)?; + let tokens = extract_tokens_to_reorder(tree, content)?; let ordered_elements = sort_gdscript_tokens(tokens); let reordered_content = build_reordered_code(ordered_elements, content); @@ -274,7 +274,7 @@ fn extract_tokens_to_reorder( // annotations until we hit a declaration, at which point we attach the // collected comments/annotations to that declaration. for (node, text) in &all_nodes { - let reorderable_element = classify_element(*node, &text, content)?; + let reorderable_element = classify_element(*node, text, content)?; classified_elements.push(ClassifiedElement { node: *node, text: text.clone(), @@ -796,6 +796,7 @@ fn build_reordered_code( }; if needs_spacing { + #[allow(clippy::if_same_then_else)] if is_function { output.push_str("\n\n"); } else if is_inner_class && previous_token_kind == Some(TokenKind::Method) {