From 4256d1812062d566163e5797c75e4ede57669a7e Mon Sep 17 00:00:00 2001 From: Benjamin Barenblat Date: Mon, 30 Jul 2018 16:42:15 -0400 Subject: Enable `-Werror` and a reasonable set of warnings Instead of using `-Weverything` and turning warnings off as they become problematic, enable `-Werror` and turn on a specific set of warnings judged to have high signal-to-noise ratio. Fix up all instances of those warnings in the code. These warnings are all available in GHC 8.0.1, which is the default in the current Debian (Debian 9). --- btls.cabal | 61 ++++++++++++++++++++++++++++++++++++++++--------- src/Internal/Base.chs | 1 - src/Internal/Digest.chs | 5 +--- src/Internal/HMAC.chs | 5 +--- 4 files changed, 52 insertions(+), 20 deletions(-) diff --git a/btls.cabal b/btls.cabal index d554a89..9b87874 100644 --- a/btls.cabal +++ b/btls.cabal @@ -41,11 +41,31 @@ library default-language: Haskell2010 build-tools: c2hs include-dirs: third_party/boringssl/src/include - ghc-options: -Weverything - -Wno-all-missed-specialisations - -Wno-implicit-prelude - -Wno-missing-import-lists - -Wno-safe -Wno-unsafe + ghc-options: -Werror + -w + -Wderiving-typeable + -Wduplicate-exports + -Widentities + -Wincomplete-patterns + -Wincomplete-record-updates + -Wincomplete-uni-patterns + -Wmissing-fields + -Wmissing-methods + -Wmissing-monadfail-instances + -Wnoncanonical-monad-instances + -Wnoncanonical-monadfail-instances + -Wnoncanonical-monoid-instances + -Woverlapping-patterns + -Wredundant-constraints + -Wsemigroup + -Wtabs + -Wunused-binds + -Wunused-do-bind + -Wunused-foralls + -Wunused-imports + -Wunused-matches + -Wunused-type-variables + -Wwrong-do-bind -optl-Wl,-z,relro -optl-Wl,-z,now -optl-Wl,-s exposed-modules: Data.Digest , Data.HMAC @@ -70,12 +90,31 @@ test-suite tests hs-source-dirs: tests default-language: Haskell2010 other-extensions: OverloadedStrings - ghc-options: -Weverything - -Wno-all-missed-specialisations - -Wno-implicit-prelude - -Wno-missing-import-lists - -Wno-missing-signatures - -Wno-safe -Wno-unsafe + ghc-options: -Werror + -w + -Wderiving-typeable + -Wduplicate-exports + -Widentities + -Wincomplete-patterns + -Wincomplete-record-updates + -Wincomplete-uni-patterns + -Wmissing-fields + -Wmissing-methods + -Wmissing-monadfail-instances + -Wnoncanonical-monad-instances + -Wnoncanonical-monadfail-instances + -Wnoncanonical-monoid-instances + -Woverlapping-patterns + -Wredundant-constraints + -Wsemigroup + -Wtabs + -Wunused-binds + -Wunused-do-bind + -Wunused-foralls + -Wunused-imports + -Wunused-matches + -Wunused-type-variables + -Wwrong-do-bind -optl-Wl,-z,relro -optl-Wl,-z,now -optl-Wl,-s main-is: Tests.hs other-modules: Data.DigestTests diff --git a/src/Internal/Base.chs b/src/Internal/Base.chs index c2e615a..f0b03cc 100644 --- a/src/Internal/Base.chs +++ b/src/Internal/Base.chs @@ -12,7 +12,6 @@ -- License for the specific language governing permissions and limitations under -- the License. -{-# OPTIONS_GHC -Wno-missing-methods #-} {-# OPTIONS_GHC -Wno-unused-imports #-} module Internal.Base where diff --git a/src/Internal/Digest.chs b/src/Internal/Digest.chs index 4708c47..bd331a7 100644 --- a/src/Internal/Digest.chs +++ b/src/Internal/Digest.chs @@ -13,7 +13,6 @@ -- the License. {-# OPTIONS_GHC -Wno-missing-methods #-} -{-# OPTIONS_GHC -Wno-orphans #-} module Internal.Digest ( evpMD5, evpSHA1, evpSHA224, evpSHA256, evpSHA384, evpSHA512 @@ -22,9 +21,7 @@ module Internal.Digest , evpMaxMDSize ) where -import Foreign - (FinalizerPtr, ForeignPtr, Ptr, Storable(alignment, sizeOf), - addForeignPtrFinalizer, mallocForeignPtr, withForeignPtr) +import Foreign (FinalizerPtr, ForeignPtr, Ptr, Storable(alignment, sizeOf)) import Foreign.C.Types import Foreign.Ptr.Cast (asVoidPtr) diff --git a/src/Internal/HMAC.chs b/src/Internal/HMAC.chs index 88ac1fb..2151785 100644 --- a/src/Internal/HMAC.chs +++ b/src/Internal/HMAC.chs @@ -13,16 +13,13 @@ -- the License. {-# OPTIONS_GHC -Wno-missing-methods #-} -{-# OPTIONS_GHC -Wno-orphans #-} module Internal.HMAC ( mallocHMACCtx , hmacInitEx, hmacUpdate, hmacFinal ) where -import Foreign - (FinalizerPtr, ForeignPtr, Ptr, Storable(alignment, sizeOf), - addForeignPtrFinalizer, mallocForeignPtr, withForeignPtr) +import Foreign (FinalizerPtr, ForeignPtr, Ptr, Storable(alignment, sizeOf)) import Foreign.C.Types import Foreign.Ptr.Cast (asVoidPtr) -- cgit v1.2.3