"strictness"
"primOpStrictness" p_o_specs)
- "--usage"
- -> putStr (gen_switch_from_attribs
- "usage"
- "primOpUsg" p_o_specs)
-
"--primop-primop-info"
-> putStr (gen_primop_info p_o_specs)
"--needs-wrapper",
"--can-fail",
"--strictness",
- "--usage",
"--primop-primop-info",
"--primop-tag",
"--primop-list",
++ mk_needs_wrapper o ++ "}{"
++ mk_can_fail o ++ "}{"
++ latex_encode (mk_strictness o) ++ "}{"
- ++ latex_encode (mk_usage o)
++ "}"
mk_has_side_effects o = mk_bool_opt o "has_side_effects" "Has side effects." "Has no side effects."
Just _ -> error "Boolean value for strictness"
Nothing -> ""
- mk_usage o =
- case lookup_attrib "usage" o of
- Just (OptionString _ s) -> s -- for now
- Just _ -> error "Boolean value for usage"
- Nothing -> ""
-
zencode xs =
case maybe_tuple xs of
Just n -> n -- Tuples go to Z2T etc
gen_primop_tag :: Info -> String
gen_primop_tag (Info _ entries)
- = unlines (max_def : zipWith f primop_entries [1 :: Int ..])
+ = unlines (max_def_type : max_def :
+ tagOf_type : zipWith f primop_entries [1 :: Int ..])
where
- primop_entries = filter is_primop entries
- f i n = "tagOf_PrimOp " ++ cons i
- ++ " = _ILIT(" ++ show n ++ ") :: FastInt"
- max_def = "maxPrimOpTag = " ++ show (length primop_entries) ++ " :: Int"
+ primop_entries = filter is_primop entries
+ tagOf_type = "tagOf_PrimOp :: PrimOp -> FastInt"
+ f i n = "tagOf_PrimOp " ++ cons i ++ " = _ILIT(" ++ show n ++ ")"
+ max_def_type = "maxPrimOpTag :: Int"
+ max_def = "maxPrimOpTag = " ++ show (length primop_entries)
gen_data_decl :: Info -> String
gen_data_decl (Info _ entries)
Nothing -> error ("gen_switch_from: " ++ attrib_name)
Just xx
-> unlines alternatives
- ++ fn_name ++ " other = " ++ getAltRhs xx ++ "\n"
+ ++ fn_name ++ " _ = " ++ getAltRhs xx ++ "\n"
------------------------------------------------------------------
-- Create PrimOpInfo text from PrimOpSpecs -----------------------