Add replaceDynFlags to the ContainsDynFlags class
authorIan Lynagh <ian@well-typed.com>
Sat, 8 Dec 2012 17:16:07 +0000 (17:16 +0000)
committerIan Lynagh <ian@well-typed.com>
Sat, 8 Dec 2012 17:16:07 +0000 (17:16 +0000)
compiler/main/DynFlags.hs
compiler/main/HscTypes.lhs
compiler/typecheck/TcRnTypes.lhs

index ceae7c2..9d2b372 100644 (file)
@@ -707,6 +707,7 @@ class HasDynFlags m where
 
 class ContainsDynFlags t where
     extractDynFlags :: t -> DynFlags
+    replaceDynFlags :: t -> DynFlags -> t
 
 data ProfAuto
   = NoProfAuto         -- ^ no SCC annotations added
index 937d09a..fce81da 100644 (file)
@@ -326,6 +326,10 @@ data HscEnv
                 -- 'TcRunTypes.TcGblEnv'
  }
 
+instance ContainsDynFlags HscEnv where
+    extractDynFlags env = hsc_dflags env
+    replaceDynFlags env dflags = env {hsc_dflags = dflags}
+
 -- | Retrieve the ExternalPackageState cache.
 hscEPS :: HscEnv -> IO ExternalPackageState
 hscEPS hsc_env = readIORef (hsc_EPS hsc_env)
index 0aff832..8388b25 100644 (file)
@@ -181,6 +181,8 @@ data Env gbl lcl
 
 instance ContainsDynFlags (Env gbl lcl) where
     extractDynFlags env = hsc_dflags (env_top env)
+    replaceDynFlags env dflags
+        = env {env_top = replaceDynFlags (env_top env) dflags}
 
 instance ContainsModule gbl => ContainsModule (Env gbl lcl) where
     extractModule env = extractModule (env_gbl env)