diff options
-rw-r--r-- | testsuite/tests/th/Makefile | 19 | ||||
-rw-r--r-- | testsuite/tests/th/TH_Depends.hs | 9 | ||||
-rw-r--r-- | testsuite/tests/th/TH_Depends.stdout | 4 | ||||
-rw-r--r-- | testsuite/tests/th/TH_Depends_External.hs | 12 | ||||
-rw-r--r-- | testsuite/tests/th/all.T | 5 |
5 files changed, 49 insertions, 0 deletions
diff --git a/testsuite/tests/th/Makefile b/testsuite/tests/th/Makefile index 1e35cecb12..97692391c0 100644 --- a/testsuite/tests/th/Makefile +++ b/testsuite/tests/th/Makefile @@ -17,3 +17,22 @@ TH_spliceE5_prof:: '$(TEST_HC)' $(TEST_HC_OPTS) $(HC_OPTS) --make -v0 TH_spliceE5_prof.hs -prof -auto-all -osuf p.o -o $@ ./$@ +.PHONY: TH_Depends +TH_Depends: + $(RM) TH_Depends_external.txt + $(RM) TH_Depends TH_Depends.exe + $(RM) TH_Depends.o TH_Depends.hi + $(RM) TH_Depends_External.o TH_Depends_External.hi + echo "first run" > TH_Depends_external.txt + '$(TEST_HC)' $(TEST_HC_OPTS) --make -v0 TH_Depends + ./TH_Depends +# Remove the executable, as GHC won't relink if the timestamps seem to +# be the same + $(RM) TH_Depends TH_Depends.exe + echo "second run" > TH_Depends_external.txt +# Give TH_Depends_external.txt a future date in case it gets the same +# timestamp again + touch --date="now + 3 seconds" TH_Depends_external.txt + '$(TEST_HC)' $(TEST_HC_OPTS) --make -v0 TH_Depends + ./TH_Depends + diff --git a/testsuite/tests/th/TH_Depends.hs b/testsuite/tests/th/TH_Depends.hs new file mode 100644 index 0000000000..94ab51178a --- /dev/null +++ b/testsuite/tests/th/TH_Depends.hs @@ -0,0 +1,9 @@ + +{-# LANGUAGE TemplateHaskell #-} + +module Main where + +import TH_Depends_External (loadStringFromFile) + +main :: IO () +main = putStrLn $loadStringFromFile diff --git a/testsuite/tests/th/TH_Depends.stdout b/testsuite/tests/th/TH_Depends.stdout new file mode 100644 index 0000000000..3304582bde --- /dev/null +++ b/testsuite/tests/th/TH_Depends.stdout @@ -0,0 +1,4 @@ +first run + +second run + diff --git a/testsuite/tests/th/TH_Depends_External.hs b/testsuite/tests/th/TH_Depends_External.hs new file mode 100644 index 0000000000..6e5e6d53b2 --- /dev/null +++ b/testsuite/tests/th/TH_Depends_External.hs @@ -0,0 +1,12 @@ + +module TH_Depends_External where + +import Language.Haskell.TH.Syntax +import Language.Haskell.TH.Lib + +loadStringFromFile :: Q Exp +loadStringFromFile = do + let externalDependency = "TH_Depends_external.txt" + qAddDependentFile externalDependency + s <- qRunIO $ readFile externalDependency + stringE s diff --git a/testsuite/tests/th/all.T b/testsuite/tests/th/all.T index a16f7c5b23..91432cf9ad 100644 --- a/testsuite/tests/th/all.T +++ b/testsuite/tests/th/all.T @@ -208,3 +208,8 @@ test('T5452', normal, compile, ['-v0']) test('T5434', extra_clean(['T5434a.hi','T5434a.o']), multimod_compile, ['T5434','-v0 -Wall']) test('T5508', normal, compile, ['-v0 -ddump-splices']) +test('TH_Depends', + [extra_clean(['TH_Depends_External.o', 'TH_Depends_External.hi', + 'TH_Depends_external.txt'])], + run_command, + ['$MAKE -s --no-print-directory TH_Depends']) |