🐐 Arrays with newlines

This commit is contained in:
2026-04-22 15:29:38 +02:00
parent 60b45869fb
commit 634c5a2f93
2 changed files with 32 additions and 2 deletions

View File

@@ -273,14 +273,14 @@ class Parser():
@self.pg.production('array_items : ')
@self.pg.production('array_items : expression')
@self.pg.production('array_items : expression SYMBOL_COMMA array_items')
@self.pg.production('array_items : expression SYMBOL_COMMA opt_newline array_items')
def array_items(calls):
if len(calls) == 0:
return []
elif len(calls) == 1:
return [calls[0]]
else:
return [calls[0]] + calls[2]
return [calls[0]] + calls[3]
@self.pg.production('expression : id')
def expression_id(tokens):

View File

@@ -1798,6 +1798,36 @@ class TestArraySlice(unittest.TestCase):
run_test(self, source, nodes, value)
# --- Multiline arrays ---
multiline_array_tests = [
# newlines after commas
("[I,\nII,\nIII]",
Program([], [ExpressionStatement(DataArray([Numeral("I"), Numeral("II"), Numeral("III")]))]),
ValList([ValInt(1), ValInt(2), ValInt(3)])),
# single newline after comma
("[I, II,\nIII]",
Program([], [ExpressionStatement(DataArray([Numeral("I"), Numeral("II"), Numeral("III")]))]),
ValList([ValInt(1), ValInt(2), ValInt(3)])),
# empty array still works
("[]",
Program([], [ExpressionStatement(DataArray([]))]),
ValList([])),
# nested arrays with newlines
("[I,\n[II, III],\nIV]",
Program([], [ExpressionStatement(DataArray([
Numeral("I"),
DataArray([Numeral("II"), Numeral("III")]),
Numeral("IV")]))]),
ValList([ValInt(1), ValList([ValInt(2), ValInt(3)]), ValInt(4)])),
]
class TestMultilineArray(unittest.TestCase):
@parameterized.expand(multiline_array_tests)
def test_multiline_array(self, source, nodes, value):
run_test(self, source, nodes, value)
# --- String indexing ---
string_index_tests = [