mirror of
https://github.com/servo/servo.git
synced 2025-08-05 21:50:18 +01:00
style: Don't unnecessarily use a Cell in the parser.
This commit is contained in:
parent
cf71a0cd96
commit
9a8c5fa7b5
1 changed files with 15 additions and 16 deletions
|
@ -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)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue