Unify typeprop and funprop into argprop.
[matthijs/master-project/cλash.git] / NormalizeTypes.hs
index e959bbba42fe5e067278668cfca6ce1c048e3450..89ed53d41746d871924bf56ba02787d7e475b961 100644 (file)
@@ -20,12 +20,16 @@ import Outputable ( Outputable, showSDoc, ppr )
 -- Local imports
 import CoreShow
 import Pretty
+import VHDLTypes -- For TypeState
 
 data TransformState = TransformState {
     tsUniqSupply_ :: UniqSupply.UniqSupply
   , tsBindings_ :: Map.Map CoreBndr CoreExpr
   , tsNormalized_ :: VarSet.VarSet -- ^ The binders that have been normalized
+  , tsType_ :: TypeState
 }
+-- Create an (almost) empty TransformState, containing just a UniqSupply.
+emptyTransformState uniqSupply = TransformState uniqSupply Map.empty VarSet.emptyVarSet emptyTypeState
 
 $( Data.Accessor.Template.deriveAccessors ''TransformState )
 
@@ -47,3 +51,9 @@ getGlobalBind bndr = do
 -- Adds a new global binding with the given value
 addGlobalBind :: CoreBndr -> CoreExpr -> TransformSession ()
 addGlobalBind bndr expr = modA tsBindings (Map.insert bndr expr)
+
+-- Returns a list of all global binders
+getGlobalBinders :: TransformSession [CoreBndr]
+getGlobalBinders = do
+  bindings <- getA tsBindings
+  return $ Map.keys bindings