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.
|
* Make `loadSymbolDb` polimorphic in the return types's monad.
|
||||||
* Add `hoistGhcModT` to Language.Haskell.GhcMod.Internal
|
* 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
|
2014-08-29 v5.0.1.2
|
||||||
* Merge #345, Try fixing duplicate errors
|
* Merge #345, Try fixing duplicate errors
|
||||||
* Merge #344, elisp: Use advice to check syntax on save-buffer
|
* Merge #344, elisp: Use advice to check syntax on save-buffer
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
{-# LANGUAGE CPP #-}
|
||||||
module Language.Haskell.GhcMod.Target (
|
module Language.Haskell.GhcMod.Target (
|
||||||
setTargetFiles
|
setTargetFiles
|
||||||
) where
|
) where
|
||||||
@ -5,7 +6,7 @@ module Language.Haskell.GhcMod.Target (
|
|||||||
import Control.Applicative ((<$>))
|
import Control.Applicative ((<$>))
|
||||||
import Control.Monad (forM, void, (>=>))
|
import Control.Monad (forM, void, (>=>))
|
||||||
import DynFlags (ExtensionFlag(..), xopt)
|
import DynFlags (ExtensionFlag(..), xopt)
|
||||||
import GHC (DynFlags(..), LoadHowMuch(..))
|
import GHC (LoadHowMuch(..))
|
||||||
import qualified GHC as G
|
import qualified GHC as G
|
||||||
import Language.Haskell.GhcMod.DynFlags
|
import Language.Haskell.GhcMod.DynFlags
|
||||||
import Language.Haskell.GhcMod.Monad
|
import Language.Haskell.GhcMod.Monad
|
||||||
@ -50,7 +51,10 @@ setTargetFiles files = do
|
|||||||
setCompilerMode Intelligent
|
setCompilerMode Intelligent
|
||||||
|
|
||||||
needsFallback :: G.ModuleGraph -> Bool
|
needsFallback :: G.ModuleGraph -> Bool
|
||||||
needsFallback = any (hasTHorQQ . G.ms_hspp_opts)
|
needsFallback = any $ \ms ->
|
||||||
where
|
let df = G.ms_hspp_opts ms in
|
||||||
hasTHorQQ :: DynFlags -> Bool
|
Opt_TemplateHaskell `xopt` df
|
||||||
hasTHorQQ dflags = any (`xopt` dflags) [Opt_TemplateHaskell, Opt_QuasiQuotes]
|
|| 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 <- runID $ checkSyntax ["Baz.hs"]
|
||||||
res `shouldSatisfy` ("Baz.hs:5:1:Warning:" `isPrefixOf`)
|
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
|
it "works with foreign exports" $ do
|
||||||
withDirectory_ "test/data" $ do
|
withDirectory_ "test/data" $ do
|
||||||
res <- runID $ checkSyntax ["ForeignExport.hs"]
|
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