diff options
author | Geoffrey Mainland <mainland@apeiron.net> | 2013-06-04 13:58:52 +0100 |
---|---|---|
committer | Geoffrey Mainland <mainland@apeiron.net> | 2013-10-04 14:58:26 -0400 |
commit | bb89c59f9c489df7ef1f12e0155898d913033e12 (patch) | |
tree | f671a234d5115872c06e66f79bcea5bdc43815e4 /libraries/template-haskell | |
parent | 18f2e5234ba3e65439812b53c17db4d733d289d2 (diff) | |
download | haskell-bb89c59f9c489df7ef1f12e0155898d913033e12.tar.gz |
Add support for top-level finalizers
Diffstat (limited to 'libraries/template-haskell')
-rw-r--r-- | libraries/template-haskell/Language/Haskell/TH/Syntax.hs | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/libraries/template-haskell/Language/Haskell/TH/Syntax.hs b/libraries/template-haskell/Language/Haskell/TH/Syntax.hs index 79e29448bb..b62f15a67b 100644 --- a/libraries/template-haskell/Language/Haskell/TH/Syntax.hs +++ b/libraries/template-haskell/Language/Haskell/TH/Syntax.hs @@ -64,6 +64,8 @@ class (Monad m, Applicative m) => Quasi m where qAddTopDecls :: [Dec] -> m () + qAddModFinalizer :: Q () -> m () + ----------------------------------------------------- -- The IO instance of Quasi -- @@ -91,6 +93,7 @@ instance Quasi IO where qRecover _ _ = badIO "recover" -- Maybe we could fix this? qAddDependentFile _ = badIO "addDependentFile" qAddTopDecls _ = badIO "addTopDecls" + qAddModFinalizer _ = badIO "addModFinalizer" qRunIO m = m @@ -346,6 +349,11 @@ addDependentFile fp = Q (qAddDependentFile fp) addTopDecls :: [Dec] -> Q () addTopDecls ds = Q (qAddTopDecls ds) +-- | Add a finalizer that will run in the Q monad after the current module has +-- been type checked. This only makes sense when run within a top-level splice. +addModFinalizer :: Q () -> Q () +addModFinalizer act = Q (qAddModFinalizer (unQ act)) + instance Quasi Q where qNewName = newName qReport = report @@ -358,6 +366,7 @@ instance Quasi Q where qRunIO = runIO qAddDependentFile = addDependentFile qAddTopDecls = addTopDecls + qAddModFinalizer = addModFinalizer ---------------------------------------------------- |