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(manual_inherit_from): modernize

+31 -25
+31 -25
lib/src/lints/manual_inherit_from.rs
··· 40 40 41 41 impl Rule for ManualInherit { 42 42 fn validate(&self, node: &SyntaxElement, _sess: &SessionInfo) -> Option<Report> { 43 - if let NodeOrToken::Node(node) = node 44 - && let Some(key_value_stmt) = KeyValue::cast(node.clone()) 45 - && let mut key_path = key_value_stmt.key()?.path() 46 - && let Some(key_node) = key_path.next() 47 - // ensure that path has exactly one component 48 - && key_path.next().is_none() 49 - && let Some(key) = Ident::cast(key_node) 50 - && let Some(value_node) = key_value_stmt.value() 51 - && let Some(value) = Select::cast(value_node) 52 - && let Some(index_node) = value.index() 53 - && let Some(index) = Ident::cast(index_node) 54 - && key.as_str() == index.as_str() 55 - { 56 - let at = node.text_range(); 57 - let replacement = { 58 - let set = value.set()?; 59 - make::inherit_from_stmt(&set, &[key]).node().clone() 60 - }; 61 - let message = "This assignment is better written with `inherit`"; 62 - Some( 63 - self.report() 64 - .suggest(at, message, Suggestion::new(at, replacement)), 65 - ) 66 - } else { 67 - None 43 + let NodeOrToken::Node(node) = node else { 44 + return None; 45 + }; 46 + 47 + let key_value_stmt = KeyValue::cast(node.clone())?; 48 + let key = key_value_stmt.key()?; 49 + let mut key_path = key.path(); 50 + let key_node = key_path.next()?; 51 + 52 + if key_path.next().is_some() { 53 + return None; 68 54 } 55 + 56 + let key = Ident::cast(key_node)?; 57 + let value = Select::cast(key_value_stmt.value()?)?; 58 + let index = Ident::cast(value.index()?)?; 59 + 60 + if key.as_str() != index.as_str() { 61 + return None; 62 + } 63 + 64 + let at = node.text_range(); 65 + let replacement = { 66 + let set = value.set()?; 67 + make::inherit_from_stmt(&set, &[key]).node().clone() 68 + }; 69 + 70 + Some(self.report().suggest( 71 + at, 72 + "This assignment is better written with `inherit`", 73 + Suggestion::new(at, replacement), 74 + )) 69 75 } 70 76 }