From 9b0822bc65f9d702f9591ad339a8384ac23c8537 Mon Sep 17 00:00:00 2001 From: Jasper Van der Jeugt Date: Mon, 5 Aug 2013 12:20:42 +0200 Subject: Take Haskell2010 extension into account Closes #36 --- src/Language/Haskell/Stylish/Parse.hs | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/Language/Haskell/Stylish/Parse.hs b/src/Language/Haskell/Stylish/Parse.hs index 5162527..d9e0c9b 100644 --- a/src/Language/Haskell/Stylish/Parse.hs +++ b/src/Language/Haskell/Stylish/Parse.hs @@ -35,6 +35,27 @@ dropBom ('\xfeff' : str) = str 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 @@ -43,7 +64,7 @@ parseModule extraExts mfp string = do let noBom = dropBom string extraExts' = map H.classifyExtension extraExts fileExts = fromMaybe [] $ H.readExtensions noBom - exts = fileExts ++ extraExts' + exts = addHaskell2010Extensions $ fileExts ++ extraExts' -- Parsing options... fp = fromMaybe "" mfp -- cgit v1.2.3