diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -2,6 +2,10 @@
 
 ## Unreleased
 
+## 0.4.3.1 (2022-07-11)
+
+* Add a missing pattern match that was hit by a user.
+
 ## 0.4.3.0 (2021-11-23)
 
 * Support GHC 9.2.1
diff --git a/polysemy-plugin.cabal b/polysemy-plugin.cabal
--- a/polysemy-plugin.cabal
+++ b/polysemy-plugin.cabal
@@ -5,7 +5,7 @@
 -- see: https://github.com/sol/hpack
 
 name:           polysemy-plugin
-version:        0.4.3.0
+version:        0.4.3.1
 synopsis:       Disambiguate obvious uses of effects.
 description:    Please see the README on GitHub at <https://github.com/polysemy-research/polysemy/tree/master/polysemy-plugin#readme>
 category:       Polysemy
diff --git a/src/Polysemy/Plugin/Fundep.hs b/src/Polysemy/Plugin/Fundep.hs
--- a/src/Polysemy/Plugin/Fundep.hs
+++ b/src/Polysemy/Plugin/Fundep.hs
@@ -280,26 +280,28 @@
   givens <- get
   case S.member (PredType' predty) givens of
     True -> pure True
-    False -> do
+    False ->
       let (con, apps) = tcSplitTyConApp predty
-          Just cls = tyConClass_maybe con
-      env <- lift tcGetInstEnvs
-      let (mres, _, _) = lookupInstEnv False env cls apps
-      case mres of
-        ((inst, mapps) : _) -> do
-          -- Get the instantiated type of the dictionary
-          let df = piResultTys (idType $ is_dfun inst)
-                 $ zipWith fromMaybe alphaTys mapps
-          -- pull off its resulting arguments
-          let (theta, _) = tcSplitPhiTy df
-          allM getInstance theta >>= \case
-            True -> do
-              -- Record that we can solve this instance, in case it's used
-              -- elsewhere
-              modify $ S.insert $ coerce predty
-              pure True
-            False -> pure False
-        _ -> pure False
+      in case tyConClass_maybe con of
+        Nothing -> pure False
+        Just cls -> do
+          env <- lift tcGetInstEnvs
+          let (mres, _, _) = lookupInstEnv False env cls apps
+          case mres of
+            ((inst, mapps) : _) -> do
+              -- Get the instantiated type of the dictionary
+              let df = piResultTys (idType $ is_dfun inst)
+                    $ zipWith fromMaybe alphaTys mapps
+              -- pull off its resulting arguments
+              let (theta, _) = tcSplitPhiTy df
+              allM getInstance theta >>= \case
+                True -> do
+                  -- Record that we can solve this instance, in case it's used
+                  -- elsewhere
+                  modify $ S.insert $ coerce predty
+                  pure True
+                False -> pure False
+            _ -> pure False
 
 
 solveFundep
