remove all unwraps from style parsing
This commit is contained in:
parent
d90d998ccd
commit
2a4d4f960b
18
src/style.rs
18
src/style.rs
@ -98,11 +98,11 @@ impl<'a> StyleParser<'a> {
|
|||||||
while let Some(tok) = toks.peek().cloned() {
|
while let Some(tok) = toks.peek().cloned() {
|
||||||
match tok.kind {
|
match tok.kind {
|
||||||
'{' => {
|
'{' => {
|
||||||
let span_before = toks.next().unwrap().pos;
|
toks.next();
|
||||||
devour_whitespace(toks);
|
devour_whitespace(toks);
|
||||||
loop {
|
loop {
|
||||||
let property =
|
let property =
|
||||||
self.parse_property(toks, super_property.clone(), span_before)?;
|
self.parse_property(toks, super_property.clone(), tok.pos)?;
|
||||||
if let Some(tok) = toks.peek() {
|
if let Some(tok) = toks.peek() {
|
||||||
if tok.kind == '{' {
|
if tok.kind == '{' {
|
||||||
match self.eat_style_group(toks, property, scope)? {
|
match self.eat_style_group(toks, property, scope)? {
|
||||||
@ -123,17 +123,17 @@ impl<'a> StyleParser<'a> {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
let value = self.parse_style_value(toks, scope, span_before)?;
|
let value = self.parse_style_value(toks, scope, tok.pos)?;
|
||||||
match toks.peek().unwrap().kind {
|
match toks.peek() {
|
||||||
'}' => {
|
Some(Token { kind: '}', .. }) => {
|
||||||
styles.push(Style { property, value });
|
styles.push(Style { property, value });
|
||||||
}
|
}
|
||||||
';' => {
|
Some(Token { kind: ';', .. }) => {
|
||||||
toks.next();
|
toks.next();
|
||||||
devour_whitespace(toks);
|
devour_whitespace(toks);
|
||||||
styles.push(Style { property, value });
|
styles.push(Style { property, value });
|
||||||
}
|
}
|
||||||
'{' => {
|
Some(Token { kind: '{', .. }) => {
|
||||||
styles.push(Style {
|
styles.push(Style {
|
||||||
property: property.clone(),
|
property: property.clone(),
|
||||||
value,
|
value,
|
||||||
@ -144,7 +144,7 @@ impl<'a> StyleParser<'a> {
|
|||||||
_ => unreachable!(),
|
_ => unreachable!(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
_ => {
|
Some(..) | None => {
|
||||||
devour_whitespace(toks);
|
devour_whitespace(toks);
|
||||||
styles.push(Style { property, value });
|
styles.push(Style { property, value });
|
||||||
}
|
}
|
||||||
@ -203,7 +203,7 @@ impl<'a> StyleParser<'a> {
|
|||||||
devour_whitespace(toks);
|
devour_whitespace(toks);
|
||||||
let property = eat_ident(toks, self.scope, self.super_selector, span_before)?;
|
let property = eat_ident(toks, self.scope, self.super_selector, span_before)?;
|
||||||
devour_whitespace_or_comment(toks)?;
|
devour_whitespace_or_comment(toks)?;
|
||||||
if toks.peek().is_some() && toks.peek().unwrap().kind == ':' {
|
if let Some(Token { kind: ':', .. }) = toks.peek() {
|
||||||
toks.next();
|
toks.next();
|
||||||
devour_whitespace_or_comment(toks)?;
|
devour_whitespace_or_comment(toks)?;
|
||||||
} else {
|
} else {
|
||||||
|
@ -234,3 +234,7 @@ error!(
|
|||||||
invalid_binop_in_list,
|
invalid_binop_in_list,
|
||||||
"a {color: foo % bar, baz;}", "Error: Undefined operation \"foo % bar\"."
|
"a {color: foo % bar, baz;}", "Error: Undefined operation \"foo % bar\"."
|
||||||
);
|
);
|
||||||
|
error!(
|
||||||
|
improperly_terminated_nested_style,
|
||||||
|
"a {foo: {bar: red", "Error: Expected identifier."
|
||||||
|
);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user