diff options
-rw-r--r-- | src/HaskellCodeExplorer/AST/RenamedSource.hs | 84 |
1 files changed, 26 insertions, 58 deletions
diff --git a/src/HaskellCodeExplorer/AST/RenamedSource.hs b/src/HaskellCodeExplorer/AST/RenamedSource.hs index 44e0190..cb0f132 100644 --- a/src/HaskellCodeExplorer/AST/RenamedSource.hs +++ b/src/HaskellCodeExplorer/AST/RenamedSource.hs @@ -10,8 +10,10 @@ module HaskellCodeExplorer.AST.RenamedSource , namesFromRenamedSource ) where -import BasicTypes (TupleSort(..)) -import BooleanFormula (BooleanFormula(..)) +-- import BasicTypes (TupleSort(..)) +import GHC.Types.Basic (TupleSort(..)) +-- import BooleanFormula (BooleanFormula(..)) +import GHC.Data.BooleanFormula (BooleanFormula(..)) import Data.Generics (Data, everything, extQ, mkQ) import Data.Maybe (Maybe(..), mapMaybe) import qualified Data.Text as T (Text) @@ -28,6 +30,7 @@ import GHC , FixitySig(..) , ForeignDecl(..) , GenLocated(..) + , getLocA , HsBindLR(..) , HsExpr(..) #if MIN_VERSION_GLASGOW_HASKELL(8,4,1,0) @@ -65,6 +68,7 @@ import GHC , Name , Pat(..) , PatSynBind(..) + , reLocN , Sig(..) , TyClDecl(..) #if MIN_VERSION_GLASGOW_HASKELL(8,4,3,0) @@ -79,17 +83,21 @@ import GHC , unLoc ) #if MIN_VERSION_GLASGOW_HASKELL(8,4,3,0) -import HsExtension (GhcRn) +-- import HsExtension (GhcRn) +import GHC.Hs.Extension (GhcRn) #endif import HaskellCodeExplorer.GhcUtils (hsPatSynDetails, ieLocNames, ghcDL) import Prelude hiding (span) -import TysWiredIn +-- import TysWiredIn +import GHC.Builtin.Types ( nilDataConName , tupleTyConName - , typeNatKind +-- , typeNatKind + , naturalTy , typeSymbolKind ) -import SrcLoc +-- import SrcLoc +import GHC.Types.SrcLoc ( mkRealSrcSpan , mkRealSrcLoc , realSrcSpanEnd @@ -139,19 +147,11 @@ namesFromRenamedSource = roleAnnotationNames `extQ` injectivityAnnotationNames) -#if MIN_VERSION_GLASGOW_HASKELL(8,4,3,0) fieldOccName :: Bool -> FieldOcc GhcRn -> NameOccurrence -#else -fieldOccName :: Bool -> FieldOcc Name -> NameOccurrence -#endif -#if MIN_VERSION_GLASGOW_HASKELL(8,6,1,0) fieldOccName _ (XFieldOcc _) = undefined -fieldOccName isBinder (FieldOcc name (L span _)) = -#else -fieldOccName isBinder (FieldOcc (L span _) name) = -#endif +fieldOccName isBinder (FieldOcc name located) = NameOccurrence - { locatedName = L span (Just name) + { locatedName = L (getLocA located) (Just name) , description = "FieldOcc" , isBinder = isBinder } @@ -215,12 +215,12 @@ hsExprNames (L _span (HsVar _ name)) = hsExprNames (L _span (HsVar name)) = #endif [ NameOccurrence - { locatedName = Just <$> name + { locatedName = Just <$> reLocN name , description = "HsVar" , isBinder = False } ] -hsExprNames (L span (ExplicitList _ _ exprs)) +hsExprNames (L span (ExplicitList _ exprs)) | null exprs = [ NameOccurrence { locatedName = L span $ Just nilDataConName @@ -268,7 +268,7 @@ hsExprNames (L span (HsRnBracketOut _ (VarBr _ quote name) _)) = hsExprNames (L span (HsRnBracketOut (VarBr quote name) _)) = #endif case span of - RealSrcSpan realSpan -> + RealSrcSpan realSpan _ -> let start = realSrcSpanStart realSpan end = realSrcSpanEnd realSpan offset = @@ -362,45 +362,29 @@ importNames = ieLocNames -#if MIN_VERSION_GLASGOW_HASKELL(8,4,3,0) patNames :: LPat GhcRn -> [NameOccurrence] -#else -patNames :: LPat Name -> [NameOccurrence] -#endif -#if MIN_VERSION_GLASGOW_HASKELL(8,6,1,0) patNames (ghcDL -> (L _span (VarPat _ name))) = -#else -patNames (L _span (VarPat name)) = -#endif [ NameOccurrence { locatedName = Just <$> name , description = "VarPat" , isBinder = True } ] -patNames (ghcDL -> (L _span (ConPatIn name _))) = +patNames (ghcDL -> (L _span (ConPat _ name _))) = [ NameOccurrence { locatedName = Just <$> name , description = "ConPatIn" , isBinder = False } ] -#if MIN_VERSION_GLASGOW_HASKELL(8,6,1,0) patNames (ghcDL -> (L _span (AsPat _ name _))) = -#else -patNames (L _span (AsPat name _)) = -#endif [ NameOccurrence { locatedName = Just <$> name , description = "AsPat" , isBinder = True } ] -#if MIN_VERSION_GLASGOW_HASKELL(8,6,1,0) patNames (ghcDL -> (L _span (NPlusKPat _ name _ _ _ _))) = -#else -patNames (L _span (NPlusKPat name _ _ _ _ _)) = -#endif [ NameOccurrence { locatedName = Just <$> name , description = "NPlusKPat" @@ -538,7 +522,7 @@ hsTypeNames (L span (HsTyLit lit)) = #endif let kind = case lit of - HsNumTy _ _ -> typeNatKind + HsNumTy _ _ -> naturalTy HsStrTy _ _ -> typeSymbolKind in [ TyLitOccurrence { locatedName = L span Nothing @@ -566,8 +550,6 @@ hsTypeNames (L span (HsTupleTy tupleSort types)) let sort = case tupleSort of HsUnboxedTuple -> UnboxedTuple - HsBoxedTuple -> BoxedTuple - HsConstraintTuple -> ConstraintTuple HsBoxedOrConstraintTuple -> BoxedTuple in [ NameOccurrence { locatedName = L span (Just $ tupleTyConName sort 0) @@ -582,36 +564,22 @@ hsTypeNames (L span (HsTupleTy tupleSort types)) hsTypeNames _ = [] -#if MIN_VERSION_GLASGOW_HASKELL(8,4,3,0) -hsTyVarBndrNames :: HsTyVarBndr GhcRn -> [NameOccurrence] -#else -hsTyVarBndrNames :: HsTyVarBndr Name -> [NameOccurrence] -#endif -#if MIN_VERSION_GLASGOW_HASKELL(8,6,1,0) -hsTyVarBndrNames (UserTyVar _ n) = -#else -hsTyVarBndrNames (UserTyVar n) = -#endif +hsTyVarBndrNames :: HsTyVarBndr flag GhcRn -> [NameOccurrence] +hsTyVarBndrNames (UserTyVar _ _ n) = [ NameOccurrence { locatedName = Just <$> n , description = "UserTyVar" , isBinder = True } ] -#if MIN_VERSION_GLASGOW_HASKELL(8,6,1,0) -hsTyVarBndrNames (KindedTyVar _ n _) = -#else -hsTyVarBndrNames (KindedTyVar n _) = -#endif +hsTyVarBndrNames (KindedTyVar _ _ n _) = [ NameOccurrence { locatedName = Just <$> n , description = "KindedTyVar" , isBinder = True } ] -#if MIN_VERSION_GLASGOW_HASKELL(8,6,1,0) hsTyVarBndrNames _ = [] -#endif #if MIN_VERSION_GLASGOW_HASKELL(8,4,3,0) @@ -669,7 +637,7 @@ familyDeclNames _ = [] #endif #if MIN_VERSION_GLASGOW_HASKELL(8,4,3,0) -familyEqNames :: FamEqn GhcRn (HsTyPats GhcRn) (LHsType GhcRn) -> [NameOccurrence] +familyEqNames :: FamEqn GhcRn (LHsType GhcRn) -> [NameOccurrence] familyEqNames FamEqn {feqn_tycon = tyCon} = [ NameOccurrence { locatedName = Just <$> tyCon @@ -681,7 +649,7 @@ familyEqNames FamEqn {feqn_tycon = tyCon} = familyEqNames _ = [] #endif -dataEqNames :: FamEqn GhcRn (HsTyPats GhcRn) (HsDataDefn GhcRn) -> [NameOccurrence] +dataEqNames :: FamEqn GhcRn (HsDataDefn GhcRn) -> [NameOccurrence] dataEqNames FamEqn {feqn_tycon = tyCon} = [ NameOccurrence { locatedName = Just <$> tyCon |