Remove a prefix from a method name by manually resolving methods

This commit is contained in:
Cameron Zwarich 2014-09-30 20:29:10 -07:00
parent 6358b7d94e
commit 4ef0f39c78
3 changed files with 10 additions and 5 deletions

View file

@ -213,8 +213,14 @@ impl<'ln> LayoutNode<'ln> {
/// Returns an iterator over this node's children. /// Returns an iterator over this node's children.
pub fn children(&self) -> LayoutNodeChildrenIterator<'ln> { pub fn children(&self) -> LayoutNodeChildrenIterator<'ln> {
// FIXME(zwarich): Remove this when UFCS lands and there is a better way
// of disambiguating methods.
fn first_child<T: TLayoutNode>(this: &T) -> Option<T> {
this.first_child()
}
LayoutNodeChildrenIterator { LayoutNodeChildrenIterator {
current_node: self.first_child(), current_node: first_child(self),
} }
} }
@ -247,7 +253,7 @@ impl<'ln> TNode<'ln, LayoutElement<'ln>> for LayoutNode<'ln> {
} }
} }
fn tnode_first_child(&self) -> Option<LayoutNode<'ln>> { fn first_child(&self) -> Option<LayoutNode<'ln>> {
unsafe { unsafe {
self.node.first_child_ref().map(|node| self.new_with_this_lifetime(&node)) self.node.first_child_ref().map(|node| self.new_with_this_lifetime(&node))
} }

View file

@ -2039,7 +2039,7 @@ impl<'a> style::TNode<'a, JSRef<'a, Element>> for JSRef<'a, Node> {
(self as &NodeHelpers).parent_node().map(|node| *node.root()) (self as &NodeHelpers).parent_node().map(|node| *node.root())
} }
fn tnode_first_child(&self) -> Option<JSRef<'a, Node>> { fn first_child(&self) -> Option<JSRef<'a, Node>> {
(self as &NodeHelpers).first_child().map(|node| *node.root()) (self as &NodeHelpers).first_child().map(|node| *node.root())
} }

View file

@ -11,8 +11,7 @@ use string_cache::{Atom, Namespace};
pub trait TNode<'a, E: TElement<'a>> : Clone { pub trait TNode<'a, E: TElement<'a>> : Clone {
fn parent_node(&self) -> Option<Self>; fn parent_node(&self) -> Option<Self>;
/// Name is prefixed to avoid a conflict with TLayoutNode. fn first_child(&self) -> Option<Self>;
fn tnode_first_child(&self) -> Option<Self>;
fn prev_sibling(&self) -> Option<Self>; fn prev_sibling(&self) -> Option<Self>;
fn next_sibling(&self) -> Option<Self>; fn next_sibling(&self) -> Option<Self>;
fn is_document(&self) -> bool; fn is_document(&self) -> bool;