Fix duplicate version directive.
This commit is contained in:
parent
31dc4a1456
commit
308b07bad2
2 changed files with 6 additions and 2 deletions
|
@ -498,15 +498,20 @@ impl<T: Iterator<Item = char>> Parser<T> {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn parser_process_directives(&mut self) -> Result<(), ScanError> {
|
fn parser_process_directives(&mut self) -> Result<(), ScanError> {
|
||||||
|
let mut version_directive_received = false;
|
||||||
loop {
|
loop {
|
||||||
let mut tags = HashMap::new();
|
let mut tags = HashMap::new();
|
||||||
match self.peek_token()? {
|
match self.peek_token()? {
|
||||||
Token(_, TokenType::VersionDirective(_, _)) => {
|
Token(mark, TokenType::VersionDirective(_, _)) => {
|
||||||
// XXX parsing with warning according to spec
|
// XXX parsing with warning according to spec
|
||||||
//if major != 1 || minor > 2 {
|
//if major != 1 || minor > 2 {
|
||||||
// return Err(ScanError::new(tok.0,
|
// return Err(ScanError::new(tok.0,
|
||||||
// "found incompatible YAML document"));
|
// "found incompatible YAML document"));
|
||||||
//}
|
//}
|
||||||
|
if version_directive_received == true {
|
||||||
|
return Err(ScanError::new(*mark, "duplicate version directive"));
|
||||||
|
}
|
||||||
|
version_directive_received = true;
|
||||||
}
|
}
|
||||||
Token(mark, TokenType::TagDirective(handle, prefix)) => {
|
Token(mark, TokenType::TagDirective(handle, prefix)) => {
|
||||||
if tags.contains_key(handle) {
|
if tags.contains_key(handle) {
|
||||||
|
|
|
@ -298,7 +298,6 @@ fn expected_events(expected_tree: &str) -> Vec<String> {
|
||||||
#[rustfmt::skip]
|
#[rustfmt::skip]
|
||||||
static EXPECTED_FAILURES: &[&str] = &[
|
static EXPECTED_FAILURES: &[&str] = &[
|
||||||
// Directives (various)
|
// Directives (various)
|
||||||
"SF5V", // duplicate directive
|
|
||||||
"W4TN", // scalar confused as directive
|
"W4TN", // scalar confused as directive
|
||||||
// Losing trailing newline
|
// Losing trailing newline
|
||||||
"JEF9-02",
|
"JEF9-02",
|
||||||
|
|
Loading…
Reference in a new issue