summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorJasper Van der Jeugt <m@jaspervdj.be>2013-08-20 19:28:23 +0200
committerJasper Van der Jeugt <m@jaspervdj.be>2013-08-20 19:28:23 +0200
commit2188b248a37157ba1f5c35a8674890ed80d0a3ef (patch)
tree7a3300fe23de7f8abe515e995a81c1f6265ef12a /src
parent9b0822bc65f9d702f9591ad339a8384ac23c8537 (diff)
downloadstylish-haskell-2188b248a37157ba1f5c35a8674890ed80d0a3ef.tar.gz
Bump HSE dependency to 1.14.*0.5.8.0
Diffstat (limited to 'src')
-rw-r--r--src/Language/Haskell/Stylish/Parse.hs39
1 files changed, 12 insertions, 27 deletions
diff --git a/src/Language/Haskell/Stylish/Parse.hs b/src/Language/Haskell/Stylish/Parse.hs
index d9e0c9b..ac5aafb 100644
--- a/src/Language/Haskell/Stylish/Parse.hs
+++ b/src/Language/Haskell/Stylish/Parse.hs
@@ -36,43 +36,28 @@ dropBom str = str
--------------------------------------------------------------------------------
--- | If
---
--- > {-# LANGUAGE Haskell2010 #-}
---
--- is specified, we need to add a number of extra extensions
-addHaskell2010Extensions :: [H.Extension] -> [H.Extension]
-addHaskell2010Extensions exts
- -- For some reason Haskell2010 is not supported yet in haskell-src-exts
- | H.UnknownExtension "Haskell2010" `elem` exts = exts ++ extra
- | otherwise = exts
- where
- extra =
- [ H.PatternGuards
- , H.RelaxedPolyRec
- , H.EmptyDataDecls
- , H.ForeignFunctionInterface
- , H.UnknownExtension "NoNPlusKPatterns" -- Not supported yet in HSE
- ]
-
-
---------------------------------------------------------------------------------
-- | Abstraction over HSE's parsing
parseModule :: Extensions -> Maybe FilePath -> String -> Either String Module
parseModule extraExts mfp string = do
-- Determine the extensions: those specified in the file and the extra ones
- let noBom = dropBom string
- extraExts' = map H.classifyExtension extraExts
- fileExts = fromMaybe [] $ H.readExtensions noBom
- exts = addHaskell2010Extensions $ fileExts ++ extraExts'
+ let noBom = dropBom string
+ extraExts' = map H.classifyExtension extraExts
+ (lang, fileExts) = fromMaybe (Nothing, []) $ H.readExtensions noBom
+ exts = fileExts ++ extraExts'
-- Parsing options...
fp = fromMaybe "<unknown>" mfp
mode = H.defaultParseMode
- {H.extensions = exts, H.fixities = Nothing}
+ { H.extensions = exts
+ , H.fixities = Nothing
+ , H.baseLanguage = case lang of
+ Nothing -> H.baseLanguage H.defaultParseMode
+ Just l -> l
+ }
-- Preprocessing
- noCpp = if H.CPP `elem` exts then unCpp noBom else noBom
+ noCpp =
+ if H.EnableExtension H.CPP `elem` exts then unCpp noBom else noBom
case H.parseModuleWithComments mode noCpp of
H.ParseOk md -> return md