packages feed

cimple 0.0.6 → 0.0.7

raw patch · 4 files changed

+41/−5 lines, 4 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

+ Language.Cimple: Annot :: attr -> a -> AnnotF attr a
+ Language.Cimple: [attr] :: AnnotF attr a -> attr
+ Language.Cimple: [unAnnot] :: AnnotF attr a -> a
+ Language.Cimple: addAnnot :: Node lexeme -> AnnotNode lexeme
+ Language.Cimple: data AnnotF attr a
+ Language.Cimple: removeAnnot :: AnnotNode lexeme -> Node lexeme
+ Language.Cimple: type AnnotNode lexeme = Fix (AnnotF () `Compose` NodeF lexeme)

Files

cimple.cabal view
@@ -1,5 +1,5 @@ name:                 cimple-version:              0.0.6+version:              0.0.7 synopsis:             Simple C-like programming language homepage:             https://toktok.github.io/ license:              GPL-3@@ -32,7 +32,8 @@     , Language.Cimple.Pretty     , Language.Cimple.Program   other-modules:-      Language.Cimple.AST+      Language.Cimple.Annot+    , Language.Cimple.AST     , Language.Cimple.Flatten     , Language.Cimple.Graph     , Language.Cimple.Lexer
src/Language/Cimple.hs view
@@ -7,6 +7,7 @@ import           Control.Monad.State.Lazy    (State) import           Data.Text                   (Text) +import           Language.Cimple.Annot       as X import           Language.Cimple.AST         as X import           Language.Cimple.Lexer       as X import           Language.Cimple.Parser      as X
src/Language/Cimple/AST.hs view
@@ -15,7 +15,8 @@     , CommentStyle (..)     ) where -import           Data.Aeson                   (FromJSON, ToJSON)+import           Data.Aeson                   (FromJSON, FromJSON1, ToJSON,+                                               ToJSON1) import           Data.Fix                     (Fix) import           Data.Functor.Classes         (Eq1, Read1, Show1) import           Data.Functor.Classes.Generic (FunctorClassesDefault (..))@@ -114,8 +115,8 @@  type Node lexeme = Fix (NodeF lexeme) -instance (FromJSON lexeme, FromJSON a) => FromJSON (NodeF lexeme a)-instance (ToJSON lexeme, ToJSON a) => ToJSON (NodeF lexeme a)+instance FromJSON lexeme => FromJSON1 (NodeF lexeme)+instance ToJSON lexeme => ToJSON1 (NodeF lexeme)  data AssignOp     = AopEq
+ src/Language/Cimple/Annot.hs view
@@ -0,0 +1,33 @@+{-# LANGUAGE DeriveFunctor      #-}+{-# LANGUAGE DeriveGeneric      #-}+{-# LANGUAGE DeriveTraversable  #-}+{-# LANGUAGE DerivingVia        #-}+{-# LANGUAGE FlexibleInstances  #-}+{-# LANGUAGE StandaloneDeriving #-}+{-# LANGUAGE StrictData         #-}+{-# LANGUAGE TypeOperators      #-}+module Language.Cimple.Annot+    ( AnnotF (..)+    , AnnotNode+    , addAnnot+    , removeAnnot+    ) where++import           Data.Fix                     (Fix, hoistFix)+import           Data.Functor.Classes         (Eq1, Read1, Show1)+import           Data.Functor.Classes.Generic (FunctorClassesDefault (..))+import           Data.Functor.Compose         (Compose (..))+import           GHC.Generics                 (Generic, Generic1)+import           Language.Cimple.AST          (Node, NodeF)++data AnnotF attr a = Annot { attr :: attr, unAnnot :: a }+    deriving (Functor, Generic, Generic1)+    deriving (Show1, Read1, Eq1) via FunctorClassesDefault (AnnotF attr)++type AnnotNode lexeme = Fix (AnnotF () `Compose` NodeF lexeme)++addAnnot :: Node lexeme -> AnnotNode lexeme+addAnnot = hoistFix $ Compose . Annot ()++removeAnnot :: AnnotNode lexeme -> Node lexeme+removeAnnot = hoistFix $ unAnnot . getCompose