purescript 0.3.6 → 0.3.6.1
raw patch · 3 files changed
+13/−4 lines, 3 files
Files
- purescript.cabal +1/−1
- src/Language/PureScript/CodeGen/JS.hs +3/−3
- src/Language/PureScript/TypeChecker/Monad.hs +9/−0
purescript.cabal view
@@ -1,5 +1,5 @@ name: purescript-version: 0.3.6+version: 0.3.6.1 cabal-version: >=1.8 build-type: Simple license: MIT
src/Language/PureScript/CodeGen/JS.hs view
@@ -41,7 +41,7 @@ import Language.PureScript.CodeGen.JS.AST as AST import Language.PureScript.Types import Language.PureScript.CodeGen.Optimize-import Language.PureScript.TypeChecker.Monad (canonicalizeType)+import Language.PureScript.TypeChecker.Monad (canonicalizeDataConstructor) -- | -- Generate code in the simplified Javascript intermediate representation for all declarations in a module@@ -199,7 +199,7 @@ then return done else- return [JSIfElse (JSBinary EqualTo (JSAccessor "ctor" (JSVar varName)) (JSStringLiteral (show ((\(mp, nm) -> Qualified (Just mp) nm) $ canonicalizeType m e ctor)))) (JSBlock done) Nothing]+ return [JSIfElse (JSBinary EqualTo (JSAccessor "ctor" (JSVar varName)) (JSStringLiteral (show ((\(mp, nm) -> Qualified (Just mp) nm) $ canonicalizeDataConstructor m e ctor)))) (JSBlock done) Nothing] binderToJs m e varName done (UnaryBinder ctor b) = do value <- fresh js <- binderToJs m e value done b@@ -208,7 +208,7 @@ then return [success] else- return [JSIfElse (JSBinary EqualTo (JSAccessor "ctor" (JSVar varName)) (JSStringLiteral (show ((\(mp, nm) -> Qualified (Just mp) nm) $ canonicalizeType m e ctor))))+ return [JSIfElse (JSBinary EqualTo (JSAccessor "ctor" (JSVar varName)) (JSStringLiteral (show ((\(mp, nm) -> Qualified (Just mp) nm) $ canonicalizeDataConstructor m e ctor)))) success Nothing] binderToJs m e varName done (ObjectBinder bs) = go done bs
src/Language/PureScript/TypeChecker/Monad.hs view
@@ -210,6 +210,15 @@ canonicalizeType mn env (Qualified Nothing nm) = case (mn, nm) `M.lookup` types env of Just (_, DataAlias mn' pn') -> (mn', pn') _ -> (mn, nm)+ +-- |+-- Canonicalize a data constructor by resolving any aliases introduced by module imports+--+canonicalizeDataConstructor :: ModuleName -> Environment -> Qualified ProperName -> (ModuleName, Ident)+canonicalizeDataConstructor _ _ (Qualified (Just mn) i) = (mn, Ident $ show i)+canonicalizeDataConstructor mn env (Qualified Nothing i) = case (mn, i) `M.lookup` dataConstructors env of+ Just (_, Alias mn' i') -> (mn', i')+ _ -> (mn, Ident $ show i) -- | -- State required for type checking: