1919module Hint.Comment (commentHint ) where
2020
2121import Debug.Trace
22+ import Data.Maybe (fromMaybe )
2223
2324import Hint.Type
2425import Data.List.Extra
@@ -127,7 +128,8 @@ commentHint _ m =
127128 traceShow (" runs" , fmap commentText <$> runs) $
128129 traceShow (" lineHaddocks" , commentText <$> lineHaddocks) $
129130 traceShow (" lines" , commentText <$> lines ) $
130- blockHaddockIdeas
131+ pragmaIdeas
132+ ++ blockHaddockIdeas
131133 ++ blockIdeas
132134 ++ ideas
133135 where
@@ -142,6 +144,7 @@ commentHint _ m =
142144
143145 Comments pragmas blockHaddocks blocks runHaddocks runs lineHaddocks lines = classifyComments comments
144146
147+ pragmaIdeas = concatMap checkEmptyPragma pragmas
145148 blockHaddockIdeas = concatMap checkEmptyBlockHaddock blockHaddocks
146149 blockIdeas = concatMap checkEmptyBlock blocks
147150
@@ -218,6 +221,9 @@ checkEmptyBlockHaddock comm = [emptyHaddockMulti comm | isHaddockWhitespace comm
218221checkEmptyBlock :: LEpaComment -> [Idea ]
219222checkEmptyBlock comm = [emptyCommentMulti comm | isCommentWhitespace comm]
220223
224+ checkEmptyPragma :: LEpaComment -> [Idea ]
225+ checkEmptyPragma comm = [emptyPragma comm | isPragmaWhitespace comm]
226+
221227check :: [Int ] -> [Int ] -> LEpaComment -> [Idea ]
222228check singles somes comm@ (L {})
223229 -- Multi-line haddock comments are handled elsewhere.
@@ -268,6 +274,10 @@ isCommentWhitespace comm@(L (anchor -> span) _ ) =
268274isHaddockWhitespace :: LEpaComment -> Bool
269275isHaddockWhitespace comm = isHaddock comm && isStringWhitespace (drop 2 $ commentText comm)
270276
277+ isPragmaWhitespace :: LEpaComment -> Bool
278+ isPragmaWhitespace comm = maybe False isStringWhitespace
279+ (stripSuffix " #" =<< stripPrefix " #" (commentText comm))
280+
271281isDoctestWhitespace :: LEpaComment -> Bool
272282isDoctestWhitespace comm@ (L (anchor -> span ) _ ) = not (isPointRealSpan span ) && isDoctest comm
273283
@@ -283,6 +293,9 @@ leadingEmptyIdea s = emptyComment ("--" ++) $ "Leading empty single-line " ++ pp
283293emptyMultiIdea :: String -> LEpaComment -> Idea
284294emptyMultiIdea s = emptyComment (\ s -> " {-" ++ s ++ " -}" ) $ " Empty multi-line " ++ s
285295
296+ emptyPragma :: LEpaComment -> Idea
297+ emptyPragma = emptyComment (\ s -> " {-" ++ s ++ " -}" ) $ " Empty pragma "
298+
286299emptyCommentMulti , emptyHaddockMulti :: LEpaComment -> Idea
287300emptyCommentMulti = emptyMultiIdea " comment"
288301emptyHaddockMulti = emptyMultiIdea " haddock"
0 commit comments