summaryrefslogtreecommitdiff
path: root/monkeypatch.hs
diff options
context:
space:
mode:
Diffstat (limited to 'monkeypatch.hs')
-rw-r--r--monkeypatch.hs9
1 files changed, 9 insertions, 0 deletions
diff --git a/monkeypatch.hs b/monkeypatch.hs
index d9fb192..a835e86 100644
--- a/monkeypatch.hs
+++ b/monkeypatch.hs
@@ -232,6 +232,15 @@ grokExpression (CUnary CAdrOp (CVar cv0 _) _) = do
232 , compIntro = Map.empty 232 , compIntro = Map.empty
233 , comp = hsvar hv 233 , comp = hsvar hv
234 } 234 }
235grokExpression (CCond cond (Just thn) els _) = do
236 (cs,c) <- grokExpression cond
237 (ts,t) <- grokExpression thn
238 (es,e) <- grokExpression els
239 let tt = foldr applyComputation t ts
240 ee = foldr applyComputation e es
241 return $ (,) cs $ fmap (\cnd -> If () cnd (comp tt) (comp ee)) c
242 { compFree = compFree ee `Map.union` compFree tt `Map.union` compFree c
243 }
235grokExpression (CCast (CDecl [ CTypeSpec (CVoidType _) ] 244grokExpression (CCast (CDecl [ CTypeSpec (CVoidType _) ]
236 [ ( Just (CDeclr Nothing [ CPtrDeclr [] _ ] Nothing [] _) , Nothing , Nothing) ] 245 [ ( Just (CDeclr Nothing [ CPtrDeclr [] _ ] Nothing [] _) , Nothing , Nothing) ]
237 _) 246 _)