style: Make next_in_preorder generate slightly better code.

This avoids the panic code in release builds.

Differential Revision: https://phabricator.services.mozilla.com/D100094
This commit is contained in:
Emilio Cobos Álvarez 2020-12-23 02:59:11 +00:00
parent f58301ecbc
commit 0dc6c32759

View file

@ -188,22 +188,18 @@ pub trait TNode: Sized + Copy + Clone + Debug + NodeInfo + PartialEq {
return Some(c); return Some(c);
} }
if Some(*self) == scoped_to { let mut current = Some(*self);
return None;
}
let mut current = *self;
loop { loop {
if let Some(s) = current.next_sibling() { if current == scoped_to {
return Some(s);
}
let parent = current.parent_node();
if parent == scoped_to {
return None; return None;
} }
current = parent.expect("Not a descendant of the scope?"); debug_assert!(current.is_some(), "not a descendant of the scope?");
if let Some(s) = current?.next_sibling() {
return Some(s);
}
current = current?.parent_node();
} }
} }