Merge pull request #108 from eagletmt/more-th-check
info and type sub-commands also need TH check
This commit is contained in:
commit
0647819921
5
Info.hs
5
Info.hs
@ -4,6 +4,7 @@
|
|||||||
module Info (infoExpr, typeExpr) where
|
module Info (infoExpr, typeExpr) where
|
||||||
|
|
||||||
import Control.Applicative
|
import Control.Applicative
|
||||||
|
import Control.Monad (when)
|
||||||
import CoreUtils
|
import CoreUtils
|
||||||
import Data.Function
|
import Data.Function
|
||||||
import Data.Generics
|
import Data.Generics
|
||||||
@ -145,11 +146,15 @@ inModuleContext opt cradle fileName modstr action errmsg =
|
|||||||
valid = do
|
valid = do
|
||||||
_ <- initializeFlagsWithCradle opt cradle ["-w"] False
|
_ <- initializeFlagsWithCradle opt cradle ["-w"] False
|
||||||
setTargetFile fileName
|
setTargetFile fileName
|
||||||
|
slow <- needsTemplateHaskell <$> depanal [] False
|
||||||
|
when slow setSlowDynFlags
|
||||||
_ <- load LoadAllTargets
|
_ <- load LoadAllTargets
|
||||||
doif setContextFromTarget action
|
doif setContextFromTarget action
|
||||||
invalid = do
|
invalid = do
|
||||||
_ <- initializeFlagsWithCradle opt cradle ["-w"] False
|
_ <- initializeFlagsWithCradle opt cradle ["-w"] False
|
||||||
setTargetBuffer
|
setTargetBuffer
|
||||||
|
slow <- needsTemplateHaskell <$> depanal [] False
|
||||||
|
when slow setSlowDynFlags
|
||||||
_ <- load LoadAllTargets
|
_ <- load LoadAllTargets
|
||||||
doif setContextFromTarget action
|
doif setContextFromTarget action
|
||||||
setTargetBuffer = do
|
setTargetBuffer = do
|
||||||
|
@ -2,6 +2,7 @@ module InfoSpec where
|
|||||||
|
|
||||||
import CabalApi
|
import CabalApi
|
||||||
import Cradle
|
import Cradle
|
||||||
|
import Data.List (isPrefixOf)
|
||||||
import Expectation
|
import Expectation
|
||||||
import Info
|
import Info
|
||||||
import Test.Hspec
|
import Test.Hspec
|
||||||
@ -16,3 +17,28 @@ spec = do
|
|||||||
cradle <- findCradle Nothing strVer
|
cradle <- findCradle Nothing strVer
|
||||||
res <- typeExpr defaultOptions cradle "Data.Foo" 9 5 "Data/Foo.hs"
|
res <- typeExpr defaultOptions cradle "Data.Foo" 9 5 "Data/Foo.hs"
|
||||||
res `shouldBe` "9 5 11 40 \"Int -> a -> a -> a\"\n7 1 11 40 \"Int -> Integer\"\n"
|
res `shouldBe` "9 5 11 40 \"Int -> a -> a -> a\"\n7 1 11 40 \"Int -> Integer\"\n"
|
||||||
|
|
||||||
|
it "works with a module using TemplateHaskell" $ do
|
||||||
|
withDirectory_ "test/data" $ do
|
||||||
|
cradle <- getGHCVersion >>= findCradle Nothing . fst
|
||||||
|
res <- typeExpr defaultOptions cradle "Bar" 5 1 "Bar.hs"
|
||||||
|
res `shouldBe` unlines ["5 1 5 20 \"[Char]\""]
|
||||||
|
|
||||||
|
it "works with a module that imports another module using TemplateHaskell" $ do
|
||||||
|
withDirectory_ "test/data" $ do
|
||||||
|
cradle <- getGHCVersion >>= findCradle Nothing . fst
|
||||||
|
res <- typeExpr defaultOptions cradle "Main" 3 8 "Main.hs"
|
||||||
|
res `shouldBe` unlines ["3 8 3 16 \"String -> IO ()\"", "3 8 3 20 \"IO ()\"", "3 1 3 20 \"IO ()\""]
|
||||||
|
|
||||||
|
describe "infoExpr" $ do
|
||||||
|
it "works with a module using TemplateHaskell" $ do
|
||||||
|
withDirectory_ "test/data" $ do
|
||||||
|
cradle <- getGHCVersion >>= findCradle Nothing . fst
|
||||||
|
res <- infoExpr defaultOptions cradle "Bar" "foo" "Bar.hs"
|
||||||
|
res `shouldSatisfy` ("foo :: ExpQ" `isPrefixOf`)
|
||||||
|
|
||||||
|
it "works with a module that imports another module using TemplateHaskell" $ do
|
||||||
|
withDirectory_ "test/data" $ do
|
||||||
|
cradle <- getGHCVersion >>= findCradle Nothing . fst
|
||||||
|
res <- infoExpr defaultOptions cradle "Main" "bar" "Main.hs"
|
||||||
|
res `shouldSatisfy` ("bar :: [Char]" `isPrefixOf`)
|
||||||
|
Loading…
Reference in New Issue
Block a user