Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package ghc-transformers-compat for 
openSUSE:Factory checked in at 2021-08-25 20:57:12
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-transformers-compat (Old)
 and      /work/SRC/openSUSE:Factory/.ghc-transformers-compat.new.1899 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "ghc-transformers-compat"

Wed Aug 25 20:57:12 2021 rev:16 rq:912639 version:0.7

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/ghc-transformers-compat/ghc-transformers-compat.changes
  2020-12-22 11:48:02.313938974 +0100
+++ 
/work/SRC/openSUSE:Factory/.ghc-transformers-compat.new.1899/ghc-transformers-compat.changes
        2021-08-25 20:58:17.401154748 +0200
@@ -1,0 +2,15 @@
+Tue Jul 27 07:52:46 UTC 2021 - [email protected]
+
+- Update transformers-compat to version 0.7.
+  0.7 [2021.07.25]
+  ----------------
+  * Backport changes from `transformers-0.6.*`:
+    * Remove the long-deprecated `selectToCont` function from
+      `Control.Monad.Trans.Select`.
+    * Backport various `Generic`, `Generic1`, and `Data` instances.
+    * Backport `handleE`, `tryE`, and `finallyE` to 
`Control.Monad.Trans.Except`.
+    * Backport explicit implementations of `(<$)`, `liftA2`, `(*>)`, and `(<*)`
+      for `Control.Applicative.Backwards`.
+    * Backport a lazier implementation of `(<*>)` for 
`Control.Applicative.Lift`.
+
+-------------------------------------------------------------------

Old:
----
  transformers-compat-0.6.6.tar.gz

New:
----
  transformers-compat-0.7.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ ghc-transformers-compat.spec ++++++
--- /var/tmp/diff_new_pack.IESTKF/_old  2021-08-25 20:58:17.989153976 +0200
+++ /var/tmp/diff_new_pack.IESTKF/_new  2021-08-25 20:58:17.993153971 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package ghc-transformers-compat
 #
-# Copyright (c) 2020 SUSE LLC
+# Copyright (c) 2021 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -18,7 +18,7 @@
 
 %global pkg_name transformers-compat
 Name:           ghc-%{pkg_name}
-Version:        0.6.6
+Version:        0.7
 Release:        0
 Summary:        A small compatibility shim for the transformers library
 License:        BSD-3-Clause

