[commit: template-haskell] master: addDependentFile #4900 (67850a7)
Ian Lynagh
igloo at earth.li
Sun Nov 6 15:00:11 CET 2011
Repository : ssh://darcs.haskell.org//srv/darcs/packages/template-haskell
On branch : master
http://hackage.haskell.org/trac/ghc/changeset/67850a7cb43303d7fb93177cae9298843fb99fe9
>---------------------------------------------------------------
commit 67850a7cb43303d7fb93177cae9298843fb99fe9
Author: Greg Weber <greg at gregweber.info>
Date: Sun Oct 9 16:55:11 2011 -0700
addDependentFile #4900
Let GHC know about an external dependency that Template Haskell uses
so that GHC can recompile when the dependency changes.
No support for ghc -M
>---------------------------------------------------------------
Language/Haskell/TH/Syntax.hs | 26 ++++++++++++++++++--------
1 files changed, 18 insertions(+), 8 deletions(-)
diff --git a/Language/Haskell/TH/Syntax.hs b/Language/Haskell/TH/Syntax.hs
index 5c70fae..8533266 100644
--- a/Language/Haskell/TH/Syntax.hs
+++ b/Language/Haskell/TH/Syntax.hs
@@ -98,6 +98,7 @@ class (Monad m, Applicative m) => Quasi m where
qRunIO :: IO a -> m a
-- ^ Input/output (dangerous)
+ qAddDependentFile :: FilePath -> m ()
-----------------------------------------------------
-- The IO instance of Quasi
@@ -123,6 +124,7 @@ instance Quasi IO where
qReifyInstances _ _ = badIO "classInstances"
qLocation = badIO "currentLocation"
qRecover _ _ = badIO "recover" -- Maybe we could fix this?
+ qAddDependentFile _ = badIO "addDependentFile"
qRunIO m = m
@@ -209,15 +211,23 @@ location = Q qLocation
runIO :: IO a -> Q a
runIO m = Q (qRunIO m)
+-- | Record external files that runIO is using (dependent upon).
+-- The compiler can then recognize that it should re-compile the file using this TH when the external file changes.
+-- Note that ghc -M will still not know about these dependencies - it does not execute TH.
+-- Expects an absolute file path.
+addDependentFile :: FilePath -> Q ()
+addDependentFile fp = Q (qAddDependentFile fp)
+
instance Quasi Q where
- qNewName = newName
- qReport = report
- qRecover = recover
- qReify = reify
- qReifyInstances = reifyInstances
- qLookupName = lookupName
- qLocation = location
- qRunIO = runIO
+ qNewName = newName
+ qReport = report
+ qRecover = recover
+ qReify = reify
+ qReifyInstances = reifyInstances
+ qLookupName = lookupName
+ qLocation = location
+ qRunIO = runIO
+ qAddDependentFile = addDependentFile
----------------------------------------------------
More information about the Cvs-libraries
mailing list