packages feed

jmacro 0.6.15 → 0.6.16

raw patch · 2 files changed

+36/−26 lines, 2 filesdep ~basePVP: major bump suggested

API removals or changes: PVP suggests a major version bump

Dependency ranges changed: base

API changes (from Hackage documentation)

- Language.Javascript.JMacro: expr2stat :: JExpr -> JStat
+ Language.Javascript.JMacro: JTBool :: JType
+ Language.Javascript.JMacro: JTForall :: [VarRef] -> JType -> JType
+ Language.Javascript.JMacro: JTFree :: VarRef -> JType
+ Language.Javascript.JMacro: JTFunc :: [JType] -> JType -> JType
+ Language.Javascript.JMacro: JTImpossible :: JType
+ Language.Javascript.JMacro: JTList :: JType -> JType
+ Language.Javascript.JMacro: JTMap :: JType -> JType
+ Language.Javascript.JMacro: JTNum :: JType
+ Language.Javascript.JMacro: JTRecord :: JType -> Map String JType -> JType
+ Language.Javascript.JMacro: JTRigid :: VarRef -> Set Constraint -> JType
+ Language.Javascript.JMacro: JTStat :: JType
+ Language.Javascript.JMacro: JTString :: JType
+ Language.Javascript.JMacro: data JType
- Language.Javascript.JMacro: BreakStat :: (Maybe JsLabel) -> JStat
+ Language.Javascript.JMacro: BreakStat :: Maybe JsLabel -> JStat
- Language.Javascript.JMacro: ContinueStat :: (Maybe JsLabel) -> JStat
+ Language.Javascript.JMacro: ContinueStat :: Maybe JsLabel -> JStat
- Language.Javascript.JMacro: DeclStat :: Ident -> (Maybe JLocalType) -> JStat
+ Language.Javascript.JMacro: DeclStat :: Ident -> Maybe JLocalType -> JStat
- Language.Javascript.JMacro: JHash :: (Map String JExpr) -> JVal
+ Language.Javascript.JMacro: JHash :: Map String JExpr -> JVal
- Language.Javascript.JMacro: UnsatBlock :: (IdentSupply JStat) -> JStat
+ Language.Javascript.JMacro: UnsatBlock :: IdentSupply JStat -> JStat
- Language.Javascript.JMacro: UnsatExpr :: (IdentSupply JExpr) -> JExpr
+ Language.Javascript.JMacro: UnsatExpr :: IdentSupply JExpr -> JExpr
- Language.Javascript.JMacro: UnsatVal :: (IdentSupply JVal) -> JVal
+ Language.Javascript.JMacro: UnsatVal :: IdentSupply JVal -> JVal
- Language.Javascript.JMacro: jLam :: (ToSat a) => a -> JExpr
+ Language.Javascript.JMacro: jLam :: ToSat a => a -> JExpr
- Language.Javascript.JMacro: jTryCatchFinally :: (ToSat a) => JStat -> a -> JStat -> JStat
+ Language.Javascript.JMacro: jTryCatchFinally :: ToSat a => JStat -> a -> JStat -> JStat
- Language.Javascript.JMacro: jVar :: (ToSat a) => a -> JStat
+ Language.Javascript.JMacro: jVar :: ToSat a => a -> JStat
- Language.Javascript.JMacro: jVarTy :: (ToSat a) => a -> (Maybe JLocalType) -> JStat
+ Language.Javascript.JMacro: jVarTy :: ToSat a => a -> Maybe JLocalType -> JStat
- Language.Javascript.JMacro: jsSaturate :: (JMacro a) => Maybe String -> a -> a
+ Language.Javascript.JMacro: jsSaturate :: JMacro a => Maybe String -> a -> a
- Language.Javascript.JMacro.TypeCheck: SVConstrained :: (Set Constraint) -> StoreVal
+ Language.Javascript.JMacro.TypeCheck: SVConstrained :: Set Constraint -> StoreVal
- Language.Javascript.JMacro.TypeCheck: TMonad :: (ErrorT String (State TCState) a) -> TMonad a
+ Language.Javascript.JMacro.TypeCheck: TMonad :: ErrorT String (State TCState) a -> TMonad a
- Language.Javascript.JMacro.Types: JTFunc :: [JType] -> (JType) -> JType
+ Language.Javascript.JMacro.Types: JTFunc :: [JType] -> JType -> JType
- Language.Javascript.JMacro.Types: JTRecord :: JType -> (Map String JType) -> JType
+ Language.Javascript.JMacro.Types: JTRecord :: JType -> Map String JType -> JType
- Language.Javascript.JMacro.Types: JTRigid :: VarRef -> (Set Constraint) -> JType
+ Language.Javascript.JMacro.Types: JTRigid :: VarRef -> Set Constraint -> JType
- Language.Javascript.JMacro.Util: (<>) :: (ToJExpr a) => JExpr -> a -> JExpr
+ Language.Javascript.JMacro.Util: (<>) :: ToJExpr a => JExpr -> a -> JExpr

Files

