19
19
module Hint.Comment (commentHint ) where
20
20
21
21
import Debug.Trace
22
+ import Data.Maybe (fromMaybe )
22
23
23
24
import Hint.Type
24
25
import Data.List.Extra
@@ -127,7 +128,8 @@ commentHint _ m =
127
128
traceShow (" runs" , fmap commentText <$> runs) $
128
129
traceShow (" lineHaddocks" , commentText <$> lineHaddocks) $
129
130
traceShow (" lines" , commentText <$> lines ) $
130
- blockHaddockIdeas
131
+ pragmaIdeas
132
+ ++ blockHaddockIdeas
131
133
++ blockIdeas
132
134
++ ideas
133
135
where
@@ -142,6 +144,7 @@ commentHint _ m =
142
144
143
145
Comments pragmas blockHaddocks blocks runHaddocks runs lineHaddocks lines = classifyComments comments
144
146
147
+ pragmaIdeas = concatMap checkEmptyPragma pragmas
145
148
blockHaddockIdeas = concatMap checkEmptyBlockHaddock blockHaddocks
146
149
blockIdeas = concatMap checkEmptyBlock blocks
147
150
@@ -218,6 +221,9 @@ checkEmptyBlockHaddock comm = [emptyHaddockMulti comm | isHaddockWhitespace comm
218
221
checkEmptyBlock :: LEpaComment -> [Idea ]
219
222
checkEmptyBlock comm = [emptyCommentMulti comm | isCommentWhitespace comm]
220
223
224
+ checkEmptyPragma :: LEpaComment -> [Idea ]
225
+ checkEmptyPragma comm = [emptyPragma comm | isPragmaWhitespace comm]
226
+
221
227
check :: [Int ] -> [Int ] -> LEpaComment -> [Idea ]
222
228
check singles somes comm@ (L {})
223
229
-- Multi-line haddock comments are handled elsewhere.
@@ -268,6 +274,10 @@ isCommentWhitespace comm@(L (anchor -> span) _ ) =
268
274
isHaddockWhitespace :: LEpaComment -> Bool
269
275
isHaddockWhitespace comm = isHaddock comm && isStringWhitespace (drop 2 $ commentText comm)
270
276
277
+ isPragmaWhitespace :: LEpaComment -> Bool
278
+ isPragmaWhitespace comm = maybe False isStringWhitespace
279
+ (stripSuffix " #" =<< stripPrefix " #" (commentText comm))
280
+
271
281
isDoctestWhitespace :: LEpaComment -> Bool
272
282
isDoctestWhitespace comm@ (L (anchor -> span ) _ ) = not (isPointRealSpan span ) && isDoctest comm
273
283
@@ -283,6 +293,9 @@ leadingEmptyIdea s = emptyComment ("--" ++) $ "Leading empty single-line " ++ pp
283
293
emptyMultiIdea :: String -> LEpaComment -> Idea
284
294
emptyMultiIdea s = emptyComment (\ s -> " {-" ++ s ++ " -}" ) $ " Empty multi-line " ++ s
285
295
296
+ emptyPragma :: LEpaComment -> Idea
297
+ emptyPragma = emptyComment (\ s -> " {-" ++ s ++ " -}" ) $ " Empty pragma "
298
+
286
299
emptyCommentMulti , emptyHaddockMulti :: LEpaComment -> Idea
287
300
emptyCommentMulti = emptyMultiIdea " comment"
288
301
emptyHaddockMulti = emptyMultiIdea " haddock"
0 commit comments