Use or_init where appropriate.

This commit is contained in:
Ms2ger 2014-12-05 15:20:37 +01:00
parent 6bd9bf979b
commit f0ef1f97ad
5 changed files with 20 additions and 46 deletions

View file

@ -15,7 +15,7 @@ use dom::bindings::codegen::Bindings::NamedNodeMapBinding::NamedNodeMapMethods;
use dom::bindings::codegen::InheritTypes::{ElementDerived, HTMLInputElementDerived}; use dom::bindings::codegen::InheritTypes::{ElementDerived, HTMLInputElementDerived};
use dom::bindings::codegen::InheritTypes::{HTMLTableCellElementDerived, NodeCast}; use dom::bindings::codegen::InheritTypes::{HTMLTableCellElementDerived, NodeCast};
use dom::bindings::js::{MutNullableJS, JS, JSRef, Temporary, TemporaryPushable}; use dom::bindings::js::{MutNullableJS, JS, JSRef, Temporary, TemporaryPushable};
use dom::bindings::js::{OptionalSettable, OptionalRootable, Root}; use dom::bindings::js::{OptionalRootable, Root};
use dom::bindings::utils::{Reflectable, Reflector}; use dom::bindings::utils::{Reflectable, Reflector};
use dom::bindings::error::{ErrorResult, Fallible, NamespaceError, InvalidCharacter, Syntax}; use dom::bindings::error::{ErrorResult, Fallible, NamespaceError, InvalidCharacter, Syntax};
use dom::bindings::utils::{QName, Name, InvalidXMLName, xml_name_type}; use dom::bindings::utils::{QName, Name, InvalidXMLName, xml_name_type};
@ -708,25 +708,19 @@ impl<'a> ElementMethods for JSRef<'a, Element> {
// http://dom.spec.whatwg.org/#dom-element-classlist // http://dom.spec.whatwg.org/#dom-element-classlist
fn ClassList(self) -> Temporary<DOMTokenList> { fn ClassList(self) -> Temporary<DOMTokenList> {
if self.class_list.get().is_none() { self.class_list.or_init(|| DOMTokenList::new(self, &atom!("class")))
let class_list = DOMTokenList::new(self, &atom!("class"));
self.class_list.assign(Some(class_list));
}
self.class_list.get().unwrap()
} }
// http://dom.spec.whatwg.org/#dom-element-attributes // http://dom.spec.whatwg.org/#dom-element-attributes
fn Attributes(self) -> Temporary<NamedNodeMap> { fn Attributes(self) -> Temporary<NamedNodeMap> {
if self.attr_list.get().is_none() { self.attr_list.or_init(|| {
let doc = { let doc = {
let node: JSRef<Node> = NodeCast::from_ref(self); let node: JSRef<Node> = NodeCast::from_ref(self);
node.owner_doc().root() node.owner_doc().root()
}; };
let window = doc.window().root(); let window = doc.window().root();
let list = NamedNodeMap::new(*window, self); NamedNodeMap::new(*window, self)
self.attr_list.assign(Some(list)); })
}
self.attr_list.get().unwrap()
} }
// http://dom.spec.whatwg.org/#dom-element-getattribute // http://dom.spec.whatwg.org/#dom-element-getattribute

View file

@ -117,11 +117,8 @@ impl<'a> HTMLAnchorElementMethods for JSRef<'a, HTMLAnchorElement> {
} }
fn RelList(self) -> Temporary<DOMTokenList> { fn RelList(self) -> Temporary<DOMTokenList> {
if self.rel_list.get().is_none() { self.rel_list.or_init(|| {
let element: JSRef<Element> = ElementCast::from_ref(self); DOMTokenList::new(ElementCast::from_ref(self), &atom!("rel"))
let rel_list = DOMTokenList::new(element, &atom!("rel")); })
self.rel_list.assign(Some(rel_list));
}
self.rel_list.get().unwrap()
} }
} }

View file

