diff --git a/CHANGES.txt b/CHANGES.txt
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,5 +1,7 @@
 Changelog for HLint (* = breaking change)
 
+2.2.7, released 2020-01-11
+    #818, fix incorrect unused LANGUAGE BangPatterns hint
 2.2.6, released 2020-01-09
     #813, remove any/all with const predicates
     Allow haskell-src-exts-1.23
diff --git a/hlint.cabal b/hlint.cabal
--- a/hlint.cabal
+++ b/hlint.cabal
@@ -1,7 +1,7 @@
 cabal-version:      >= 1.18
 build-type:         Simple
 name:               hlint
-version:            2.2.6
+version:            2.2.7
 license:            BSD3
 license-file:       LICENSE
 category:           Development
diff --git a/src/Hint/Extensions.hs b/src/Hint/Extensions.hs
--- a/src/Hint/Extensions.hs
+++ b/src/Hint/Extensions.hs
@@ -29,6 +29,10 @@
 sort !f = undefined
 {-# LANGUAGE KindSignatures #-} \
 data Set (cxt :: * -> *) a = Set [a]
+{-# LANGUAGE BangPatterns #-} \
+foo x = let !y = x in y
+{-# LANGUAGE BangPatterns #-} \
+data Foo = Foo !Int --
 {-# LANGUAGE RecordWildCards #-} \
 record field = Record{..}
 {-# LANGUAGE RecordWildCards #-} \
@@ -255,7 +259,11 @@
     f (HsLamCase _ (MG _ (LL _ []) _)) = True
     f _ = False
 used KindSignatures = hasT (un :: HsKind GhcPs)
-used BangPatterns = hasS isPBangPat'
+used BangPatterns = hasS isPBangPat' ||^ hasS isStrictMatch
+  where
+    isStrictMatch :: HsMatchContext RdrName -> Bool
+    isStrictMatch FunRhs{mc_strictness=SrcStrict} = True
+    isStrictMatch _ = False
 used TemplateHaskell = hasT2' (un :: (HsBracket GhcPs, HsSplice GhcPs)) ||^ hasS f ||^ hasS isSpliceDecl'
     where
       f :: HsBracket GhcPs -> Bool
