5
5
// https://drafts.csswg.org/css-syntax/#parsing
6
6
7
7
use super :: { BasicParseError , BasicParseErrorKind , Delimiter } ;
8
- use super :: { ParseError , Parser , SourceLocation , Token } ;
8
+ use super :: { ParseError , Parser , Token } ;
9
9
use crate :: cow_rc_str:: CowRcStr ;
10
10
use crate :: parser:: { parse_nested_block, parse_until_after, parse_until_before, ParserState } ;
11
11
@@ -130,10 +130,10 @@ pub trait AtRuleParser<'i> {
130
130
fn rule_without_block (
131
131
& mut self ,
132
132
prelude : Self :: PreludeNoBlock ,
133
- location : SourceLocation ,
133
+ start : & ParserState ,
134
134
) -> Self :: AtRule {
135
135
let _ = prelude;
136
- let _ = location ;
136
+ let _ = start ;
137
137
panic ! (
138
138
"The `AtRuleParser::rule_without_block` method must be overriden \
139
139
if `AtRuleParser::parse_prelude` ever returns `AtRuleType::WithoutBlock`."
@@ -153,11 +153,11 @@ pub trait AtRuleParser<'i> {
153
153
fn parse_block < ' t > (
154
154
& mut self ,
155
155
prelude : Self :: PreludeBlock ,
156
- location : SourceLocation ,
156
+ start : & ParserState ,
157
157
input : & mut Parser < ' i , ' t > ,
158
158
) -> Result < Self :: AtRule , ParseError < ' i , Self :: Error > > {
159
159
let _ = prelude;
160
- let _ = location ;
160
+ let _ = start ;
161
161
let _ = input;
162
162
Err ( input. new_error ( BasicParseErrorKind :: AtRuleBodyInvalid ) )
163
163
}
@@ -210,11 +210,11 @@ pub trait QualifiedRuleParser<'i> {
210
210
fn parse_block < ' t > (
211
211
& mut self ,
212
212
prelude : Self :: Prelude ,
213
- location : SourceLocation ,
213
+ start : & ParserState ,
214
214
input : & mut Parser < ' i , ' t > ,
215
215
) -> Result < Self :: QualifiedRule , ParseError < ' i , Self :: Error > > {
216
216
let _ = prelude;
217
- let _ = location ;
217
+ let _ = start ;
218
218
let _ = input;
219
219
Err ( input. new_error ( BasicParseErrorKind :: QualifiedRuleInvalid ) )
220
220
}
@@ -463,14 +463,13 @@ fn parse_at_rule<'i, 't, P, E>(
463
463
where
464
464
P : AtRuleParser < ' i , Error = E > ,
465
465
{
466
- let location = input. current_source_location ( ) ;
467
466
let delimiters = Delimiter :: Semicolon | Delimiter :: CurlyBracketBlock ;
468
467
// FIXME: https://github.com/servo/rust-cssparser/issues/254
469
468
let callback = |input : & mut Parser < ' i , ' _ > | parser. parse_prelude ( name, input) ;
470
469
let result = parse_until_before ( input, delimiters, callback) ;
471
470
match result {
472
471
Ok ( AtRuleType :: WithoutBlock ( prelude) ) => match input. next ( ) {
473
- Ok ( & Token :: Semicolon ) | Err ( _) => Ok ( parser. rule_without_block ( prelude, location ) ) ,
472
+ Ok ( & Token :: Semicolon ) | Err ( _) => Ok ( parser. rule_without_block ( prelude, start ) ) ,
474
473
Ok ( & Token :: CurlyBracketBlock ) => Err ( (
475
474
input. new_unexpected_token_error ( Token :: CurlyBracketBlock ) ,
476
475
input. slice_from ( start. position ( ) ) ,
@@ -482,7 +481,7 @@ where
482
481
Ok ( & Token :: CurlyBracketBlock ) => {
483
482
// FIXME: https://github.com/servo/rust-cssparser/issues/254
484
483
let callback =
485
- |input : & mut Parser < ' i , ' _ > | parser. parse_block ( prelude, location , input) ;
484
+ |input : & mut Parser < ' i , ' _ > | parser. parse_block ( prelude, start , input) ;
486
485
parse_nested_block ( input, callback)
487
486
. map_err ( |e| ( e, input. slice_from ( start. position ( ) ) ) )
488
487
}
@@ -512,7 +511,7 @@ fn parse_qualified_rule<'i, 't, P, E>(
512
511
where
513
512
P : QualifiedRuleParser < ' i , Error = E > ,
514
513
{
515
- let location = input. current_source_location ( ) ;
514
+ let start = input. state ( ) ;
516
515
// FIXME: https://github.com/servo/rust-cssparser/issues/254
517
516
let callback = |input : & mut Parser < ' i , ' _ > | parser. parse_prelude ( input) ;
518
517
let prelude = parse_until_before ( input, Delimiter :: CurlyBracketBlock , callback) ;
@@ -521,8 +520,7 @@ where
521
520
// Do this here so that we consume the `{` even if the prelude is `Err`.
522
521
let prelude = prelude?;
523
522
// FIXME: https://github.com/servo/rust-cssparser/issues/254
524
- let callback =
525
- |input : & mut Parser < ' i , ' _ > | parser. parse_block ( prelude, location, input) ;
523
+ let callback = |input : & mut Parser < ' i , ' _ > | parser. parse_block ( prelude, & start, input) ;
526
524
parse_nested_block ( input, callback)
527
525
}
528
526
_ => unreachable ! ( ) ,
0 commit comments