diff options
Diffstat (limited to 'testsuite/tests/th/TH_implicitParams.hs')
-rw-r--r-- | testsuite/tests/th/TH_implicitParams.hs | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/testsuite/tests/th/TH_implicitParams.hs b/testsuite/tests/th/TH_implicitParams.hs new file mode 100644 index 0000000000..eb948b98ed --- /dev/null +++ b/testsuite/tests/th/TH_implicitParams.hs @@ -0,0 +1,20 @@ +{-# LANGUAGE ImplicitParams #-} +import Language.Haskell.TH +import Language.Haskell.TH.Syntax + +funcToReify :: (?z :: Int) => Int +funcToReify = ?z + +$( [d| + f :: (?x :: Int) => Int + f = let ?y = 2 in ?x + ?y |] ) + +main = do + putStrLn $(lift . pprint =<< reify 'funcToReify) + print (let ?x = 3 in f) + print $( [| let ?x = 1 in ?x |] ) + print $(letE [implicitParamBindD "y" (lift (2 :: Int))] + (implicitParamVarE "y") ) + putStrLn $( lift . pprint =<< [d| + f :: (?x :: Int) => Int + f = let ?y = 2 in ?x + ?y |] ) |