handle control characters at start of selector

This commit is contained in:
ConnorSkees 2020-04-02 02:14:59 -04:00
parent 618fa9ed86
commit ef25d8b880
3 changed files with 14 additions and 0 deletions

View File

@ -397,6 +397,9 @@ impl<'a> StyleSheetParser<'a> {
"Base-level rules cannot contain the parent-selector-referencing character '&'.".into(),
)
}
c if c.is_control() => {
return Err("expected selector.".into());
}
_ => match dbg!(self.lexer.next()) {
Some(Token { pos, .. }) => self.error(pos, "unexpected toplevel token"),
_ => unsafe { std::hint::unreachable_unchecked() },

View File

@ -331,6 +331,9 @@ impl<'a> SelectorParser<'a> {
self.super_selector,
)?)
}
c if c.is_control() => {
return Err("expected selector.".into());
}
_ => todo!("unimplemented selector"),
};
}

View File

@ -44,3 +44,11 @@ error!(
symbol_after_hash,
"a {color: bar + #}ar;}", "Error: Expected identifier."
);
error!(
control_character_starts_selector_toplevel,
"l {color: foo;}", "Error: expected selector."
);
error!(
control_character_starts_selector_inner,
"a{l {color: foo;}}", "Error: expected selector."
);