@@ -29,6 +29,7 @@ import Data.IntSet (IntSet)
2929import qualified Data.IntMap as IntMap
3030import Data.IntMap (IntMap )
3131import Data.List.NonEmpty (NonEmpty )
32+ import Data.Maybe
3233
3334import Glean.Display
3435import Glean.Query.Codegen.Types
@@ -185,29 +186,28 @@ reWildGenerator used gen = case gen of
185186 PrimCall op args ty ->
186187 PrimCall op (map (reWild used) args) ty
187188
188- reWildStatement :: VarMap -> CgStatement -> CgStatement
189+ reWildStatement :: VarMap -> CgStatement -> Maybe CgStatement
189190reWildStatement used (CgStatement lhs rhs) =
190- CgStatement (reWild used lhs) (reWildGenerator used rhs)
191- reWildStatement used s @ (CgAllStatement (Var ty n x) expr stmts) =
191+ Just $ CgStatement (reWild used lhs) (reWildGenerator used rhs)
192+ reWildStatement used (CgAllStatement (Var ty n x) expr stmts) =
192193 case IntMap. lookup n used of
193- Nothing -> error $
194- " reWildStatement: var " <> show n <>
195- " not in scope in " <> show (displayVerbose s) <>
196- " \n VarMap: " <> show used
194+ Nothing ->
195+ -- the variable isn't used, so the statement has no effect
196+ Nothing
197197 Just new ->
198- CgAllStatement
198+ Just $ CgAllStatement
199199 (Var ty new x) (reWild used expr)
200- (map (reWildStatement used) stmts)
200+ (mapMaybe (reWildStatement used) stmts)
201201reWildStatement used (CgNegation stmts) =
202- CgNegation (map (reWildStatement used) stmts)
202+ Just $ CgNegation (mapMaybe (reWildStatement used) stmts)
203203reWildStatement used (CgDisjunction stmtss) =
204- CgDisjunction (map (map (reWildStatement used)) stmtss)
204+ Just $ CgDisjunction (map (mapMaybe (reWildStatement used)) stmtss)
205205reWildStatement used (CgConditional cond then_ else_) =
206- CgConditional
207- (map (reWildStatement used) cond)
208- (map (reWildStatement used) then_)
209- (map (reWildStatement used) else_)
206+ Just $ CgConditional
207+ (mapMaybe (reWildStatement used) cond)
208+ (mapMaybe (reWildStatement used) then_)
209+ (mapMaybe (reWildStatement used) else_)
210210
211211reWildQuery :: VarMap -> CgQuery -> CgQuery
212212reWildQuery used (CgQuery head stmts) =
213- CgQuery (reWild used head ) (map (reWildStatement used) stmts)
213+ CgQuery (reWild used head ) (mapMaybe (reWildStatement used) stmts)
0 commit comments