Skip to content

Commit

Permalink
ForRngStmt optimizer coverage is all thats left
Browse files Browse the repository at this point in the history
  • Loading branch information
osheow committed Apr 29, 2024
1 parent fcf7324 commit cd2d66b
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 4 deletions.
6 changes: 3 additions & 3 deletions src/optimizer.js
Original file line number Diff line number Diff line change
Expand Up @@ -95,13 +95,13 @@ const optimizers = {
},
ForRangeStatement(s) {
s.iterator = optimize(s.iterator)
s.low = optimize(s.low)
s.start = optimize(s.start)
s.op = optimize(s.op)
s.high = optimize(s.high)
s.end = optimize(s.end)
s.body = s.body.flatMap(optimize)
if (s.low.constructor === Number) {
if (s.high.constructor === Number) {
if (s.low > s.high) {
if (s.start > s.end) {
return []
}
}
Expand Down
9 changes: 8 additions & 1 deletion test/optimizer.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,14 @@ const tests = [
["optimizes whileStatement", core.whileStatement(true, [returnX]), core.whileStatement(true, [returnX])],
["optimizes shortReturnStatement", core.shortReturnStatement(), core.shortReturnStatement()],
["optimizes ForRangeStatement", core.forRangeStatement(x, 2, "..", 5, [returnX]), core.forRangeStatement(x, 2, "..", 5, [returnX])],
["optimizes ForRangeStatement where low is greater than high", core.forRangeStatement(x, 5, "..", 2, [returnX]), []],
["optimizes forStatement with empty array", core.forStatement(x, emptyArray, [returnX]), []],
["optimizes forStatement", core.forStatement(x, array(1, 2, 3), [returnX]), core.forStatement(x, array(1, 2, 3), [returnX])],
["optimizes conditional", core.conditional(x, 1, 2), core.conditional(x, 1, 2)],
["optimizes negation", core.negation("-", x), core.negation("-", x)],
["optimizes ForRangeStatement with low greater than high, returns empty array",
core.forRangeStatement(x, 5, "..", 2, [returnX]),
[]
],
]

describe("The optimizer", () => {
Expand Down

0 comments on commit cd2d66b

Please sign in to comment.