aboutsummaryrefslogtreecommitdiffstats
path: root/src/components/script/dom/virtualmethods.rs
diff options
context:
space:
mode:
authorJosh Matthews <josh@joshmatthews.net>2014-04-24 13:01:31 -0400
committerJosh Matthews <josh@joshmatthews.net>2014-05-03 14:18:31 -0400
commit46a33b4b38666252245af5dd3a38bb6f57ff8a8e (patch)
tree71e5b5a0f2e9b942a8526847ceb2a3791912e63e /src/components/script/dom/virtualmethods.rs
parent895e9ee37fb572f7750c02de4fc51060990c51be (diff)
downloadservo-46a33b4b38666252245af5dd3a38bb6f57ff8a8e.tar.gz
servo-46a33b4b38666252245af5dd3a38bb6f57ff8a8e.zip
Fix up the virtual method unsoundness.
Diffstat (limited to 'src/components/script/dom/virtualmethods.rs')
-rw-r--r--src/components/script/dom/virtualmethods.rs28
1 files changed, 14 insertions, 14 deletions
diff --git a/src/components/script/dom/virtualmethods.rs b/src/components/script/dom/virtualmethods.rs
index bf4681fab3b..f67d97985e1 100644
--- a/src/components/script/dom/virtualmethods.rs
+++ b/src/components/script/dom/virtualmethods.rs
@@ -74,34 +74,34 @@ pub trait VirtualMethods {
/// method call on the trait object will invoke the corresponding method on the
/// concrete type, propagating up the parent hierarchy unless otherwise
/// interrupted.
-pub fn vtable_for<'a>(node: &JSRef<Node>) -> ~VirtualMethods: {
+pub fn vtable_for<'a>(node: &'a mut JSRef<Node>) -> &'a mut VirtualMethods: {
match node.get().type_id {
ElementNodeTypeId(HTMLImageElementTypeId) => {
- let element: &JSRef<HTMLImageElement> = HTMLImageElementCast::to_ref(node).unwrap();
- ~element.clone() as ~VirtualMethods:
+ let element: &mut JSRef<HTMLImageElement> = HTMLImageElementCast::to_mut_ref(node).unwrap();
+ element as &mut VirtualMethods:
}
ElementNodeTypeId(HTMLIFrameElementTypeId) => {
- let element: &JSRef<HTMLIFrameElement> = HTMLIFrameElementCast::to_ref(node).unwrap();
- ~element.clone() as ~VirtualMethods:
+ let element: &mut JSRef<HTMLIFrameElement> = HTMLIFrameElementCast::to_mut_ref(node).unwrap();
+ element as &mut VirtualMethods:
}
ElementNodeTypeId(HTMLObjectElementTypeId) => {
- let element: &JSRef<HTMLObjectElement> = HTMLObjectElementCast::to_ref(node).unwrap();
- ~element.clone() as ~VirtualMethods:
+ let element: &mut JSRef<HTMLObjectElement> = HTMLObjectElementCast::to_mut_ref(node).unwrap();
+ element as &mut VirtualMethods:
}
ElementNodeTypeId(HTMLStyleElementTypeId) => {
- let element: &JSRef<HTMLStyleElement> = HTMLStyleElementCast::to_ref(node).unwrap();
- ~element.clone() as ~VirtualMethods:
+ let element: &mut JSRef<HTMLStyleElement> = HTMLStyleElementCast::to_mut_ref(node).unwrap();
+ element as &mut VirtualMethods:
}
ElementNodeTypeId(ElementTypeId) => {
- let element: &JSRef<Element> = ElementCast::to_ref(node).unwrap();
- ~element.clone() as ~VirtualMethods:
+ let element: &mut JSRef<Element> = ElementCast::to_mut_ref(node).unwrap();
+ element as &mut VirtualMethods:
}
ElementNodeTypeId(_) => {
- let element: &JSRef<HTMLElement> = HTMLElementCast::to_ref(node).unwrap();
- ~element.clone() as ~VirtualMethods:
+ let element: &mut JSRef<HTMLElement> = HTMLElementCast::to_mut_ref(node).unwrap();
+ element as &mut VirtualMethods:
}
_ => {
- ~node.clone() as ~VirtualMethods:
+ node as &mut VirtualMethods:
}
}
}