diff options
| author | Łukasz Hanuszczak <lukasz.hanuszczak@gmail.com> | 2015-06-17 22:22:49 +0200 | 
|---|---|---|
| committer | Łukasz Hanuszczak <lukasz.hanuszczak@gmail.com> | 2015-06-30 22:37:49 +0200 | 
| commit | a85224a68b51b70035446ad8e5565d571c4a10d4 (patch) | |
| tree | dc125265b1a1c98621b8d3d6d36f1642da34a721 /haddock-api/src/Haddock/Backends/Hyperlinker/Ast.hs | |
| parent | 60db14903e01f4c26f179230c7b6190a7b99fb51 (diff) | |
Implement hyperlinking of imported module names.
Diffstat (limited to 'haddock-api/src/Haddock/Backends/Hyperlinker/Ast.hs')
| -rw-r--r-- | haddock-api/src/Haddock/Backends/Hyperlinker/Ast.hs | 19 | 
1 files changed, 12 insertions, 7 deletions
diff --git a/haddock-api/src/Haddock/Backends/Hyperlinker/Ast.hs b/haddock-api/src/Haddock/Backends/Hyperlinker/Ast.hs index 3c07ff3c..10389958 100644 --- a/haddock-api/src/Haddock/Backends/Hyperlinker/Ast.hs +++ b/haddock-api/src/Haddock/Backends/Hyperlinker/Ast.hs @@ -24,12 +24,14 @@ data TokenDetails      | RtkType GHC.Name      | RtkBind GHC.Name      | RtkDecl GHC.Name +    | RtkModule GHC.ModuleName -rtkName :: TokenDetails -> GHC.Name -rtkName (RtkVar name) = name -rtkName (RtkType name) = name -rtkName (RtkBind name) = name -rtkName (RtkDecl name) = name +rtkName :: TokenDetails -> Either GHC.Name GHC.ModuleName +rtkName (RtkVar name) = Left name +rtkName (RtkType name) = Left name +rtkName (RtkBind name) = Left name +rtkName (RtkDecl name) = Left name +rtkName (RtkModule name) = Right name  enrich :: GHC.RenamedSource -> [Token] -> [RichToken]  enrich src = @@ -109,8 +111,8 @@ decls (group, _, _, _) = concatMap ($ group)          _ -> empty  imports :: GHC.RenamedSource -> DetailsMap -imports = -    everything (<|>) ie +imports src@(_, imps, _, _) = +    everything (<|>) ie src ++ map (imp . GHC.unLoc) imps    where      ie term = case cast term of          (Just (GHC.IEVar v)) -> pure $ var v @@ -120,6 +122,9 @@ imports =          _ -> empty      typ (GHC.L sspan name) = (sspan, RtkType name)      var (GHC.L sspan name) = (sspan, RtkVar name) +    imp idecl = +        let (GHC.L sspan name) = GHC.ideclName idecl +        in (sspan, RtkModule name)  matches :: Span -> GHC.SrcSpan -> Bool  matches tspan (GHC.RealSrcSpan aspan)  | 
