on master help sign in
javascript: inline assignments
f2e94faraichoo
src/IRTS/CodegenJavaScript.hs+16−1
@@ -444,7 +444,7 @@ isJSConstantConstructor constants js
444
444
445
445
446inlineJS :: JS -> JS
446inlineJS :: JS -> JS
447−inlineJS = inlineError . inlineApply . inlineCaseMatch . inlineJSLet
447+inlineJS = inlineAssign . inlineError . inlineApply . inlineCaseMatch . inlineJSLet
448 where
448 where
449 inlineJSLet :: JS -> JS
449 inlineJSLet :: JS -> JS
450 inlineJSLet (JSApp (JSFunction [arg] (JSReturn ret)) [val])
450 inlineJSLet (JSApp (JSFunction [arg] (JSReturn ret)) [val])
@@ -488,6 +488,21 @@ inlineJS = inlineError . inlineApply . inlineCaseMatch . inlineJSLet
488 inlineError js = transformJS inlineError js
488 inlineError js = transformJS inlineError js
489
489
490
490
491+ inlineAssign (JSAssign lhs rhs)
492+ | JSVar _ <- lhs
493+ , JSVar _ <- rhs
494+ , lhs == rhs =
495+ lhs
496+
497+ inlineAssign (JSAssign lhs rhs)
498+ | JSIdent _ <- lhs
499+ , JSIdent _ <- rhs
500+ , lhs == rhs =
501+ lhs
502+
503+ inlineAssign js = transformJS inlineAssign js
504+
505+
491reduceJS :: [JS] -> [JS]
506reduceJS :: [JS] -> [JS]
492reduceJS js = moveJSDeclToTop "__IDRRT__Con" $ reduceLoop [] ([], js)
507reduceJS js = moveJSDeclToTop "__IDRRT__Con" $ reduceLoop [] ([], js)
493
508