{-# LANGUAGE RecordWildCards #-} module HIndent.Ast.Declaration.Class.FunctionalDependency ( FunctionalDependency , mkFunctionalDependency ) where import HIndent.Ast.Name.Prefix import HIndent.Ast.NodeComments import HIndent.Ast.WithComments import qualified HIndent.GhcLibParserWrapper.GHC.Hs as GHC import {-# SOURCE #-} HIndent.Pretty import HIndent.Pretty.Combinators import HIndent.Pretty.NodeComments data FunctionalDependency = FunctionalDependency { FunctionalDependency -> [WithComments PrefixName] from :: [WithComments PrefixName] , FunctionalDependency -> [WithComments PrefixName] to :: [WithComments PrefixName] } instance CommentExtraction FunctionalDependency where nodeComments :: FunctionalDependency -> NodeComments nodeComments FunctionalDependency {} = [LEpaComment] -> [LEpaComment] -> [LEpaComment] -> NodeComments NodeComments [] [] [] instance Pretty FunctionalDependency where pretty' :: FunctionalDependency -> Printer () pretty' (FunctionalDependency {[WithComments PrefixName] from :: FunctionalDependency -> [WithComments PrefixName] to :: FunctionalDependency -> [WithComments PrefixName] from :: [WithComments PrefixName] to :: [WithComments PrefixName] ..}) = [Printer ()] -> Printer () spaced ([Printer ()] -> Printer ()) -> [Printer ()] -> Printer () forall a b. (a -> b) -> a -> b $ (WithComments PrefixName -> Printer ()) -> [WithComments PrefixName] -> [Printer ()] forall a b. (a -> b) -> [a] -> [b] forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b fmap WithComments PrefixName -> Printer () forall a. Pretty a => a -> Printer () pretty [WithComments PrefixName] from [Printer ()] -> [Printer ()] -> [Printer ()] forall a. [a] -> [a] -> [a] ++ [HasCallStack => String -> Printer () String -> Printer () string String "->"] [Printer ()] -> [Printer ()] -> [Printer ()] forall a. [a] -> [a] -> [a] ++ (WithComments PrefixName -> Printer ()) -> [WithComments PrefixName] -> [Printer ()] forall a b. (a -> b) -> [a] -> [b] forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b fmap WithComments PrefixName -> Printer () forall a. Pretty a => a -> Printer () pretty [WithComments PrefixName] to mkFunctionalDependency :: GHC.FunDep GHC.GhcPs -> FunctionalDependency mkFunctionalDependency :: FunDep GhcPs -> FunctionalDependency mkFunctionalDependency (GHC.FunDep XCFunDep GhcPs _ [LIdP GhcPs] f [LIdP GhcPs] t) = FunctionalDependency {[WithComments PrefixName] from :: [WithComments PrefixName] to :: [WithComments PrefixName] from :: [WithComments PrefixName] to :: [WithComments PrefixName] ..} where from :: [WithComments PrefixName] from = (GenLocated SrcSpanAnnN RdrName -> WithComments PrefixName) -> [GenLocated SrcSpanAnnN RdrName] -> [WithComments PrefixName] forall a b. (a -> b) -> [a] -> [b] forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b fmap (GenLocated SrcSpanAnnN PrefixName -> WithComments PrefixName forall l a. CommentExtraction l => GenLocated l a -> WithComments a fromGenLocated (GenLocated SrcSpanAnnN PrefixName -> WithComments PrefixName) -> (GenLocated SrcSpanAnnN RdrName -> GenLocated SrcSpanAnnN PrefixName) -> GenLocated SrcSpanAnnN RdrName -> WithComments PrefixName forall b c a. (b -> c) -> (a -> b) -> a -> c . (RdrName -> PrefixName) -> GenLocated SrcSpanAnnN RdrName -> GenLocated SrcSpanAnnN PrefixName forall a b. (a -> b) -> GenLocated SrcSpanAnnN a -> GenLocated SrcSpanAnnN b forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b fmap RdrName -> PrefixName mkPrefixName) [LIdP GhcPs] [GenLocated SrcSpanAnnN RdrName] f to :: [WithComments PrefixName] to = (GenLocated SrcSpanAnnN RdrName -> WithComments PrefixName) -> [GenLocated SrcSpanAnnN RdrName] -> [WithComments PrefixName] forall a b. (a -> b) -> [a] -> [b] forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b fmap (GenLocated SrcSpanAnnN PrefixName -> WithComments PrefixName forall l a. CommentExtraction l => GenLocated l a -> WithComments a fromGenLocated (GenLocated SrcSpanAnnN PrefixName -> WithComments PrefixName) -> (GenLocated SrcSpanAnnN RdrName -> GenLocated SrcSpanAnnN PrefixName) -> GenLocated SrcSpanAnnN RdrName -> WithComments PrefixName forall b c a. (b -> c) -> (a -> b) -> a -> c . (RdrName -> PrefixName) -> GenLocated SrcSpanAnnN RdrName -> GenLocated SrcSpanAnnN PrefixName forall a b. (a -> b) -> GenLocated SrcSpanAnnN a -> GenLocated SrcSpanAnnN b forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b fmap RdrName -> PrefixName mkPrefixName) [LIdP GhcPs] [GenLocated SrcSpanAnnN RdrName] t