# Based on HLint configuration file from https://github.com/ndmitchell/hlint - arguments: [--color] # ------------------------------------------------------------------------------ # RESTRICTIONS # ------------------------------------------------------------------------------ - extensions: - default: false - name: - ApplicativeDo - DataKinds - DerivingStrategies - GADTs - ImportQualifiedPost - LambdaCase - NoImplicitPrelude - OverloadedStrings - QuantifiedConstraints - QuasiQuotes - RecordWildCards - StandaloneKindSignatures - TemplateHaskell - TypeFamilyDependencies - UndecidableInstances - UnicodeSyntax - GeneralizedNewtypeDeriving - flags: - default: false - name: - -Wall - -Wcompat - -Wderiving-defaults - -Widentities - -Wincomplete-patterns - -Wincomplete-record-updates - -Wincomplete-uni-patterns - -Wmissing-deriving-strategies - -Wredundant-constraints - -O2 -flate-specialise -fspecialise-aggressively - modules: # if you import Data.Set qualified, it must be as 'Set' - { name: [Data.Set, Data.HashSet], as: Set } - { name: [Data.Map, Data.HashMap.Strict, Data.HashMap.Lazy], as: Map } # - {name: Control.Arrow, within: []} # Certain modules are banned entirely - functions: - { name: Data.List.NonEmpty.nub, within: [] } - { name: Data.List.NonEmpty.nubBy, within: [] } # ------------------------------------------------------------------------------ # OTHER HINTS # ------------------------------------------------------------------------------ # - warn: {name: Use explicit module export list} # ------------------------------------------------------------------------------ # HINTS # ------------------------------------------------------------------------------ - error: { lhs: idea Warning, rhs: warn } - error: { lhs: idea Suggestion, rhs: suggest } - error: { lhs: ideaN Warning, rhs: warnN } - error: { lhs: ideaN Suggestion, rhs: suggestN } - error: { lhs: occNameString (occName (unLoc x)), rhs: rdrNameStr x } - error: { lhs: occNameString (occName x), rhs: occNameStr x } - error: { lhs: noLoc (HsVar noExtField (noLoc (mkRdrUnqual (mkVarOcc x)))), rhs: strToVar x, } # ------------------------------------------------------------------------------ # IGNORES # ------------------------------------------------------------------------------ - ignore: { name: Use let, within: [Test.All] } - ignore: { name: Use String } - ignore: { name: Avoid restricted qualification } - ignore: { name: Redundant multi-way if } - ignore: { name: Redundant bracket } - ignore: { name: Eta reduce } - ignore: { name: Avoid restricted alias } - ignore: { name: Use tuple-section } - ignore: { name: Use map with tuple-section }