diff --git a/src/tomli/_parser.py b/src/tomli/_parser.py index 11ef4533..3038891a 100644 --- a/src/tomli/_parser.py +++ b/src/tomli/_parser.py @@ -580,6 +580,8 @@ def parse_basic_str_escape( pos += 1 pos = skip_chars(src, pos, TOML_WS_AND_NEWLINE) return pos, "" + if escape_id == "\\x": + return parse_hex_char(src, pos, 2) if escape_id == "\\u": return parse_hex_char(src, pos, 4) if escape_id == "\\U": diff --git a/tests/data/valid/multiline-basic-str/replacements.json b/tests/data/valid/multiline-basic-str/replacements.json index 0afb39d9..699f5562 100644 --- a/tests/data/valid/multiline-basic-str/replacements.json +++ b/tests/data/valid/multiline-basic-str/replacements.json @@ -1,2 +1,6 @@ -{"escape": - {"type":"string","value":"\u001B"}} +{ + "escape": {"type":"string","value":"\u001B"}, + "tab": {"type":"string","value":"\t"}, + "upper-j": {"type":"string","value":"J"}, + "upper-j-2": {"type":"string","value":"J"} +} diff --git a/tests/data/valid/multiline-basic-str/replacements.toml b/tests/data/valid/multiline-basic-str/replacements.toml index 10d95090..fa5647e5 100644 --- a/tests/data/valid/multiline-basic-str/replacements.toml +++ b/tests/data/valid/multiline-basic-str/replacements.toml @@ -1 +1,4 @@ -escape = "\e" \ No newline at end of file +escape = "\e" +tab = "\x09" +upper-j = "\x4a" +upper-j-2 = "\x4A" diff --git a/tests/test_data.py b/tests/test_data.py index 490ba51b..f268ce9f 100644 --- a/tests/test_data.py +++ b/tests/test_data.py @@ -46,11 +46,9 @@ def test_valid(self): # compatible with yet. if valid.stem in { "no-seconds", - "hex-escape", "common-34", "common-31", "common-29", - "common-12", }: with self.assertRaises(tomllib.TOMLDecodeError): tomllib.loads(toml_str)