summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoe Crayne <joe@jerkface.net>2018-11-23 18:15:33 -0500
committerJoe Crayne <joe@jerkface.net>2018-11-23 18:15:33 -0500
commit6979c8ddda1cf2e4403f447444fe2783cf8c51af (patch)
treed04f4b90277e046cfcba7ffcf32bd4d2db45d945
parent9d667c73fcb4917f83e5bed55b4bc01de180ed6d (diff)
handle void return types
-rw-r--r--c2haskell.hs9
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)
574changeArgList f (CFDefExt (CFunDef xs ys zs c d)) = CFDefExt (CFunDef xs (changeArgList1 f ys) zs c d) 574changeArgList f (CFDefExt (CFunDef xs ys zs c d)) = CFDefExt (CFunDef xs (changeArgList1 f ys) zs c d)
575changeArgList f (CDeclExt (CDecl xs ys pos)) = (CDeclExt (CDecl xs (changeArgList2 f ys) pos)) 575changeArgList f (CDeclExt (CDecl xs ys pos)) = (CDeclExt (CDecl xs (changeArgList2 f ys) pos))
576 576
577{-
578setPosOfNode :: Position -> NodeInfo -> NodeInfo 577setPosOfNode :: Position -> NodeInfo -> NodeInfo
579setPosOfNode pos n = maybe (mkNodeInfoOnlyPos pos) (mkNodeInfo pos) $ nameOfNode n 578setPosOfNode pos n = maybe (mkNodeInfoOnlyPos pos) (mkNodeInfo pos) $ nameOfNode n
580 579
581setPos pos (CFDefExt (CFunDef xs ys zs c n)) = (CFDefExt (CFunDef xs ys zs c $ setPosOfNode pos n)) 580setPos pos (CFDefExt (CFunDef xs ys zs c n)) = (CFDefExt (CFunDef xs ys zs c $ setPosOfNode pos n))
582setPos pos (CDeclExt (CDecl xs ys n)) = (CDeclExt (CDecl xs ys $ setPosOfNode pos n)) 581setPos pos (CDeclExt (CDecl xs ys n)) = (CDeclExt (CDecl xs ys $ setPosOfNode pos n))
583-}
584 582
585getArgList1 (CDeclr a xs b c d) = xs 583getArgList1 (CDeclr a xs b c d) = xs
586 584
@@ -594,6 +592,9 @@ getArgList (CDeclExt (CDecl xs ys pos)) = getArgList2 ys
594changeReturnValue f (CFDefExt (CFunDef xs ys zs c d)) = (CFDefExt (CFunDef (f xs) ys zs c d)) 592changeReturnValue f (CFDefExt (CFunDef xs ys zs c d)) = (CFDefExt (CFunDef (f xs) ys zs c d))
595changeReturnValue f (CDeclExt (CDecl xs ys pos)) = (CDeclExt (CDecl (f xs) ys pos)) 593changeReturnValue f (CDeclExt (CDecl xs ys pos)) = (CDeclExt (CDecl (f xs) ys pos))
596 594
595getReturnValue (CFDefExt (CFunDef xs ys zs c d)) = xs
596getReturnValue (CDeclExt (CDecl xs ys pos)) = xs
597
597voidReturnType = [ CTypeSpec (CVoidType undefNode) ] 598voidReturnType = [ CTypeSpec (CVoidType undefNode) ]
598 599
599setBody bdy (CFDefExt (CFunDef xs ys zs c d)) = (CFDefExt (CFunDef xs ys zs bdy d)) 600setBody 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
605makeStub d = -- @(CDeclExt (CDecl xs ys pos)) = 606makeStub 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