diff --git a/Language/Haskell/ParseMonad.hs b/Language/Haskell/ParseMonad.hs
--- a/Language/Haskell/ParseMonad.hs
+++ b/Language/Haskell/ParseMonad.hs
@@ -14,8 +14,8 @@
 
 {-# LANGUAGE CPP #-}
 
-#if __GLASGOW_HASKELL__ >= 902
-{-# OPTIONS_GHC -fno-warn-incomplete-uni-patterns #-}
+#if __GLASGOW_HASKELL__ >= 900
+{-# OPTIONS_GHC -Wno-incomplete-uni-patterns #-}
 #endif
 
 module Language.Haskell.ParseMonad(
diff --git a/Language/Haskell/Syntax.hs b/Language/Haskell/Syntax.hs
--- a/Language/Haskell/Syntax.hs
+++ b/Language/Haskell/Syntax.hs
@@ -18,7 +18,7 @@
 --
 --   * parameters of type class assertions are unrestricted
 --
--- For GHC, we also derive 'Typeable' and 'Data' for all types.
+-- For GHC, we also derive 'Data' for all types.
 
 -----------------------------------------------------------------------------
 
@@ -75,7 +75,7 @@
                 srcColumn   :: Int
                 }
 #ifdef __GLASGOW_HASKELL__
-  deriving (Eq,Ord,Show,Typeable,Data)
+  deriving (Eq,Ord,Show,Data)
 #else
   deriving (Eq,Ord,Show)
 #endif
@@ -83,7 +83,7 @@
 -- | The name of a Haskell module.
 newtype Module = Module String
 #ifdef __GLASGOW_HASKELL__
-  deriving (Eq,Ord,Show,Typeable,Data)
+  deriving (Eq,Ord,Show,Data)
 #else
   deriving (Eq,Ord,Show)
 #endif
@@ -100,7 +100,7 @@
                                 --   constructors @(,)@ etc.
         | HsCons                -- ^ List data constructor @(:)@.
 #ifdef __GLASGOW_HASKELL__
-  deriving (Eq,Ord,Show,Typeable,Data)
+  deriving (Eq,Ord,Show,Data)
 #else
   deriving (Eq,Ord,Show)
 #endif
@@ -112,7 +112,7 @@
         | UnQual HsName         -- ^ Unqualified name.
         | Special HsSpecialCon  -- ^ Built-in constructor with special syntax.
 #ifdef __GLASGOW_HASKELL__
-  deriving (Eq,Ord,Show,Typeable,Data)
+  deriving (Eq,Ord,Show,Data)
 #else
   deriving (Eq,Ord,Show)
 #endif
@@ -122,7 +122,7 @@
         = HsIdent String        -- ^ /varid/ or /conid/.
         | HsSymbol String       -- ^ /varsym/ or /consym/.
 #ifdef __GLASGOW_HASKELL__
-  deriving (Eq,Ord,Show,Typeable,Data)
+  deriving (Eq,Ord,Show,Data)
 #else
   deriving (Eq,Ord,Show)
 #endif
@@ -132,7 +132,7 @@
         = HsQVarOp HsQName      -- ^ Variable operator (/qvarop/).
         | HsQConOp HsQName      -- ^ Constructor operator (/qconop/).
 #ifdef __GLASGOW_HASKELL__
-  deriving (Eq,Ord,Show,Typeable,Data)
+  deriving (Eq,Ord,Show,Data)
 #else
   deriving (Eq,Ord,Show)
 #endif
@@ -142,7 +142,7 @@
         = HsVarOp HsName        -- ^ Variable operator (/varop/).
         | HsConOp HsName        -- ^ Constructor operator (/conop/).
 #ifdef __GLASGOW_HASKELL__
-  deriving (Eq,Ord,Show,Typeable,Data)
+  deriving (Eq,Ord,Show,Data)
 #else
   deriving (Eq,Ord,Show)
 #endif
@@ -153,7 +153,7 @@
         = HsVarName HsName      -- ^ Name of a method or field.
         | HsConName HsName      -- ^ Name of a data constructor.
 #ifdef __GLASGOW_HASKELL__
-  deriving (Eq,Ord,Show,Typeable,Data)
+  deriving (Eq,Ord,Show,Data)
 #else
   deriving (Eq,Ord,Show)
 #endif
@@ -162,7 +162,7 @@
 data HsModule = HsModule SrcLoc Module (Maybe [HsExportSpec])
                          [HsImportDecl] [HsDecl]
 #ifdef __GLASGOW_HASKELL__
-  deriving (Eq,Show,Typeable,Data)
+  deriving (Eq,Show,Data)
 #else
   deriving (Eq,Show)
 #endif
@@ -182,7 +182,7 @@
          | HsEModuleContents Module             -- ^ @module M@:
                         -- Re-export a module.
 #ifdef __GLASGOW_HASKELL__
-  deriving (Eq,Show,Typeable,Data)
+  deriving (Eq,Show,Data)
 #else
   deriving (Eq,Show)
 #endif
@@ -200,7 +200,7 @@
                         -- by @hiding@.
         }
 #ifdef __GLASGOW_HASKELL__
-  deriving (Eq,Show,Typeable,Data)
+  deriving (Eq,Show,Data)
 #else
   deriving (Eq,Show)
 #endif
@@ -217,7 +217,7 @@
                         -- A class imported with some of its methods, or
                         -- a datatype imported with some of its constructors.
 #ifdef __GLASGOW_HASKELL__
-  deriving (Eq,Show,Typeable,Data)
+  deriving (Eq,Show,Data)
 #else
   deriving (Eq,Show)
 #endif
@@ -228,7 +228,7 @@
          | HsAssocLeft  -- ^ Left-associative operator (declared with @infixl@).
          | HsAssocRight -- ^ Right-associative operator (declared with @infixr@).
 #ifdef __GLASGOW_HASKELL__
-  deriving (Eq,Show,Typeable,Data)
+  deriving (Eq,Show,Data)
 #else
   deriving (Eq,Show)
 #endif
@@ -247,7 +247,7 @@
          | HsForeignImport SrcLoc String HsSafety String HsName HsType
          | HsForeignExport SrcLoc String String HsName HsType
 #ifdef __GLASGOW_HASKELL__
-  deriving (Eq,Show,Typeable,Data)
+  deriving (Eq,Show,Data)
 #else
   deriving (Eq,Show)
 #endif
@@ -256,7 +256,7 @@
 data HsMatch
          = HsMatch SrcLoc HsName [HsPat] HsRhs {-where-} [HsDecl]
 #ifdef __GLASGOW_HASKELL__
-  deriving (Eq,Show,Typeable,Data)
+  deriving (Eq,Show,Data)
 #else
   deriving (Eq,Show)
 #endif
@@ -268,7 +268,7 @@
          | HsRecDecl SrcLoc HsName [([HsName],HsBangType)]
                                 -- ^ Record constructor.
 #ifdef __GLASGOW_HASKELL__
-  deriving (Eq,Show,Typeable,Data)
+  deriving (Eq,Show,Data)
 #else
   deriving (Eq,Show)
 #endif
@@ -279,7 +279,7 @@
          = HsBangedTy   HsType  -- ^ Strict component, marked with \"@!@\".
          | HsUnBangedTy HsType  -- ^ Non-strict component.
 #ifdef __GLASGOW_HASKELL__
-  deriving (Eq,Show,Typeable,Data)
+  deriving (Eq,Show,Data)
 #else
   deriving (Eq,Show)
 #endif
@@ -290,7 +290,7 @@
          | HsGuardedRhss  [HsGuardedRhs]
                                 -- ^ Guarded right hand side (/gdrhs/).
 #ifdef __GLASGOW_HASKELL__
-  deriving (Eq,Show,Typeable,Data)
+  deriving (Eq,Show,Data)
 #else
   deriving (Eq,Show)
 #endif
@@ -300,7 +300,7 @@
 data HsGuardedRhs
          = HsGuardedRhs SrcLoc HsExp HsExp
 #ifdef __GLASGOW_HASKELL__
-  deriving (Eq,Show,Typeable,Data)
+  deriving (Eq,Show,Data)
 #else
   deriving (Eq,Show)
 #endif
@@ -310,7 +310,7 @@
         = HsSafe        -- ^ Call may generate callbacks.
         | HsUnsafe      -- ^ Call will not generate callbacks.
 #ifdef __GLASGOW_HASKELL__
-  deriving (Eq,Ord,Show,Typeable,Data)
+  deriving (Eq,Ord,Show,Data)
 #else
   deriving (Eq,Ord,Show)
 #endif
@@ -320,7 +320,7 @@
 data HsQualType
          = HsQualType HsContext HsType
 #ifdef __GLASGOW_HASKELL__
-  deriving (Eq,Show,Typeable,Data)
+  deriving (Eq,Show,Data)
 #else
   deriving (Eq,Show)
 #endif
@@ -333,7 +333,7 @@
          | HsTyVar   HsName             -- ^ Type variable.
          | HsTyCon   HsQName            -- ^ Named type or type constructor.
 #ifdef __GLASGOW_HASKELL__
-  deriving (Eq,Show,Typeable,Data)
+  deriving (Eq,Show,Data)
 #else
   deriving (Eq,Show)
 #endif
@@ -360,7 +360,7 @@
         | HsFloatPrim   Rational        -- ^ GHC unboxed float literal.
         | HsDoublePrim  Rational        -- ^ GHC unboxed double literal.
 #ifdef __GLASGOW_HASKELL__
-  deriving (Eq,Show,Typeable,Data)
+  deriving (Eq,Show,Data)
 #else
   deriving (Eq,Show)
 #endif
@@ -420,7 +420,7 @@
         | HsWildCard                    -- ^ (patterns only)
         | HsIrrPat HsExp                -- ^ (patterns only)
 #ifdef __GLASGOW_HASKELL__
-  deriving (Eq,Show,Typeable,Data)
+  deriving (Eq,Show,Data)
 #else
   deriving (Eq,Show)
 #endif
@@ -442,7 +442,7 @@
         | HsPWildCard                   -- ^ Wildcard pattern (@_@).
         | HsPIrrPat HsPat               -- ^ Irrefutable pattern (@~@).
 #ifdef __GLASGOW_HASKELL__
-  deriving (Eq,Show,Typeable,Data)
+  deriving (Eq,Show,Data)
 #else
   deriving (Eq,Show)
 #endif
@@ -451,7 +451,7 @@
 data HsPatField
         = HsPFieldPat HsQName HsPat
 #ifdef __GLASGOW_HASKELL__
-  deriving (Eq,Show,Typeable,Data)
+  deriving (Eq,Show,Data)
 #else
   deriving (Eq,Show)
 #endif
@@ -466,7 +466,7 @@
                                 -- in a list comprehension, a guard expression.
         | HsLetStmt [HsDecl]    -- ^ Local bindings.
 #ifdef __GLASGOW_HASKELL__
-  deriving (Eq,Show,Typeable,Data)
+  deriving (Eq,Show,Data)
 #else
   deriving (Eq,Show)
 #endif
@@ -475,7 +475,7 @@
 data HsFieldUpdate
         = HsFieldUpdate HsQName HsExp
 #ifdef __GLASGOW_HASKELL__
-  deriving (Eq,Show,Typeable,Data)
+  deriving (Eq,Show,Data)
 #else
   deriving (Eq,Show)
 #endif
@@ -484,7 +484,7 @@
 data HsAlt
         = HsAlt SrcLoc HsPat HsGuardedAlts [HsDecl]
 #ifdef __GLASGOW_HASKELL__
-  deriving (Eq,Show,Typeable,Data)
+  deriving (Eq,Show,Data)
 #else
   deriving (Eq,Show)
 #endif
@@ -493,7 +493,7 @@
         = HsUnGuardedAlt HsExp          -- ^ @->@ /exp/.
         | HsGuardedAlts  [HsGuardedAlt] -- ^ /gdpat/.
 #ifdef __GLASGOW_HASKELL__
-  deriving (Eq,Show,Typeable,Data)
+  deriving (Eq,Show,Data)
 #else
   deriving (Eq,Show)
 #endif
@@ -503,7 +503,7 @@
 data HsGuardedAlt
         = HsGuardedAlt SrcLoc HsExp HsExp
 #ifdef __GLASGOW_HASKELL__
-  deriving (Eq,Show,Typeable,Data)
+  deriving (Eq,Show,Data)
 #else
   deriving (Eq,Show)
 #endif
diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -1,3 +1,10 @@
+## 1.0.4.2
+
+_Andreas Abel, 2025-08-28_
+
+  - Drop support for GHC 7.
+  - Tested with GHC 8.0 - 9.14 alpha1.
+
 ## 1.0.4.1
 
 _Andreas Abel, 2024-09-22_
diff --git a/haskell-src.cabal b/haskell-src.cabal
--- a/haskell-src.cabal
+++ b/haskell-src.cabal
@@ -1,7 +1,7 @@
-cabal-version:  >=1.10
+cabal-version:  1.18
 name:           haskell-src
 -- don't forget to update the changelog.md!
-version:        1.0.4.1
+version:        1.0.4.2
 build-type:     Simple
 
 license:        BSD3
@@ -20,9 +20,11 @@
     <http://www.haskell.org/onlinereport/ Haskell 98> code.
 
 tested-with:
-  GHC == 9.10.1
-  GHC == 9.8.2
-  GHC == 9.6.6
+  GHC == 9.14.1
+  GHC == 9.12.2
+  GHC == 9.10.2
+  GHC == 9.8.4
+  GHC == 9.6.7
   GHC == 9.4.8
   GHC == 9.2.8
   GHC == 9.0.2
@@ -33,7 +35,7 @@
   GHC == 8.2.2
   GHC == 8.0.2
 
-extra-source-files: changelog.md
+extra-doc-files: changelog.md
 
 source-repository head
     type:     git
@@ -48,21 +50,17 @@
         Language.Haskell.Syntax,
         Language.Haskell.ParseUtils
 
-  build-depends:   base       >= 4.3     && < 5
+  build-depends:   base       >= 4.9     && < 5
                      -- no confirmed upper bound on base yet
                  , syb        >= 0.1     && < 0.8
                  , pretty     >= 1.0.1.2 && < 1.2
                  , array      >= 0.3     && < 0.6
 
-  if !impl(ghc >= 8.0)
-    build-depends: fail       == 4.9.*
-                 , semigroups == 0.18.*
-                     -- semigroups >= 0.19 does not build with ghc < 8
-  else
-    ghc-options: -Wcompat -Wnoncanonical-monad-instances
-
   build-tools: happy >= 1.19
 
   default-language: Haskell98
 
-  ghc-options: -Wall
+  ghc-options:
+    -Wall
+    -Wcompat
+    -Wnoncanonical-monad-instances
