Pass the context in which an expression occurs to each transformation.
[matthijs/master-project/cλash.git] / cλash / CLasH / Normalize / NormalizeTypes.hs
index a13ca0f6f070b239da6f72f920beb6418b14f7c8..a7de6dced1645a69539b4d7c0ec39b916aeaea42 100644 (file)
@@ -1,29 +1,21 @@
-{-# LANGUAGE TemplateHaskell #-}
 module CLasH.Normalize.NormalizeTypes where
 
-
 -- Standard modules
 import qualified Control.Monad.Trans.Writer as Writer
-import qualified Control.Monad.Trans.State as State
 import qualified Data.Monoid as Monoid
-import qualified Data.Accessor.Template
-import Data.Accessor
-import qualified Data.Map as Map
-import Debug.Trace
 
 -- GHC API
-import CoreSyn
-import qualified VarSet
-import Outputable ( Outputable, showSDoc, ppr )
+import qualified CoreSyn
 
 -- Local imports
-import CLasH.Utils.Core.CoreShow
-import CLasH.Utils.Pretty
 import CLasH.Translator.TranslatorTypes
 
 -- Wrap a writer around a TranslatorSession, to run a single transformation
 -- over a single expression and track if the expression was changed.
 type TransformMonad = Writer.WriterT Monoid.Any TranslatorSession
 
+-- | In what context does a core expression occur?
+data CoreContext = Other -- ^ Another context
+
 -- | Transforms a CoreExpr and keeps track if it has changed.
-type Transform = CoreExpr -> TransformMonad CoreExpr
+type Transform = [CoreContext] -> CoreSyn.CoreExpr -> TransformMonad CoreSyn.CoreExpr