Lints and suggestions for the Nix programming language
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

refactor(redundant_pattern_bind): let-else and try-expression

+28 -21
+28 -21
lib/src/lints/redundant_pattern_bind.rs
··· 35 35 36 36 impl Rule for RedundantPatternBind { 37 37 fn validate(&self, node: &SyntaxElement, _sess: &SessionInfo) -> Option<Report> { 38 - if let NodeOrToken::Node(node) = node 39 - && let Some(pattern) = Pattern::cast(node.clone()) 40 - // no patterns within `{ }` 41 - && pattern.entries().count() == 0 42 - // pattern is just ellipsis 43 - && pattern.ellipsis() 44 - // pattern is bound 45 - && let Some(ident) = pattern.at() 46 - { 47 - let at = node.text_range(); 48 - let message = format!( 49 - "This pattern bind is redundant, use `{}` instead", 50 - ident.as_str() 51 - ); 52 - let replacement = ident.node().clone(); 53 - Some( 54 - self.report() 55 - .suggest(at, message, Suggestion::new(at, replacement)), 56 - ) 57 - } else { 58 - None 38 + let NodeOrToken::Node(node) = node else { 39 + return None; 40 + }; 41 + 42 + let pattern = Pattern::cast(node.clone())?; 43 + 44 + // no patterns within `{ }` 45 + if pattern.entries().count() != 0 { 46 + return None; 47 + } 48 + 49 + // pattern is just ellipsis 50 + if !pattern.ellipsis() { 51 + return None; 59 52 } 53 + 54 + // pattern is bound 55 + let ident = pattern.at()?; 56 + let at = node.text_range(); 57 + let message = format!( 58 + "This pattern bind is redundant, use `{}` instead", 59 + ident.as_str() 60 + ); 61 + let replacement = ident.node().clone(); 62 + 63 + Some( 64 + self.report() 65 + .suggest(at, message, Suggestion::new(at, replacement)), 66 + ) 60 67 } 61 68 }