style: Don't unnecessarily use a Cell in the parser.

This commit is contained in:
Emilio Cobos Álvarez 2017-06-02 12:40:06 +02:00
parent cf71a0cd96
commit 9a8c5fa7b5
No known key found for this signature in database
GPG key ID: 056B727BB9C1027C

View file

@ -40,7 +40,6 @@ use shared_lock::{SharedRwLock, Locked, ToCssWithGuard, SharedRwLockReadGuard};
use smallvec::SmallVec; use smallvec::SmallVec;
use std::{fmt, mem}; use std::{fmt, mem};
use std::borrow::Borrow; use std::borrow::Borrow;
use std::cell::Cell;
use std::mem::align_of; use std::mem::align_of;
use std::os::raw::c_void; use std::os::raw::c_void;
use std::slice; use std::slice;
@ -495,12 +494,12 @@ impl CssRule {
context: context, context: context,
shared_lock: &parent_stylesheet.shared_lock, shared_lock: &parent_stylesheet.shared_lock,
loader: loader, loader: loader,
state: Cell::new(state), state: state,
}; };
match parse_one_rule(&mut input, &mut rule_parser) { match parse_one_rule(&mut input, &mut rule_parser) {
Ok(result) => Ok((result, rule_parser.state.get())), Ok(result) => Ok((result, rule_parser.state)),
Err(_) => { Err(_) => {
if let State::Invalid = rule_parser.state.get() { if let State::Invalid = rule_parser.state {
Err(SingleRuleParseError::Hierarchy) Err(SingleRuleParseError::Hierarchy)
} else { } else {
Err(SingleRuleParseError::Syntax) Err(SingleRuleParseError::Syntax)
@ -1250,7 +1249,7 @@ impl Stylesheet {
shared_lock: shared_lock, shared_lock: shared_lock,
loader: stylesheet_loader, loader: stylesheet_loader,
context: context, context: context,
state: Cell::new(State::Start), state: State::Start,
}; };
input.look_for_viewport_percentages(); input.look_for_viewport_percentages();
@ -1477,7 +1476,7 @@ struct TopLevelRuleParser<'a> {
shared_lock: &'a SharedRwLock, shared_lock: &'a SharedRwLock,
loader: Option<&'a StylesheetLoader>, loader: Option<&'a StylesheetLoader>,
context: ParserContext<'a>, context: ParserContext<'a>,
state: Cell<State>, state: State,
} }
impl<'b> TopLevelRuleParser<'b> { impl<'b> TopLevelRuleParser<'b> {
@ -1555,8 +1554,8 @@ impl<'a> AtRuleParser for TopLevelRuleParser<'a> {
self.context.line_number_offset); self.context.line_number_offset);
match_ignore_ascii_case! { name, match_ignore_ascii_case! { name,
"import" => { "import" => {
if self.state.get() <= State::Imports { if self.state <= State::Imports {
self.state.set(State::Imports); self.state = State::Imports;
let url_string = input.expect_url_or_string()?; let url_string = input.expect_url_or_string()?;
let specified_url = SpecifiedUrl::parse_from_string(url_string, &self.context)?; let specified_url = SpecifiedUrl::parse_from_string(url_string, &self.context)?;
@ -1592,13 +1591,13 @@ impl<'a> AtRuleParser for TopLevelRuleParser<'a> {
}); });
return Ok(AtRuleType::WithoutBlock(CssRule::Import(arc))) return Ok(AtRuleType::WithoutBlock(CssRule::Import(arc)))
} else { } else {
self.state.set(State::Invalid); self.state = State::Invalid;
return Err(()) // "@import must be before any rule but @charset" return Err(()) // "@import must be before any rule but @charset"
} }
}, },
"namespace" => { "namespace" => {
if self.state.get() <= State::Namespaces { if self.state <= State::Namespaces {
self.state.set(State::Namespaces); self.state = State::Namespaces;
let prefix_result = input.try(|input| input.expect_ident()); let prefix_result = input.try(|input| input.expect_ident());
let url = Namespace::from(try!(input.expect_url_or_string())); let url = Namespace::from(try!(input.expect_url_or_string()));
@ -1624,7 +1623,7 @@ impl<'a> AtRuleParser for TopLevelRuleParser<'a> {
}) })
)))) ))))
} else { } else {
self.state.set(State::Invalid); self.state = State::Invalid;
return Err(()) // "@namespace must be before any rule but @charset and @import" return Err(()) // "@namespace must be before any rule but @charset and @import"
} }
}, },
@ -1634,11 +1633,11 @@ impl<'a> AtRuleParser for TopLevelRuleParser<'a> {
_ => {} _ => {}
} }
// Don't allow starting with an invalid state // Don't allow starting with an invalid state
if self.state.get() > State::Body { if self.state > State::Body {
self.state.set(State::Invalid); self.state = State::Invalid;
return Err(()); return Err(());
} }
self.state.set(State::Body); self.state = State::Body;
AtRuleParser::parse_prelude(&mut self.nested(), name, input) AtRuleParser::parse_prelude(&mut self.nested(), name, input)
} }
@ -1655,7 +1654,7 @@ impl<'a> QualifiedRuleParser for TopLevelRuleParser<'a> {
#[inline] #[inline]
fn parse_prelude(&mut self, input: &mut Parser) -> Result<SelectorList<SelectorImpl>, ()> { fn parse_prelude(&mut self, input: &mut Parser) -> Result<SelectorList<SelectorImpl>, ()> {
self.state.set(State::Body); self.state = State::Body;
QualifiedRuleParser::parse_prelude(&mut self.nested(), input) QualifiedRuleParser::parse_prelude(&mut self.nested(), input)
} }