diff --git a/src/tomli/_parser.py b/src/tomli/_parser.py index 32a1ba0d..11ef4533 100644 --- a/src/tomli/_parser.py +++ b/src/tomli/_parser.py @@ -532,7 +532,7 @@ def parse_inline_table( nested_dict = NestedDict() flags = Flags() - pos = skip_chars(src, pos, TOML_WS) + pos = skip_comments_and_array_ws(src, pos) if src.startswith("}", pos): return pos + 1, nested_dict.dict while True: @@ -547,16 +547,18 @@ def parse_inline_table( if key_stem in nest: raise TOMLDecodeError(f"Duplicate inline table key {key_stem!r}", src, pos) nest[key_stem] = value - pos = skip_chars(src, pos, TOML_WS) + pos = skip_comments_and_array_ws(src, pos) c = src[pos : pos + 1] if c == "}": return pos + 1, nested_dict.dict if c != ",": raise TOMLDecodeError("Unclosed inline table", src, pos) + pos += 1 + pos = skip_comments_and_array_ws(src, pos) + if src.startswith("}", pos): + return pos + 1, nested_dict.dict if isinstance(value, (dict, list)): flags.set(key, Flags.FROZEN, recursive=True) - pos += 1 - pos = skip_chars(src, pos, TOML_WS) def parse_basic_str_escape( diff --git a/tests/data/valid/empty-inline-table.json b/tests/data/valid/inline-table/empty-inline-table.json similarity index 100% rename from tests/data/valid/empty-inline-table.json rename to tests/data/valid/inline-table/empty-inline-table.json diff --git a/tests/data/valid/empty-inline-table.toml b/tests/data/valid/inline-table/empty-inline-table.toml similarity index 100% rename from tests/data/valid/empty-inline-table.toml rename to tests/data/valid/inline-table/empty-inline-table.toml diff --git a/tests/data/valid/inline-table/multiline-inline-table.json b/tests/data/valid/inline-table/multiline-inline-table.json new file mode 100644 index 00000000..d253884f --- /dev/null +++ b/tests/data/valid/inline-table/multiline-inline-table.json @@ -0,0 +1,35 @@ +{ + "multiline": { + "a": { + "type": "integer", + "value": "1" + }, + "b": { + "type": "integer", + "value": "2" + }, + "c": [ + { + "type": "integer", + "value": "1" + }, + { + "type": "integer", + "value": "2" + }, + { + "type": "integer", + "value": "3" + } + ], + "d": { + "type": "integer", + "value": "3" + }, + "e": { + "type": "integer", + "value": "4" + }, + "f": {} + } +} \ No newline at end of file diff --git a/tests/data/valid/inline-table/multiline-inline-table.toml b/tests/data/valid/inline-table/multiline-inline-table.toml new file mode 100644 index 00000000..6a98a08a --- /dev/null +++ b/tests/data/valid/inline-table/multiline-inline-table.toml @@ -0,0 +1,12 @@ +multiline = { + "a" = 1, "b" = 2, + c = [ + 1, + 2, + 3, + ],# comment + d = 3, + e = 4, f = { + # comment + }, +} diff --git a/tests/test_data.py b/tests/test_data.py index 78aa8ca2..490ba51b 100644 --- a/tests/test_data.py +++ b/tests/test_data.py @@ -46,10 +46,7 @@ def test_valid(self): # compatible with yet. if valid.stem in { "no-seconds", - "newline", - "newline-comment", "hex-escape", - "common-47", "common-34", "common-31", "common-29",