language-c99-simple 0.2.0 → 0.2.1
raw patch · 3 files changed
+20/−17 lines, 3 files
Files
- ChangeLog.md +6/−0
- language-c99-simple.cabal +1/−1
- src/Language/C99/Simple/Translate.hs +13/−16
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