diff --git a/lib/src/lints/manual_inherit.rs b/lib/src/lints/manual_inherit.rs index d31d7cc..ae9c783 100644 --- a/lib/src/lints/manual_inherit.rs +++ b/lib/src/lints/manual_inherit.rs @@ -48,7 +48,7 @@ impl Rule for ManualInherit { if let key_path = key_value_stmt.attrpath()?; if let Some(key_node) = key_path.attrs().next(); // ensure that path has exactly one component - if key_path.attrs().next().is_none(); + if key_path.attrs().count() == 1; if let Some(key) = Ident::cast(key_node.syntax().clone()); if let Some(value_node) = key_value_stmt.value(); diff --git a/lib/src/lints/manual_inherit_from.rs b/lib/src/lints/manual_inherit_from.rs index 61724f8..4a54d32 100644 --- a/lib/src/lints/manual_inherit_from.rs +++ b/lib/src/lints/manual_inherit_from.rs @@ -42,18 +42,19 @@ struct ManualInheritFrom; impl Rule for ManualInheritFrom { fn validate(&self, node: &SyntaxElement, _sess: &SessionInfo) -> Option { + println!("==="); if_chain! { if let NodeOrToken::Node(node) = node; if let Some(key_value_stmt) = AttrpathValue::cast(node.clone()); - if let mut key_path = key_value_stmt.attrpath()?.attrs(); - if let Some(key_node) = key_path.next(); + if let key_path = key_value_stmt.attrpath()?; + if let Some(key_node) = key_path.attrs().next(); // ensure that path has exactly one component - if key_path.next().is_none(); + if key_path.attrs().count() == 1; if let Some(key) = Ident::cast(key_node.syntax().clone()); if let Some(value_node) = key_value_stmt.value(); if let Some(value) = Select::cast(value_node.syntax().clone()); - if let Some(index_node) = value.expr(); + if let Some(index_node) = value.attrpath().and_then(|attrs| attrs.attrs().next()); if let Some(index) = Ident::cast(index_node.syntax().clone()); if key.to_string() == index.to_string();