diff options
author | Joe Crayne <joe@jerkface.net> | 2018-11-23 18:58:06 -0500 |
---|---|---|
committer | Joe Crayne <joe@jerkface.net> | 2018-11-23 18:58:06 -0500 |
commit | 49b428e18dfcf599600f77c9c2ba492dd3ede26f (patch) | |
tree | 479f0ead275352c456b86d94440d67d10e7a7a2e | |
parent | 5011839455292f2eadc0b172006544214d0a9ba9 (diff) |
Handle special case (void) argument list.
-rw-r--r-- | c2haskell.hs | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/c2haskell.hs b/c2haskell.hs index ce33666..41d9ba0 100644 --- a/c2haskell.hs +++ b/c2haskell.hs | |||
@@ -621,9 +621,11 @@ parameterIdent (CDecl _ xs n) = listToMaybe $ do | |||
621 | (Just (CDeclr (Just x) _ _ _ _),_,_) <- xs | 621 | (Just (CDeclr (Just x) _ _ _ _),_,_) <- xs |
622 | return x | 622 | return x |
623 | 623 | ||
624 | |||
624 | makeParameterNames :: CDerivedDeclarator NodeInfo -> (CDerivedDeclarator NodeInfo,[CExpression NodeInfo]) | 625 | makeParameterNames :: CDerivedDeclarator NodeInfo -> (CDerivedDeclarator NodeInfo,[CExpression NodeInfo]) |
625 | makeParameterNames (CFunDeclr (Right (ps, flg)) z2 z3) | 626 | makeParameterNames (CFunDeclr (Right (ps, flg)) z2 z3) = case ps of |
626 | = ( CFunDeclr (Right (qs, flg)) z2 z3 , map expr qs ) | 627 | [CDecl [CTypeSpec (CVoidType _)] [] _] -> ( CFunDeclr (Right (ps, flg)) z2 z3 , []) -- void argument list. |
628 | _ -> ( CFunDeclr (Right (qs, flg)) z2 z3 , map expr qs ) | ||
627 | where | 629 | where |
628 | -- TODO: ensure uniqueness of generated parameter names | 630 | -- TODO: ensure uniqueness of generated parameter names |
629 | qs = zipWith mkp [0..] ps | 631 | qs = zipWith mkp [0..] ps |
@@ -787,11 +789,14 @@ sanitizeArgs ("-o":args) = sanitizeArgs $ drop 1 args | |||
787 | sanitizeArgs (arg:args) = arg : sanitizeArgs args | 789 | sanitizeArgs (arg:args) = arg : sanitizeArgs args |
788 | sanitizeArgs [] = [] | 790 | sanitizeArgs [] = [] |
789 | 791 | ||
792 | isModule :: FilePath -> Bool | ||
793 | isModule fname = (".c" `isSuffixOf` fname) || (".o" `isSuffixOf` fname) | ||
794 | |||
790 | usage :: [String] -> Maybe (C2HaskellOptions, [String], [FilePath]) | 795 | usage :: [String] -> Maybe (C2HaskellOptions, [String], [FilePath]) |
791 | usage args = | 796 | usage args = |
792 | case break (=="--") args of | 797 | case break (=="--") args of |
793 | (targs,_:cargs0) -> do | 798 | (targs,_:cargs0) -> do |
794 | let (rfs,ropts) = span (".c" `isSuffixOf`) cargs0 | 799 | let (rfs,ropts) = span isModule cargs0 |
795 | opts = reverse ropts | 800 | opts = reverse ropts |
796 | cargs = (sanitizeArgs opts) | 801 | cargs = (sanitizeArgs opts) |
797 | hopts = parseOptions targs defopts | 802 | hopts = parseOptions targs defopts |