style: Simplify media query code now that lifetimes are non-lexical.

We can deindent and simplify a bunch of this code now.

Differential Revision: https://phabricator.services.mozilla.com/D49509
This commit is contained in:
Emilio Cobos Álvarez 2019-10-20 13:44:07 +00:00
parent 11c1317c37
commit ca05003ef6

View file

@ -244,7 +244,7 @@ fn consume_operation_or_colon(input: &mut Parser) -> Result<Option<Operator>, ()
fn disabled_by_pref(feature: &Atom) -> bool { fn disabled_by_pref(feature: &Atom) -> bool {
if *feature == atom!("-moz-touch-enabled") { if *feature == atom!("-moz-touch-enabled") {
return !static_prefs::pref!("layout.css.moz-touch-enabled.enabled") return !static_prefs::pref!("layout.css.moz-touch-enabled.enabled");
} }
false false
} }
@ -286,21 +286,14 @@ impl MediaFeatureExpression {
context: &ParserContext, context: &ParserContext,
input: &mut Parser<'i, 't>, input: &mut Parser<'i, 't>,
) -> Result<Self, ParseError<'i>> { ) -> Result<Self, ParseError<'i>> {
// FIXME: remove extra indented block when lifetimes are non-lexical let mut requirements = ParsingRequirements::empty();
let feature_index;
let feature;
let range;
{
let location = input.current_source_location(); let location = input.current_source_location();
let ident = input.expect_ident()?; let ident = input.expect_ident()?;
let mut requirements = ParsingRequirements::empty();
if context.in_ua_or_chrome_sheet() { if context.in_ua_or_chrome_sheet() {
requirements.insert(ParsingRequirements::CHROME_AND_UA_ONLY); requirements.insert(ParsingRequirements::CHROME_AND_UA_ONLY);
} }
let result = {
let mut feature_name = &**ident; let mut feature_name = &**ident;
if starts_with_ignore_ascii_case(feature_name, "-webkit-") { if starts_with_ignore_ascii_case(feature_name, "-webkit-") {
@ -320,46 +313,26 @@ impl MediaFeatureExpression {
let atom = Atom::from(string_as_ascii_lowercase(feature_name)); let atom = Atom::from(string_as_ascii_lowercase(feature_name));
if disabled_by_pref(&atom) { let (feature_index, feature) = match MEDIA_FEATURES
return Err(location.new_custom_error(
StyleParseErrorKind::MediaQueryExpectedFeatureName(ident.clone()),
));
}
match MEDIA_FEATURES
.iter() .iter()
.enumerate() .enumerate()
.find(|(_, f)| f.name == atom) .find(|(_, f)| f.name == atom)
{ {
Some((i, f)) => Ok((i, f, range)), Some((i, f)) => (i, f),
None => Err(()), None => {
} return Err(location.new_custom_error(
StyleParseErrorKind::MediaQueryExpectedFeatureName(ident.clone()),
))
},
}; };
match result { if disabled_by_pref(&feature.name) ||
Ok((i, f, r)) => { !requirements.contains(feature.requirements) ||
feature_index = i; (range.is_some() && !feature.allows_ranges())
feature = f; {
range = r;
},
Err(()) => {
return Err(location.new_custom_error( return Err(location.new_custom_error(
StyleParseErrorKind::MediaQueryExpectedFeatureName(ident.clone()), StyleParseErrorKind::MediaQueryExpectedFeatureName(ident.clone()),
)); ));
},
}
if !(feature.requirements & !requirements).is_empty() {
return Err(location.new_custom_error(
StyleParseErrorKind::MediaQueryExpectedFeatureName(ident.clone()),
));
}
if range.is_some() && !feature.allows_ranges() {
return Err(location.new_custom_error(
StyleParseErrorKind::MediaQueryExpectedFeatureName(ident.clone()),
));
}
} }
let operator = input.try(consume_operation_or_colon); let operator = input.try(consume_operation_or_colon);