packages feed

language-c99-simple 0.2.0 → 0.2.1

raw patch · 3 files changed

+20/−17 lines, 3 files

Files

ChangeLog.md view
@@ -1,5 +1,11 @@ # Revision history for language-c99-simple +## 0.2.1 -- 2022-08-15++* Bump version number for release (#10).+* Fixed a bug where the order of init list was reversed (thanks RyanGlScott!).+  (#9)+ ## 0.2.0 -- 2022-05-21  * Added support for initializers with designators.
language-c99-simple.cabal view
@@ -2,7 +2,7 @@ -- documentation, see http://haskell.org/cabal/users-guide/  name:                language-c99-simple-version:             0.2.0+version:             0.2.1 synopsis:            C-like AST to simplify writing C99 programs. description:   This package is a wrapper on top of 'language-c99'. It provides a simpler
src/Language/C99/Simple/Translate.hs view
@@ -168,10 +168,10 @@     declns' = transvariantdeclns declns  transfielddeclns :: NonEmpty FieldDecln -> C.StructDeclnList-transfielddeclns (decln NE.:| []) = C.StructDeclnBase (transfielddecln decln)-transfielddeclns (decln NE.:| (d : ds)) = C.StructDeclnCons-  (transfielddeclns (d NE.:| ds))-  (transfielddecln decln)+transfielddeclns (decln NE.:| declns) = foldl step (base decln) declns+  where+    base d    = C.StructDeclnBase (transfielddecln d)+    step ds d = C.StructDeclnCons ds (transfielddecln d)  transfielddecln :: FieldDecln -> C.StructDecln transfielddecln (FieldDecln ty name) = C.StructDecln quals declrlist where@@ -180,10 +180,10 @@   quals = getspecquals ty  transvariantdeclns :: NonEmpty Ident -> C.EnumrList-transvariantdeclns (decln NE.:| []) = C.EnumrBase (transvariantdecln decln)-transvariantdeclns (decln NE.:| (d : ds)) = C.EnumrCons-  (transvariantdeclns (d NE.:| ds))-  (transvariantdecln decln)+transvariantdeclns (decln NE.:| declns) = foldl step (base decln) declns+  where+    base d    = C.EnumrBase (transvariantdecln d)+    step ds d = C.EnumrCons ds (transvariantdecln d)  transvariantdecln :: Ident -> C.Enumr transvariantdecln name = C.Enumr (C.Enum (ident name))@@ -278,10 +278,10 @@ transinit (InitList es) = C.InitList (transinitlist es)  transinitlist :: NonEmpty InitItem -> C.InitList-transinitlist (InitItem mident x NE.:| [])     = C.InitBase-  (transdesigr <$> mident) (transinit x)-transinitlist (InitItem mident x NE.:| (y:zs)) = C.InitCons-  (transinitlist (y NE.:| zs)) (transdesigr <$> mident) (transinit x)+transinitlist (x NE.:| xs) = foldl step (base x) xs+  where+    base (InitItem mident y)    = C.InitBase    (transdesigr <$> mident) (transinit y)+    step ys (InitItem mident y) = C.InitCons ys (transdesigr <$> mident) (transinit y)  transdesigr :: Ident -> C.Design transdesigr = C.Design . C.DesigrBase . C.DesigrIdent . ident@@ -292,10 +292,7 @@   inits' = transinititems inits  transinititems :: NonEmpty InitItem -> C.InitList-transinititems (InitItem mident init NE.:| []) =-  C.InitBase ((C.Design . C.DesigrBase . C.DesigrIdent . ident) <$> mident) (transinit init)-transinititems (InitItem mident init NE.:| (x:xs)) =-  C.InitCons (transinititems (x NE.:| xs)) ((C.Design . C.DesigrBase . C.DesigrIdent . ident) <$> mident) (transinit init)+transinititems = transinitlist  indexexpr arr idx = C.PostfixIndex arr' idx' where   arr' = wrap $ transexpr arr