diff options
author | Joe Crayne <joe@jerkface.net> | 2018-11-23 18:15:33 -0500 |
---|---|---|
committer | Joe Crayne <joe@jerkface.net> | 2018-11-23 18:15:33 -0500 |
commit | 6979c8ddda1cf2e4403f447444fe2783cf8c51af (patch) | |
tree | d04f4b90277e046cfcba7ffcf32bd4d2db45d945 | |
parent | 9d667c73fcb4917f83e5bed55b4bc01de180ed6d (diff) |
handle void return types
-rw-r--r-- | c2haskell.hs | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/c2haskell.hs b/c2haskell.hs index 9c910ef..ed287cf 100644 --- a/c2haskell.hs +++ b/c2haskell.hs | |||
@@ -574,13 +574,11 @@ changeArgList3 f (Just (CDeclr a x b c d)) = Just (CDeclr a (f x) b c d) | |||
574 | changeArgList f (CFDefExt (CFunDef xs ys zs c d)) = CFDefExt (CFunDef xs (changeArgList1 f ys) zs c d) | 574 | changeArgList f (CFDefExt (CFunDef xs ys zs c d)) = CFDefExt (CFunDef xs (changeArgList1 f ys) zs c d) |
575 | changeArgList f (CDeclExt (CDecl xs ys pos)) = (CDeclExt (CDecl xs (changeArgList2 f ys) pos)) | 575 | changeArgList f (CDeclExt (CDecl xs ys pos)) = (CDeclExt (CDecl xs (changeArgList2 f ys) pos)) |
576 | 576 | ||
577 | {- | ||
578 | setPosOfNode :: Position -> NodeInfo -> NodeInfo | 577 | setPosOfNode :: Position -> NodeInfo -> NodeInfo |
579 | setPosOfNode pos n = maybe (mkNodeInfoOnlyPos pos) (mkNodeInfo pos) $ nameOfNode n | 578 | setPosOfNode pos n = maybe (mkNodeInfoOnlyPos pos) (mkNodeInfo pos) $ nameOfNode n |
580 | 579 | ||
581 | setPos pos (CFDefExt (CFunDef xs ys zs c n)) = (CFDefExt (CFunDef xs ys zs c $ setPosOfNode pos n)) | 580 | setPos pos (CFDefExt (CFunDef xs ys zs c n)) = (CFDefExt (CFunDef xs ys zs c $ setPosOfNode pos n)) |
582 | setPos pos (CDeclExt (CDecl xs ys n)) = (CDeclExt (CDecl xs ys $ setPosOfNode pos n)) | 581 | setPos pos (CDeclExt (CDecl xs ys n)) = (CDeclExt (CDecl xs ys $ setPosOfNode pos n)) |
583 | -} | ||
584 | 582 | ||
585 | getArgList1 (CDeclr a xs b c d) = xs | 583 | getArgList1 (CDeclr a xs b c d) = xs |
586 | 584 | ||
@@ -594,6 +592,9 @@ getArgList (CDeclExt (CDecl xs ys pos)) = getArgList2 ys | |||
594 | changeReturnValue f (CFDefExt (CFunDef xs ys zs c d)) = (CFDefExt (CFunDef (f xs) ys zs c d)) | 592 | changeReturnValue f (CFDefExt (CFunDef xs ys zs c d)) = (CFDefExt (CFunDef (f xs) ys zs c d)) |
595 | changeReturnValue f (CDeclExt (CDecl xs ys pos)) = (CDeclExt (CDecl (f xs) ys pos)) | 593 | changeReturnValue f (CDeclExt (CDecl xs ys pos)) = (CDeclExt (CDecl (f xs) ys pos)) |
596 | 594 | ||
595 | getReturnValue (CFDefExt (CFunDef xs ys zs c d)) = xs | ||
596 | getReturnValue (CDeclExt (CDecl xs ys pos)) = xs | ||
597 | |||
597 | voidReturnType = [ CTypeSpec (CVoidType undefNode) ] | 598 | voidReturnType = [ CTypeSpec (CVoidType undefNode) ] |
598 | 599 | ||
599 | setBody bdy (CFDefExt (CFunDef xs ys zs c d)) = (CFDefExt (CFunDef xs ys zs bdy d)) | 600 | setBody bdy (CFDefExt (CFunDef xs ys zs c d)) = (CFDefExt (CFunDef xs ys zs bdy d)) |
@@ -603,7 +604,9 @@ setBody bdy (CDeclExt (CDecl xs ys pos)) = (CFDefExt (CFunDef xs v [] bdy pos)) | |||
603 | _ -> CDeclr Nothing [] Nothing [] pos | 604 | _ -> CDeclr Nothing [] Nothing [] pos |
604 | 605 | ||
605 | makeStub d = -- @(CDeclExt (CDecl xs ys pos)) = | 606 | makeStub d = -- @(CDeclExt (CDecl xs ys pos)) = |
606 | let rval = True -- todo: Set False for void function. | 607 | let rval = case getReturnValue d of |
608 | [ CTypeSpec (CVoidType _) ] -> False -- void function. | ||
609 | _ -> True | ||
607 | name = concatMap identToString $ take 1 $ catMaybes $ sym d | 610 | name = concatMap identToString $ take 1 $ catMaybes $ sym d |
608 | msg = "undefined: " ++ HS.prettyPrint (makeAcceptableDecl $ head $ sig d) ++ "\n" | 611 | msg = "undefined: " ++ HS.prettyPrint (makeAcceptableDecl $ head $ sig d) ++ "\n" |
609 | in case getArgList d of | 612 | in case getArgList d of |