@@ -78,7 +78,10 @@ isDocCommentMarker _ = False
79singleLineComment :: MonadicParsing m => m ()
79singleLineComment :: MonadicParsing m => m ()
80singleLineComment = try (string "--" *> eol *> pure ())
80singleLineComment = try (string "--" *> eol *> pure ())
81+ <|> try (string "--" *> many simpleWhiteSpace *>
81− <|> string "--" *> satisfy (not . isDocCommentMarker) *> many (satisfy (not . isEol)) *> eol *> pure ()
82+ satisfy (not . isDocCommentMarker) *>
83+ many (satisfy (not . isEol)) *>
84{- | Consumes a multi-line comment
87{- | Consumes a multi-line comment
@@ -122,12 +125,26 @@ multiLineComment = try (string "{-" *> (string "-}") *> pure ())
124docComment :: MonadicParsing m => Char -> m String
127docComment :: MonadicParsing m => Char -> m String
125−docComment marker | isDocCommentMarker marker = do dc <- docComment' marker; return (T.unpack $ T.strip $ T.pack dc)
128+docComment marker | isDocCommentMarker marker = do dc <- docComment' marker
129+ return (T.unpack $ T.strip $ T.pack dc)
126− | otherwise = fail "internal error: tried to parse a documentation comment with invalid marker"
130+ | otherwise = fail "internal error: tried to parse a documentation comment with invalid marker"
127 where docComment' :: MonadicParsing m => Char -> m String
131 where docComment' :: MonadicParsing m => Char -> m String
128− docComment' marker = string "--" *> char marker *> many (satisfy (not . isEol)) <* eol
132+ docComment' marker = (do string "--"
133+ many (satisfy isSpace)
135+ res <- many (satisfy (not . isEol))
137+ rest <- many (do string "--"
138+ stuff <- many (satisfy (not . isEol))
142+ return (res ++ concat rest))-- ++ concat rest))
144+ many (satisfy isSpace)
129− <|> string "{-" *> char marker *> (manyTill anyChar (try (string "-}")) <?> "end of comment")
146+ (manyTill anyChar (try (string "-}")) <?> "end of comment"))
132-- | Parses some white space
149-- | Parses some white space
133whiteSpace :: MonadicParsing m => m ()
150whiteSpace :: MonadicParsing m => m ()