From 7c48f5e35572afc53f464580c95566abef6d6469 Mon Sep 17 00:00:00 2001 From: Simon Marlow Date: Wed, 29 Nov 2006 09:32:21 +0000 Subject: [PATCH] fix to isNormalComment for non-Haddock mode, and some cleanup Haddock documentation comments weren't being treated as comments even without the -haddock flag. Fixes nofib/spectral/simple, and probably others. --- compiler/parser/Lexer.x | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/compiler/parser/Lexer.x b/compiler/parser/Lexer.x index 6a25ae5..56d036e 100644 --- a/compiler/parser/Lexer.x +++ b/compiler/parser/Lexer.x @@ -690,24 +690,23 @@ pop _span _buf _len = do popLexState; lexToken pop_and :: Action -> Action pop_and act span buf len = do popLexState; act span buf len -notFollowedBy char _ _ _ (AI _ _ buf) = atEnd buf || currentChar buf /= char +{-# INLINE nextCharIs #-} +nextCharIs buf p = not (atEnd buf) && p (currentChar buf) + +notFollowedBy char _ _ _ (AI _ _ buf) + = nextCharIs buf (/=char) notFollowedBySymbol _ _ _ (AI _ _ buf) - = atEnd buf || currentChar buf `notElem` "!#$%&*+./<=>?@\\^|-~" + = nextCharIs buf (`notElem` "!#$%&*+./<=>?@\\^|-~") isNormalComment bits _ _ (AI _ _ buf) - = (if haddockEnabled bits then False else (followedBySpaceDoc buf)) - || notFollowedByDocOrPragma + | haddockEnabled bits = notFollowedByDocOrPragma + | otherwise = nextCharIs buf (/='#') where - notFollowedByDocOrPragma = not $ spaceAndP buf - (\buf' -> currentChar buf' `elem` "|^*$#") - -spaceAndP buf p = p buf || currentChar buf == ' ' && p buf' - where buf' = snd (nextChar buf) - -followedBySpaceDoc buf = spaceAndP buf followedByDoc + notFollowedByDocOrPragma + = not $ spaceAndP buf (`nextCharIs` (`elem` "|^*$#")) -followedByDoc buf = currentChar buf `elem` "|^*$" +spaceAndP buf p = p buf || nextCharIs buf (==' ') && p (snd (nextChar buf)) haddockDisabledAnd p bits _ _ (AI _ _ buf) = if haddockEnabled bits then False else (p buf) -- 1.7.10.4