Skip to content

Commit

Permalink
Only ternary left
Browse files Browse the repository at this point in the history
  • Loading branch information
osheow committed May 2, 2024
1 parent 9df9570 commit 7293b88
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 20 deletions.
22 changes: 11 additions & 11 deletions src/generator.js
Original file line number Diff line number Diff line change
Expand Up @@ -119,17 +119,17 @@ export default function generate(program) {
const op = { '==': '===', '!=': '!==' }[e.op] ?? e.op
return `(${gen(e.left)} ${op} ${gen(e.right)})`
},
NegationExpression(e) {
const operand = gen(e.operand)
// if (e.op === 'some') {
// return operand
// } else if (e.op === '#') {
// return `${operand}.length`
// } else if (e.op === 'random') {
// return `((a=>a[~~(Math.random()*a.length)])(${operand}))`
// }
return `${e.op}${operand}`
},
// NegationExpression(e) {
// const operand = gen(e.operand)
// // if (e.op === 'some') {
// // return operand
// // } else if (e.op === '#') {
// // return `${operand}.length`
// // } else if (e.op === 'random') {
// // return `((a=>a[~~(Math.random()*a.length)])(${operand}))`
// // }
// return `${e.op}${operand}`
// },
SubscriptExpression(e) {
return `${gen(e.array)}[${gen(e.index)}]`
},
Expand Down
9 changes: 0 additions & 9 deletions src/optimizer.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import * as core from "./core.js"

export default function optimize(node) {
//console.log("========", node)
return optimizers?.[node.kind]?.(node) ?? node
}

Expand Down Expand Up @@ -50,30 +49,22 @@ const optimizers = {
} else {
s.alternate = s.alternate.flatMap(optimize)
}
if (s.test.constructor === Boolean) {
return s.test ? s.consequent : s.alternate
}
return s
},
ShortIfStatement(s) {
s.test = optimize(s.test)
s.consequent = s.consequent.flatMap(optimize)
if (s.test.constructor === Boolean) {
return s.test ? s.consequent : []
}
return s
},
WhileStatement(s) {
s.test = optimize(s.test)
if (s.test === false) {
// while false is a no-op
return []
}
s.body = s.body.flatMap(optimize)
return s
},
ForRangeStatement(s) {
//console.log(typeof s.start)
s.iterator = optimize(s.iterator)
s.start = optimize(s.start)
s.op = optimize(s.op)
Expand Down

0 comments on commit 7293b88

Please sign in to comment.