Skip to content

Commit

Permalink
Add source_location to CounterStyleRule.
Browse files Browse the repository at this point in the history
  • Loading branch information
upsuper committed Apr 4, 2018
1 parent 9ad03d3 commit 32cd0b4
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 12 deletions.
21 changes: 13 additions & 8 deletions components/style/counter_style/mod.rs
Expand Up @@ -8,7 +8,7 @@

use Atom;
use cssparser::{AtRuleParser, DeclarationListParser, DeclarationParser};
use cssparser::{Parser, Token, CowRcStr};
use cssparser::{Parser, Token, CowRcStr, SourceLocation};
use error_reporting::{ContextualParseError, ParseErrorReporter};
#[cfg(feature = "gecko")] use gecko::rules::CounterStyleDescriptors;
#[cfg(feature = "gecko")] use gecko_bindings::structs::{ nsCSSCounterDesc, nsCSSValue };
Expand Down Expand Up @@ -70,15 +70,17 @@ pub fn parse_counter_style_name_definition<'i, 't>(
}

/// Parse the body (inside `{}`) of an @counter-style rule
pub fn parse_counter_style_body<'i, 't, R>(name: CustomIdent,
context: &ParserContext,
error_context: &ParserErrorContext<R>,
input: &mut Parser<'i, 't>)
-> Result<CounterStyleRuleData, ParseError<'i>>
pub fn parse_counter_style_body<'i, 't, R>(
name: CustomIdent,
context: &ParserContext,
error_context: &ParserErrorContext<R>,
input: &mut Parser<'i, 't>,
location: SourceLocation,
) -> Result<CounterStyleRuleData, ParseError<'i>>
where R: ParseErrorReporter
{
let start = input.current_source_location();
let mut rule = CounterStyleRuleData::empty(name);
let mut rule = CounterStyleRuleData::empty(name, location);
{
let parser = CounterStyleRuleParser {
context: context,
Expand Down Expand Up @@ -153,15 +155,18 @@ macro_rules! counter_style_descriptors {
#[$doc]
$ident: Option<$ty>,
)+
/// Line and column of the @counter-style rule source code.
pub source_location: SourceLocation,
}

impl CounterStyleRuleData {
fn empty(name: CustomIdent) -> Self {
fn empty(name: CustomIdent, source_location: SourceLocation) -> Self {
CounterStyleRuleData {
name: name,
$(
$ident: None,
)+
source_location,
}
}

Expand Down
15 changes: 11 additions & 4 deletions components/style/stylesheets/rule_parser.rs
Expand Up @@ -114,7 +114,7 @@ pub enum AtRuleBlockPrelude {
/// A @font-feature-values rule prelude, with its FamilyName list.
FontFeatureValues(Vec<FamilyName>, SourceLocation),
/// A @counter-style rule prelude, with its counter style name.
CounterStyle(CustomIdent),
CounterStyle(CustomIdent, SourceLocation),
/// A @media rule prelude, with its media queries.
Media(Arc<Locked<MediaList>>, SourceLocation),
/// An @supports rule, with its conditional
Expand Down Expand Up @@ -382,7 +382,7 @@ impl<'a, 'b, 'i, R: ParseErrorReporter> AtRuleParser<'i> for NestedRuleParser<'a
return Err(input.new_custom_error(StyleParseErrorKind::UnsupportedAtRule(name.clone())))
}
let name = parse_counter_style_name_definition(input)?;
Ok(AtRuleType::WithBlock(AtRuleBlockPrelude::CounterStyle(name)))
Ok(AtRuleType::WithBlock(AtRuleBlockPrelude::CounterStyle(name, location)))
},
"viewport" => {
if viewport_rule::enabled() {
Expand Down Expand Up @@ -455,15 +455,22 @@ impl<'a, 'b, 'i, R: ParseErrorReporter> AtRuleParser<'i> for NestedRuleParser<'a
Ok(CssRule::FontFeatureValues(Arc::new(self.shared_lock.wrap(
FontFeatureValuesRule::parse(&context, self.error_context, input, family_names, location)))))
}
AtRuleBlockPrelude::CounterStyle(name) => {
AtRuleBlockPrelude::CounterStyle(name, location) => {
let context = ParserContext::new_with_rule_type(
self.context,
CssRuleType::CounterStyle,
self.namespaces,
);

Ok(CssRule::CounterStyle(Arc::new(self.shared_lock.wrap(
parse_counter_style_body(name, &context, self.error_context, input)?.into()))))
parse_counter_style_body(
name,
&context,
self.error_context,
input,
location
)?.into()
))))
}
AtRuleBlockPrelude::Media(media_queries, location) => {
Ok(CssRule::Media(Arc::new(self.shared_lock.wrap(MediaRule {
Expand Down

0 comments on commit 32cd0b4

Please sign in to comment.