From 5bfc85eaf313171c48860f41dd31ef10e0402b56 Mon Sep 17 00:00:00 2001 From: Joe Crayne Date: Wed, 20 Mar 2019 00:14:35 -0400 Subject: Stub-generation fixes. --- monkeypatch.hs | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/monkeypatch.hs b/monkeypatch.hs index b5f76d4..7806f07 100644 --- a/monkeypatch.hs +++ b/monkeypatch.hs @@ -1044,8 +1044,9 @@ c2haskell opts cs cmodname missings incs (CTranslUnit edecls _) = do -- TODO: make idempotent makeStatic :: [CDeclarationSpecifier NodeInfo] -> [CDeclarationSpecifier NodeInfo] -makeStatic xs = CStorageSpec (CStatic undefNode) : xs --- makeStatic xs = CStorageSpec (CStatic ()) : xs +makeStatic xs = CStorageSpec (CStatic undefNode) : filter nonStorages xs + where nonStorages (CStorageSpec _) = False + nonStorages _ = True makePointer1 :: Maybe (CDeclarator NodeInfo) -> Maybe (CDeclarator NodeInfo) @@ -1170,12 +1171,15 @@ setBody bdy (CDeclExt (CDecl xs ys pos)) = (CFDefExt (CFunDef xs v [] bdy p (Just y,_,_):_ -> y _ -> CDeclr Nothing [] Nothing [] pos + +doesReturnValue (CTypeSpec (CVoidType _):_) = False +doesReturnValue (x:xs) = doesReturnValue xs +doesReturnValue [] = True + makeStub :: CExternalDeclaration NodeInfo -> CExternalDeclaration NodeInfo makeStub d = -- @(CDeclExt (CDecl xs ys pos)) = - let rval = case getReturnValue d of - [ CTypeSpec (CVoidType _) ] -> False -- void function. - _ -> True + let rval = doesReturnValue $ getReturnValue d name = concatMap identToString $ take 1 $ catMaybes $ sym d msg = "undefined: " ++ concatMap (HS.prettyPrint . makeAcceptableDecl) (take 1 $ sig d) ++ "\n" in case getArgList d of -- cgit v1.2.3