diff options
author | Ms2ger <Ms2ger@gmail.com> | 2016-04-11 10:29:32 +0200 |
---|---|---|
committer | Ms2ger <Ms2ger@gmail.com> | 2016-04-11 10:29:32 +0200 |
commit | 71f56d674497baa1dfc2eb97d23ea66a5adb9f9f (patch) | |
tree | e0d88c33ad6be6cd62b2889e78d9613bc0cc0c19 /components | |
parent | 0d732ebb5f82b1b8b7c1556ac1b9a7af3a6eee62 (diff) | |
download | servo-71f56d674497baa1dfc2eb97d23ea66a5adb9f9f.tar.gz servo-71f56d674497baa1dfc2eb97d23ea66a5adb9f9f.zip |
Simplify PrecedingNodeIterator::next().
Diffstat (limited to 'components')
-rw-r--r-- | components/script/dom/node.rs | 36 |
1 files changed, 11 insertions, 25 deletions
diff --git a/components/script/dom/node.rs b/components/script/dom/node.rs index 99648369357..748b7b8249e 100644 --- a/components/script/dom/node.rs +++ b/components/script/dom/node.rs @@ -1166,34 +1166,20 @@ impl Iterator for PrecedingNodeIterator { Some(current) => current, }; - if self.root == current { - self.current = None; - return None - } - - let node = current; - if let Some(previous_sibling) = node.GetPreviousSibling() { + self.current = if self.root == current { + None + } else if let Some(previous_sibling) = current.GetPreviousSibling() { if self.root == previous_sibling { - self.current = None; - return None - } - - if let Some(last_child) = previous_sibling.descending_last_children().last() { - self.current = Some(last_child); - return previous_sibling.descending_last_children().last() + None + } else if let Some(last_child) = previous_sibling.descending_last_children().last() { + Some(last_child) + } else { + Some(previous_sibling) } - - self.current = Some(previous_sibling); - return node.GetPreviousSibling() + } else { + current.GetParentNode() }; - - if let Some(parent_node) = node.GetParentNode() { - self.current = Some(parent_node); - return node.GetParentNode() - } - - self.current = None; - None + self.current.clone() } } |