varToVHDLId ::
CoreSyn.CoreBndr
-> AST.VHDLId
-varToVHDLId var = mkVHDLExtId (varToString var ++ varToStringUniq var ++ show (lowers $ varToStringUniq var))
- where
- lowers :: String -> Int
- lowers xs = length [x | x <- xs, Char.isLower x]
+varToVHDLId var = mkVHDLExtId $ varToUniqString var
-- Creates a VHDL Name from a binder
varToVHDLName ::
-> String
varToString = OccName.occNameString . Name.nameOccName . Var.varName
+varToUniqString ::
+ CoreSyn.CoreBndr
+ -> String
+varToUniqString var = (varToString var ++ varToStringUniq var ++ show (lowers $ varToStringUniq var))
+ where
+ lowers :: String -> Int
+ lowers xs = length [x | x <- xs, Char.isLower x]
+
-- Get the string version a Var's unique
varToStringUniq :: Var.Var -> String
varToStringUniq = show . Var.varUnique
-- If we get here, then all of the argument types were state
-- types (we check for enumeration types at the top). Not
-- sure how to handle this, so error out for now.
- (_, []) -> error $ "ADT with only State elements (or something like that?) Dunno how to handle this yet. Tycon: " ++ pprString tycon ++ " Arguments: " ++ pprString args
+ (_, []) -> return $ Right StateType --error $ "VHDLTools.mkTyConHType: ADT with only State elements (or something like that?) Dunno how to handle this yet. Tycon: " ++ pprString tycon ++ " Arguments: " ++ pprString args
-- A full ADT (with multiple fields and one or multiple
-- constructors).
(_, elem_htys) -> do