Introduce mutable/immutable variants of reflector() with named lifetimes, and kill unsafe casts.

This commit is contained in:
Bobby Holley 2013-10-10 11:49:17 +02:00
parent e6be738d97
commit c4bbc4cd37
24 changed files with 158 additions and 87 deletions

View file

@ -12,10 +12,14 @@ use js::jsapi::{JSContext, JSObject, JSTracer};
macro_rules! generate_cacheable_wrapper(
($name: path, $wrap: path) => (
impl Reflectable for $name {
fn reflector(&mut self) -> &mut Reflector {
fn reflector<'a>(&'a self) -> &'a Reflector {
self.element.reflector()
}
fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector {
self.element.mut_reflector()
}
fn wrap_object_shared(@mut self, cx: *JSContext, scope: *JSObject) -> *JSObject {
let mut unused = false;
$wrap(cx, scope, self, &mut unused)
@ -27,10 +31,14 @@ macro_rules! generate_cacheable_wrapper(
macro_rules! generate_cacheable_wrapper_htmlelement(
($name: path, $wrap: path) => (
impl Reflectable for $name {
fn reflector(&mut self) -> &mut Reflector {
fn reflector<'a>(&'a self) -> &'a Reflector {
self.htmlelement.reflector()
}
fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector {
self.htmlelement.mut_reflector()
}
fn wrap_object_shared(@mut self, cx: *JSContext, scope: *JSObject) -> *JSObject {
let mut unused = false;
$wrap(cx, scope, self, &mut unused)
@ -42,10 +50,14 @@ macro_rules! generate_cacheable_wrapper_htmlelement(
macro_rules! generate_cacheable_wrapper_node(
($name: path, $wrap: path) => (
impl Reflectable for $name {
fn reflector(&mut self) -> &mut Reflector {
fn reflector<'a>(&'a self) -> &'a Reflector {
self.node.reflector()
}
fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector {
self.node.mut_reflector()
}
fn wrap_object_shared(@mut self, cx: *JSContext, scope: *JSObject) -> *JSObject {
let mut unused = false;
$wrap(cx, scope, self, &mut unused)