aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom
diff options
context:
space:
mode:
authorMs2ger <Ms2ger@gmail.com>2016-04-11 10:29:32 +0200
committerMs2ger <Ms2ger@gmail.com>2016-04-11 10:29:32 +0200
commit71f56d674497baa1dfc2eb97d23ea66a5adb9f9f (patch)
treee0d88c33ad6be6cd62b2889e78d9613bc0cc0c19 /components/script/dom
parent0d732ebb5f82b1b8b7c1556ac1b9a7af3a6eee62 (diff)
downloadservo-71f56d674497baa1dfc2eb97d23ea66a5adb9f9f.tar.gz
servo-71f56d674497baa1dfc2eb97d23ea66a5adb9f9f.zip
Simplify PrecedingNodeIterator::next().
Diffstat (limited to 'components/script/dom')
-rw-r--r--components/script/dom/node.rs36
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()
}
}