aboutsummaryrefslogtreecommitdiff
path: root/www/hs-activehs/files/patch-Parse.hs
diff options
context:
space:
mode:
Diffstat (limited to 'www/hs-activehs/files/patch-Parse.hs')
-rw-r--r--www/hs-activehs/files/patch-Parse.hs94
1 files changed, 76 insertions, 18 deletions
diff --git a/www/hs-activehs/files/patch-Parse.hs b/www/hs-activehs/files/patch-Parse.hs
index 1ebb809b29bb..3fe4d59c4070 100644
--- a/www/hs-activehs/files/patch-Parse.hs
+++ b/www/hs-activehs/files/patch-Parse.hs
@@ -1,27 +1,85 @@
---- Parse.hs.orig 2013-02-12 19:23:45 UTC
+--- Parse.hs.orig 2017-07-30 10:48:49 UTC
+++ Parse.hs
-@@ -72,12 +72,13 @@ mainParse :: ParseMode -> FilePath -> IO
+@@ -17,6 +17,7 @@ import Text.Pandoc
+
+ import qualified Language.Haskell.Exts.Parser as HPar
+ import qualified Language.Haskell.Exts.Syntax as HSyn
++import qualified Language.Haskell.Exts.SrcLoc as HLoc
+
+ import Data.List.Split (splitOn)
+ import Data.List (tails, partition, groupBy)
+@@ -30,15 +31,15 @@ import qualified Data.Set as Set
+ data ParseMode = HaskellMode -- | AgdaMode
+ deriving (Show, Enum, Eq)
+
+-data Module
+- = HaskellModule HSyn.Module
++data Module loc
++ = HaskellModule (HSyn.Module loc)
+ -- | AgdaModule ASyn.Module
+ deriving (Show)
+
+-data Doc
++data Doc loc
+ = Doc
+ Meta{-title, author, date-}
+- Module{-module directives, module name, imports-}
++ (Module{-module directives, module name, imports-} loc)
+ [BBlock]
+ deriving (Show)
+
+@@ -68,7 +69,7 @@ testCommandList = "EeFfH"
+
+ -----------------------------------
+
+-mainParse :: ParseMode -> FilePath -> IO Doc
++mainParse :: ParseMode -> FilePath -> IO (Doc HLoc.SrcSpanInfo)
mainParse mode s = do
c <- readFile s
case readMarkdown pState . unlines . concatMap preprocess . lines $ c of
-- Pandoc meta (CodeBlock ("",["sourceCode","literate","haskell"],[]) h: blocks) -> do
-+ Right (Pandoc meta (CodeBlock ("",["sourceCode","literate","haskell"],[]) h: blocks)) -> do
- header <- parseModule mode $ h
- fmap (Doc meta header) $ collectTests mode $ map ({-highlight . -}interpreter . Text) blocks
-- Pandoc meta blocks -> do
-+ Right (Pandoc meta blocks) -> do
- header <- parseModule mode $ "module Unknown where"
+@@ -80,7 +81,7 @@ mainParse mode s = do
fmap (Doc meta header) $ collectTests mode $ map ({-highlight . -}interpreter . Text) blocks
-+ Left err -> fail $ "readMarkdown: " ++ show err
+ Left err -> fail $ "readMarkdown: " ++ show err
where
- parseModule :: ParseMode -> String -> IO Module
+- parseModule :: ParseMode -> String -> IO Module
++ parseModule :: ParseMode -> String -> IO (Module HLoc.SrcSpanInfo)
parseModule HaskellMode m = case HPar.parseModuleWithMode HPar.defaultParseMode m of
-@@ -137,7 +138,7 @@ processHaskellLines isExercise l_ = retu
+ (HPar.ParseOk m) -> return $ HaskellModule m
+ parseError -> fail $ "parseHeader: " ++ show parseError
+@@ -137,17 +138,17 @@ processHaskellLines isExercise l_ = return (concatMap
+ names = concatMap (getFName . snd) x
getFName (HPar.ParseOk x) = case x of
- HSyn.TypeSig _ a _ -> map printName a
-- HSyn.PatBind _ (HSyn.PVar a) _ _ _ -> [printName a]
-+ HSyn.PatBind _ (HSyn.PVar a) _ _ -> [printName a]
- HSyn.FunBind (HSyn.Match _ a _ _ _ _ :_) -> [printName a]
- HSyn.TypeDecl _ a _ _ -> [printName a]
- HSyn.DataDecl _ _ _ a _ x _ -> printName a: [printName n | HSyn.QualConDecl _ _ _ y<-x, n <- getN y]
+- HSyn.TypeSig _ a _ -> map printName a
+- HSyn.PatBind _ (HSyn.PVar a) _ _ -> [printName a]
+- HSyn.FunBind (HSyn.Match _ a _ _ _ _ :_) -> [printName a]
+- HSyn.TypeDecl _ a _ _ -> [printName a]
+- HSyn.DataDecl _ _ _ a _ x _ -> printName a: [printName n | HSyn.QualConDecl _ _ _ y<-x, n <- getN y]
+- _ -> []
++ HSyn.TypeSig _ a _ -> map printName a
++ HSyn.PatBind _ (HSyn.PVar _ a) _ _ -> [printName a]
++ HSyn.FunBind _ ((HSyn.Match _ a _ _ _):_) -> [printName a]
++ HSyn.TypeDecl _ (HSyn.DHead _ a) _ -> [printName a]
++ HSyn.DataDecl _ _ _ (HSyn.DHead _ a) x _ -> printName a: [printName n | HSyn.QualConDecl _ _ _ y<-x, n <- getN y]
++ _ -> []
+ getFName _ = []
+
+- getN (HSyn.ConDecl n _) = [n]
+- getN (HSyn.InfixConDecl _ n _) = [n]
+- getN (HSyn.RecDecl n l) = n: concatMap fst l
++ getN (HSyn.ConDecl _ n _) = [n]
++ getN (HSyn.InfixConDecl _ _ n _) = [n]
++ getN (HSyn.RecDecl _ n l) = n : concatMap (\(HSyn.FieldDecl _ xs _) -> xs) l
+
+ isVisible (HPar.ParseOk (HSyn.TypeSig _ _ _)) = True
+ isVisible (HPar.ParseOk (HSyn.InfixDecl _ _ _ _)) = True
+@@ -181,6 +182,6 @@ parseQuickCheck :: String -> ([String], String)
+ parseQuickCheck s = case splitOn ";;" s of
+ l -> (init l, last l)
+
+-printName :: HSyn.Name -> Name
+-printName (HSyn.Ident x) = x
+-printName (HSyn.Symbol x) = x
++printName :: HSyn.Name loc -> Name
++printName (HSyn.Ident _ x) = x
++printName (HSyn.Symbol _ x) = x