Language/Javascript/JMacro/Base.hs view
@@ -1,4 +1,5 @@-{-# LANGUAGE FlexibleInstances, UndecidableInstances, OverlappingInstances, OverloadedStrings, TypeFamilies, RankNTypes, DeriveDataTypeable, StandaloneDeriving, FlexibleContexts, TypeSynonymInstances, ScopedTypeVariables, GADTs, GeneralizedNewtypeDeriving #-}+{-# LANGUAGE FlexibleInstances, UndecidableInstances, OverlappingInstances, OverloadedStrings, TypeFamilies, RankNTypes, DeriveDataTypeable, StandaloneDeriving, FlexibleContexts, TypeSynonymInstances, ScopedTypeVariables, GADTs+           , GeneralizedNewtypeDeriving, LambdaCase #-}  ----------------------------------------------------------------------------- {- |@@ -86,9 +87,11 @@  takeOne :: State [Ident] Ident takeOne = do-  (x:xs) <- get-  put xs-  return x+  get >>= \case+            (x:xs) -> do+               put xs+               return x+            _ -> fail "not enough elements"  newIdentSupply :: Maybe String -> [Ident] newIdentSupply Nothing     = newIdentSupply (Just "jmId")@@ -399,9 +402,11 @@     JMGId _ -> jtoGADT $ f x     where         inScope z = IS $ do-            ([StrI a], b) <- splitAt 1 `fmap` get-            put b-            return $ withHygiene_ a f z+            splitAt 1 `fmap` get >>= \case+              ([StrI a], b) -> do+                put b+                return $ withHygiene_ a f z+              _ -> fail "Not as string"  withHygiene_ :: JMacro a => String -> (a -> a) -> a -> a withHygiene_ un f x = jfromGADT $ case jtoGADT x of@@ -427,25 +432,28 @@                              blocks (DeclStat (StrI i) t : xs) =  case i of                                 ('!':'!':i') -> (DeclStat (StrI i') t:) <$> blocks xs                                 ('!':i') -> (DeclStat (StrI i') t:) <$> blocks xs-                                _ -> do-                                  (newI:st) <- get-                                  put st-                                  rest <- blocks xs-                                  return $ [DeclStat newI t `mappend` jsReplace_ [(StrI i, newI)] (BlockStat rest)]+                                _ -> get >>= \case+                                     (newI:st) -> do+                                       put st+                                       rest <- blocks xs+                                       return $ [DeclStat newI t `mappend` jsReplace_ [(StrI i, newI)] (BlockStat rest)]+                                     _ -> fail "scopify"                              blocks (x':xs) = (jfromGADT <$> go (jtoGADT x')) <:> blocks xs                              (<:>) = liftM2 (:)-                   (JMGStat (ForInStat b (StrI i) e s)) -> do-                          (newI:st) <- get-                          put st-                          rest <- jfromGADT <$> go (jtoGADT s)-                          return $ JMGStat . ForInStat b newI e $ jsReplace_ [(StrI i, newI)] rest-                   (JMGStat (TryStat s (StrI i) s1 s2)) -> do-                          (newI:st) <- get-                          put st-                          t <- jfromGADT <$> go (jtoGADT s)-                          c <- jfromGADT <$> go (jtoGADT s1)-                          f <- jfromGADT <$> go (jtoGADT s2)-                          return . JMGStat . TryStat t newI (jsReplace_ [(StrI i, newI)] c) $ f+                   (JMGStat (ForInStat b (StrI i) e s)) -> get >>= \case+                          (newI:st) -> do+                             put st+                             rest <- jfromGADT <$> go (jtoGADT s)+                             return $ JMGStat . ForInStat b newI e $ jsReplace_ [(StrI i, newI)] rest+                          _ -> fail "scopify2"+                   (JMGStat (TryStat s (StrI i) s1 s2)) -> get >>= \case+                          (newI:st) -> do+                            put st+                            t <- jfromGADT <$> go (jtoGADT s)+                            c <- jfromGADT <$> go (jtoGADT s1)+                            f <- jfromGADT <$> go (jtoGADT s2)+                            return . JMGStat . TryStat t newI (jsReplace_ [(StrI i, newI)] c) $ f+                          _ -> fail "scopify3"                    (JMGExpr (ValExpr (JFunc is s))) -> do                             st <- get                             let (newIs,newSt) = splitAt (length is) st
jmacro.cabal view
@@ -1,5 +1,5 @@ name:                jmacro-version:             0.6.15+version:             0.6.16 synopsis:            QuasiQuotation library for programmatic generation of Javascript code. description:         Javascript syntax, functional syntax, hygienic names, compile-time guarantees of syntactic correctness, limited typechecking. Additional documentation available at <http://www.haskell.org/haskellwiki/Jmacro> category:            Language@@ -7,7 +7,7 @@ license-file:        LICENSE author:              Gershom Bazerman maintainer:          gershomb@gmail.com-Tested-With:         GHC == 8.4.2+Tested-With:         GHC == 8.6.3 Build-Type:          Simple Cabal-Version:       >= 1.6 @@ -38,6 +38,7 @@                    Language.Javascript.JMacro.Base                    Language.Javascript.JMacro.QQ                    Language.Javascript.JMacro.ParseTH+                   Language.Javascript.JMacro   executable jmacro-bench@@ -52,6 +53,7 @@                    Language.Javascript.JMacro.Base                    Language.Javascript.JMacro.QQ                    Language.Javascript.JMacro.ParseTH+                   Language.Javascript.JMacro    else     buildable: False