diff --git a/plugins/hls-call-hierarchy-plugin/README.md b/plugins/hls-call-hierarchy-plugin/README.md
index 619cf2a9b0559f13a2be4efee8b7ed8e070b1a24..752bf7e9f163c46d453a3b3c456dee186a1622d4 100644
--- a/plugins/hls-call-hierarchy-plugin/README.md
+++ b/plugins/hls-call-hierarchy-plugin/README.md
@@ -20,6 +20,7 @@ Enabled by default. You can disable it in your editor settings whenever you like
 {
   "haskell.plugin.callHierarchy.globalOn": true
 }
+```
 
 ## Change log
 ### 1.0.0.1
diff --git a/plugins/hls-call-hierarchy-plugin/hls-call-hierarchy-plugin.cabal b/plugins/hls-call-hierarchy-plugin/hls-call-hierarchy-plugin.cabal
index 81f07412feb5dd48aaee9d69da26bd8f64e95334..d2c604e9d0e54f123c8b4112f21d98f4596313dd 100644
--- a/plugins/hls-call-hierarchy-plugin/hls-call-hierarchy-plugin.cabal
+++ b/plugins/hls-call-hierarchy-plugin/hls-call-hierarchy-plugin.cabal
@@ -1,6 +1,6 @@
 cabal-version:      2.4
 name:               hls-call-hierarchy-plugin
-version:            1.0.0.1
+version:            1.0.0.2
 synopsis:           Call hierarchy plugin for Haskell Language Server
 license:            Apache-2.0
 license-file:       LICENSE
diff --git a/plugins/hls-call-hierarchy-plugin/src/Ide/Plugin/CallHierarchy/Internal.hs b/plugins/hls-call-hierarchy-plugin/src/Ide/Plugin/CallHierarchy/Internal.hs
index 5deb5da10c7ea9ac07b106ae102e35f594988ad1..5e0ab2024f1919c62afc9519629173f64be15f1e 100644
--- a/plugins/hls-call-hierarchy-plugin/src/Ide/Plugin/CallHierarchy/Internal.hs
+++ b/plugins/hls-call-hierarchy-plugin/src/Ide/Plugin/CallHierarchy/Internal.hs
@@ -47,7 +47,7 @@ prepareCallHierarchy state pluginId param
     liftIO (runAction "CallHierarchy.prepareHierarchy" state (prepareCallHierarchyItem nfp pos)) >>=
       \case
         Just items -> pure $ Right $ Just $ List items
-        Nothing    -> pure $ Left $ responseError "Call Hierarchy: No result"
+        Nothing    -> pure $ Right Nothing
   | otherwise = pure $ Left $ responseError $ T.pack $ "Call Hierarchy: uriToNormalizedFilePath failed for: " <> show uri
   where
     uri = param ^. (L.textDocument . L.uri)
@@ -67,8 +67,11 @@ constructFromAst nfp pos =
 resolveIntoCallHierarchy :: Applicative f => HieASTs a -> Position -> NormalizedFilePath -> f (Maybe [CallHierarchyItem])
 resolveIntoCallHierarchy hf pos nfp =
   case listToMaybe $ pointCommand hf pos extract of
-    Just res -> pure $ Just $ mapMaybe (construct nfp hf) res
-    Nothing  -> pure Nothing
+    Nothing    -> pure Nothing
+    Just infos ->
+      case mapMaybe (construct nfp hf) infos of
+        []  -> pure Nothing
+        res -> pure $ Just res
 
 extract :: HieAST a -> [(Identifier, S.Set ContextInfo, Span)]
 extract ast = let span = nodeSpan ast
@@ -76,14 +79,16 @@ extract ast = let span = nodeSpan ast
               in  [ (ident, contexts, span) | (ident, contexts) <- infos ]
 
 recFieldInfo, declInfo, valBindInfo, classTyDeclInfo,
-  useInfo, patternBindInfo, tyDeclInfo :: [ContextInfo] -> Maybe ContextInfo
-recFieldInfo    ctxs = listToMaybe [ctx    | ctx@RecField{}    <- ctxs]
-declInfo        ctxs = listToMaybe [ctx    | ctx@Decl{}        <- ctxs]
-valBindInfo     ctxs = listToMaybe [ctx    | ctx@ValBind{}     <- ctxs]
-classTyDeclInfo ctxs = listToMaybe [ctx    | ctx@ClassTyDecl{} <- ctxs]
-useInfo         ctxs = listToMaybe [Use    | Use               <- ctxs]
-patternBindInfo ctxs = listToMaybe [ctx    | ctx@PatternBind{} <- ctxs]
-tyDeclInfo      ctxs = listToMaybe [TyDecl | TyDecl            <- ctxs]
+  useInfo, patternBindInfo, tyDeclInfo, matchBindInfo
+    :: [ContextInfo] -> Maybe ContextInfo
+recFieldInfo    ctxs = listToMaybe [ctx       | ctx@RecField{}    <- ctxs]
+declInfo        ctxs = listToMaybe [ctx       | ctx@Decl{}        <- ctxs]
+valBindInfo     ctxs = listToMaybe [ctx       | ctx@ValBind{}     <- ctxs]
+classTyDeclInfo ctxs = listToMaybe [ctx       | ctx@ClassTyDecl{} <- ctxs]
+useInfo         ctxs = listToMaybe [Use       | Use               <- ctxs]
+patternBindInfo ctxs = listToMaybe [ctx       | ctx@PatternBind{} <- ctxs]
+tyDeclInfo      ctxs = listToMaybe [TyDecl    | TyDecl            <- ctxs]
+matchBindInfo   ctxs = listToMaybe [MatchBind | MatchBind         <- ctxs]
 
 construct :: NormalizedFilePath -> HieASTs a -> (Identifier, S.Set ContextInfo, Span) -> Maybe CallHierarchyItem
 construct nfp hf (ident, contexts, ssp)
@@ -93,6 +98,9 @@ construct nfp hf (ident, contexts, ssp)
     -- ignored type span
     = Just $ mkCallHierarchyItem' ident SkField ssp ssp
 
+  | isJust (matchBindInfo ctxList) && isNothing (valBindInfo ctxList)
+    = Just $ mkCallHierarchyItem' ident SkFunction ssp ssp
+
   | Just ctx <- valBindInfo ctxList
     = Just $ case ctx of
         ValBind _ _ span -> mkCallHierarchyItem' ident SkFunction (renderSpan span) ssp
diff --git a/plugins/hls-call-hierarchy-plugin/src/Ide/Plugin/CallHierarchy/Types.hs b/plugins/hls-call-hierarchy-plugin/src/Ide/Plugin/CallHierarchy/Types.hs
index 0c10d95ca0cfdb3f15f756ba506d62a87329bb39..c279cebbe30504a2257ccf7ddfd17792ef9f7930 100644
--- a/plugins/hls-call-hierarchy-plugin/src/Ide/Plugin/CallHierarchy/Types.hs
+++ b/plugins/hls-call-hierarchy-plugin/src/Ide/Plugin/CallHierarchy/Types.hs
@@ -35,6 +35,7 @@ instance FromRow Vertex where
                    <*> field <*> field <*> field
                    <*> field <*> field <*> field
                    <*> field <*> field
+
 data SymbolPosition = SymbolPosition {
   psl :: Int
 , psc :: Int
diff --git a/plugins/hls-call-hierarchy-plugin/test/Main.hs b/plugins/hls-call-hierarchy-plugin/test/Main.hs
index b87665f3d89ea1ae68d01d2d4405559b88a755ce..24b245e8d68fb7d0bf1b8829797695a7ff31e5c8 100644
--- a/plugins/hls-call-hierarchy-plugin/test/Main.hs
+++ b/plugins/hls-call-hierarchy-plugin/test/Main.hs
@@ -178,6 +178,15 @@ prepareCallHierarchyTests =
               expected = mkCallHierarchyItemV "b" SkFunction range selRange
           oneCaseWithCreate contents 0 2 expected
       ]
+  , testCase "multi pattern" $ do
+      let contents = T.unlines
+            [ "f (Just _) = ()"
+            , "f Nothing = ()"
+            ]
+          range = mkRange 1 0 1 1
+          selRange = mkRange 1 0 1 1
+          expected = mkCallHierarchyItemV "f" SkFunction range selRange
+      oneCaseWithCreate contents 1 0 expected
   ]
 
 incomingCallsTests :: TestTree
@@ -263,6 +272,15 @@ incomingCallsTests =
             positions = [(1, 5)]
             ranges = [mkRange 1 13 1 14]
         incomingCallTestCase contents 1 13 positions ranges
+    , testCase "multi pattern" $ do
+        let contents = T.unlines
+                [ "f 1 = 1"
+                , "f 2 = 2"
+                , "g = f"
+                ]
+            positions = [(2, 0)]
+            ranges = [mkRange 2 4 2 5]
+        incomingCallTestCase contents 1 0 positions ranges
     ]
   , testGroup "multi file"
     [ testCase "1" $ do