From 0f2350c1179b5f3b320fd28514d46b606276610d Mon Sep 17 00:00:00 2001
From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com>
Date: Thu, 5 Oct 2023 19:22:37 +0200
Subject: [PATCH] Bump base in cabal-dev-scripts.cabal (backport #9303) (#9311)

* Bump base in cabal-dev-scripts.cabal

Bump base in cabal-dev-scripts.cabal. We are now using GHC 9.4.7 in CI, which ships with base 4.17.2.0. I am bumping all the way to <4.19 after testing everything compiles with GHC 9.6.3 (base-4.18.1.0).

(cherry picked from commit 033e8e04e17b67630ce8362dc067ad2fcd16cec6)

* Avoid OverloadedStrings when it causes troubles

(cherry picked from commit dc08acb9cad0d900fe48da520dedf2a8b5fc9702)

# Conflicts:
#	Cabal-syntax/src/Distribution/Fields/Parser.hs

* doctest: provide a separate project file without -Werror (fix #9307)

This became necessary after an upgrade to GHC 9.4, which, apparently,
has a subtle change in how -W/-w-related things get interpreted.

(cherry picked from commit ccce7c3bfb709378bb708336f660d5615f078041)

* fixup! resolve a conflict

---------

Co-authored-by: Andrea Bedini <andrea.bedini@tweag.io>
Co-authored-by: Artem Pelenitsyn <a.pelenitsyn@gmail.com>
---
 .../src/Distribution/Fields/Parser.hs         |  3 +++
 .../src/Distribution/InstalledPackageInfo.hs  |  5 +---
 .../src/Distribution/Types/Dependency.hs      |  8 +++----
 Makefile                                      |  4 ++--
 cabal-dev-scripts/cabal-dev-scripts.cabal     |  4 ++--
 cabal.project.doctest                         | 24 +++++++++++++++++++
 6 files changed, 36 insertions(+), 12 deletions(-)
 create mode 100644 cabal.project.doctest

diff --git a/Cabal-syntax/src/Distribution/Fields/Parser.hs b/Cabal-syntax/src/Distribution/Fields/Parser.hs
index 9061117b04..a72ac35a9e 100644
--- a/Cabal-syntax/src/Distribution/Fields/Parser.hs
+++ b/Cabal-syntax/src/Distribution/Fields/Parser.hs
@@ -47,6 +47,9 @@ import qualified Data.Text.Encoding       as T
 import qualified Data.Text.Encoding.Error as T
 #endif
 
+-- $setup
+-- >>> import Data.Either (isLeft)
+
 -- | The 'LexState'' (with a prime) is an instance of parsec's 'Stream'
 -- wrapped around lexer's 'LexState' (without a prime)
 data LexState' = LexState' !LexState (LToken, LexState')
diff --git a/Cabal-syntax/src/Distribution/InstalledPackageInfo.hs b/Cabal-syntax/src/Distribution/InstalledPackageInfo.hs
index 54a3fed6fc..6e4bd78533 100644
--- a/Cabal-syntax/src/Distribution/InstalledPackageInfo.hs
+++ b/Cabal-syntax/src/Distribution/InstalledPackageInfo.hs
@@ -62,9 +62,6 @@ import qualified Text.PrettyPrint    as Disp
 import Distribution.Types.InstalledPackageInfo
 import Distribution.Types.InstalledPackageInfo.FieldGrammar
 
--- $setup
--- >>> :set -XOverloadedStrings
-
 installedComponentId :: InstalledPackageInfo -> ComponentId
 installedComponentId ipi =
     case unComponentId (installedComponentId_ ipi) of
@@ -127,7 +124,7 @@ showFullInstalledPackageInfo = P.showFields (const NoComment) . prettyFieldGramm
 
 -- |
 --
--- >>> let ipi = emptyInstalledPackageInfo { maintainer = "Tester" }
+-- >>> let ipi = emptyInstalledPackageInfo { maintainer = fromString "Tester" }
 -- >>> fmap ($ ipi) $ showInstalledPackageInfoField "maintainer"
 -- Just "maintainer: Tester"
 showInstalledPackageInfoField :: String -> Maybe (InstalledPackageInfo -> String)
diff --git a/Cabal-syntax/src/Distribution/Types/Dependency.hs b/Cabal-syntax/src/Distribution/Types/Dependency.hs
index bfdc78cd06..74fde6398a 100644
--- a/Cabal-syntax/src/Distribution/Types/Dependency.hs
+++ b/Cabal-syntax/src/Distribution/Types/Dependency.hs
@@ -77,16 +77,16 @@ instance NFData Dependency where rnf = genericRnf
 
 -- |
 --
--- >>> prettyShow $ Dependency "pkg" anyVersion mainLibSet
+-- >>> prettyShow $ Dependency (mkPackageName "pkg") anyVersion mainLibSet
 -- "pkg"
 --
--- >>> prettyShow $ Dependency "pkg" anyVersion $ NES.insert (LSubLibName "sublib") mainLibSet
+-- >>> prettyShow $ Dependency (mkPackageName "pkg") anyVersion $ NES.insert (LSubLibName $ mkUnqualComponentName "sublib") mainLibSet
 -- "pkg:{pkg, sublib}"
 --
--- >>> prettyShow $ Dependency "pkg" anyVersion $ NES.singleton (LSubLibName "sublib")
+-- >>> prettyShow $ Dependency (mkPackageName "pkg") anyVersion $ NES.singleton (LSubLibName $ mkUnqualComponentName "sublib")
 -- "pkg:sublib"
 --
--- >>> prettyShow $ Dependency "pkg" anyVersion $ NES.insert (LSubLibName "sublib-b") $ NES.singleton (LSubLibName "sublib-a")
+-- >>> prettyShow $ Dependency (mkPackageName "pkg") anyVersion $ NES.insert (LSubLibName $ mkUnqualComponentName "sublib-b") $ NES.singleton (LSubLibName $ mkUnqualComponentName "sublib-a")
 -- "pkg:{sublib-a, sublib-b}"
 --
 instance Pretty Dependency where
diff --git a/Makefile b/Makefile
index 40f213eb49..3e6a43fed6 100644
--- a/Makefile
+++ b/Makefile
@@ -81,8 +81,8 @@ ghcid-cli :
 #       https://github.com/haskell/cabal/issues/8734
 #       Just as well, cabal-install(-solver) doctests (the target below) bitrotted and need some care.
 doctest :
-	cabal repl --with-ghc=doctest --build-depends=QuickCheck --build-depends=template-haskell --repl-options="-w" --project-file="cabal.project.validate" Cabal-syntax
-	cabal repl --with-ghc=doctest --build-depends=QuickCheck --build-depends=template-haskell --repl-options="-w" --project-file="cabal.project.validate" Cabal
+	cabal repl --with-ghc=doctest --build-depends=QuickCheck --build-depends=template-haskell --repl-options="-w" --project-file="cabal.project.doctest" Cabal-syntax
+	cabal repl --with-ghc=doctest --build-depends=QuickCheck --build-depends=template-haskell --repl-options="-w" --project-file="cabal.project.doctest" Cabal
 
 
 # This is not run as part of validate.sh (we need hackage-security, which is tricky to get).
diff --git a/cabal-dev-scripts/cabal-dev-scripts.cabal b/cabal-dev-scripts/cabal-dev-scripts.cabal
index dcf40f8437..24e160eaa9 100644
--- a/cabal-dev-scripts/cabal-dev-scripts.cabal
+++ b/cabal-dev-scripts/cabal-dev-scripts.cabal
@@ -18,7 +18,7 @@ executable gen-spdx
   ghc-options:      -Wall
   build-depends:
     , aeson                 ^>=1.4.1.0 || ^>=1.5.2.0 || ^>=2.1.1.0
-    , base                  >=4.10     && <4.17
+    , base                  >=4.10     && <4.19
     , bytestring
     , containers
     , Diff                  ^>=0.4
@@ -35,7 +35,7 @@ executable gen-spdx-exc
   ghc-options:      -Wall
   build-depends:
     , aeson                 ^>=1.4.1.0 || ^>=1.5.2.0 || ^>=2.1.1.0
-    , base                  >=4.10     && <4.17
+    , base                  >=4.10     && <4.19
     , bytestring
     , containers
     , Diff                  ^>=0.4
diff --git a/cabal.project.doctest b/cabal.project.doctest
new file mode 100644
index 0000000000..dac9b0d88a
--- /dev/null
+++ b/cabal.project.doctest
@@ -0,0 +1,24 @@
+packages: Cabal-syntax/
+packages: Cabal/
+packages: cabal-testsuite/
+packages: cabal-install/
+packages: solver-benchmarks/
+
+packages: cabal-install-solver/
+packages: Cabal-QuickCheck/
+packages: Cabal-tree-diff
+packages: Cabal-described
+packages: Cabal-tests
+packages: cabal-benchmarks
+
+tests: True
+
+-- avoiding extra dependencies
+constraints: rere -rere-cfg
+constraints: these -assoc
+
+write-ghc-environment-files: never
+
+program-options
+  ghc-options: -fno-ignore-asserts
+
-- 
GitLab