@ -11,7 +11,6 @@ use dom::bindings::js::{MutNullableJS, JSRef, Temporary};
use dom::bindings::utils::{Reflectable, Reflector}; use dom::bindings::utils::{Reflectable, Reflector};
use dom::document::Document; use dom::document::Document;
use dom::domtokenlist::DOMTokenList; use dom::domtokenlist::DOMTokenList;
use dom::element::Element;
use dom::element::HTMLAreaElementTypeId; use dom::element::HTMLAreaElementTypeId;
use dom::eventtarget::{EventTarget, NodeTargetTypeId}; use dom::eventtarget::{EventTarget, NodeTargetTypeId};
use dom::htmlelement::HTMLElement; use dom::htmlelement::HTMLElement;
@ -73,11 +72,8 @@ impl Reflectable for HTMLAreaElement {
impl<'a> HTMLAreaElementMethods for JSRef<'a, HTMLAreaElement> { impl<'a> HTMLAreaElementMethods for JSRef<'a, HTMLAreaElement> {
fn RelList(self) -> Temporary<DOMTokenList> { fn RelList(self) -> Temporary<DOMTokenList> {
if self.rel_list.get().is_none() { self.rel_list.or_init(|| {
let element: JSRef<Element> = ElementCast::from_ref(self); DOMTokenList::new(ElementCast::from_ref(self), &atom!("rel"))
let rel_list = DOMTokenList::new(element, &atom!("rel")); })
self.rel_list.assign(Some(rel_list));
}
self.rel_list.get().unwrap()
} }
} }

View file

@ -146,11 +146,8 @@ impl Reflectable for HTMLLinkElement {
impl<'a> HTMLLinkElementMethods for JSRef<'a, HTMLLinkElement> { impl<'a> HTMLLinkElementMethods for JSRef<'a, HTMLLinkElement> {
fn RelList(self) -> Temporary<DOMTokenList> { fn RelList(self) -> Temporary<DOMTokenList> {
if self.rel_list.get().is_none() { self.rel_list.or_init(|| {
let element: JSRef<Element> = ElementCast::from_ref(self); DOMTokenList::new(ElementCast::from_ref(self), &atom!("rel"))
let rel_list = DOMTokenList::new(element, &atom!("rel")); })
self.rel_list.assign(Some(rel_list));
}
self.rel_list.get().unwrap()
} }
} }

View file

@ -6,7 +6,7 @@ use dom::bindings::codegen::Bindings::WorkerGlobalScopeBinding::WorkerGlobalScop
use dom::bindings::codegen::Bindings::FunctionBinding::Function; use dom::bindings::codegen::Bindings::FunctionBinding::Function;
use dom::bindings::error::{ErrorResult, Fallible, Syntax, Network, FailureUnknown}; use dom::bindings::error::{ErrorResult, Fallible, Syntax, Network, FailureUnknown};
use dom::bindings::global; use dom::bindings::global;
use dom::bindings::js::{MutNullableJS, JSRef, Temporary, OptionalSettable}; use dom::bindings::js::{MutNullableJS, JSRef, Temporary};
use dom::bindings::utils::{Reflectable, Reflector}; use dom::bindings::utils::{Reflectable, Reflector};
use dom::console::Console; use dom::console::Console;
use dom::eventtarget::{EventTarget, WorkerGlobalScopeTypeId}; use dom::eventtarget::{EventTarget, WorkerGlobalScopeTypeId};
@ -93,11 +93,9 @@ impl<'a> WorkerGlobalScopeMethods for JSRef<'a, WorkerGlobalScope> {
} }
fn Location(self) -> Temporary<WorkerLocation> { fn Location(self) -> Temporary<WorkerLocation> {
if self.location.get().is_none() { self.location.or_init(|| {
let location = WorkerLocation::new(self, self.worker_url.clone()); WorkerLocation::new(self, self.worker_url.clone())
self.location.assign(Some(location)); })
}
self.location.get().unwrap()
} }
fn ImportScripts(self, url_strings: Vec<DOMString>) -> ErrorResult { fn ImportScripts(self, url_strings: Vec<DOMString>) -> ErrorResult {
@ -133,19 +131,11 @@ impl<'a> WorkerGlobalScopeMethods for JSRef<'a, WorkerGlobalScope> {
} }
fn Navigator(self) -> Temporary<WorkerNavigator> { fn Navigator(self) -> Temporary<WorkerNavigator> {
if self.navigator.get().is_none() { self.navigator.or_init(|| WorkerNavigator::new(self))
let navigator = WorkerNavigator::new(self);
self.navigator.assign(Some(navigator));
}
self.navigator.get().unwrap()
} }
fn Console(self) -> Temporary<Console> { fn Console(self) -> Temporary<Console> {
if self.console.get().is_none() { self.console.or_init(|| Console::new(global::Worker(self)))
let console = Console::new(global::Worker(self));
self.console.assign(Some(console));
}
self.console.get().unwrap()
} }
fn Btoa(self, btoa: DOMString) -> Fallible<DOMString> { fn Btoa(self, btoa: DOMString) -> Fallible<DOMString> {