From 8d77856b1ed3805eb45b7101b4a98cf1edce4649 Mon Sep 17 00:00:00 2001 From: Zachary Snow Date: Wed, 17 Apr 2019 17:44:12 -0400 Subject: [PATCH] StmtLHS traversal includes LHSs for loop parts --- src/Convert/Traverse.hs | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/Convert/Traverse.hs b/src/Convert/Traverse.hs index 6a30521..c65f0de 100644 --- a/src/Convert/Traverse.hs +++ b/src/Convert/Traverse.hs @@ -332,6 +332,17 @@ traverseStmtLHSsM mapper = stmtMapper return $ Asgn (Just $ Event sense') lhs' expr stmtMapper (AsgnBlk op lhs expr) = fullMapper lhs >>= \lhs' -> return $ AsgnBlk op lhs' expr stmtMapper (Asgn mt lhs expr) = fullMapper lhs >>= \lhs' -> return $ Asgn mt lhs' expr + stmtMapper (For inits me incrs stmt) = do + inits' <- mapM mapInit inits + let (lhss, asgnOps, exprs) = unzip3 incrs + lhss' <- mapM fullMapper lhss + let incrs' = zip3 lhss' asgnOps exprs + return $ For inits' me incrs' stmt + where + mapInit (Left decl) = return $ Left decl + mapInit (Right (lhs, expr)) = do + lhs' <- fullMapper lhs + return $ Right (lhs', expr) stmtMapper (Assertion a) = assertionMapper a >>= return . Assertion stmtMapper other = return other