@@ -60,6 +60,8 @@ data JS = JSRaw String
60 | JSNew String [JS]
60 | JSNew String [JS]
61 | JSError String
61 | JSError String
62 | JSBinOp String JS JS
62 | JSBinOp String JS JS
63 | JSProj JS String
65 | JSProj JS String
64 | JSVar LVar
66 | JSVar LVar
@@ -279,6 +281,10 @@ foldJS tr add acc js =
279 add (tr js) $ foldl' add acc $ map fold args
281 add (tr js) $ foldl' add acc $ map fold args
280 | JSBinOp _ lhs rhs <- js =
282 | JSBinOp _ lhs rhs <- js =
281 add (tr js) $ add (fold lhs) (fold rhs)
283 add (tr js) $ add (fold lhs) (fold rhs)
284+ | JSPreOp _ val <- js =
285+ add (tr js) $ fold val
286+ | JSPostOp _ val <- js =
287+ add (tr js) $ fold val
282 | JSProj obj _ <- js =
288 | JSProj obj _ <- js =
283 add (tr js) (fold obj)
289 add (tr js) (fold obj)
284 | JSArray vals <- js =
290 | JSArray vals <- js =
@@ -311,6 +317,8 @@ transformJS tr js =
311 | JSApp lhs rhs <- js = JSApp (tr lhs) $ map tr rhs
317 | JSApp lhs rhs <- js = JSApp (tr lhs) $ map tr rhs
312 | JSNew con args <- js = JSNew con $ map tr args
318 | JSNew con args <- js = JSNew con $ map tr args
313 | JSBinOp op lhs rhs <- js = JSBinOp op (tr lhs) (tr rhs)
319 | JSBinOp op lhs rhs <- js = JSBinOp op (tr lhs) (tr rhs)
320+ | JSPreOp op val <- js = JSPreOp op (tr val)
321+ | JSPostOp op val <- js = JSPostOp op (tr val)
314 | JSProj obj field <- js = JSProj (tr obj) field
322 | JSProj obj field <- js = JSProj (tr obj) field
315 | JSArray vals <- js = JSArray $ map tr vals
323 | JSArray vals <- js = JSArray $ map tr vals
316 | JSAssign lhs rhs <- js = JSAssign (tr lhs) (tr rhs)
324 | JSAssign lhs rhs <- js = JSAssign (tr lhs) (tr rhs)