More fixes towards invalid tabs.
This commit is contained in:
parent
326082e0bc
commit
5a8c5a3d44
2 changed files with 45 additions and 2 deletions
|
@ -638,6 +638,50 @@ impl<T: Iterator<Item = char>> Scanner<T> {
|
|||
Ok(())
|
||||
}
|
||||
|
||||
/// Skip over YAML whitespace (` `, `\n`, `\r`).
|
||||
///
|
||||
/// # Errors
|
||||
/// This function returns an error if the character after the whitespaces is a tab (`\t`)
|
||||
/// character or if no whitespace was found.
|
||||
fn skip_yaml_whitespace(&mut self) -> ScanResult {
|
||||
let mut need_whitespace = true;
|
||||
loop {
|
||||
match self.look_ch() {
|
||||
' ' => {
|
||||
self.skip();
|
||||
|
||||
need_whitespace = false;
|
||||
}
|
||||
'\n' | '\r' => {
|
||||
self.lookahead(2);
|
||||
self.skip_line();
|
||||
if self.flow_level == 0 {
|
||||
self.allow_simple_key();
|
||||
}
|
||||
need_whitespace = false;
|
||||
}
|
||||
'#' => {
|
||||
while !is_breakz(self.ch()) {
|
||||
self.skip();
|
||||
self.lookahead(1);
|
||||
}
|
||||
}
|
||||
_ => break,
|
||||
}
|
||||
}
|
||||
|
||||
if need_whitespace {
|
||||
Err(ScanError::new(self.mark(), "expected whitespace"))
|
||||
} else if self.ch() == '\t' {
|
||||
Err(ScanError::new(
|
||||
self.mark(),
|
||||
"tabs disallowed in this context",
|
||||
))
|
||||
} else {
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
fn fetch_stream_start(&mut self) {
|
||||
let mark = self.mark;
|
||||
self.indent = -1;
|
||||
|
@ -1760,6 +1804,7 @@ impl<T: Iterator<Item = char>> Scanner<T> {
|
|||
}
|
||||
|
||||
self.skip();
|
||||
self.skip_yaml_whitespace()?;
|
||||
self.tokens.push_back(Token(start_mark, TokenType::Key));
|
||||
Ok(())
|
||||
}
|
||||
|
|
|
@ -299,7 +299,6 @@ fn expected_events(expected_tree: &str) -> Vec<String> {
|
|||
static EXPECTED_FAILURES: &[&str] = &[
|
||||
// These seem to be plain bugs
|
||||
// TAB as start of plain scalar instead of whitespace
|
||||
"Y79Y-06",
|
||||
"Y79Y-03", // unexpected pass
|
||||
"Y79Y-04", // unexpected pass
|
||||
"Y79Y-05", // unexpected pass
|
||||
|
@ -307,7 +306,6 @@ static EXPECTED_FAILURES: &[&str] = &[
|
|||
"DK95-04",
|
||||
// TABs after marker ? or : (space required?)
|
||||
"Y79Y-07",
|
||||
"Y79Y-08",
|
||||
"Y79Y-09",
|
||||
// Other TABs
|
||||
"DK95-01", // in double-quoted scalar
|
||||
|
|
Loading…
Reference in a new issue