Workaround for #340
This commit is contained in:
parent
b9890a90ed
commit
1c8d1edb4d
@ -6,6 +6,9 @@ UNRELEASED v5.1.0.0
|
||||
* Make `loadSymbolDb` polimorphic in the return types's monad.
|
||||
* Add `hoistGhcModT` to Language.Haskell.GhcMod.Internal
|
||||
|
||||
UNRELEASED v5.0.1.3
|
||||
* Fix `check` command for modules using `-XPatternSynonyms`
|
||||
|
||||
2014-08-29 v5.0.1.2
|
||||
* Merge #345, Try fixing duplicate errors
|
||||
* Merge #344, elisp: Use advice to check syntax on save-buffer
|
||||
|
@ -1,3 +1,4 @@
|
||||
{-# LANGUAGE CPP #-}
|
||||
module Language.Haskell.GhcMod.Target (
|
||||
setTargetFiles
|
||||
) where
|
||||
@ -5,7 +6,7 @@ module Language.Haskell.GhcMod.Target (
|
||||
import Control.Applicative ((<$>))
|
||||
import Control.Monad (forM, void, (>=>))
|
||||
import DynFlags (ExtensionFlag(..), xopt)
|
||||
import GHC (DynFlags(..), LoadHowMuch(..))
|
||||
import GHC (LoadHowMuch(..))
|
||||
import qualified GHC as G
|
||||
import Language.Haskell.GhcMod.DynFlags
|
||||
import Language.Haskell.GhcMod.Monad
|
||||
@ -50,7 +51,10 @@ setTargetFiles files = do
|
||||
setCompilerMode Intelligent
|
||||
|
||||
needsFallback :: G.ModuleGraph -> Bool
|
||||
needsFallback = any (hasTHorQQ . G.ms_hspp_opts)
|
||||
where
|
||||
hasTHorQQ :: DynFlags -> Bool
|
||||
hasTHorQQ dflags = any (`xopt` dflags) [Opt_TemplateHaskell, Opt_QuasiQuotes]
|
||||
needsFallback = any $ \ms ->
|
||||
let df = G.ms_hspp_opts ms in
|
||||
Opt_TemplateHaskell `xopt` df
|
||||
|| Opt_QuasiQuotes `xopt` df
|
||||
#if __GLASGOW_HASKELL__ >= 708
|
||||
|| (Opt_PatternSynonyms `xopt` df)
|
||||
#endif
|
||||
|
@ -31,6 +31,11 @@ spec = do
|
||||
res <- runID $ checkSyntax ["Baz.hs"]
|
||||
res `shouldSatisfy` ("Baz.hs:5:1:Warning:" `isPrefixOf`)
|
||||
|
||||
it "works with modules using PatternSynonyms" $ do
|
||||
withDirectory_ "test/data/pattern-synonyms" $ do
|
||||
res <- runID $ checkSyntax ["B.hs"]
|
||||
res `shouldSatisfy` ("B.hs:6:9:Warning:" `isPrefixOf`)
|
||||
|
||||
it "works with foreign exports" $ do
|
||||
withDirectory_ "test/data" $ do
|
||||
res <- runID $ checkSyntax ["ForeignExport.hs"]
|
||||
|
6
test/data/pattern-synonyms/A.hs
Normal file
6
test/data/pattern-synonyms/A.hs
Normal file
@ -0,0 +1,6 @@
|
||||
{-# LANGUAGE PatternSynonyms #-}
|
||||
module A where
|
||||
|
||||
data SomeType a b = SomeType (a,b)
|
||||
|
||||
pattern MyPat x y <- SomeType (x,y)
|
7
test/data/pattern-synonyms/B.hs
Normal file
7
test/data/pattern-synonyms/B.hs
Normal file
@ -0,0 +1,7 @@
|
||||
{-# LANGUAGE PatternSynonyms #-}
|
||||
module B where
|
||||
import A
|
||||
|
||||
foo :: SomeType Int Char -> String
|
||||
foo x = case x of
|
||||
MyPat a b -> show a ++ " " ++ [b]
|
2
test/data/pattern-synonyms/Setup.hs
Normal file
2
test/data/pattern-synonyms/Setup.hs
Normal file
@ -0,0 +1,2 @@
|
||||
import Distribution.Simple
|
||||
main = defaultMain
|
24
test/data/pattern-synonyms/pattern-synonyms.cabal
Normal file
24
test/data/pattern-synonyms/pattern-synonyms.cabal
Normal file
@ -0,0 +1,24 @@
|
||||
-- Initial pattern-synonyms.cabal generated by cabal init. For further
|
||||
-- documentation, see http://haskell.org/cabal/users-guide/
|
||||
|
||||
name: pattern-synonyms
|
||||
version: 0.1.0.0
|
||||
-- synopsis:
|
||||
-- description:
|
||||
-- license:
|
||||
license-file: LICENSE
|
||||
author: Daniel Gröber
|
||||
maintainer: dxld@darkboxed.org
|
||||
-- copyright:
|
||||
-- category:
|
||||
build-type: Simple
|
||||
-- extra-source-files:
|
||||
cabal-version: >=1.10
|
||||
|
||||
library
|
||||
exposed-modules: A, B
|
||||
-- other-modules:
|
||||
other-extensions: PatternSynonyms
|
||||
build-depends: base >=4.7 && <4.8
|
||||
-- hs-source-dirs:
|
||||
default-language: Haskell2010
|
Loading…
Reference in New Issue
Block a user