on master help sign in
fix_js_unexpected_con_as_glob
commita9eaa61eb5a839c15515ed4de01bf3b3d3269792 authorRui Barreiro <rui.barreiro@gmail.com> dateThu 20 Jul 2017, 18:59 (9 years ago) parenta8a4564
2 files changed+15−1
src/IRTS/JavaScript/Codegen.hs+2−1 src/IRTS/JavaScript/LangTransforms.hs+13
src/IRTS/JavaScript/Codegen.hs+2−1
@@ -98,7 +98,8 @@ codegenJs :: CGConf -> CodeGenerator
9898codegenJs conf ci =
9999 do
100100 debug <- isYes <$> lookupEnv "IDRISJS_DEBUG"
101− let defs = Map.fromList $ liftDecls ci
101+ let defs' = Map.fromList $ liftDecls ci
102+ let defs = globlToCon defs'
102103 let used = Map.elems $ removeDeadCode defs [sMN 0 "runMain"]
103104 if debug then
104105 do
src/IRTS/JavaScript/LangTransforms.hs+13
@@ -8,6 +8,7 @@ Maintainer : The Idris Community.
88{-# LANGUAGE DeriveDataTypeable, OverloadedStrings, StandaloneDeriving #-}
99
1010module IRTS.JavaScript.LangTransforms( removeDeadCode
11+ , globlToCon
1112 ) where
1213
1314
@@ -94,3 +95,15 @@ removeDeadCode dcls start =
9495 remCons = removeUnusedBranches (getUsedConstructors used) used
9596 in if Map.keys remCons == Map.keys dcls then remCons
9697 else removeDeadCode remCons start
98+
99+
100+globlToCon :: Map Name LDecl -> Map Name LDecl
101+globlToCon x =
102+ transformBi (f x) x
103+ where
104+ f :: Map Name LDecl -> LExp -> LExp
105+ f y x@(LV (Glob n)) =
106+ case Map.lookup n y of
107+ Just (LConstructor _ conId arity) -> LCon Nothing conId n []
108+ _ -> x
109+ f y x = x