🐐 Compound assignment

This commit is contained in:
2026-04-21 14:39:42 +02:00
parent ad46f189c0
commit c28ffbbf45
8 changed files with 53 additions and 1 deletions

View File

@@ -265,6 +265,31 @@ assignment_tests = [
Designa(ID("x"), BinOp(ID("x"), Numeral("I"), "SYMBOL_PLUS")),
ExpressionStatement(ID("x"))]),
ValInt(3)),
# Compound assignment — AVGE (+=)
("DESIGNA x VT V\nx AVGE III\nx",
Program([], [Designa(ID("x"), Numeral("V")),
Designa(ID("x"), BinOp(ID("x"), Numeral("III"), "SYMBOL_PLUS")),
ExpressionStatement(ID("x"))]),
ValInt(8)),
# Compound assignment — MINVE (-=)
("DESIGNA x VT X\nx MINVE III\nx",
Program([], [Designa(ID("x"), Numeral("X")),
Designa(ID("x"), BinOp(ID("x"), Numeral("III"), "SYMBOL_MINUS")),
ExpressionStatement(ID("x"))]),
ValInt(7)),
# AVGE with complex expression
("DESIGNA x VT I\nx AVGE II + III\nx",
Program([], [Designa(ID("x"), Numeral("I")),
Designa(ID("x"), BinOp(ID("x"), BinOp(Numeral("II"), Numeral("III"), "SYMBOL_PLUS"), "SYMBOL_PLUS")),
ExpressionStatement(ID("x"))]),
ValInt(6)),
# AVGE inside a loop (DONICVM range is exclusive of upper bound: I VSQVE III = [1, 2])
("DESIGNA s VT NVLLVS\nDONICVM i VT I VSQVE III FACE {\ns AVGE i\n}\ns",
Program([], [Designa(ID("s"), Nullus()),
PerStatement(DataRangeArray(Numeral("I"), Numeral("III")), ID("i"),
[Designa(ID("s"), BinOp(ID("s"), ID("i"), "SYMBOL_PLUS"))]),
ExpressionStatement(ID("s"))]),
ValInt(3)),
]
class TestAssignment(unittest.TestCase):