++++++ transformers-compat-0.6.6.tar.gz -> transformers-compat-0.7.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/transformers-compat-0.6.6/.travis.yml 
new/transformers-compat-0.7/.travis.yml
--- old/transformers-compat-0.6.6/.travis.yml   2001-09-09 03:46:40.000000000 
+0200
+++ new/transformers-compat-0.7/.travis.yml     1970-01-01 01:00:00.000000000 
+0100
@@ -1,202 +0,0 @@
-# This Travis job script has been generated by a script via
-#
-#   haskell-ci '--output=.travis.yml' '--config=cabal.haskell-ci' 
'cabal.project'
-#
-# To regenerate the script (for example after adjusting tested-with) run
-#
-#   haskell-ci regenerate
-#
-# For more information, see https://github.com/haskell-CI/haskell-ci
-#
-# version: 0.10
-#
-version: ~> 1.0
-language: c
-os: linux
-dist: xenial
-git:
-  # whether to recursively clone submodules
-  submodules: false
-notifications:
-  irc:
-    channels:
-      - irc.freenode.org#haskell-lens
-    skip_join: true
-    template:
-      - "\x0313transformers-compat\x03/\x0306%{branch}\x03 \x0314%{commit}\x03 
%{build_url} %{message}"
-cache:
-  directories:
-    - $HOME/.cabal/packages
-    - $HOME/.cabal/store
-    - $HOME/.hlint
-before_cache:
-  - rm -fv $CABALHOME/packages/hackage.haskell.org/build-reports.log
-  # remove files that are regenerated by 'cabal update'
-  - rm -fv $CABALHOME/packages/hackage.haskell.org/00-index.*
-  - rm -fv $CABALHOME/packages/hackage.haskell.org/*.json
-  - rm -fv $CABALHOME/packages/hackage.haskell.org/01-index.cache
-  - rm -fv $CABALHOME/packages/hackage.haskell.org/01-index.tar
-  - rm -fv $CABALHOME/packages/hackage.haskell.org/01-index.tar.idx
-  - rm -rfv $CABALHOME/packages/head.hackage
-jobs:
-  include:
-    - compiler: ghc-8.10.1
-      addons: {"apt":{"sources":[{"sourceline":"deb 
http://ppa.launchpad.net/hvr/ghc/ubuntu xenial 
main","key_url":"https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x063dab2bdc0b3f9fcebc378bff3aeacef6f88286"}],"packages":["ghc-8.10.1","cabal-install-3.2"]}}
-      os: linux
-    - compiler: ghc-8.8.3
-      addons: {"apt":{"sources":[{"sourceline":"deb 
http://ppa.launchpad.net/hvr/ghc/ubuntu xenial 
main","key_url":"https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x063dab2bdc0b3f9fcebc378bff3aeacef6f88286"}],"packages":["ghc-8.8.3","cabal-install-3.2"]}}
-      os: linux
-    - compiler: ghc-8.6.5
-      addons: {"apt":{"sources":[{"sourceline":"deb 
http://ppa.launchpad.net/hvr/ghc/ubuntu xenial 
main","key_url":"https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x063dab2bdc0b3f9fcebc378bff3aeacef6f88286"}],"packages":["ghc-8.6.5","cabal-install-3.2"]}}
-      os: linux
-    - compiler: ghc-8.4.4
-      addons: {"apt":{"sources":[{"sourceline":"deb 
http://ppa.launchpad.net/hvr/ghc/ubuntu xenial 
main","key_url":"https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x063dab2bdc0b3f9fcebc378bff3aeacef6f88286"}],"packages":["ghc-8.4.4","cabal-install-3.2"]}}
-      os: linux
-    - compiler: ghc-8.2.2
-      addons: {"apt":{"sources":[{"sourceline":"deb 
http://ppa.launchpad.net/hvr/ghc/ubuntu xenial 
main","key_url":"https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x063dab2bdc0b3f9fcebc378bff3aeacef6f88286"}],"packages":["ghc-8.2.2","cabal-install-3.2"]}}
-      os: linux
-    - compiler: ghc-8.0.2
-      addons: {"apt":{"sources":[{"sourceline":"deb 
http://ppa.launchpad.net/hvr/ghc/ubuntu xenial 
main","key_url":"https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x063dab2bdc0b3f9fcebc378bff3aeacef6f88286"}],"packages":["ghc-8.0.2","cabal-install-3.2"]}}
-      os: linux
-    - compiler: ghc-7.10.3
-      addons: {"apt":{"sources":[{"sourceline":"deb 
http://ppa.launchpad.net/hvr/ghc/ubuntu xenial 
main","key_url":"https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x063dab2bdc0b3f9fcebc378bff3aeacef6f88286"}],"packages":["ghc-7.10.3","cabal-install-3.2"]}}
-      os: linux
-    - compiler: ghc-7.8.4
-      addons: {"apt":{"sources":[{"sourceline":"deb 
http://ppa.launchpad.net/hvr/ghc/ubuntu xenial 
main","key_url":"https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x063dab2bdc0b3f9fcebc378bff3aeacef6f88286"}],"packages":["ghc-7.8.4","cabal-install-3.2"]}}
-      os: linux
-    - compiler: ghc-7.6.3
-      addons: {"apt":{"sources":[{"sourceline":"deb 
http://ppa.launchpad.net/hvr/ghc/ubuntu xenial 
main","key_url":"https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x063dab2bdc0b3f9fcebc378bff3aeacef6f88286"}],"packages":["ghc-7.6.3","cabal-install-3.2"]}}
-      os: linux
-    - compiler: ghc-7.4.2
-      addons: {"apt":{"sources":[{"sourceline":"deb 
http://ppa.launchpad.net/hvr/ghc/ubuntu xenial 
main","key_url":"https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x063dab2bdc0b3f9fcebc378bff3aeacef6f88286"}],"packages":["ghc-7.4.2","cabal-install-3.2"]}}
-      os: linux
-    - compiler: ghc-7.2.2
-      addons: {"apt":{"sources":[{"sourceline":"deb 
http://ppa.launchpad.net/hvr/ghc/ubuntu xenial 
main","key_url":"https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x063dab2bdc0b3f9fcebc378bff3aeacef6f88286"}],"packages":["ghc-7.2.2","cabal-install-3.2"]}}
-      os: linux
-    - compiler: ghc-7.0.4
-      addons: {"apt":{"sources":[{"sourceline":"deb 
http://ppa.launchpad.net/hvr/ghc/ubuntu xenial 
main","key_url":"https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x063dab2bdc0b3f9fcebc378bff3aeacef6f88286"}],"packages":["ghc-7.0.4","cabal-install-3.2"]}}
-      os: linux
-before_install:
-  - HC=$(echo "/opt/$CC/bin/ghc" | sed 's/-/\//')
-  - WITHCOMPILER="-w $HC"
-  - HADDOCK=$(echo "/opt/$CC/bin/haddock" | sed 's/-/\//')
-  - HCPKG="$HC-pkg"
-  - unset CC
-  - CABAL=/opt/ghc/bin/cabal
-  - CABALHOME=$HOME/.cabal
-  - export PATH="$CABALHOME/bin:$PATH"
-  - TOP=$(pwd)
-  - "HCNUMVER=$(${HC} --numeric-version|perl -ne 
'/^(\\d+)\\.(\\d+)\\.(\\d+)(\\.(\\d+))?$/; print(10000 * $1 + 100 * $2 + ($3 == 
0 ? $5 != 1 : $3))')"
-  - echo $HCNUMVER
-  - CABAL="$CABAL -vnormal+nowrap"
-  - set -o pipefail
-  - TEST=--enable-tests
-  - BENCH=--enable-benchmarks
-  - HEADHACKAGE=false
-  - rm -f $CABALHOME/config
-  - |
-    echo "verbose: normal +nowrap +markoutput"          >> $CABALHOME/config
-    echo "remote-build-reporting: anonymous"            >> $CABALHOME/config
-    echo "write-ghc-environment-files: always"          >> $CABALHOME/config
-    echo "remote-repo-cache: $CABALHOME/packages"       >> $CABALHOME/config
-    echo "logs-dir:          $CABALHOME/logs"           >> $CABALHOME/config
-    echo "world-file:        $CABALHOME/world"          >> $CABALHOME/config
-    echo "extra-prog-path:   $CABALHOME/bin"            >> $CABALHOME/config
-    echo "symlink-bindir:    $CABALHOME/bin"            >> $CABALHOME/config
-    echo "installdir:        $CABALHOME/bin"            >> $CABALHOME/config
-    echo "build-summary:     $CABALHOME/logs/build.log" >> $CABALHOME/config
-    echo "store-dir:         $CABALHOME/store"          >> $CABALHOME/config
-    echo "install-dirs user"                            >> $CABALHOME/config
-    echo "  prefix: $CABALHOME"                         >> $CABALHOME/config
-    echo "repository hackage.haskell.org"               >> $CABALHOME/config
-    echo "  url: http://hackage.haskell.org/";           >> $CABALHOME/config
-install:
-  - ${CABAL} --version
-  - echo "$(${HC} --version) [$(${HC} --print-project-git-commit-id 2> 
/dev/null || echo '?')]"
-  - "echo 'jobs: 2' >> $CABALHOME/config"
-  - |
-    echo "program-default-options"                >> $CABALHOME/config
-    echo "  ghc-options: $GHCJOBS +RTS -M6G -RTS" >> $CABALHOME/config
-  - cat $CABALHOME/config
-  - rm -fv cabal.project cabal.project.local cabal.project.freeze
-  - travis_retry ${CABAL} v2-update -v
-  # Generate cabal.project
-  - rm -rf cabal.project cabal.project.local cabal.project.freeze
-  - touch cabal.project
-  - |
-    echo "packages: ." >> cabal.project
-    echo "packages: ./tests" >> cabal.project
-  - if [ $HCNUMVER -ge 80200 ] ; then echo 'package transformers-compat' >> 
cabal.project ; fi
-  - "if [ $HCNUMVER -ge 80200 ] ; then echo '  ghc-options: 
-Werror=missing-methods' >> cabal.project ; fi"
-  - if [ $HCNUMVER -ge 80200 ] ; then echo 'package transformers-compat-tests' 
>> cabal.project ; fi
-  - "if [ $HCNUMVER -ge 80200 ] ; then echo '  ghc-options: 
-Werror=missing-methods' >> cabal.project ; fi"
-  - |
-  - "for pkg in $($HCPKG list --simple-output); do echo $pkg | sed 
's/-[^-]*$//' | (grep -vE -- 
'^(transformers-compat|transformers-compat-tests)$' || true) | sed 
's/^/constraints: /' | sed 's/$/ installed/' >> cabal.project.local; done"
-  - cat cabal.project || true
-  - cat cabal.project.local || true
-  - if [ -f "./configure.ac" ]; then (cd "." && autoreconf -i); fi
-  - if [ -f "./tests/configure.ac" ]; then (cd "./tests" && autoreconf -i); fi
-  - ${CABAL} v2-freeze $WITHCOMPILER ${TEST} ${BENCH}
-  - "cat cabal.project.freeze | sed -E 's/^(constraints: *| *)//' | sed 
's/any.//'"
-  - rm  cabal.project.freeze
-script:
-  - DISTDIR=$(mktemp -d /tmp/dist-test.XXXX)
-  # Packaging...
-  - ${CABAL} v2-sdist all
-  # Unpacking...
-  - mv dist-newstyle/sdist/*.tar.gz ${DISTDIR}/
-  - cd ${DISTDIR} || false
-  - find . -maxdepth 1 -type f -name '*.tar.gz' -exec tar -xvf '{}' \;
-  - find . -maxdepth 1 -type f -name '*.tar.gz' -exec rm       '{}' \;
-  - PKGDIR_transformers_compat="$(find . -maxdepth 1 -type d -regex 
'.*/transformers-compat-[0-9.]*')"
-  - PKGDIR_transformers_compat_tests="$(find . -maxdepth 1 -type d -regex 
'.*/transformers-compat-tests-[0-9.]*')"
-  # Generate cabal.project
-  - rm -rf cabal.project cabal.project.local cabal.project.freeze
-  - touch cabal.project
-  - |
-    echo "packages: ${PKGDIR_transformers_compat}" >> cabal.project
-    echo "packages: ${PKGDIR_transformers_compat_tests}" >> cabal.project
-  - if [ $HCNUMVER -ge 80200 ] ; then echo 'package transformers-compat' >> 
cabal.project ; fi
-  - "if [ $HCNUMVER -ge 80200 ] ; then echo '  ghc-options: 
-Werror=missing-methods' >> cabal.project ; fi"
-  - if [ $HCNUMVER -ge 80200 ] ; then echo 'package transformers-compat-tests' 
>> cabal.project ; fi
-  - "if [ $HCNUMVER -ge 80200 ] ; then echo '  ghc-options: 
-Werror=missing-methods' >> cabal.project ; fi"
-  - |
-  - "for pkg in $($HCPKG list --simple-output); do echo $pkg | sed 
's/-[^-]*$//' | (grep -vE -- 
'^(transformers-compat|transformers-compat-tests)$' || true) | sed 
's/^/constraints: /' | sed 's/$/ installed/' >> cabal.project.local; done"
-  - cat cabal.project || true
-  - cat cabal.project.local || true
-  # Building with tests and benchmarks...
-  # build & run tests, build benchmarks
-  - ${CABAL} v2-build $WITHCOMPILER ${TEST} ${BENCH} all
-  # Testing...
-  - ${CABAL} v2-test $WITHCOMPILER ${TEST} ${BENCH} all
-  # cabal check...
-  - (cd ${PKGDIR_transformers_compat} && ${CABAL} -vnormal check)
-  - (cd ${PKGDIR_transformers_compat_tests} && ${CABAL} -vnormal check)
-  # haddock...
-  - ${CABAL} v2-haddock $WITHCOMPILER --with-haddock $HADDOCK ${TEST} ${BENCH} 
all
-  # Building without installed constraints for packages in global-db...
-  - rm -f cabal.project.local
-  - ${CABAL} v2-build $WITHCOMPILER --disable-tests --disable-benchmarks all
-  # Constraint sets
-  - rm -rf cabal.project.local
-  # Constraint set no-mtl
-  - ${CABAL} v2-build $WITHCOMPILER --disable-tests --disable-benchmarks 
--constraint='transformers-compat -mtl' all
-  # Constraint set no-generic-deriving
-  - ${CABAL} v2-build $WITHCOMPILER --disable-tests --disable-benchmarks 
--constraint='transformers-compat -generic-deriving' all
-  # Constraint set no-mtl-no-generic-deriving
-  - ${CABAL} v2-build $WITHCOMPILER --disable-tests --disable-benchmarks 
--constraint='transformers-compat -generic-deriving' 
--constraint='tranformers-compat -mtl' all
-  # Constraint set two
-  - if [ $HCNUMVER -lt 71000 ] ; then ${CABAL} v2-build $WITHCOMPILER 
--disable-tests --disable-benchmarks --constraint='transformers-compat +two' 
all ; fi
-  # Constraint set three
-  - if [ $HCNUMVER -lt 71000 ] ; then ${CABAL} v2-build $WITHCOMPILER 
--disable-tests --disable-benchmarks --constraint='transformers-compat +three' 
all ; fi
-  # Constraint set four
-  - if [ $HCNUMVER -lt 80000 ] ; then ${CABAL} v2-build $WITHCOMPILER 
--disable-tests --disable-benchmarks --constraint='transformers-compat +four' 
all ; fi
-  # Constraint set five
-  - if [ $HCNUMVER -lt 80400 ] ; then ${CABAL} v2-build $WITHCOMPILER 
--disable-tests --disable-benchmarks --constraint='transformers-compat +five' 
all ; fi
-  # Constraint set transformers-installed
-  - if [ $HCNUMVER -ge 70800 ] ; then ${CABAL} v2-build $WITHCOMPILER 
--disable-tests --disable-benchmarks --constraint='transformers installed' all 
; fi
-  # Constraint set transformers-newer
-  - if [ $HCNUMVER -lt 80600 ] ; then ${CABAL} v2-build $WITHCOMPILER 
--disable-tests --disable-benchmarks --constraint='transformers >=0.5.5.0' all 
; fi
-
-# REGENDATA 
("0.10",["--output=.travis.yml","--config=cabal.haskell-ci","cabal.project"])
-# EOF
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/transformers-compat-0.6.6/0.2/Control/Applicative/Backwards.hs 
new/transformers-compat-0.7/0.2/Control/Applicative/Backwards.hs
--- old/transformers-compat-0.6.6/0.2/Control/Applicative/Backwards.hs  
2001-09-09 03:46:40.000000000 +0200
+++ new/transformers-compat-0.7/0.2/Control/Applicative/Backwards.hs    
2001-09-09 03:46:40.000000000 +0200
@@ -1,6 +1,8 @@
 {-# LANGUAGE CPP #-}
 
 #ifndef HASKELL98
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE TypeOperators #-}
 # if __GLASGOW_HASKELL__ >= 704
 {-# LANGUAGE Safe #-}
 # elif __GLASGOW_HASKELL__ >= 702
@@ -33,10 +35,51 @@
 import Data.Foldable
 import Data.Traversable
 
+#ifndef HASKELL98
+# ifdef GENERIC_DERIVING
+import Generics.Deriving.Base
+# elif __GLASGOW_HASKELL__ >= 702
+import GHC.Generics
+# endif
+#endif
+
 -- | The same functor, but with an 'Applicative' instance that performs
 -- actions in the reverse order.
 newtype Backwards f a = Backwards { forwards :: f a }
 
+#ifndef HASKELL98
+# if __GLASGOW_HASKELL__ >= 702 || defined(GENERIC_DERIVING)
+-- Generic(1) instances for Backwards
+instance Generic (Backwards f a) where
+  type Rep (Backwards f a) = D1 D1'Backwards (C1 C1_0'Backwards (S1 
S1_0_0'Backwards (Rec0 (f a))))
+  from (Backwards x) = M1 (M1 (M1 (K1 x)))
+  to (M1 (M1 (M1 (K1 x)))) = Backwards x
+
+instance Generic1 (Backwards f) where
+  type Rep1 (Backwards f) = D1 D1'Backwards (C1 C1_0'Backwards (S1 
S1_0_0'Backwards (Rec1 f)))
+  from1 (Backwards x) = M1 (M1 (M1 (Rec1 x)))
+  to1 (M1 (M1 (M1 x))) = Backwards (unRec1 x)
+
+data D1'Backwards
+data C1_0'Backwards
+data S1_0_0'Backwards
+
+instance Datatype D1'Backwards where
+  datatypeName _ = "Backwards"
+  moduleName _ = "Control.Applicative.Backwards"
+#  if MIN_VERSION_base(4,7,0)
+  isNewtype _ = True
+#  endif
+
+instance Constructor C1_0'Backwards where
+  conName _ = "Backwards"
+  conIsRecord _ = True
+
+instance Selector S1_0_0'Backwards where
+  selName _ = "forwards"
+# endif
+#endif
+
 instance (Eq1 f) => Eq1 (Backwards f) where
     liftEq eq (Backwards x) (Backwards y) = liftEq eq x y
     {-# INLINE liftEq #-}
@@ -62,6 +105,8 @@
 instance (Functor f) => Functor (Backwards f) where
     fmap f (Backwards a) = Backwards (fmap f a)
     {-# INLINE fmap #-}
+    x <$ Backwards a = Backwards (x <$ a)
+    {-# INLINE (<$) #-}
 
 -- | Apply @f@-actions in the reverse order.
 instance (Applicative f) => Applicative (Backwards f) where
@@ -69,6 +114,16 @@
     {-# INLINE pure #-}
     Backwards f <*> Backwards a = Backwards (a <**> f)
     {-# INLINE (<*>) #-}
+#if MIN_VERSION_base(4,10,0)
+    liftA2 f (Backwards m) (Backwards n) = Backwards $ liftA2 (flip f) n m
+    {-# INLINE liftA2 #-}
+#endif
+#if MIN_VERSION_base(4,2,0)
+    Backwards xs *> Backwards ys = Backwards (ys <* xs)
+    {-# INLINE (*>) #-}
+    Backwards ys <* Backwards xs = Backwards (xs *> ys)
+    {-# INLINE (<*) #-}
+#endif
 
 -- | Try alternatives in the same order as @f@.
 instance (Alternative f) => Alternative (Backwards f) where
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/transformers-compat-0.6.6/0.2/Control/Applicative/Lift.hs 
new/transformers-compat-0.7/0.2/Control/Applicative/Lift.hs
--- old/transformers-compat-0.6.6/0.2/Control/Applicative/Lift.hs       
2001-09-09 03:46:40.000000000 +0200
+++ new/transformers-compat-0.7/0.2/Control/Applicative/Lift.hs 2001-09-09 
03:46:40.000000000 +0200
@@ -1,6 +1,8 @@
 {-# LANGUAGE CPP #-}
 
 #ifndef HASKELL98
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE TypeOperators #-}
 # if __GLASGOW_HASKELL__ >= 704
 {-# LANGUAGE Safe #-}
 # elif __GLASGOW_HASKELL__ >= 702
@@ -42,10 +44,51 @@
 import Data.Monoid (Monoid(..))
 import Data.Traversable (Traversable(traverse))
 
+#ifndef HASKELL98
+# ifdef GENERIC_DERIVING
+import Generics.Deriving.Base
+# elif __GLASGOW_HASKELL__ >= 702
+import GHC.Generics
+# endif
+#endif
+
 -- | Applicative functor formed by adding pure computations to a given
 -- applicative functor.
 data Lift f a = Pure a | Other (f a)
 
+#ifndef HASKELL98
+# if __GLASGOW_HASKELL__ >= 702 || defined(GENERIC_DERIVING)
+-- Generic(1) instances for Lift
+instance Generic (Lift f a) where
+  type Rep (Lift f a) = D1 D1'Lift (C1 C1_0'Lift (S1 NoSelector (Rec0 a)) :+: 
C1 C1_1'Lift (S1 NoSelector (Rec0 (f a))))
+  from (Pure x) = M1 (L1 (M1 (M1 (K1 x))))
+  from (Other x) = M1 (R1 (M1 (M1 (K1 x))))
+  to (M1 (L1 (M1 (M1 (K1 x))))) = Pure x
+  to (M1 (R1 (M1 (M1 (K1 x))))) = Other x
+
+instance Generic1 (Lift f) where
+  type Rep1 (Lift f) = D1 D1'Lift (C1 C1_0'Lift (S1 NoSelector Par1) :+: C1 
C1_1'Lift (S1 NoSelector (Rec1 f)))
+  from1 (Pure x) = M1 (L1 (M1 (M1 (Par1 x))))
+  from1 (Other x) = M1 (R1 (M1 (M1 (Rec1 x))))
+  to1 (M1 (L1 (M1 (M1 x)))) = Pure (unPar1 x)
+  to1 (M1 (R1 (M1 (M1 x)))) = Other (unRec1 x)
+
+instance Datatype D1'Lift where
+  datatypeName _ = "Lift"
+  moduleName _ = "Control.Applicative.Lift"
+
+instance Constructor C1_0'Lift where
+  conName _ = "Pure"
+
+instance Constructor C1_1'Lift where
+  conName _ = "Other"
+
+data D1'Lift
+data C1_0'Lift
+data C1_1'Lift
+# endif
+#endif
+
 instance (Eq1 f) => Eq1 (Lift f) where
     liftEq eq (Pure x1) (Pure x2) = eq x1 x2
     liftEq _ (Pure _) (Other _) = False
@@ -94,10 +137,8 @@
 instance (Applicative f) => Applicative (Lift f) where
     pure = Pure
     {-# INLINE pure #-}
-    Pure f <*> Pure x = Pure (f x)
-    Pure f <*> Other y = Other (f <$> y)
-    Other f <*> Pure x = Other (($ x) <$> f)
-    Other f <*> Other y = Other (f <*> y)
+    Pure f <*> ax = f <$> ax
+    Other f <*> ax = Other (f <*> unLift ax)
     {-# INLINE (<*>) #-}
 
 -- | A combination is 'Pure' only either part is.
@@ -134,8 +175,9 @@
 
 -- | An applicative functor that collects a monoid (e.g. lists) of errors.
 -- A sequence of computations fails if any of its components do, but
--- unlike monads made with 'ExceptT' from "Control.Monad.Trans.Except",
--- these computations continue after an error, collecting all the errors.
+-- unlike monads made with 'Control.Monad.Trans.Except.ExceptT' from
+-- "Control.Monad.Trans.Except", these computations continue after an
+-- error, collecting all the errors.
 --
 -- * @'pure' f '<*>' 'pure' x = 'pure' (f x)@
 --
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/transformers-compat-0.6.6/0.2/Data/Functor/Reverse.hs 
new/transformers-compat-0.7/0.2/Data/Functor/Reverse.hs
--- old/transformers-compat-0.6.6/0.2/Data/Functor/Reverse.hs   2001-09-09 
03:46:40.000000000 +0200
+++ new/transformers-compat-0.7/0.2/Data/Functor/Reverse.hs     2001-09-09 
03:46:40.000000000 +0200
@@ -1,6 +1,8 @@
 {-# LANGUAGE CPP #-}
 
 #ifndef HASKELL98
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE TypeOperators #-}
 # if __GLASGOW_HASKELL__ >= 704
 {-# LANGUAGE Safe #-}
 # elif __GLASGOW_HASKELL__ >= 702
@@ -40,10 +42,51 @@
 import Data.Traversable
 import Data.Monoid
 
+#ifndef HASKELL98
+# ifdef GENERIC_DERIVING
+import Generics.Deriving.Base
+# elif __GLASGOW_HASKELL__ >= 702
+import GHC.Generics
+# endif
+#endif
+
 -- | The same functor, but with 'Foldable' and 'Traversable' instances
 -- that process the elements in the reverse order.
 newtype Reverse f a = Reverse { getReverse :: f a }
 
+#ifndef HASKELL98
+# if __GLASGOW_HASKELL__ >= 702 || defined(GENERIC_DERIVING)
+-- Generic(1) instances for Reverse
+instance Generic (Reverse f a) where
+  type Rep (Reverse f a) = D1 D1'Reverse (C1 C1_0'Reverse (S1 S1_0_0'Reverse 
(Rec0 (f a))))
+  from (Reverse x) = M1 (M1 (M1 (K1 x)))
+  to (M1 (M1 (M1 (K1 x)))) = Reverse x
+
+instance Generic1 (Reverse f) where
+  type Rep1 (Reverse f) = D1 D1'Reverse (C1 C1_0'Reverse (S1 S1_0_0'Reverse 
(Rec1 f)))
+  from1 (Reverse x) = M1 (M1 (M1 (Rec1 x)))
+  to1 (M1 (M1 (M1 x))) = Reverse (unRec1 x)
+
+instance Datatype D1'Reverse where
+  datatypeName _ = "Reverse"
+  moduleName _ = "Data.Functor.Reverse"
+#  if MIN_VERSION_base(4,7,0)
+  isNewtype _ = True
+#  endif
+
+instance Constructor C1_0'Reverse where
+  conName _ = "Reverse"
+  conIsRecord _ = True
+
+instance Selector S1_0_0'Reverse where
+  selName _ = "getReverse"
+
+data D1'Reverse
+data C1_0'Reverse
+data S1_0_0'Reverse
+# endif
+#endif
+
 instance (Eq1 f) => Eq1 (Reverse f) where
     liftEq eq (Reverse x) (Reverse y) = liftEq eq x y
     {-# INLINE liftEq #-}
@@ -90,8 +133,10 @@
     {-# INLINE return #-}
     m >>= f = Reverse (getReverse m >>= getReverse . f)
     {-# INLINE (>>=) #-}
+#if !(MIN_VERSION_base(4,13,0))
     fail msg = Reverse (fail msg)
     {-# INLINE fail #-}
+#endif
 
 -- | Derived instance.
 instance (MonadPlus m) => MonadPlus (Reverse m) where
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/transformers-compat-0.6.6/0.3/Control/Monad/Trans/Except.hs 
new/transformers-compat-0.7/0.3/Control/Monad/Trans/Except.hs
--- old/transformers-compat-0.6.6/0.3/Control/Monad/Trans/Except.hs     
2001-09-09 03:46:40.000000000 +0200
+++ new/transformers-compat-0.7/0.3/Control/Monad/Trans/Except.hs       
2001-09-09 03:46:40.000000000 +0200
@@ -8,14 +8,18 @@
 #define MIN_VERSION_mtl(x,y,z) 1
 #endif
 
-#ifdef MTL
+#ifndef HASKELL98
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE TypeOperators #-}
+# ifdef MTL
 {-# LANGUAGE FlexibleInstances #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE UndecidableInstances #-}
-# if __GLASGOW_HASKELL__ >= 704
+#  if __GLASGOW_HASKELL__ >= 704
 {-# LANGUAGE Safe #-}
-# elif __GLASGOW_HASKELL__ >= 702
+#  elif __GLASGOW_HASKELL__ >= 702
 {-# LANGUAGE Trustworthy #-}
+#  endif
 # endif
 #endif
 -----------------------------------------------------------------------------
@@ -54,6 +58,9 @@
     -- * Exception operations
     throwE,
     catchE,
+    handleE,
+    tryE,
+    finallyE,
     -- * Lifting other operations
     liftCallCC,
     liftListen,
@@ -86,6 +93,14 @@
 import Data.Monoid
 import Data.Traversable (Traversable(traverse))
 
+#ifndef HASKELL98
+# ifdef GENERIC_DERIVING
+import Generics.Deriving.Base
+# elif __GLASGOW_HASKELL__ >= 702
+import GHC.Generics
+# endif
+#endif
+
 -- | The parameterizable exception monad.
 --
 -- Computations are either exceptions or normal values.
@@ -134,6 +149,34 @@
 -- first exception.
 newtype ExceptT e m a = ExceptT { runExceptT :: m (Either e a) }
 
+#ifndef HASKELL98
+# if __GLASGOW_HASKELL__ >= 702 || defined(GENERIC_DERIVING)
+-- Generic(1) instances for ExceptT
+instance Generic (ExceptT e m a) where
+  type Rep (ExceptT e m a) = D1 D1'ExceptT (C1 C1_0'ExceptT (S1 NoSelector 
(Rec0 (m (Either e a)))))
+  from (ExceptT x) = M1 (M1 (M1 (K1 x)))
+  to (M1 (M1 (M1 (K1 x)))) = ExceptT x
+
+instance Functor m => Generic1 (ExceptT e m) where
+  type Rep1 (ExceptT e m) = D1 D1'ExceptT (C1 C1_0'ExceptT (S1 NoSelector (m 
:.: Rec1 (Either e))))
+  from1 (ExceptT x) = M1 (M1 (M1 ((.) Comp1 (fmap Rec1) x)))
+  to1 (M1 (M1 (M1 x))) = ExceptT ((.) (fmap unRec1) unComp1 x)
+
+instance Datatype D1'ExceptT where
+  datatypeName _ = "ExceptT"
+  moduleName _ = "Control.Monad.Trans.Except"
+#  if MIN_VERSION_base(4,7,0)
+  isNewtype _ = True
+#  endif
+
+instance Constructor C1_0'ExceptT where
+  conName _ = "ExceptT"
+
+data D1'ExceptT
+data C1_0'ExceptT
+# endif
+#endif
+
 instance (Eq e, Eq1 m) => Eq1 (ExceptT e m) where
     liftEq eq (ExceptT x) (ExceptT y) = liftEq (liftEq eq) x y
     {-# INLINE liftEq #-}
@@ -227,8 +270,10 @@
             Left e -> return (Left e)
             Right x -> runExceptT (k x)
     {-# INLINE (>>=) #-}
+#if !(MIN_VERSION_base(4,13,0))
     fail = ExceptT . fail
     {-# INLINE fail #-}
+#endif
 
 instance (Fail.MonadFail m) => Fail.MonadFail (ExceptT e m) where
     fail = ExceptT . Fail.fail
@@ -289,6 +334,29 @@
         Right r -> return (Right r)
 {-# INLINE catchE #-}
 
+-- | The same as @'flip' 'catchE'@, which is useful in situations where
+-- the code for the handler is shorter.
+handleE :: Monad m => (e -> ExceptT e' m a) -> ExceptT e m a -> ExceptT e' m a
+handleE = flip catchE
+{-# INLINE handleE #-}
+
+-- | Similar to 'catchE', but returns an 'Either' result which is
+-- @('Right' a)@ if no exception was thown, or @('Left' ex)@ if an
+-- exception @ex@ was thrown.
+tryE :: Monad m => ExceptT e m a -> ExceptT e m (Either e a)
+tryE m = catchE (liftM Right m) (return . Left)
+{-# INLINE tryE #-}
+
+-- | @'finallyE' a b@ executes computation @a@ followed by computation @b@,
+-- even if @a@ exits early by throwing an exception.  In the latter case,
+-- the exception is re-thrown after @b@ has been executed.
+finallyE :: Monad m => ExceptT e m a -> ExceptT e m () -> ExceptT e m a
+finallyE m closer = do
+    res <- tryE m
+    closer
+    either throwE return res
+{-# INLINE finallyE #-}
+
 -- | Lift a @callCC@ operation to the new monad.
 liftCallCC :: CallCC m (Either e a) (Either e b) -> CallCC (ExceptT e m) a b
 liftCallCC callCC f = ExceptT $
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/transformers-compat-0.6.6/0.5/Control/Monad/Trans/Accum.hs 
new/transformers-compat-0.7/0.5/Control/Monad/Trans/Accum.hs
--- old/transformers-compat-0.6.6/0.5/Control/Monad/Trans/Accum.hs      
2001-09-09 03:46:40.000000000 +0200
+++ new/transformers-compat-0.7/0.5/Control/Monad/Trans/Accum.hs        
2001-09-09 03:46:40.000000000 +0200
@@ -3,11 +3,7 @@
 #ifndef HASKELL98
 {-# LANGUAGE DeriveDataTypeable #-}
 {-# LANGUAGE StandaloneDeriving #-}
-# if __GLASGOW_HASKELL__ >= 704
-{-# LANGUAGE Safe #-}
-# elif __GLASGOW_HASKELL__ >= 702
-{-# LANGUAGE Trustworthy #-}
-# endif
+{-# LANGUAGE TypeFamilies #-}
 # if __GLASGOW_HASKELL__ >= 706
 {-# LANGUAGE PolyKinds #-}
 # endif
@@ -15,6 +11,12 @@
 {-# LANGUAGE AutoDeriveTypeable #-}
 {-# LANGUAGE DataKinds #-}
 # endif
+# if __GLASGOW_HASKELL__ >= 710
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE Safe #-}
+# elif __GLASGOW_HASKELL__ >= 702
+{-# LANGUAGE Trustworthy #-}
+# endif
 #endif
 -----------------------------------------------------------------------------
 -- |
@@ -84,6 +86,14 @@
 import Data.Typeable
 #endif
 
+#ifndef HASKELL98
+# ifdef GENERIC_DERIVING
+import Generics.Deriving.Base
+# elif __GLASGOW_HASKELL__ >= 702
+import GHC.Generics
+# endif
+#endif
+
 -- ---------------------------------------------------------------------------
 -- | An accumulation monad parameterized by the type @w@ of output to 
accumulate.
 --
@@ -144,6 +154,30 @@
 --  * a writer monad transformer with the extra ability to read all previous 
output.
 newtype AccumT w m a = AccumT (w -> m (a, w))
 
+#ifndef HASKELL98
+# if __GLASGOW_HASKELL__ >= 710
+deriving instance Generic (AccumT w m a)
+# elif __GLASGOW_HASKELL__ >= 702 || defined(GENERIC_DERIVING)
+instance Generic (AccumT w m a) where
+  type Rep (AccumT w m a) = D1 D1'AccumT (C1 C1_0'AccumT (S1 NoSelector (Rec0 
(w -> m (a, w)))))
+  from (AccumT x) = M1 (M1 (M1 (K1 x)))
+  to (M1 (M1 (M1 (K1 x)))) = AccumT x
+
+instance Datatype D1'AccumT where
+  datatypeName _ = "AccumT"
+  moduleName _ = "Control.Monad.Trans.Accum"
+#  if MIN_VERSION_base(4,7,0)
+  isNewtype _ = True
+#  endif
+
+instance Constructor C1_0'AccumT where
+  conName _ = "AccumT"
+
+data D1'AccumT
+data C1_0'AccumT
+# endif
+#endif
+
 -- | Unwrap an accumulation computation.
 runAccumT :: AccumT w m a -> w -> m (a, w)
 runAccumT (AccumT f) = f
@@ -205,8 +239,10 @@
         ~(b, w'') <- runAccumT (k a) (w `mappend` w')
         return (b, w' `mappend` w'')
     {-# INLINE (>>=) #-}
+#if !(MIN_VERSION_base(4,13,0))
     fail msg = AccumT $ const (fail msg)
     {-# INLINE fail #-}
+#endif
 
 instance (Monoid w, Functor m, Fail.MonadFail m) => Fail.MonadFail (AccumT w 
m) where
     fail msg = AccumT $ const (Fail.fail msg)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/transformers-compat-0.6.6/0.5/Control/Monad/Trans/Select.hs 
new/transformers-compat-0.7/0.5/Control/Monad/Trans/Select.hs
--- old/transformers-compat-0.6.6/0.5/Control/Monad/Trans/Select.hs     
2001-09-09 03:46:40.000000000 +0200
+++ new/transformers-compat-0.7/0.5/Control/Monad/Trans/Select.hs       
2001-09-09 03:46:40.000000000 +0200
@@ -3,11 +3,7 @@
 # ifndef HASKELL98
 {-# LANGUAGE DeriveDataTypeable #-}
 {-# LANGUAGE StandaloneDeriving #-}
-# if __GLASGOW_HASKELL__ >= 704
-{-# LANGUAGE Safe #-}
-# elif __GLASGOW_HASKELL__ >= 702
-{-# LANGUAGE Trustworthy #-}
-# endif
+{-# LANGUAGE TypeFamilies #-}
 # if __GLASGOW_HASKELL__ >= 706
 {-# LANGUAGE PolyKinds #-}
 # endif
@@ -15,6 +11,12 @@
 {-# LANGUAGE AutoDeriveTypeable #-}
 {-# LANGUAGE DataKinds #-}
 # endif
+# if __GLASGOW_HASKELL__ >= 710
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE Safe #-}
+# elif __GLASGOW_HASKELL__ >= 702
+{-# LANGUAGE Trustworthy #-}
+# endif
 #endif
 -----------------------------------------------------------------------------
 -- |
@@ -49,7 +51,6 @@
     mapSelectT,
     -- * Monad transformation
     selectToContT,
-    selectToCont,
     ) where
 
 import Control.Monad.IO.Class
@@ -65,6 +66,14 @@
 import Data.Typeable
 #endif
 
+#ifndef HASKELL98
+# ifdef GENERIC_DERIVING
+import Generics.Deriving.Base
+# elif __GLASGOW_HASKELL__ >= 702
+import GHC.Generics
+# endif
+#endif
+
 -- | Selection monad.
 type Select r = SelectT r Identity
 
@@ -85,6 +94,30 @@
 -- cannot be lifted through it.
 newtype SelectT r m a = SelectT ((a -> m r) -> m a)
 
+#ifndef HASKELL98
+# if __GLASGOW_HASKELL__ >= 710
+deriving instance Generic (SelectT r m a)
+# elif __GLASGOW_HASKELL__ >= 702 || defined(GENERIC_DERIVING)
+instance Generic (SelectT r m a) where
+  type Rep (SelectT r m a) = D1 D1'SelectT (C1 C1_0'SelectT (S1 NoSelector 
(Rec0 ((a -> m r) -> m a))))
+  from (SelectT x) = M1 (M1 (M1 (K1 x)))
+  to (M1 (M1 (M1 (K1 x)))) = SelectT x
+
+instance Datatype D1'SelectT where
+  datatypeName _ = "SelectT"
+  moduleName _ = "Control.Monad.Trans.Select"
+#  if MIN_VERSION_base(4,7,0)
+  isNewtype _ = True
+#  endif
+
+instance Constructor C1_0'SelectT where
+  conName _ = "SelectT"
+
+data D1'SelectT
+data C1_0'SelectT
+# endif
+#endif
+
 -- | Runs a @SelectT@ computation with a function for evaluating answers
 -- to select a particular answer.  (The inverse of 'select'.)
 runSelectT :: SelectT r m a -> (a -> m r) -> m a
@@ -165,9 +198,3 @@
 -- | Convert a selection computation to a continuation-passing computation.
 selectToContT :: (Monad m) => SelectT r m a -> ContT r m a
 selectToContT (SelectT g) = ContT $ \ k -> g k >>= k
-{-# INLINE selectToCont #-}
-
--- | Deprecated name for 'selectToContT'.
-{-# DEPRECATED selectToCont "Use selectToContT instead" #-}
-selectToCont :: (Monad m) => SelectT r m a -> ContT r m a
-selectToCont = selectToContT
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/transformers-compat-0.6.6/CHANGELOG.markdown 
new/transformers-compat-0.7/CHANGELOG.markdown
--- old/transformers-compat-0.6.6/CHANGELOG.markdown    2001-09-09 
03:46:40.000000000 +0200
+++ new/transformers-compat-0.7/CHANGELOG.markdown      2001-09-09 
03:46:40.000000000 +0200
@@ -1,3 +1,14 @@
+0.7 [2021.07.25]
+----------------
+* Backport changes from `transformers-0.6.*`:
+  * Remove the long-deprecated `selectToCont` function from
+    `Control.Monad.Trans.Select`.
+  * Backport various `Generic`, `Generic1`, and `Data` instances.
+  * Backport `handleE`, `tryE`, and `finallyE` to `Control.Monad.Trans.Except`.
+  * Backport explicit implementations of `(<$)`, `liftA2`, `(*>)`, and `(<*)`
+    for `Control.Applicative.Backwards`.
+  * Backport a lazier implementation of `(<*>)` for `Control.Applicative.Lift`.
+
 0.6.6 [2020.09.30]
 ------------------
 * Add `FunctorClassesDefault`, an adapter newtype suitable for `DerivingVia`,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/transformers-compat-0.6.6/README.markdown 
new/transformers-compat-0.7/README.markdown
--- old/transformers-compat-0.6.6/README.markdown       2001-09-09 
03:46:40.000000000 +0200
+++ new/transformers-compat-0.7/README.markdown 2001-09-09 03:46:40.000000000 
+0200
@@ -1,7 +1,7 @@
 transformers-compat
 ===================
 
-[![Hackage](https://img.shields.io/hackage/v/transformers-compat.svg)](https://hackage.haskell.org/package/transformers-compat)
 [![Build 
Status](https://secure.travis-ci.org/ekmett/transformers-compat.png?branch=master)](http://travis-ci.org/ekmett/transformers-compat)
+[![Hackage](https://img.shields.io/hackage/v/transformers-compat.svg)](https://hackage.haskell.org/package/transformers-compat)
 [![Build 
Status](https://github.com/ekmett/transformers-compat/workflows/Haskell-CI/badge.svg)](https://github.com/ekmett/transformers-compat/actions?query=workflow%3AHaskell-CI)
 
 This provides a thin compatibility shim on top of transformers-0.2 to add the 
types that were added in transformers-0.3.
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/transformers-compat-0.6.6/src/Control/Monad/Trans/Instances.hs 
new/transformers-compat-0.7/src/Control/Monad/Trans/Instances.hs
--- old/transformers-compat-0.6.6/src/Control/Monad/Trans/Instances.hs  
2001-09-09 03:46:40.000000000 +0200
+++ new/transformers-compat-0.7/src/Control/Monad/Trans/Instances.hs    
2001-09-09 03:46:40.000000000 +0200
@@ -20,6 +20,10 @@
 # if __GLASGOW_HASKELL__ >= 708
 {-# LANGUAGE DataKinds #-}
 # endif
+
+# if __GLASGOW_HASKELL__ >= 800
+{-# LANGUAGE DeriveGeneric #-}
+# endif
 #endif
 
 {-# OPTIONS_GHC -fno-warn-deprecations #-}
@@ -52,10 +56,8 @@
 import           Control.Monad.Trans.Accum (AccumT(..))
 import           Control.Monad.Trans.Class (MonadTrans(..))
 import           Control.Monad.Trans.Cont (ContT(..))
-import           Control.Monad.Trans.Error (Error(..), ErrorT(..))
 import           Control.Monad.Trans.Except (ExceptT(..))
 import           Control.Monad.Trans.Identity (IdentityT(..))
-import           Control.Monad.Trans.List (ListT(..), mapListT)
 import           Control.Monad.Trans.Maybe (MaybeT(..))
 import qualified Control.Monad.Trans.RWS.Lazy as Lazy (RWST(..))
 import qualified Control.Monad.Trans.RWS.Strict as Strict (RWST(..))
@@ -86,6 +88,11 @@
 import           Data.Traversable (Traversable(..))
 import           Foreign (Storable(..), castPtr)
 
+#if !(MIN_VERSION_transformers(0,6,0))
+import           Control.Monad.Trans.Error (Error(..), ErrorT(..))
+import           Control.Monad.Trans.List (ListT(..), mapListT)
+#endif
+
 #if MIN_VERSION_base(4,4,0)
 import           Control.Monad.Zip (MonadZip(..))
 #endif
@@ -120,25 +127,12 @@
 
 #if !(MIN_VERSION_transformers(0,3,0))
 -- Foldable/Traversable instances
-instance (Foldable f) => Foldable (ErrorT e f) where
-    foldMap f (ErrorT a) = foldMap (either (const mempty) f) a
-
-instance (Traversable f) => Traversable (ErrorT e f) where
-    traverse f (ErrorT a) =
-        ErrorT <$> traverse (either (pure . Left) (fmap Right . f)) a
-
 instance (Foldable f) => Foldable (IdentityT f) where
     foldMap f (IdentityT a) = foldMap f a
 
 instance (Traversable f) => Traversable (IdentityT f) where
     traverse f (IdentityT a) = IdentityT <$> traverse f a
 
-instance (Foldable f) => Foldable (ListT f) where
-    foldMap f (ListT a) = foldMap (foldMap f) a
-
-instance (Traversable f) => Traversable (ListT f) where
-    traverse f (ListT a) = ListT <$> traverse (traverse f) a
-
 instance (Foldable f) => Foldable (MaybeT f) where
     foldMap f (MaybeT a) = foldMap (foldMap f) a
 
@@ -159,6 +153,21 @@
     traverse f = fmap Strict.WriterT . traverse f' . Strict.runWriterT where
        f' (a, b) = fmap (\ c -> (c, b)) (f a)
 
+# if !(MIN_VERSION_transformers(0,6,0))
+instance (Foldable f) => Foldable (ErrorT e f) where
+    foldMap f (ErrorT a) = foldMap (either (const mempty) f) a
+
+instance (Traversable f) => Traversable (ErrorT e f) where
+    traverse f (ErrorT a) =
+        ErrorT <$> traverse (either (pure . Left) (fmap Right . f)) a
+
+instance (Foldable f) => Foldable (ListT f) where
+    foldMap f (ListT a) = foldMap (foldMap f) a
+
+instance (Traversable f) => Traversable (ListT f) where
+    traverse f (ListT a) = ListT <$> traverse (traverse f) a
+# endif
+
 -- MonadFix instances for IdentityT and MaybeT
 instance (MonadFix m) => MonadFix (IdentityT m) where
     mfix f = IdentityT (mfix (runIdentityT . f))
@@ -219,17 +228,10 @@
     fail msg = ContT $ \ _ -> Fail.fail msg
     {-# INLINE fail #-}
 
-instance (Monad m, Error e) => Fail.MonadFail (ErrorT e m) where
-    fail msg = ErrorT $ return (Left (strMsg msg))
-
 instance (Fail.MonadFail m) => Fail.MonadFail (IdentityT m) where
     fail msg = IdentityT $ Fail.fail msg
     {-# INLINE fail #-}
 
-instance (Monad m) => Fail.MonadFail (ListT m) where
-    fail _ = ListT $ return []
-    {-# INLINE fail #-}
-
 instance (Monad m) => Fail.MonadFail (MaybeT m) where
     fail _ = MaybeT (return Nothing)
     {-# INLINE fail #-}
@@ -262,6 +264,15 @@
     fail msg = Strict.WriterT $ Fail.fail msg
     {-# INLINE fail #-}
 
+# if !(MIN_VERSION_transformers(0,6,0))
+instance (Monad m, Error e) => Fail.MonadFail (ErrorT e m) where
+    fail msg = ErrorT $ return (Left (strMsg msg))
+
+instance (Monad m) => Fail.MonadFail (ListT m) where
+    fail _ = ListT $ return []
+    {-# INLINE fail #-}
+# endif
+
 # if MIN_VERSION_transformers(0,4,0) && !(MIN_VERSION_base(4,9,0))
 instance (Fail.MonadFail m) => Fail.MonadFail (ExceptT e m) where
     fail = ExceptT . Fail.fail
@@ -290,9 +301,6 @@
 instance (MonadZip m) => MonadZip (IdentityT m) where
     mzipWith f (IdentityT a) (IdentityT b) = IdentityT (mzipWith f a b)
 
-instance (MonadZip m) => MonadZip (ListT m) where
-    mzipWith f (ListT a) (ListT b) = ListT $ mzipWith (zipWith f) a b
-
 instance (MonadZip m) => MonadZip (MaybeT m) where
     mzipWith f (MaybeT a) (MaybeT b) = MaybeT $ mzipWith (liftA2 f) a b
 
@@ -308,6 +316,11 @@
     mzipWith f (Strict.WriterT x) (Strict.WriterT y) = Strict.WriterT $
         mzipWith (\ (a, w) (b, w') -> (f a b, w `mappend` w')) x y
 
+#  if !(MIN_VERSION_transformers(0,6,0))
+instance (MonadZip m) => MonadZip (ListT m) where
+    mzipWith f (ListT a) (ListT b) = ListT $ mzipWith (zipWith f) a b
+#  endif
+
 #  if !(MIN_VERSION_base(4,8,0))
 instance MonadZip Identity where
     mzipWith f (Identity x) (Identity y) = Identity (f x y)
@@ -336,12 +349,9 @@
 -- Typeable instances
 #  if __GLASGOW_HASKELL__ >= 708 && __GLASGOW_HASKELL__ < 710
 deriving instance Typeable Backwards
-deriving instance Typeable Constant
 deriving instance Typeable ContT
-deriving instance Typeable ErrorT
 deriving instance Typeable IdentityT
 deriving instance Typeable Lift
-deriving instance Typeable ListT
 deriving instance Typeable MaybeT
 deriving instance Typeable MonadTrans
 deriving instance Typeable Lazy.RWST
@@ -350,6 +360,10 @@
 deriving instance Typeable Reverse
 deriving instance Typeable Lazy.StateT
 deriving instance Typeable Strict.StateT
+#   if !(MIN_VERSION_transformers(0,6,0))
+deriving instance Typeable ErrorT
+deriving instance Typeable ListT
+#   endif
 
 #   if !(MIN_VERSION_base(4,9,0))
 deriving instance Typeable Compose
@@ -605,11 +619,13 @@
     {-# INLINE (<>) #-}
 # endif
 
+# if !(MIN_VERSION_transformers(0,6,0))
 instance (MonadFix m) => MonadFix (ListT m) where
     mfix f = ListT $ mfix (runListT . f . head) >>= \ xs -> case xs of
         [] -> return []
         x:_ -> liftM (x:) (runListT (mfix (mapListT (liftM tail) . f)))
     {-# INLINE mfix #-}
+# endif
 #endif
 
 -- Generic(1) instances
@@ -749,4 +765,486 @@
 #  endif
 
 # endif
+
+# if !(MIN_VERSION_transformers(0,6,0))
+#  if __GLASGOW_HASKELL__ >= 708
+-- If we wanted to be 100% faithful to the original Data instance in
+-- transformers, we really ought to define an instance like:
+--
+--   instance (Data a, Typeable k, Typeable (b :: k)) => Data (Constant a b)
+--
+-- Unfortunately, this is not possible to do with a standalone-derived Data
+-- instance (see https://gitlab.haskell.org/ghc/ghc/-/issues/13327).
+-- For now, I've opted to just restrict the instance context slightly by using
+-- a `Data b` constraint. I'll wait for someone to complain about this before
+-- taking further action on it.
+deriving instance (Data a, Data b) => Data (Constant a b)
+#   if __GLASGOW_HASKELL__ < 710
+deriving instance Typeable Constant
+#   endif
+#  endif
+
+-- The use of GHC 8.0 in this CPP is a conservative lower bound for
+-- determining the earliest version of GHC that can derive Generic(1)
+-- instances for all data types without bugs. We might be able to pick
+-- an earlier GHC version for certain data types, but it doesn't seem
+-- worthwhile, given that we'll have to fall back on hand-written instances at
+-- some point anyway.
+#  if __GLASGOW_HASKELL__ >= 800
+
+deriving instance Generic  (Constant a b)
+deriving instance Generic1 (Constant a)
+
+deriving instance Generic (ContT r m a)
+
+deriving instance Generic  (IdentityT f a)
+deriving instance Generic1 (IdentityT f)
+
+deriving instance Generic (MaybeT m a)
+deriving instance Functor m => Generic1 (MaybeT m)
+
+deriving instance Generic (Lazy.RWST   r w s m a)
+deriving instance Generic (Strict.RWST r w s m a)
+
+deriving instance Generic  (ReaderT r m a)
+deriving instance Generic1 (ReaderT r m)
+
+deriving instance Generic (Lazy.StateT   s m a)
+deriving instance Generic (Strict.StateT s m a)
+
+deriving instance Generic (Lazy.WriterT   w m a)
+deriving instance Generic (Strict.WriterT w m a)
+
+#   if MIN_VERSION_transformers(0,3,0)
+deriving instance Generic  (Backwards f a)
+deriving instance Generic1 (Backwards f)
+
+deriving instance Generic  (Lift f a)
+deriving instance Generic1 (Lift f)
+
+deriving instance Generic  (Reverse f a)
+deriving instance Generic1 (Reverse f)
+#   endif
+
+#   if MIN_VERSION_transformers(0,4,0)
+deriving instance Generic (ExceptT e m a)
+deriving instance Functor m => Generic1 (ExceptT e m)
+#   endif
+
+#   if MIN_VERSION_transformers(0,5,3)
+deriving instance Generic (AccumT  w m a)
+deriving instance Generic (SelectT w m a)
+#   endif
+
+#  elif __GLASGOW_HASKELL__ >= 702 || defined(GENERIC_DERIVING)
+
+instance Generic (Constant a b) where
+  type Rep (Constant a b) = D1 D1'Constant (C1 C1_0'Constant (S1 
S1_0_0'Constant (Rec0 a)))
+  from (Constant x) = M1 (M1 (M1 (K1 x)))
+  to (M1 (M1 (M1 (K1 x)))) = Constant x
+
+instance Generic1 (Constant a) where
+  type Rep1 (Constant a) = D1 D1'Constant (C1 C1_0'Constant (S1 
S1_0_0'Constant (Rec0 a)))
+  from1 (Constant x) = M1 (M1 (M1 (K1 x)))
+  to1 (M1 (M1 (M1 x))) = Constant (unK1 x)
+
+instance Datatype D1'Constant where
+  datatypeName _ = "Constant"
+  moduleName _ = "Data.Functor.Constant"
+#    if MIN_VERSION_base(4,7,0)
+  isNewtype _ = True
+#    endif
+
+instance Constructor C1_0'Constant where
+  conName _ = "Constant"
+  conIsRecord _ = True
+
+instance Selector S1_0_0'Constant where
+  selName _ = "getConstant"
+
+data D1'Constant
+data C1_0'Constant
+data S1_0_0'Constant
+
+-----
+
+instance Generic (ContT r m a) where
+  type Rep (ContT r m a) = D1 D1'ContT (C1 C1_0'ContT (S1 S1_0_0'ContT (Rec0 
((a -> m r) -> m r))))
+  from (ContT x) = M1 (M1 (M1 (K1 x)))
+  to (M1 (M1 (M1 (K1 x)))) = ContT x
+
+instance Datatype D1'ContT where
+  datatypeName _ = "ContT"
+  moduleName _ = "Control.Monad.Trans.Cont"
+#    if MIN_VERSION_base(4,7,0)
+  isNewtype _ = True
+#    endif
+
+instance Constructor C1_0'ContT where
+  conName _ = "ContT"
+  conIsRecord _ = True
+
+instance Selector S1_0_0'ContT where
+  selName _ = "runContT"
+
+data D1'ContT
+data C1_0'ContT
+data S1_0_0'ContT
+
+-----
+
+instance Generic (IdentityT f a) where
+  type Rep (IdentityT f a) = D1 D1'IdentityT (C1 C1_0'IdentityT (S1 
S1_0_0'IdentityT (Rec0 (f a))))
+  from (IdentityT x) = M1 (M1 (M1 (K1 x)))
+  to (M1 (M1 (M1 (K1 x)))) = IdentityT x
+
+instance Generic1 (IdentityT f) where
+  type Rep1 (IdentityT f) = D1 D1'IdentityT (C1 C1_0'IdentityT (S1 
S1_0_0'IdentityT (Rec1 f)))
+  from1 (IdentityT x) = M1 (M1 (M1 (Rec1 x)))
+  to1 (M1 (M1 (M1 x))) = IdentityT (unRec1 x)
+
+instance Datatype D1'IdentityT where
+  datatypeName _ = "IdentityT"
+  moduleName _ = "Control.Monad.Trans.Identity"
+#    if MIN_VERSION_base(4,7,0)
+  isNewtype _ = True
+#    endif
+
+instance Constructor C1_0'IdentityT where
+  conName _ = "IdentityT"
+  conIsRecord _ = True
+
+instance Selector S1_0_0'IdentityT where
+  selName _ = "runIdentityT"
+
+data D1'IdentityT
+data C1_0'IdentityT
+data S1_0_0'IdentityT
+
+-----
+
+instance Generic (MaybeT m a) where
+  type Rep (MaybeT m a) = D1 D1'MaybeT (C1 C1_0'MaybeT (S1 S1_0_0'MaybeT (Rec0 
(m (Maybe a)))))
+  from (MaybeT x) = M1 (M1 (M1 (K1 x)))
+  to (M1 (M1 (M1 (K1 x)))) = MaybeT x
+
+instance Functor m => Generic1 (MaybeT m) where
+  type Rep1 (MaybeT m) = D1 D1'MaybeT (C1 C1_0'MaybeT (S1 S1_0_0'MaybeT (m :.: 
Rec1 Maybe)))
+  from1 (MaybeT x) = M1 (M1 (M1 ((.) Comp1 (fmap Rec1) x)))
+  to1 (M1 (M1 (M1 x))) = MaybeT ((.) (fmap unRec1) unComp1 x)
+
+instance Datatype D1'MaybeT where
+  datatypeName _ = "MaybeT"
+  moduleName _ = "Control.Monad.Trans.Maybe"
+#    if MIN_VERSION_base(4,7,0)
+  isNewtype _ = True
+#    endif
+
+instance Constructor C1_0'MaybeT where
+  conName _ = "MaybeT"
+  conIsRecord _ = True
+
+instance Selector S1_0_0'MaybeT where
+  selName _ = "runMaybeT"
+
+data D1'MaybeT
+data C1_0'MaybeT
+data S1_0_0'MaybeT
+
+-----
+
+instance Generic (Lazy.RWST r w s m a) where
+  type Rep (Lazy.RWST r w s m a) = D1 D1'RWSTLazy (C1 C1_0'RWST (S1 
S1_0_0'RWST (Rec0 (r -> s -> m (a, s, w)))))
+  from (Lazy.RWST x) = M1 (M1 (M1 (K1 x)))
+  to (M1 (M1 (M1 (K1 x)))) = Lazy.RWST x
+
+instance Generic (Strict.RWST r w s m a) where
+  type Rep (Strict.RWST r w s m a) = D1 D1'RWSTStrict (C1 C1_0'RWST (S1 
S1_0_0'RWST (Rec0 (r -> s -> m (a, s, w)))))
+  from (Strict.RWST x) = M1 (M1 (M1 (K1 x)))
+  to (M1 (M1 (M1 (K1 x)))) = Strict.RWST x
+
+instance Datatype D1'RWSTLazy where
+  datatypeName _ = "RWST"
+  moduleName _ = "Control.Monad.Trans.RWS.Lazy"
+#    if MIN_VERSION_base(4,7,0)
+  isNewtype _ = True
+#    endif
+
+instance Datatype D1'RWSTStrict where
+  datatypeName _ = "RWST"
+  moduleName _ = "Control.Monad.Trans.RWS.Strict"
+#    if MIN_VERSION_base(4,7,0)
+  isNewtype _ = True
+#    endif
+
+instance Constructor C1_0'RWST where
+  conName _ = "RWST"
+  conIsRecord _ = True
+
+instance Selector S1_0_0'RWST where
+  selName _ = "runRWST"
+
+data D1'RWSTLazy
+data D1'RWSTStrict
+data C1_0'RWST
+data S1_0_0'RWST
+
+-----
+
+instance Generic (ReaderT r m a) where
+  type Rep (ReaderT r m a) = D1 D1'ReaderT (C1 C1_0'ReaderT (S1 S1_0_0'ReaderT 
(Rec0 (r -> m a))))
+  from (ReaderT x) = M1 (M1 (M1 (K1 x)))
+  to (M1 (M1 (M1 (K1 x)))) = ReaderT x
+
+instance Datatype D1'ReaderT where
+  datatypeName _ = "ReaderT"
+  moduleName _ = "Control.Monad.Trans.Reader"
+#    if MIN_VERSION_base(4,7,0)
+  isNewtype _ = True
+#    endif
+
+instance Constructor C1_0'ReaderT where
+  conName _ = "ReaderT"
+  conIsRecord _ = True
+
+instance Selector S1_0_0'ReaderT where
+  selName _ = "runReaderT"
+
+data D1'ReaderT
+data C1_0'ReaderT
+data S1_0_0'ReaderT
+
+-----
+
+instance Generic (Lazy.StateT s m a) where
+  type Rep (Lazy.StateT s m a) = D1 D1'StateTLazy (C1 C1_0'StateT (S1 
S1_0_0'StateT (Rec0 (s -> m (a, s)))))
+  from (Lazy.StateT x) = M1 (M1 (M1 (K1 x)))
+  to (M1 (M1 (M1 (K1 x)))) = Lazy.StateT x
+
+instance Generic (Strict.StateT s m a) where
+  type Rep (Strict.StateT s m a) = D1 D1'StateTStrict (C1 C1_0'StateT (S1 
S1_0_0'StateT (Rec0 (s -> m (a, s)))))
+  from (Strict.StateT x) = M1 (M1 (M1 (K1 x)))
+  to (M1 (M1 (M1 (K1 x)))) = Strict.StateT x
+
+instance Datatype D1'StateTLazy where
+  datatypeName _ = "StateT"
+  moduleName _ = "Control.Monad.Trans.State.Lazy"
+#    if MIN_VERSION_base(4,7,0)
+  isNewtype _ = True
+#    endif
+
+instance Datatype D1'StateTStrict where
+  datatypeName _ = "StateT"
+  moduleName _ = "Control.Monad.Trans.State.Strict"
+#    if MIN_VERSION_base(4,7,0)
+  isNewtype _ = True
+#    endif
+
+instance Constructor C1_0'StateT where
+  conName _ = "StateT"
+  conIsRecord _ = True
+
+instance Selector S1_0_0'StateT where
+  selName _ = "runStateT"
+
+data D1'StateTLazy
+data D1'StateTStrict
+data C1_0'StateT
+data S1_0_0'StateT
+
+-----
+
+instance Generic (Lazy.WriterT w m a) where
+  type Rep (Lazy.WriterT w m a) = D1 D1'WriterTLazy (C1 C1_0'WriterT (S1 
S1_0_0'WriterT (Rec0 (m (a, w)))))
+  from (Lazy.WriterT x) = M1 (M1 (M1 (K1 x)))
+  to (M1 (M1 (M1 (K1 x)))) = Lazy.WriterT x
+
+instance Generic (Strict.WriterT w m a) where
+  type Rep (Strict.WriterT w m a) = D1 D1'WriterTStrict (C1 C1_0'WriterT (S1 
S1_0_0'WriterT (Rec0 (m (a, w)))))
+  from (Strict.WriterT x) = M1 (M1 (M1 (K1 x)))
+  to (M1 (M1 (M1 (K1 x)))) = Strict.WriterT x
+
+instance Datatype D1'WriterTLazy where
+  datatypeName _ = "WriterT"
+  moduleName _ = "Control.Monad.Trans.Writer.Lazy"
+#    if MIN_VERSION_base(4,7,0)
+  isNewtype _ = True
+#    endif
+
+instance Datatype D1'WriterTStrict where
+  datatypeName _ = "WriterT"
+  moduleName _ = "Control.Monad.Trans.Writer.Strict"
+#    if MIN_VERSION_base(4,7,0)
+  isNewtype _ = True
+#    endif
+
+instance Constructor C1_0'WriterT where
+  conName _ = "WriterT"
+  conIsRecord _ = True
+
+instance Selector S1_0_0'WriterT where
+  selName _ = "runWriterT"
+
+data D1'WriterTLazy
+data D1'WriterTStrict
+data C1_0'WriterT
+data S1_0_0'WriterT
+
+#   if MIN_VERSION_transformers(0,3,0)
+instance Generic (Backwards f a) where
+  type Rep (Backwards f a) = D1 D1'Backwards (C1 C1_0'Backwards (S1 
S1_0_0'Backwards (Rec0 (f a))))
+  from (Backwards x) = M1 (M1 (M1 (K1 x)))
+  to (M1 (M1 (M1 (K1 x)))) = Backwards x
+
+instance Generic1 (Backwards f) where
+  type Rep1 (Backwards f) = D1 D1'Backwards (C1 C1_0'Backwards (S1 
S1_0_0'Backwards (Rec1 f)))
+  from1 (Backwards x) = M1 (M1 (M1 (Rec1 x)))
+  to1 (M1 (M1 (M1 x))) = Backwards (unRec1 x)
+
+instance Datatype D1'Backwards where
+  datatypeName _ = "Backwards"
+  moduleName _ = "Control.Applicative.Backwards"
+#    if MIN_VERSION_base(4,7,0)
+  isNewtype _ = True
+#    endif
+
+instance Constructor C1_0'Backwards where
+  conName _ = "Backwards"
+  conIsRecord _ = True
+
+instance Selector S1_0_0'Backwards where
+  selName _ = "forwards"
+
+data D1'Backwards
+data C1_0'Backwards
+data S1_0_0'Backwards
+
+-----
+
+instance Generic (Reverse f a) where
+  type Rep (Reverse f a) = D1 D1'Reverse (C1 C1_0'Reverse (S1 S1_0_0'Reverse 
(Rec0 (f a))))
+  from (Reverse x) = M1 (M1 (M1 (K1 x)))
+  to (M1 (M1 (M1 (K1 x)))) = Reverse x
+
+instance Generic1 (Reverse f) where
+  type Rep1 (Reverse f) = D1 D1'Reverse (C1 C1_0'Reverse (S1 S1_0_0'Reverse 
(Rec1 f)))
+  from1 (Reverse x) = M1 (M1 (M1 (Rec1 x)))
+  to1 (M1 (M1 (M1 x))) = Reverse (unRec1 x)
+
+instance Datatype D1'Reverse where
+  datatypeName _ = "Reverse"
+  moduleName _ = "Data.Functor.Reverse"
+#    if MIN_VERSION_base(4,7,0)
+  isNewtype _ = True
+#    endif
+
+instance Constructor C1_0'Reverse where
+  conName _ = "Reverse"
+  conIsRecord _ = True
+
+instance Selector S1_0_0'Reverse where
+  selName _ = "getReverse"
+
+data D1'Reverse
+data C1_0'Reverse
+data S1_0_0'Reverse
+
+-----
+
+instance Generic (Lift f a) where
+  type Rep (Lift f a) = D1 D1'Lift (C1 C1_0'Lift (S1 NoSelector (Rec0 a)) :+: 
C1 C1_1'Lift (S1 NoSelector (Rec0 (f a))))
+  from (Pure x) = M1 (L1 (M1 (M1 (K1 x))))
+  from (Other x) = M1 (R1 (M1 (M1 (K1 x))))
+  to (M1 (L1 (M1 (M1 (K1 x))))) = Pure x
+  to (M1 (R1 (M1 (M1 (K1 x))))) = Other x
+
+instance Generic1 (Lift f) where
+  type Rep1 (Lift f) = D1 D1'Lift (C1 C1_0'Lift (S1 NoSelector Par1) :+: C1 
C1_1'Lift (S1 NoSelector (Rec1 f)))
+  from1 (Pure x) = M1 (L1 (M1 (M1 (Par1 x))))
+  from1 (Other x) = M1 (R1 (M1 (M1 (Rec1 x))))
+  to1 (M1 (L1 (M1 (M1 x)))) = Pure (unPar1 x)
+  to1 (M1 (R1 (M1 (M1 x)))) = Other (unRec1 x)
+
+instance Datatype D1'Lift where
+  datatypeName _ = "Lift"
+  moduleName _ = "Control.Applicative.Lift"
+
+instance Constructor C1_0'Lift where
+  conName _ = "Pure"
+
+instance Constructor C1_1'Lift where
+  conName _ = "Other"
+
+data D1'Lift
+data C1_0'Lift
+data C1_1'Lift
+#   endif
+
+#   if MIN_VERSION_transformers(0,4,0)
+instance Generic (ExceptT e m a) where
+  type Rep (ExceptT e m a) = D1 D1'ExceptT (C1 C1_0'ExceptT (S1 NoSelector 
(Rec0 (m (Either e a)))))
+  from (ExceptT x) = M1 (M1 (M1 (K1 x)))
+  to (M1 (M1 (M1 (K1 x)))) = ExceptT x
+
+instance Functor m => Generic1 (ExceptT e m) where
+  type Rep1 (ExceptT e m) = D1 D1'ExceptT (C1 C1_0'ExceptT (S1 NoSelector (m 
:.: Rec1 (Either e))))
+  from1 (ExceptT x) = M1 (M1 (M1 ((.) Comp1 (fmap Rec1) x)))
+  to1 (M1 (M1 (M1 x))) = ExceptT ((.) (fmap unRec1) unComp1 x)
+
+instance Datatype D1'ExceptT where
+  datatypeName _ = "ExceptT"
+  moduleName _ = "Control.Monad.Trans.Except"
+#    if MIN_VERSION_base(4,7,0)
+  isNewtype _ = True
+#    endif
+
+instance Constructor C1_0'ExceptT where
+  conName _ = "ExceptT"
+
+data D1'ExceptT
+data C1_0'ExceptT
+#   endif
+
+#   if MIN_VERSION_transformers(0,5,3)
+instance Generic (AccumT w m a) where
+  type Rep (AccumT w m a) = D1 D1'AccumT (C1 C1_0'AccumT (S1 NoSelector (Rec0 
(w -> m (a, w)))))
+  from (AccumT x) = M1 (M1 (M1 (K1 x)))
+  to (M1 (M1 (M1 (K1 x)))) = AccumT x
+
+instance Datatype D1'AccumT where
+  datatypeName _ = "AccumT"
+  moduleName _ = "Control.Monad.Trans.Accum"
+#    if MIN_VERSION_base(4,7,0)
+  isNewtype _ = True
+#    endif
+
+instance Constructor C1_0'AccumT where
+  conName _ = "AccumT"
+
+data D1'AccumT
+data C1_0'AccumT
+
+-----
+
+instance Generic (SelectT r m a) where
+  type Rep (SelectT r m a) = D1 D1'SelectT (C1 C1_0'SelectT (S1 NoSelector 
(Rec0 ((a -> m r) -> m a))))
+  from (SelectT x) = M1 (M1 (M1 (K1 x)))
+  to (M1 (M1 (M1 (K1 x)))) = SelectT x
+
+instance Datatype D1'SelectT where
+  datatypeName _ = "SelectT"
+  moduleName _ = "Control.Monad.Trans.Select"
+#    if MIN_VERSION_base(4,7,0)
+  isNewtype _ = True
+#    endif
+
+instance Constructor C1_0'SelectT where
+  conName _ = "SelectT"
+
+data D1'SelectT
+data C1_0'SelectT
+#   endif
+
+#  endif
+# endif
 #endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/transformers-compat-0.6.6/tests/GenericsSpec.hs 
new/transformers-compat-0.7/tests/GenericsSpec.hs
--- old/transformers-compat-0.6.6/tests/GenericsSpec.hs 2001-09-09 
03:46:40.000000000 +0200
+++ new/transformers-compat-0.7/tests/GenericsSpec.hs   2001-09-09 
03:46:40.000000000 +0200
@@ -16,21 +16,21 @@
 main :: IO ()
 main = hspec spec
 
-prop_Eq :: (Eq a, Eq (f a), Eq1 f) => f a -> f a -> Bool
-prop_Eq x y = (x == y) == eq1 x y
+prop_Eq :: (Eq a, Eq (f a), Eq1 f) => f a -> f a -> Expectation
+prop_Eq x y = (x == y) `shouldBe` eq1 x y
 
 eqSpec :: forall f a. (Arbitrary (f a), Show (f a),
                        Eq a, Eq (f a), Eq1 f)
        => Proxy (f a) -> Spec
-eqSpec _ = prop "has a valid Eq1 instance" (prop_Eq :: f a -> f a -> Bool)
+eqSpec _ = prop "has a valid Eq1 instance" (prop_Eq :: f a -> f a -> 
Expectation)
 
-prop_Ord :: (Ord a, Ord (f a), Ord1 f) => f a -> f a -> Bool
-prop_Ord x y = compare x y == compare1 x y
+prop_Ord :: (Ord a, Ord (f a), Ord1 f) => f a -> f a -> Expectation
+prop_Ord x y = compare x y `shouldBe` compare1 x y
 
 ordSpec :: forall f a. (Arbitrary (f a), Show (f a),
                         Ord a, Ord (f a), Ord1 f)
         => Proxy (f a) -> Spec
-ordSpec _ = prop "has a valid Ord1 instance" (prop_Ord :: f a -> f a -> Bool)
+ordSpec _ = prop "has a valid Ord1 instance" (prop_Ord :: f a -> f a -> 
Expectation)
 
 -- Adapted from the definition of readEither
 readEither' :: String -> (Int -> ReadS a) -> Either String a
@@ -45,8 +45,8 @@
 
 prop_Read :: forall f a. (Read a, Read (f a), Read1 f,
                           Eq (f a), Show (f a))
-          => f a -> Bool
-prop_Read x = readArb readsPrec == readArb readsPrec1
+          => f a -> Expectation
+prop_Read x = readArb readsPrec `shouldBe` readArb readsPrec1
   where
     readArb :: (Int -> ReadS (f a)) -> f a
     readArb = read' (show x)
@@ -54,14 +54,14 @@
 readSpec :: forall f a. (Arbitrary (f a), Eq (f a), Show (f a),
                          Read a, Read (f a), Read1 f)
          => Proxy (f a) -> Spec
-readSpec _ = prop "has a valid Read1 instance" (prop_Read :: f a -> Bool)
+readSpec _ = prop "has a valid Read1 instance" (prop_Read :: f a -> 
Expectation)
 
-prop_Show :: (Show a, Show (f a), Show1 f) => Int -> f a -> Bool
-prop_Show p x = showsPrec p x "" == showsPrec1 p x ""
+prop_Show :: (Show a, Show (f a), Show1 f) => Int -> f a -> Expectation
+prop_Show p x = showsPrec p x "" `shouldBe` showsPrec1 p x ""
 
 showSpec :: forall f a. (Arbitrary (f a), Show a, Show (f a), Show1 f)
          => Proxy (f a) -> Spec
-showSpec _ = prop "has a valid Show1 instance" (prop_Show :: Int -> f a -> 
Bool)
+showSpec _ = prop "has a valid Show1 instance" (prop_Show :: Int -> f a -> 
Expectation)
 
 classes1Spec :: forall f a. (Arbitrary (f a),
                              Ord  a, Ord  (f a), Ord1  f,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/transformers-compat-0.6.6/tests/transformers-compat-tests.cabal 
new/transformers-compat-0.7/tests/transformers-compat-tests.cabal
--- old/transformers-compat-0.6.6/tests/transformers-compat-tests.cabal 
2001-09-09 03:46:40.000000000 +0200
+++ new/transformers-compat-0.7/tests/transformers-compat-tests.cabal   
2001-09-09 03:46:40.000000000 +0200
@@ -23,8 +23,9 @@
              , GHC == 8.2.2
              , GHC == 8.4.4
              , GHC == 8.6.5
-             , GHC == 8.8.3
-             , GHC == 8.10.1
+             , GHC == 8.8.4
+             , GHC == 8.10.4
+             , GHC == 9.0.1
 
 source-repository head
   type: git
@@ -48,7 +49,7 @@
                       , hspec            >= 2     && < 3
                       , QuickCheck       >= 2     && < 3
                       , tagged           >= 0.7   && < 1
-                      , transformers     >= 0.2   && < 0.6
+                      , transformers     >= 0.2   && < 0.7
                       , transformers-compat
   build-tool-depends:   hspec-discover:hspec-discover >= 2 && < 3
   hs-source-dirs:       .
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/transformers-compat-0.6.6/transformers-compat.cabal 
new/transformers-compat-0.7/transformers-compat.cabal
--- old/transformers-compat-0.6.6/transformers-compat.cabal     2001-09-09 
03:46:40.000000000 +0200
+++ new/transformers-compat-0.7/transformers-compat.cabal       2001-09-09 
03:46:40.000000000 +0200
@@ -1,6 +1,6 @@
 name:          transformers-compat
 category:      Compatibility
-version:       0.6.6
+version:       0.7
 license:       BSD3
 cabal-version: >= 1.10
 license-file:  LICENSE
@@ -33,10 +33,10 @@
              , GHC == 8.2.2
              , GHC == 8.4.4
              , GHC == 8.6.5
-             , GHC == 8.8.3
-             , GHC == 8.10.1
+             , GHC == 8.8.4
+             , GHC == 8.10.4
+             , GHC == 9.0.1
 extra-source-files:
-  .travis.yml
   .ghci
   .gitignore
   .hlint.yaml
@@ -97,7 +97,7 @@
     -- These are all transformers versions we support.
     -- each flag below splits this interval into two parts.
     -- flag-true parts are mutually exclusive, so at least one have to be on.
-    transformers >= 0.2 && <0.6
+    transformers >= 0.2 && <0.7
   if !impl(ghc >= 8.0)
     build-depends: fail == 4.9.*
 

Reply via email to