diff --git a/utils/haddock/haddock-library/src/Documentation/Haddock/Parser.hs b/utils/haddock/haddock-library/src/Documentation/Haddock/Parser.hs index 0463e26ef0a3e18abf627b97d64908123ecf51bd..cff6bcc99ddcca33da4c5db14d7d029558c07edd 100644 --- a/utils/haddock/haddock-library/src/Documentation/Haddock/Parser.hs +++ b/utils/haddock/haddock-library/src/Documentation/Haddock/Parser.hs @@ -28,7 +28,7 @@ import Control.Applicative import Control.Arrow (first) import Control.Monad import Data.Char (chr, isAlpha, isSpace, isUpper) -import Data.List (elemIndex, intercalate, unfoldr) +import Data.List (elemIndex, intercalate, unfoldr, intersperse) import Data.Maybe (fromMaybe, mapMaybe) import Data.Monoid import qualified Data.Set as Set @@ -576,11 +576,12 @@ since = do return DocEmpty where version = do - pkg <- Parsec.optionMaybe $ Parsec.try $ package <* Parsec.char '-' + pkg <- Parsec.optionMaybe $ Parsec.try $ package ver <- decimal `Parsec.sepBy1` "." return (MetaSince pkg ver) - package = Parsec.many1 $ Parsec.alphaNum <|> Parsec.oneOf "_-" + package = combine <$> (Parsec.many1 (Parsec.letter <|> Parsec.char '_')) `Parsec.endBy1` (Parsec.char '-') + combine = concat . intersperse "-" -- | Headers inside the comment denoted with @=@ signs, up to 6 levels -- deep. diff --git a/utils/haddock/haddock-library/test/Documentation/Haddock/ParserSpec.hs b/utils/haddock/haddock-library/test/Documentation/Haddock/ParserSpec.hs index 47ed58802c1af4a9ca6b3033869314ea7dabceba..40806b47e9e519b6747c03544e257ee895af15d0 100644 --- a/utils/haddock/haddock-library/test/Documentation/Haddock/ParserSpec.hs +++ b/utils/haddock/haddock-library/test/Documentation/Haddock/ParserSpec.hs @@ -567,7 +567,7 @@ spec = do , sinceVersion = [0, 5, 0] } } - , _doc = DocParagraph "@since foo-bar-0.5.0" + , _doc = DocEmpty } context "when given multiple times" $ do