From a5bcd90145cf81f675acd5a1ba7df37326a817a9 Mon Sep 17 00:00:00 2001 From: Joe Crayne Date: Mon, 18 Mar 2019 22:52:28 -0400 Subject: recognize nullPtr, fix withPointer output. --- monkeypatch.hs | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/monkeypatch.hs b/monkeypatch.hs index 90299ed..d9fb192 100644 --- a/monkeypatch.hs +++ b/monkeypatch.hs @@ -223,8 +223,8 @@ grokExpression (CUnary CAdrOp (CVar cv0 _) _) = do , compIntro = Map.singleton hv () , comp = Lambda () [hspvar k] $ InfixApp () - (App () (hsvar "withPointer") (hsvar cv)) - hsopBind + (hsvar cv) + (QVarOp () (UnQual () (HS.Ident () "withPointer"))) (Lambda () [hspvar hv] (hsvar k)) } return $ (,) ss Computation @@ -232,6 +232,15 @@ grokExpression (CUnary CAdrOp (CVar cv0 _) _) = do , compIntro = Map.empty , comp = hsvar hv } +grokExpression (CCast (CDecl [ CTypeSpec (CVoidType _) ] + [ ( Just (CDeclr Nothing [ CPtrDeclr [] _ ] Nothing [] _) , Nothing , Nothing) ] + _) + (CConst (CIntConst zero _)) _) | 0 <- getCInteger zero = do + return $ (,) [] Computation + { compFree = Map.singleton "nullPtr" () + , compIntro = Map.empty + , comp = hsvar "nullPtr" + } grokExpression (C.CCall (CVar fn _) exps _) = do gs <- mapM grokExpression exps let ss = concatMap fst gs -- TODO: resolve variable name conflicts -- cgit v1.2.3