@@ -23,6 +23,7 @@ import qualified Data.HashMap.Strict as HM
23
23
import Data.List (groupBy , sortBy )
24
24
import qualified Data.Map as M
25
25
import Data.Maybe
26
+ import Data.Monoid
26
27
import qualified Data.Set as S
27
28
import qualified Data.Text as T
28
29
import qualified Data.Text.Encoding as T
@@ -146,12 +147,27 @@ construct nfp hf (ident, contexts, ssp)
146
147
147
148
renderTyDecl = case ident of
148
149
Left _ -> Nothing
149
- Right name -> case getNameBindingInClass name ssp (getAsts hf) of
150
+ Right name -> case getNameBindingInClass' name ssp (getAsts hf) of
150
151
Nothing -> Nothing
151
152
Just sp -> case resolveIntoCallHierarchy hf (realSrcSpanToRange sp ^. L. start) nfp of
152
153
Just (Just items) -> listToMaybe items
153
154
_ -> Nothing
154
155
156
+ getNameBindingInClass'
157
+ :: Name
158
+ -> Span
159
+ -> M. Map HiePath (HieAST a )
160
+ -> Maybe Span
161
+ getNameBindingInClass' n sp asts = do
162
+ ast <- M. lookup (HiePath (srcSpanFile sp)) asts
163
+ clsNode <- selectSmallestContaining sp ast
164
+ getFirst $ foldMap First $ do
165
+ child <- flattenAst ast
166
+ dets <- maybeToList
167
+ $ M. lookup (Right n) $ sourcedNodeIdents $ sourcedNodeInfo child
168
+ let binding = foldMap (First . getBindSiteFromContext) (identInfo dets)
169
+ return (getFirst binding)
170
+
155
171
mkCallHierarchyItem :: NormalizedFilePath -> Identifier -> SymbolKind -> Span -> Span -> CallHierarchyItem
156
172
mkCallHierarchyItem nfp ident kind span selSpan =
157
173
CallHierarchyItem
0 commit comments