Skip to content

Commit d5ffa47

Browse files
committed
Check for empty pragmas
1 parent 0351986 commit d5ffa47

File tree

1 file changed

+14
-1
lines changed

1 file changed

+14
-1
lines changed

src/Hint/Comment.hs

+14-1
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
module Hint.Comment(commentHint) where
2020

2121
import Debug.Trace
22+
import Data.Maybe (fromMaybe)
2223

2324
import Hint.Type
2425
import 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
218221
checkEmptyBlock :: LEpaComment -> [Idea]
219222
checkEmptyBlock comm = [emptyCommentMulti comm | isCommentWhitespace comm]
220223

224+
checkEmptyPragma :: LEpaComment -> [Idea]
225+
checkEmptyPragma comm = [emptyPragma comm | isPragmaWhitespace comm]
226+
221227
check :: [Int] -> [Int] -> LEpaComment -> [Idea]
222228
check singles somes comm@(L{})
223229
-- Multi-line haddock comments are handled elsewhere.
@@ -268,6 +274,10 @@ isCommentWhitespace comm@(L (anchor -> span) _ ) =
268274
isHaddockWhitespace :: LEpaComment -> Bool
269275
isHaddockWhitespace 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+
271281
isDoctestWhitespace :: LEpaComment -> Bool
272282
isDoctestWhitespace comm@(L (anchor -> span) _ ) = not (isPointRealSpan span) && isDoctest comm
273283

@@ -283,6 +293,9 @@ leadingEmptyIdea s = emptyComment ("--" ++) $ "Leading empty single-line " ++ pp
283293
emptyMultiIdea :: String -> LEpaComment -> Idea
284294
emptyMultiIdea s = emptyComment (\s -> "{-" ++ s ++ "-}") $ "Empty multi-line " ++ s
285295

296+
emptyPragma :: LEpaComment -> Idea
297+
emptyPragma = emptyComment (\s -> "{-" ++ s ++ "-}") $ "Empty pragma "
298+
286299
emptyCommentMulti, emptyHaddockMulti :: LEpaComment -> Idea
287300
emptyCommentMulti = emptyMultiIdea "comment"
288301
emptyHaddockMulti = emptyMultiIdea "haddock"

0 commit comments

Comments
 (0)