on master help sign in
javascript: factor out jsDecl
3d72873raichoo
src/IRTS/CodegenJavaScript.hs+9−6
@@ -322,19 +322,22 @@ translateDeclaration :: (String, SDecl) -> JS
322translateDeclaration (path, SFun name params stackSize body)
322translateDeclaration (path, SFun name params stackSize body)
323 | (MN _ "APPLY") <- name =
323 | (MN _ "APPLY") <- name =
324 JSSeq [ JSRaw $ "/* " ++ translateName name ++ " */"
324 JSSeq [ JSRaw $ "/* " ++ translateName name ++ " */"
325− , translate (path ++ translateName name) params stackSize body
325+ , jsDecl (path ++ translateName name) $ translate params stackSize body
326 ]
326 ]
327 | (MN _ "EVAL") <- name
327 | (MN _ "EVAL") <- name
328 , (SChkCase var cases) <- body =
328 , (SChkCase var cases) <- body =
329 JSSeq [ JSRaw $ "/* " ++ translateName name ++ " */"
329 JSSeq [ JSRaw $ "/* " ++ translateName name ++ " */"
330− , translate (path ++ translateName name) params stackSize body
330+ , jsDecl (path ++ translateName name) $ translate params stackSize body
331 ]
331 ]
332 | otherwise =
332 | otherwise =
333− translate (path ++ translateName name) params stackSize body
333+ jsDecl (path ++ translateName name) $ translate params stackSize body
334 where
334 where
335+ jsDecl :: String -> JS -> JS
336+ jsDecl name = JSAlloc name . Just
337+
335− translate :: String -> [Name] -> Int -> SExp -> JS
338+ translate :: [Name] -> Int -> SExp -> JS
336− translate name params stackSize body =
339+ translate params stackSize body =
337− JSAlloc name $ Just $ JSFunction p (
340+ JSFunction p (
338 JSSeq $
341 JSSeq $
339 zipWith assignVar [0..] p ++
342 zipWith assignVar [0..] p ++
340 map allocVar [numP .. (numP + stackSize - 1)] ++
343 map allocVar [numP .. (numP + stackSize - 1)] ++