let enums = [AST.PrimLit "'1'", AST.PrimLit "'0'"]
return (enums, scrut_expr)
(BuiltinType "Bool") -> do
- let enums = [AST.PrimLit "true", AST.PrimLit "false"]
+ let enums = [AST.PrimLit "false", AST.PrimLit "true"]
return (enums, scrut_expr)
_ -> error $ "\nSelector case on weird scrutinee: " ++ pprString scrut ++ " scrutinee type: " ++ pprString (Id.idType scrut)
-- Omit first condition, which is the default. Look up each altcon in
-- Compare the (constructor field of the) scrutinee with each of the
-- alternatives.
let cond_exprs = map (\x -> cmp AST.:=: x) altcons
- -- Rotate expressions to the left, so that the expression related to the default case is the last
- let alts' = case alts of
- ((CoreSyn.DEFAULT,_,_):_) -> ((tail alts) ++ [head alts])
- otherwise -> alts
-
+ -- Rotate expressions to the leftso that the expression related to the default case is the last
+ let alts' = (tail alts) ++ [head alts]
exprs <- MonadState.lift tsType $ mapM (varToVHDLExpr . (\(_,_,CoreSyn.Var expr) -> expr)) alts' --((tail alts) ++ [head alts])
return ([mkAltsAssign (Left bndr) cond_exprs exprs], [])