summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--compiler/.hlint.yaml3
-rw-r--r--compiler/GHC/Cmm/Config.hs1
-rw-r--r--compiler/GHC/Cmm/Parser.y1
-rw-r--r--compiler/GHC/Core/LateCC.hs5
-rw-r--r--compiler/GHC/Core/Opt/DmdAnal.hs3
-rw-r--r--compiler/GHC/Core/Opt/WorkWrap/Utils.hs1
-rw-r--r--compiler/GHC/Core/Subst.hs3
-rw-r--r--compiler/GHC/Core/Type.hs2
-rw-r--r--compiler/GHC/Core/Unify.hs2
-rw-r--r--compiler/GHC/Data/FastString.hs3
-rw-r--r--compiler/GHC/Driver/Make.hs12
-rw-r--r--compiler/GHC/Parser.y5
-rw-r--r--compiler/GHC/Parser/Lexer.x2
-rw-r--r--compiler/GHC/Parser/PostProcess/Haddock.hs1
-rw-r--r--compiler/GHC/Stg/InferTags/Rewrite.hs1
-rw-r--r--compiler/GHC/Stg/Lift/Config.hs1
-rw-r--r--compiler/GHC/Stg/Utils.hs1
-rw-r--r--compiler/GHC/Tc/Deriv/Generate.hs3
-rw-r--r--compiler/GHC/Tc/Errors.hs5
-rw-r--r--compiler/GHC/Tc/Utils/TcMType.hs1
-rw-r--r--compiler/GHC/Types/Demand.hs3
-rw-r--r--compiler/GHC/Unit/Finder.hs1
-rw-r--r--compiler/GHC/Unit/Module/Deps.hs4
-rw-r--r--compiler/GHC/Unit/Module/Env.hs1
-rw-r--r--compiler/GHC/Unit/Module/Graph.hs1
-rw-r--r--compiler/GHC/Unit/Module/ModSummary.hs1
-rw-r--r--compiler/GHC/Utils/Monad/State/Strict.hs1
-rwxr-xr-x[-rw-r--r--]hadrian/lint0
-rw-r--r--libraries/base/GHC/ArrayArray.hs1
-rw-r--r--libraries/base/GHC/Base.hs3
-rw-r--r--libraries/base/GHC/Float.hs4
-rw-r--r--libraries/base/GHC/IO/Handle/Text.hs2
32 files changed, 22 insertions, 56 deletions
diff --git a/compiler/.hlint.yaml b/compiler/.hlint.yaml
index a3b780ce62..ee4a04a37a 100644
--- a/compiler/.hlint.yaml
+++ b/compiler/.hlint.yaml
@@ -21,3 +21,6 @@
# below.
- ignore: {name: Redundant do, within: [GHC.SysTools.Terminal, GHC.Utils.Binary]}
+- ignore: {name: Use fewer imports, within: [GHC.Parser, GHC.Cmm.Parser ] }
+- ignore: {name: Redundant return, within: [GHC.Data.FastString] }
+- ignore: {within: [GHC.Parser, GHC.Parser.Lexer] }
diff --git a/compiler/GHC/Cmm/Config.hs b/compiler/GHC/Cmm/Config.hs
index 12eb4e47dc..415becd109 100644
--- a/compiler/GHC/Cmm/Config.hs
+++ b/compiler/GHC/Cmm/Config.hs
@@ -1,7 +1,6 @@
-- | Cmm compilation configuration
{-# LANGUAGE DerivingStrategies #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving #-}
module GHC.Cmm.Config
( CmmConfig(..)
diff --git a/compiler/GHC/Cmm/Parser.y b/compiler/GHC/Cmm/Parser.y
index 5a855ba069..6e6a130233 100644
--- a/compiler/GHC/Cmm/Parser.y
+++ b/compiler/GHC/Cmm/Parser.y
@@ -214,7 +214,6 @@ import GHC.Platform
import GHC.Platform.Profile
import GHC.StgToCmm.ExtCode
-import GHC.StgToCmm.Prof
import GHC.StgToCmm.Heap
import GHC.StgToCmm.Monad hiding ( getCode, getCodeR, getCodeScoped, emitLabel, emit
, emitStore, emitAssign, emitOutOfLine, withUpdFrameOff
diff --git a/compiler/GHC/Core/LateCC.hs b/compiler/GHC/Core/LateCC.hs
index d7a3b0cd8d..634eabc4f6 100644
--- a/compiler/GHC/Core/LateCC.hs
+++ b/compiler/GHC/Core/LateCC.hs
@@ -1,8 +1,3 @@
-{-# LANGUAGE NamedFieldPuns #-}
-{-# LANGUAGE TypeApplications #-}
-{-# LANGUAGE DeriveGeneric #-}
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE DerivingStrategies #-}
{-# LANGUAGE TupleSections #-}
diff --git a/compiler/GHC/Core/Opt/DmdAnal.hs b/compiler/GHC/Core/Opt/DmdAnal.hs
index cd58ff89d7..2dafaf8e0b 100644
--- a/compiler/GHC/Core/Opt/DmdAnal.hs
+++ b/compiler/GHC/Core/Opt/DmdAnal.hs
@@ -1946,8 +1946,7 @@ If we make the dictionary strict then WW can fire turning this into:
Which *usually* performs better. However if the dictionary is known we
are far more likely to inline a function applied to the dictionary than
to inline one applied to a function. Sometimes this makes just enough
-of a difference to stop a function from inlining. This is documented in
-#18421.
+of a difference to stop a function from inlining. This is documented in #18421.
It's somewhat similar to Note [Do not unbox class dictionaries] although
here our problem is with the inliner, not the specializer.
diff --git a/compiler/GHC/Core/Opt/WorkWrap/Utils.hs b/compiler/GHC/Core/Opt/WorkWrap/Utils.hs
index 8936ccdfe5..5f450b9316 100644
--- a/compiler/GHC/Core/Opt/WorkWrap/Utils.hs
+++ b/compiler/GHC/Core/Opt/WorkWrap/Utils.hs
@@ -6,7 +6,6 @@ A library for the ``worker\/wrapper'' back-end to the strictness analyser
{-# LANGUAGE ViewPatterns #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving #-}
module GHC.Core.Opt.WorkWrap.Utils
( WwOpts(..), initWwOpts, mkWwBodies, mkWWstr, mkWWstr_one, mkWorkerArgs
diff --git a/compiler/GHC/Core/Subst.hs b/compiler/GHC/Core/Subst.hs
index 5a6beca0f7..172e8ac67d 100644
--- a/compiler/GHC/Core/Subst.hs
+++ b/compiler/GHC/Core/Subst.hs
@@ -748,8 +748,7 @@ This time the call stack looked something like:
and the rule was
{-# RULES
-"transpose/overlays1" forall xs. transpose (overlays1 xs) = overlays1 (fmap transpose xs)
-#-}
+"transpose/overlays1" forall xs. transpose (overlays1 xs) = overlays1 (fmap transpose xs) #-}
This rule was attached to `transpose`, but also mentions itself in the RHS so we have
to be careful to not force the `IdInfo` for transpose when dealing with the RHS of the rule.
diff --git a/compiler/GHC/Core/Type.hs b/compiler/GHC/Core/Type.hs
index 4fce8c8a09..2406fc6e7a 100644
--- a/compiler/GHC/Core/Type.hs
+++ b/compiler/GHC/Core/Type.hs
@@ -3,7 +3,7 @@
--
-- Type - public interface
-{-# LANGUAGE FlexibleContexts, PatternSynonyms, ViewPatterns, MultiWayIf #-}
+{-# LANGUAGE FlexibleContexts, PatternSynonyms, ViewPatterns #-}
{-# OPTIONS_GHC -fno-warn-orphans #-}
{-# OPTIONS_GHC -Wno-incomplete-record-updates #-}
diff --git a/compiler/GHC/Core/Unify.hs b/compiler/GHC/Core/Unify.hs
index a18899ec09..52e2a97ca2 100644
--- a/compiler/GHC/Core/Unify.hs
+++ b/compiler/GHC/Core/Unify.hs
@@ -2,7 +2,7 @@
{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
-{-# LANGUAGE DeriveFunctor, DeriveDataTypeable #-}
+{-# LANGUAGE DeriveFunctor #-}
module GHC.Core.Unify (
tcMatchTy, tcMatchTyKi,
diff --git a/compiler/GHC/Data/FastString.hs b/compiler/GHC/Data/FastString.hs
index 1d9e419418..131f174c41 100644
--- a/compiler/GHC/Data/FastString.hs
+++ b/compiler/GHC/Data/FastString.hs
@@ -537,8 +537,7 @@ mkFastString str =
-- The following rule is used to avoid polluting the non-reclaimable FastString
-- table with transient strings when we only want their encoding.
{-# RULES
-"bytesFS/mkFastString" forall x. bytesFS (mkFastString x) = utf8EncodeString x
-#-}
+"bytesFS/mkFastString" forall x. bytesFS (mkFastString x) = utf8EncodeString x #-}
-- | Creates a 'FastString' from a UTF-8 encoded @[Word8]@
mkFastStringByteList :: [Word8] -> FastString
diff --git a/compiler/GHC/Driver/Make.hs b/compiler/GHC/Driver/Make.hs
index 2c0e074216..3059154ff5 100644
--- a/compiler/GHC/Driver/Make.hs
+++ b/compiler/GHC/Driver/Make.hs
@@ -2,8 +2,6 @@
{-# LANGUAGE DeriveTraversable #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE NondecreasingIndentation #-}
-{-# LANGUAGE LambdaCase #-}
-{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# OPTIONS_GHC -Wno-incomplete-uni-patterns #-}
@@ -16,9 +14,9 @@
{-# LANGUAGE GeneralisedNewtypeDeriving #-}
{-# LANGUAGE TupleSections #-}
{-# LANGUAGE ApplicativeDo #-}
-{-# LANGUAGE TupleSections #-}
{-# LANGUAGE MultiWayIf #-}
{-# LANGUAGE CPP #-}
+{-# LANGUAGE RecordWildCards #-}
-- -----------------------------------------------------------------------------
--
@@ -2437,7 +2435,7 @@ R.hs: module R where
g = ...f...
```
-## Why we need to rehydrate A's ModIface before compiling R.hs
+== Why we need to rehydrate A's ModIface before compiling R.hs
After compiling A.hs we'll have a TypeEnv in which the Id for `f` has a type
type uses the AbstractTyCon T; and a TyCon for `S` that also mentions that same
@@ -2457,7 +2455,7 @@ Now `S` will be bound to a thunk that, when forced, will "see" the final binding
for `T`; see [Tying the knot](https://gitlab.haskell.org/ghc/ghc/-/wikis/commentary/compiler/tying-the-knot).
But note that this must be done *before* compiling R.hs.
-## Why we need to rehydrate A's ModIface after compiling R.hs
+== Why we need to rehydrate A's ModIface after compiling R.hs
When compiling R.hs, the knot-tying stuff above will ensure that `f`'s unfolding
mentions the `LocalId` for `g`. But when we finish R, we carefully ensure that
@@ -2468,7 +2466,7 @@ subsequent modules that import A will see a crippled unfolding for `f`.
Solution: rehydrate both R and A's ModIface together, right after completing R.hs.
-## Which modules to rehydrate
+~~ Which modules to rehydrate
We only need rehydrate modules that are
* Below R.hs
@@ -2477,7 +2475,7 @@ We only need rehydrate modules that are
There might be many unrelated modules (in the home package) that don't need to be
rehydrated.
-## Modules "above" the loop
+== Modules "above" the loop
This dark corner is the subject of #14092.
diff --git a/compiler/GHC/Parser.y b/compiler/GHC/Parser.y
index 4be8d39c5d..3918c752b9 100644
--- a/compiler/GHC/Parser.y
+++ b/compiler/GHC/Parser.y
@@ -6,11 +6,8 @@
--
-- Author(s): Simon Marlow, Sven Panne 1997, 1998, 1999
-- ---------------------------------------------------------------------------
-
{
-{-# LANGUAGE ViewPatterns #-}
{-# LANGUAGE TypeFamilies #-}
-{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE GADTs #-}
@@ -48,8 +45,6 @@ import Data.List.NonEmpty ( NonEmpty(..) )
import qualified Data.List.NonEmpty as NE
import qualified Prelude -- for happy-generated code
-import GHC.Prelude
-
import GHC.Hs
import GHC.Driver.Backpack.Syntax
diff --git a/compiler/GHC/Parser/Lexer.x b/compiler/GHC/Parser/Lexer.x
index 7bcff45ed8..7d7d157d2b 100644
--- a/compiler/GHC/Parser/Lexer.x
+++ b/compiler/GHC/Parser/Lexer.x
@@ -42,7 +42,6 @@
{
{-# LANGUAGE BangPatterns #-}
-{-# LANGUAGE DeriveDataTypeable #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE MultiWayIf #-}
{-# LANGUAGE UnboxedTuples #-}
@@ -50,6 +49,7 @@
{-# LANGUAGE UnliftedNewtypes #-}
{-# LANGUAGE PatternSynonyms #-}
+
{-# OPTIONS_GHC -funbox-strict-fields #-}
{-# OPTIONS_GHC -Wno-incomplete-uni-patterns #-}
diff --git a/compiler/GHC/Parser/PostProcess/Haddock.hs b/compiler/GHC/Parser/PostProcess/Haddock.hs
index 4d85c65ef5..08bebc4683 100644
--- a/compiler/GHC/Parser/PostProcess/Haddock.hs
+++ b/compiler/GHC/Parser/PostProcess/Haddock.hs
@@ -2,7 +2,6 @@
{-# LANGUAGE DeriveFunctor #-}
{-# LANGUAGE DerivingVia #-}
{-# LANGUAGE FlexibleInstances #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE ScopedTypeVariables #-}
diff --git a/compiler/GHC/Stg/InferTags/Rewrite.hs b/compiler/GHC/Stg/InferTags/Rewrite.hs
index 8b2c24cbdb..099fbc54d5 100644
--- a/compiler/GHC/Stg/InferTags/Rewrite.hs
+++ b/compiler/GHC/Stg/InferTags/Rewrite.hs
@@ -420,7 +420,6 @@ rewriteApp True (StgApp f []) = do
then setIdTagSig f (TagSig TagProper)
else f
return $! StgApp f' []
- where
rewriteApp _ (StgApp f args)
-- | pprTrace "rewriteAppOther" (ppr f <+> ppr args) False
-- = undefined
diff --git a/compiler/GHC/Stg/Lift/Config.hs b/compiler/GHC/Stg/Lift/Config.hs
index 1413bd5edc..544c23f6a4 100644
--- a/compiler/GHC/Stg/Lift/Config.hs
+++ b/compiler/GHC/Stg/Lift/Config.hs
@@ -1,4 +1,3 @@
-{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE TypeFamilies #-}
-- | Configuration options for Lift the lambda lifter.
diff --git a/compiler/GHC/Stg/Utils.hs b/compiler/GHC/Stg/Utils.hs
index 4561e25765..62aa89f0ff 100644
--- a/compiler/GHC/Stg/Utils.hs
+++ b/compiler/GHC/Stg/Utils.hs
@@ -1,5 +1,4 @@
{-# LANGUAGE CPP, ScopedTypeVariables, TypeFamilies #-}
-{-# LANGUAGE BangPatterns #-}
{-# LANGUAGE DataKinds #-}
module GHC.Stg.Utils
diff --git a/compiler/GHC/Tc/Deriv/Generate.hs b/compiler/GHC/Tc/Deriv/Generate.hs
index 7d5ae9d763..7c03f52bd0 100644
--- a/compiler/GHC/Tc/Deriv/Generate.hs
+++ b/compiler/GHC/Tc/Deriv/Generate.hs
@@ -70,11 +70,10 @@ import GHC.Builtin.Types.Prim
import GHC.Builtin.Types
import GHC.Core.Type
import GHC.Core.Class
-import GHC.Types.Unique.FM ( lookupUFM )
+import GHC.Types.Unique.FM ( lookupUFM, listToUFM )
import GHC.Types.Var.Set
import GHC.Types.Var.Env
import GHC.Utils.Misc
-import GHC.Types.Unique.FM ( listToUFM )
import GHC.Types.Var
import GHC.Utils.Outputable
import GHC.Utils.Panic
diff --git a/compiler/GHC/Tc/Errors.hs b/compiler/GHC/Tc/Errors.hs
index b71a6b1dd4..596271b065 100644
--- a/compiler/GHC/Tc/Errors.hs
+++ b/compiler/GHC/Tc/Errors.hs
@@ -1,13 +1,11 @@
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE NamedFieldPuns #-}
-{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TupleSections #-}
{-# OPTIONS_GHC -Wno-incomplete-uni-patterns #-}
{-# OPTIONS_GHC -Wno-incomplete-record-updates #-}
-{-# LANGUAGE TupleSections #-}
{-# LANGUAGE ParallelListComp #-}
module GHC.Tc.Errors(
@@ -86,10 +84,9 @@ import Control.Monad ( unless, when, foldM, forM_ )
import Data.Foldable ( toList )
import Data.Functor ( (<&>) )
import Data.Function ( on )
-import Data.List ( partition, sort )
+import Data.List ( partition, sort, sortBy )
import Data.List.NonEmpty ( NonEmpty(..), (<|) )
import qualified Data.List.NonEmpty as NE ( map, reverse )
-import Data.List ( sortBy )
import Data.Ord ( comparing )
import qualified Data.Semigroup as S
diff --git a/compiler/GHC/Tc/Utils/TcMType.hs b/compiler/GHC/Tc/Utils/TcMType.hs
index 3c978b511c..cbbdcdfb47 100644
--- a/compiler/GHC/Tc/Utils/TcMType.hs
+++ b/compiler/GHC/Tc/Utils/TcMType.hs
@@ -3,7 +3,6 @@
{-# LANGUAGE TupleSections #-}
{-# OPTIONS_GHC -Wno-incomplete-record-updates #-}
-{-# LANGUAGE LambdaCase #-}
{-
(c) The University of Glasgow 2006
(c) The GRASP/AQUA Project, Glasgow University, 1992-1998
diff --git a/compiler/GHC/Types/Demand.hs b/compiler/GHC/Types/Demand.hs
index 7376a610d4..0cfb0dae29 100644
--- a/compiler/GHC/Types/Demand.hs
+++ b/compiler/GHC/Types/Demand.hs
@@ -215,8 +215,7 @@ Here are reasons for too much optimism:
* Note [lubBoxity and plusBoxity] describes why we optimistically let Unboxed
win when combining different case alternatives.
-Boxity analysis fixes a number of issues:
-#19871, #19407, #4267, #16859, #18907, #13331
+Boxity analysis fixes a number of issues: #19871, #19407, #4267, #16859, #18907, #13331
Note [Function body boxity and call sites]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
diff --git a/compiler/GHC/Unit/Finder.hs b/compiler/GHC/Unit/Finder.hs
index c7b6a2eb65..c3c517cb18 100644
--- a/compiler/GHC/Unit/Finder.hs
+++ b/compiler/GHC/Unit/Finder.hs
@@ -5,7 +5,6 @@
{-# LANGUAGE FlexibleContexts #-}
-{-# LANGUAGE MultiWayIf #-}
-- | Module finder
module GHC.Unit.Finder (
diff --git a/compiler/GHC/Unit/Module/Deps.hs b/compiler/GHC/Unit/Module/Deps.hs
index 0da8a06979..c654940730 100644
--- a/compiler/GHC/Unit/Module/Deps.hs
+++ b/compiler/GHC/Unit/Module/Deps.hs
@@ -400,13 +400,13 @@ it would recompile nearly every module in your project, just to update this info
Now, we are a bit more careful about what we store and
explicitly store transitive information only if it is really needed.
-# Direct Information
+~ Direct Information
* dep_direct_mods - Directly imported home package modules
* dep_direct_pkgs - Directly imported packages
* dep_plgins - Directly used plugins
-# Transitive Information
+~ Transitive Information
Some features of the compiler require transitive information about what is currently
being compiled, so that is explicitly stored separately in the form they need.
diff --git a/compiler/GHC/Unit/Module/Env.hs b/compiler/GHC/Unit/Module/Env.hs
index 0c8016e17e..e8307229f7 100644
--- a/compiler/GHC/Unit/Module/Env.hs
+++ b/compiler/GHC/Unit/Module/Env.hs
@@ -1,4 +1,3 @@
-{-# LANGUAGE GeneralizedNewtypeDeriving #-}
-- | Module environment
module GHC.Unit.Module.Env
( -- * Module mappings
diff --git a/compiler/GHC/Unit/Module/Graph.hs b/compiler/GHC/Unit/Module/Graph.hs
index 2a791b42b5..f71c71347f 100644
--- a/compiler/GHC/Unit/Module/Graph.hs
+++ b/compiler/GHC/Unit/Module/Graph.hs
@@ -1,6 +1,5 @@
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE RecordWildCards #-}
-{-# LANGUAGE DeriveFunctor #-}
{-# LANGUAGE DeriveTraversable #-}
module GHC.Unit.Module.Graph
diff --git a/compiler/GHC/Unit/Module/ModSummary.hs b/compiler/GHC/Unit/Module/ModSummary.hs
index 3fd972632f..6c0ff55627 100644
--- a/compiler/GHC/Unit/Module/ModSummary.hs
+++ b/compiler/GHC/Unit/Module/ModSummary.hs
@@ -1,4 +1,3 @@
-{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE TupleSections #-}
-- | A ModSummary is a node in the compilation manager's dependency graph
diff --git a/compiler/GHC/Utils/Monad/State/Strict.hs b/compiler/GHC/Utils/Monad/State/Strict.hs
index b7cafb7f52..9778d1af80 100644
--- a/compiler/GHC/Utils/Monad/State/Strict.hs
+++ b/compiler/GHC/Utils/Monad/State/Strict.hs
@@ -1,4 +1,3 @@
-{-# LANGUAGE DeriveFunctor #-}
{-# LANGUAGE UnboxedTuples #-}
{-# LANGUAGE PatternSynonyms #-}
diff --git a/hadrian/lint b/hadrian/lint
index 8c43c89bd1..8c43c89bd1 100644..100755
--- a/hadrian/lint
+++ b/hadrian/lint
diff --git a/libraries/base/GHC/ArrayArray.hs b/libraries/base/GHC/ArrayArray.hs
index ea84f13edf..199bac3a15 100644
--- a/libraries/base/GHC/ArrayArray.hs
+++ b/libraries/base/GHC/ArrayArray.hs
@@ -5,7 +5,6 @@
{-# LANGUAGE MagicHash #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE StandaloneKindSignatures #-}
-{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE UnboxedTuples #-}
{-# LANGUAGE UnliftedNewtypes #-}
diff --git a/libraries/base/GHC/Base.hs b/libraries/base/GHC/Base.hs
index 9463570d46..52a247ffae 100644
--- a/libraries/base/GHC/Base.hs
+++ b/libraries/base/GHC/Base.hs
@@ -1392,8 +1392,7 @@ The rules for map work like this.
{-# RULES
"++/literal" forall x. (++) (unpackCString# x) = unpackAppendCString# x
-"++/literal_utf8" forall x. (++) (unpackCStringUtf8# x) = unpackAppendCStringUtf8# x
-#-}
+"++/literal_utf8" forall x. (++) (unpackCStringUtf8# x) = unpackAppendCStringUtf8# x #-}
{-# RULES
"++" [~1] forall xs ys. xs ++ ys = augment (\c n -> foldr c n xs) ys
diff --git a/libraries/base/GHC/Float.hs b/libraries/base/GHC/Float.hs
index ffe9fdc7b9..6f15997981 100644
--- a/libraries/base/GHC/Float.hs
+++ b/libraries/base/GHC/Float.hs
@@ -1612,6 +1612,4 @@ foreign import prim "stg_doubleToWord64zh"
forall x. naturalToFloat# (NS x) = word2Float# x
"Word# -> Natural -> Double#"
- forall x. naturalToDouble# (NS x) = word2Double# x
-
-#-}
+ forall x. naturalToDouble# (NS x) = word2Double# x #-}
diff --git a/libraries/base/GHC/IO/Handle/Text.hs b/libraries/base/GHC/IO/Handle/Text.hs
index 0e3dcd709e..60c2aa7c10 100644
--- a/libraries/base/GHC/IO/Handle/Text.hs
+++ b/libraries/base/GHC/IO/Handle/Text.hs
@@ -551,7 +551,7 @@ lazyBuffersToString CRLF = loop '\0' where
-- * 'isPermissionError' if another system resource limit would be exceeded.
hPutChar :: Handle -> Char -> IO ()
-hPutChar handle !c = do
+hPutChar handle !c =
wantWritableHandle "hPutChar" handle $ \ handle_ ->
hPutcBuffered handle_ c