--------------------------------------------------------------------- RUN tests/newtype-derive.hs --hint=data/hlint.yaml FILE tests/newtype-derive.hs {-# LANGUAGE DeriveTraversable #-} -- Implies DeriveFoldable and DeriveFunctor {-# LANGUAGE DeriveDataTypeable #-} module Test(A) where import Data.Foldable (Foldable) import Data.Traversable (Traversable) import Data.Typeable (Typeable) newtype A f = A f deriving (Foldable, Functor, Traversable, Typeable) OUTPUT No hints --------------------------------------------------------------------- RUN tests/note.hs FILE tests/note.hs {-# LANGUAGE RecordWildCards #-} module Sample(test) where test xs = length xs == 0 OUTPUT tests/note.hs:1:1-32: Warning: Unused LANGUAGE pragma Found: {-# LANGUAGE RecordWildCards #-} Perhaps you should remove it. Note: may require `{-# LANGUAGE DisambiguateRecordFields #-}` adding to the top of the file tests/note.hs:5:11-24: Suggestion: Use null Found: length xs == 0 Perhaps: null xs Note: increases laziness 2 hints --------------------------------------------------------------------- RUN tests/brackets.hs FILE tests/brackets.hs test = if isNothing x then (-1.0) else fromJust x OUTPUT tests/brackets.hs:1:8-49: Warning: Use fromMaybe Found: if isNothing x then (- 1.0) else fromJust x Perhaps: fromMaybe (- 1.0) x 1 hint --------------------------------------------------------------------- RUN tests/typesig-ignore.hs FILE tests/typesig-ignore.hs -- Bug #563 module Foo(foobar) where {-# ANN foobar "HLint: ignore Use String" #-} foobar :: [Char] foobar = [] OUTPUT No hints --------------------------------------------------------------------- RUN tests/typesig-ignore2.hs FILE tests/typesig-ignore2.hs -- Bug #563 module Foo(foobar) where {-# HLINT ignore foobar "Use String" #-} foobar :: [Char] foobar = [] OUTPUT No hints --------------------------------------------------------------------- RUN tests/restricted-module.lhs --hint=data/test-restrict.yaml FILE tests/restricted-module.lhs > import Restricted.Module OUTPUT tests/restricted-module.lhs:1:3-26: Warning: Avoid restricted module Found: import Restricted.Module Note: may break the code 1 hint --------------------------------------------------------------------- RUN tests/restricted-module-message.lhs --hint=data/test-restrict.yaml FILE tests/restricted-module-message.lhs > import Restricted.Module.Message OUTPUT tests/restricted-module-message.lhs:1:3-34: Warning: Avoid restricted module Found: import Restricted.Module.Message Note: Custom message 1 hint --------------------------------------------------------------------- RUN tests/restricted-badidents-bad.lhs --hint=data/test-restrict.yaml FILE tests/restricted-badidents-bad.lhs > import Restricted.Module.BadIdents (bad) OUTPUT tests/restricted-badidents-bad.lhs:1:3-42: Warning: Avoid restricted identifiers Found: import Restricted.Module.BadIdents ( bad ) Note: may break the code 1 hint --------------------------------------------------------------------- RUN tests/restricted-badidents-multibad.lhs --hint=data/test-restrict.yaml FILE tests/restricted-badidents-multibad.lhs > import Restricted.Module.BadIdents (bad, good) OUTPUT tests/restricted-badidents-multibad.lhs:1:3-48: Warning: Avoid restricted identifiers Found: import Restricted.Module.BadIdents ( bad, good ) Note: may break the code 1 hint --------------------------------------------------------------------- RUN tests/restricted-badidents-valid.lhs --hint=data/test-restrict.yaml FILE tests/restricted-badidents-valid.lhs > import Restricted.Module.BadIdents (good) OUTPUT No hints --------------------------------------------------------------------- RUN tests/restricted-badidents-universal.lhs --hint=data/test-restrict.yaml FILE tests/restricted-badidents-universal.lhs > import Restricted.Module.BadIdents OUTPUT No hints --------------------------------------------------------------------- RUN tests/restricted-onlyidents-bad.lhs --hint=data/test-restrict.yaml FILE tests/restricted-onlyidents-bad.lhs > import Restricted.Module.OnlyIdents (bad) OUTPUT tests/restricted-onlyidents-bad.lhs:1:3-43: Warning: Avoid restricted identifiers Found: import Restricted.Module.OnlyIdents ( bad ) Note: may break the code 1 hint --------------------------------------------------------------------- RUN tests/restricted-onlyidents-multibad.lhs --hint=data/test-restrict.yaml FILE tests/restricted-onlyidents-multibad.lhs > import Restricted.Module.OnlyIdents (bad, good) OUTPUT tests/restricted-onlyidents-multibad.lhs:1:3-49: Warning: Avoid restricted identifiers Found: import Restricted.Module.OnlyIdents ( bad, good ) Note: may break the code 1 hint --------------------------------------------------------------------- RUN tests/restricted-onlyidents-valid.lhs --hint=data/test-restrict.yaml FILE tests/restricted-onlyidents-valid.lhs > import Restricted.Module.OnlyIdents (good) OUTPUT No hints --------------------------------------------------------------------- RUN tests/restricted-onlyidents-universal.lhs --hint=data/test-restrict.yaml FILE tests/restricted-onlyidents-universal.lhs > import Restricted.Module.OnlyIdents OUTPUT No hints --------------------------------------------------------------------- RUN tests/restricted-function.lhs --hint=data/test-restrict.yaml FILE tests/restricted-function.lhs > main = restricted () OUTPUT tests/restricted-function.lhs:1:10-19: Warning: Avoid restricted function Found: restricted Note: may break the code 1 hint --------------------------------------------------------------------- RUN tests/restricted-function-message.lhs --hint=data/test-restrict.yaml FILE tests/restricted-function-message.lhs > main = restrictedMessage () OUTPUT tests/restricted-function-message.lhs:1:10-26: Warning: Avoid restricted function Found: restrictedMessage Note: Custom message 1 hint --------------------------------------------------------------------- RUN tests/restricted-extension.hs --hint=data/test-restrict.yaml FILE tests/restricted-extension.hs {-# LANGUAGE DeriveFoldable #-} {-# LANGUAGE DeriveFunctor #-} {-# LANGUAGE DeriveTraversable #-} {-# LANGUAGE DeriveDataTypeable #-} module Test(A) where import Data.Foldable (Foldable) import Data.Traversable (Traversable) import Data.Typeable (Typeable) newtype A f = A f deriving (Foldable, Functor, Traversable, Typeable) OUTPUT OUTPUT tests/restricted-extension.hs:1:1-31: Warning: Unused LANGUAGE pragma Found: {-# LANGUAGE DeriveFoldable #-} Perhaps you should remove it. Note: Extension DeriveFoldable is implied by DeriveTraversable tests/restricted-extension.hs:2:1-30: Warning: Unused LANGUAGE pragma Found: {-# LANGUAGE DeriveFunctor #-} Perhaps you should remove it. Note: Extension DeriveFunctor is implied by DeriveTraversable tests/restricted-extension.hs:2:1-30: Warning: Avoid restricted extensions Found: {-# LANGUAGE DeriveFunctor #-} Note: may break the code tests/restricted-extension.hs:3:1-34: Warning: Avoid restricted extensions Found: {-# LANGUAGE DeriveTraversable #-} Note: Custom message 4 hints