module Language.Haskell.Tools.Refactor.Utils.NameLookup where import GHC (GhcMonad) import qualified GHC import Control.Reference ((^.)) import Language.Haskell.Tools.AST import Language.Haskell.Tools.Rewrite import Language.Haskell.Tools.Refactor.Utils.Maybe opSemName :: GhcMonad m => Operator -> MaybeT m GHC.Name opSemName = liftMaybe . semanticsName . (^. operatorName) declHeadSemName :: GhcMonad m => DeclHead -> MaybeT m GHC.Name declHeadSemName (NameDeclHead n) = liftMaybe . semanticsName $ n declHeadSemName (ParenDeclHead dh) = declHeadSemName dh declHeadSemName (DeclHeadApp dh _) = declHeadSemName dh declHeadSemName (InfixDeclHead _ op _) = opSemName op instHeadSemName :: GhcMonad m => InstanceHead -> MaybeT m GHC.Name instHeadSemName (InstanceHead n) = liftMaybe . semanticsName $ n instHeadSemName (InfixInstanceHead _ op) = opSemName op instHeadSemName (ParenInstanceHead ih) = instHeadSemName ih instHeadSemName (AppInstanceHead ih _) = instHeadSemName ih