aboutsummaryrefslogtreecommitdiffstats
path: root/src/components/script/dom/bindings/node.rs
diff options
context:
space:
mode:
authorBobby Holley <bobbyholley@gmail.com>2013-10-10 11:49:17 +0200
committerBobby Holley <bobbyholley@gmail.com>2013-10-10 13:11:24 +0200
commitc4bbc4cd37ff604a635b95f39d05913dcaad53fb (patch)
tree72ee7575b773159ad7d8e0f68cfcf575e16f8700 /src/components/script/dom/bindings/node.rs
parente6be738d97d3e91741b4c064bd803fa8822aff96 (diff)
downloadservo-c4bbc4cd37ff604a635b95f39d05913dcaad53fb.tar.gz
servo-c4bbc4cd37ff604a635b95f39d05913dcaad53fb.zip
Introduce mutable/immutable variants of reflector() with named lifetimes, and kill unsafe casts.
Diffstat (limited to 'src/components/script/dom/bindings/node.rs')
-rw-r--r--src/components/script/dom/bindings/node.rs14
1 files changed, 9 insertions, 5 deletions
diff --git a/src/components/script/dom/bindings/node.rs b/src/components/script/dom/bindings/node.rs
index db0d574e766..d1f60eb21e8 100644
--- a/src/components/script/dom/bindings/node.rs
+++ b/src/components/script/dom/bindings/node.rs
@@ -96,11 +96,15 @@ pub fn create(cx: *JSContext, node: &mut AbstractNode<ScriptView>) -> *JSObject
}
impl Reflectable for AbstractNode<ScriptView> {
- fn reflector(&mut self) -> &mut Reflector {
+ fn reflector<'a>(&'a self) -> &'a Reflector {
+ do self.with_base |base| {
+ unsafe { cast::transmute(base.reflector()) }
+ }
+ }
+
+ fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector {
do self.with_mut_base |base| {
- unsafe {
- cast::transmute(&base.reflector_)
- }
+ unsafe { cast::transmute(base.reflector()) }
}
}
@@ -117,7 +121,7 @@ impl Traceable for Node<ScriptView> {
return;
}
debug!("tracing %s", name);
- let mut node = node.unwrap();
+ let node = node.unwrap();
let obj = node.reflector().get_jsobject();
assert!(obj.is_not_null());
unsafe {