diff --git a/src/scanner.rs b/src/scanner.rs index 2fbd4a1..3896866 100644 --- a/src/scanner.rs +++ b/src/scanner.rs @@ -1333,6 +1333,7 @@ impl> Scanner { '\\' if !single => { let mut code_length = 0usize; match self.buffer[1] { + '/' => string.push('/'), '0' => string.push('\0'), 'a' => string.push('\x07'), 'b' => string.push('\x08'), diff --git a/tests/spec_test.rs.inc b/tests/spec_test.rs.inc index bb50b3b..81c8098 100644 --- a/tests/spec_test.rs.inc +++ b/tests/spec_test.rs.inc @@ -632,6 +632,14 @@ fn test_ex5_12_tabs_and_spaces() { assert_next!(v, TestEvent::OnDocumentEnd); } +#[test] +fn test_escaped_slash() { + let mut v = str_to_test_events(NS_ESC_SLASH).into_iter(); + assert_next!(v, TestEvent::OnDocumentStart); + assert_next!(v, TestEvent::OnScalar); + assert_next!(v, TestEvent::OnDocumentEnd); +} + #[test] fn test_ex5_13_escaped_characters() { let mut v = str_to_test_events(EX5_13).into_iter(); diff --git a/tests/specexamples.rs.inc b/tests/specexamples.rs.inc index a5398c3..9c4d6d7 100644 --- a/tests/specexamples.rs.inc +++ b/tests/specexamples.rs.inc @@ -100,6 +100,8 @@ const EX5_11 : &'static str = const EX5_12 : &'static str = "# Tabs and spaces\nquoted: \"Quoted\t\"\nblock: |\n void main() {\n \tprintf(\"Hello, world!\\n\");\n }"; +const NS_ESC_SLASH: &'static str = "\"\\/\""; + const EX5_13 : &'static str = "\"Fun with \\\\\n\\\" \\a \\b \\e \\f \\\n\\n \\r \\t \\v \\0 \\\n\\ \\_ \\N \\L \\P \\\n\\x41 \\u0041 \\U00000041\"";