projects
/
matthijs
/
master-project
/
cλash.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Add support for fromIntegerT
[matthijs/master-project/cλash.git]
/
FlattenTypes.hs
diff --git
a/FlattenTypes.hs
b/FlattenTypes.hs
index 785704db15f4cca6deec39137d23e14ed8012bb9..bd6c1d5996cf2a75c6f6b9595444a795684c6e31 100644
(file)
--- a/
FlattenTypes.hs
+++ b/
FlattenTypes.hs
@@
-3,7
+3,7
@@
module FlattenTypes where
import qualified Maybe
import Data.Traversable
import qualified Data.Foldable as Foldable
import qualified Maybe
import Data.Traversable
import qualified Data.Foldable as Foldable
-import qualified Control.Monad.State as State
+import qualified Control.Monad.
Trans.
State as State
import CoreSyn
import qualified Type
import CoreSyn
import qualified Type
@@
-113,14
+113,18
@@
sigDefUses (FApp _ args _) = concat $ map Foldable.toList args
-- | An expression on signals
data SignalExpr =
EqLit SignalId String -- ^ Is the given signal equal to the given (VHDL) literal
-- | An expression on signals
data SignalExpr =
EqLit SignalId String -- ^ Is the given signal equal to the given (VHDL) literal
- | Literal String
-- ^ A literal value
+ | Literal String
(Maybe Type.Type)-- ^ A literal value, with an optional type to cast to
| Eq SignalId SignalId -- ^ A comparison between to signals
deriving (Show, Eq)
| Eq SignalId SignalId -- ^ A comparison between to signals
deriving (Show, Eq)
+-- Instantiate Eq for Type, so we can derive Eq for SignalExpr.
+instance Eq Type.Type where
+ (==) = Type.coreEqType
+
-- | Which signals are used by the given SignalExpr?
sigExprUses :: SignalExpr -> [SignalId]
sigExprUses (EqLit id _) = [id]
-- | Which signals are used by the given SignalExpr?
sigExprUses :: SignalExpr -> [SignalId]
sigExprUses (EqLit id _) = [id]
-sigExprUses (Literal _) = []
+sigExprUses (Literal _
_
) = []
sigExprUses (Eq a b) = [a, b]
-- Returns the function used by the given SigDef, if any
sigExprUses (Eq a b) = [a, b]
-- Returns the function used by the given SigDef, if any