diff --git a/CHANGES.markdown b/CHANGES.markdown
--- a/CHANGES.markdown
+++ b/CHANGES.markdown
@@ -1,3 +1,6 @@
+Changes in 0.24.3
+  - GHC 9.14 compatibility. (#478)
+
 Changes in 0.24.2
   - Use `GHC.ResponseFile.expandResponse`
 
diff --git a/doctest.cabal b/doctest.cabal
--- a/doctest.cabal
+++ b/doctest.cabal
@@ -5,7 +5,7 @@
 -- see: https://github.com/sol/hpack
 
 name:           doctest
-version:        0.24.2
+version:        0.24.3
 synopsis:       Test interactive Haskell examples
 description:    `doctest` is a tool that checks [examples](https://www.haskell.org/haddock/doc/html/ch03s08.html#idm140354810775744)
                 and [properties](https://www.haskell.org/haddock/doc/html/ch03s08.html#idm140354810771856)
@@ -161,7 +161,7 @@
     , directory
     , exceptions
     , filepath
-    , ghc >=8.6 && <9.14
+    , ghc >=8.6 && <9.16
     , ghc-paths >=0.1.0.9
     , process
     , syb >=0.3
@@ -286,7 +286,7 @@
     , directory
     , exceptions
     , filepath
-    , ghc >=8.6 && <9.14
+    , ghc >=8.6 && <9.16
     , ghc-paths >=0.1.0.9
     , hspec >=2.3.0
     , hspec-core >=2.3.0
diff --git a/src/Cabal/Options.hs b/src/Cabal/Options.hs
--- a/src/Cabal/Options.hs
+++ b/src/Cabal/Options.hs
@@ -31,7 +31,7 @@
   , "--no-transitive-deps"
   , "--enable-multi-repl"
   , "--disable-multi-repl"
-  , "--keep-temp-files"
+  , "--with-repl"
   ]
 
 rejectUnsupportedOptions :: [String] -> IO ()
diff --git a/src/Cabal/ReplOptions.hs b/src/Cabal/ReplOptions.hs
--- a/src/Cabal/ReplOptions.hs
+++ b/src/Cabal/ReplOptions.hs
@@ -21,10 +21,10 @@
     Option "help" (Just 'h') NoArgument "Show this help text"
   , Option "verbose" (Just 'v') (OptionalArgument "n") "Control verbosity (n is 0--3, default verbosity level is 1)"
   , Option "builddir" Nothing (Argument "DIR") "The directory where Cabal puts generated build files (default dist)"
+  , Option "keep-temp-files" Nothing NoArgument "Keep temporary files."
   , Option "ghc" (Just 'g') NoArgument "compile with GHC"
   , Option "ghcjs" Nothing NoArgument "compile with GHCJS"
   , Option "uhc" Nothing NoArgument "compile with UHC"
-  , Option "haskell-suite" Nothing NoArgument "compile with a haskell-suite compiler"
   , Option "with-compiler" (Just 'w') (Argument "PATH") "give the path to a particular compiler"
   , Option "with-hc-pkg" Nothing (Argument "PATH") "give the path to the package tool"
   , Option "prefix" Nothing (Argument "DIR") "bake this prefix in preparation of installation"
@@ -177,19 +177,19 @@
   , Option "test-keep-tix-files" Nothing NoArgument "keep .tix files for HPC between test runs"
   , Option "test-wrapper" Nothing (Argument "FILE") "Run test through a wrapper."
   , Option "test-fail-when-no-test-suites" Nothing NoArgument "Exit with failure when no test suites are found."
-  , Option "test-options" Nothing (Argument "TEMPLATES") "give extra options to test executables (name templates can use $pkgid, $compiler, $os, $arch, $test-suite)"
-  , Option "test-option" Nothing (Argument "TEMPLATE") "give extra option to test executables (no need to quote options containing spaces, name template can use $pkgid, $compiler, $os, $arch, $test-suite)"
-  , Option "benchmark-options" Nothing (Argument "TEMPLATES") "give extra options to benchmark executables (name templates can use $pkgid, $compiler, $os, $arch, $benchmark)"
-  , Option "benchmark-option" Nothing (Argument "TEMPLATE") "give extra option to benchmark executables (no need to quote options containing spaces, name template can use $pkgid, $compiler, $os, $arch, $benchmark)"
+  , Option "test-options" Nothing (Argument "TEMPLATES") "give extra options to test executables (split on spaces, use \"\" to prevent splitting; name templates can use $pkgid, $compiler, $os, $arch, $test-suite)"
+  , Option "test-option" Nothing (Argument "TEMPLATE") "give extra option to test executables (passed directly as a single argument; name template can use $pkgid, $compiler, $os, $arch, $test-suite)"
+  , Option "benchmark-options" Nothing (Argument "TEMPLATES") "give extra options to benchmark executables (split on spaces, use \"\" to prevent splitting; name templates can use $pkgid, $compiler, $os, $arch, $benchmark)"
+  , Option "benchmark-option" Nothing (Argument "TEMPLATE") "give extra option to benchmark executables (passed directly as a single argument; name template can use $pkgid, $compiler, $os, $arch, $benchmark)"
   , Option "project-dir" Nothing (Argument "DIR") "Set the path of the project directory"
   , Option "project-file" Nothing (Argument "FILE") "Set the path of the cabal.project file (relative to the project directory when relative)"
   , Option "ignore-project" (Just 'z') NoArgument "Ignore local project configuration (unless --project-dir or --project-file is also set)"
   , Option "repl-no-load" Nothing NoArgument "Disable loading of project modules at REPL startup."
   , Option "repl-options" Nothing (Argument "FLAG") "Use the option(s) for the repl"
   , Option "repl-multi-file" Nothing (Argument "DIR") "Write repl options to this directory rather than starting repl mode"
+  , Option "with-repl" Nothing (Argument "PATH") "Give the path to a program to use for REPL"
   , Option "build-depends" (Just 'b') (Argument "DEPENDENCIES") "Include additional packages in the environment presented to GHCi."
   , Option "no-transitive-deps" Nothing NoArgument "Don't automatically include transitive dependencies of requested packages."
   , Option "enable-multi-repl" Nothing NoArgument "Enable multi-component repl sessions"
   , Option "disable-multi-repl" Nothing NoArgument "Disable multi-component repl sessions"
-  , Option "keep-temp-files" Nothing NoArgument "Keep temporary files"
   ]
diff --git a/src/Extract.hs b/src/Extract.hs
--- a/src/Extract.hs
+++ b/src/Extract.hs
@@ -95,7 +95,11 @@
                 Nothing)
   mods <- depanal [] False
 
-  let sortedMods = flattenSCCs
+  let sortedMods =
+#if __GLASGOW_HASKELL__ >= 914
+                   mapMaybe maybeModSummaryFromModuleNodeInfo $
+#endif
+                   flattenSCCs
 #if __GLASGOW_HASKELL__ >= 901
                      $ filterToposortToModules
 #endif
@@ -190,6 +194,13 @@
     isSetup = (== Just "setup") . fst
     (setup, docs) = partition isSetup (docStringsFromModule m)
     name = (moduleNameString . GHC.moduleName . ms_mod . pm_mod_summary) m
+
+#if __GLASGOW_HASKELL__ >= 914
+maybeModSummaryFromModuleNodeInfo :: ModuleNodeInfo -> Maybe ModSummary
+maybeModSummaryFromModuleNodeInfo i = case i of
+  ModuleNodeCompile summary -> Just summary
+  ModuleNodeFixed _ _ -> Nothing
+#endif
 
 #if __GLASGOW_HASKELL__ >= 904
 unpackHDS :: HsDocString -> String
