diff --git a/monadic-bang.cabal b/monadic-bang.cabal
--- a/monadic-bang.cabal
+++ b/monadic-bang.cabal
@@ -14,7 +14,7 @@
 -- PVP summary:      +-+------- breaking API changes
 --                   | | +----- non-breaking API additions
 --                   | | | +--- code changes with no API change
-version:            0.2.2.1
+version:            0.2.2.2
 
 -- A short (one-line) description of the package.
 synopsis:           GHC plugin to desugar ! into do-notation
@@ -53,6 +53,7 @@
                     GHC == 9.6.3
                     GHC == 9.8.1
                     GHC == 9.10.1
+                    GHC == 9.12.1
 
 source-repository head
     type:           git
@@ -85,8 +86,8 @@
                       PatternSynonyms
 
     -- Other library packages from which modules are imported.
-    build-depends:    base >=4.17.0.0 && <4.21,
-                      ghc >=9.4 && <9.11,
+    build-depends:    base >=4.17.0.0 && <4.22,
+                      ghc >=9.4 && <9.13,
                       containers ^>=0.6.4.1 || ^>=0.7,
                       transformers >=0.5.6.2 && <0.7,
                       fused-effects ^>=1.1.1.2
@@ -121,7 +122,7 @@
     -- Test dependencies.
     build-depends:    base,
                       ghc,
-                      ghc-boot >=9.4 && <9.11,
+                      ghc-boot >=9.4 && <9.13,
                       ghc-paths ^>=0.1.0.12,
                       transformers,
                       monadic-bang
diff --git a/src/MonadicBang/Internal.hs b/src/MonadicBang/Internal.hs
--- a/src/MonadicBang/Internal.hs
+++ b/src/MonadicBang/Internal.hs
@@ -371,7 +371,7 @@
 -- source span can be found in the given list.
 fillHoles :: (Data a, Has (PsErrors :+: Reader Options :+: Uniques :+: LocalVars :+: Reader DynFlags) sig m) => Map Loc LExpr -> Handler m a
 fillHoles fillers ast = do
-  (remainingErrs, (fromDList -> binds :: [BindStmt], ast')) <- runOffer fillers . runWriter $ evac ast
+  (remainingErrs, (fromDList -> (binds :: [BindStmt]), ast')) <- runOffer fillers . runWriter $ evac ast
   MkOptions{preserveErrors} <- ask
   for_ binds \bind -> tellPsError (psError (bindStmtExpr bind) preserveErrors) (bangSpan $ bindStmtSpan bind)
   dflags <- ask
diff --git a/test/MonadicBang/Test/Utils/RunGhcParser.hs b/test/MonadicBang/Test/Utils/RunGhcParser.hs
--- a/test/MonadicBang/Test/Utils/RunGhcParser.hs
+++ b/test/MonadicBang/Test/Utils/RunGhcParser.hs
@@ -42,7 +42,7 @@
       modSummary = ModSummary
         { ms_mod = mkModule (stringToUnit modNameStr) modName
         , ms_hsc_src = HsSrcFile
-        , ms_location = mkHomeModLocation (initFinderOpts dflags) modName ""
+        , ms_location = mkHomeModLocation (initFinderOpts dflags) modName (error "monadic-bang (test suite): no home path")
         , ms_hs_hash = fingerprintString src
         , ms_obj_date = Nothing
         , ms_dyn_obj_date = Nothing
@@ -66,7 +66,12 @@
     addPlugin = do
       let session = !getSession
           plugins = hsc_plugins session
-      setSession (session{hsc_plugins = plugins{staticPlugins = StaticPlugin (PluginWithArgs MonadicBang.plugin []) : staticPlugins plugins}})
+      setSession (session{hsc_plugins = plugins{staticPlugins = StaticPlugin
+        { spPlugin = PluginWithArgs MonadicBang.plugin []
+#if MIN_VERSION_ghc(9,12,0)
+        , spInitialised = False
+#endif
+        } : staticPlugins plugins}})
 
 initialDynFlags :: MonadIO m => m DynFlags
 initialDynFlags = do
