module JVM.Data.Abstract.Descriptor where import Data.Data import JVM.Data.Abstract.Type (FieldType) import JVM.Data.Pretty data MethodDescriptor = MethodDescriptor { MethodDescriptor -> [FieldType] params :: [FieldType] , MethodDescriptor -> ReturnDescriptor returnDesc :: ReturnDescriptor } deriving (Int -> MethodDescriptor -> ShowS [MethodDescriptor] -> ShowS MethodDescriptor -> String (Int -> MethodDescriptor -> ShowS) -> (MethodDescriptor -> String) -> ([MethodDescriptor] -> ShowS) -> Show MethodDescriptor forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a $cshowsPrec :: Int -> MethodDescriptor -> ShowS showsPrec :: Int -> MethodDescriptor -> ShowS $cshow :: MethodDescriptor -> String show :: MethodDescriptor -> String $cshowList :: [MethodDescriptor] -> ShowS showList :: [MethodDescriptor] -> ShowS Show, MethodDescriptor -> MethodDescriptor -> Bool (MethodDescriptor -> MethodDescriptor -> Bool) -> (MethodDescriptor -> MethodDescriptor -> Bool) -> Eq MethodDescriptor forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a $c== :: MethodDescriptor -> MethodDescriptor -> Bool == :: MethodDescriptor -> MethodDescriptor -> Bool $c/= :: MethodDescriptor -> MethodDescriptor -> Bool /= :: MethodDescriptor -> MethodDescriptor -> Bool Eq, Eq MethodDescriptor Eq MethodDescriptor => (MethodDescriptor -> MethodDescriptor -> Ordering) -> (MethodDescriptor -> MethodDescriptor -> Bool) -> (MethodDescriptor -> MethodDescriptor -> Bool) -> (MethodDescriptor -> MethodDescriptor -> Bool) -> (MethodDescriptor -> MethodDescriptor -> Bool) -> (MethodDescriptor -> MethodDescriptor -> MethodDescriptor) -> (MethodDescriptor -> MethodDescriptor -> MethodDescriptor) -> Ord MethodDescriptor MethodDescriptor -> MethodDescriptor -> Bool MethodDescriptor -> MethodDescriptor -> Ordering MethodDescriptor -> MethodDescriptor -> MethodDescriptor forall a. Eq a => (a -> a -> Ordering) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> a) -> (a -> a -> a) -> Ord a $ccompare :: MethodDescriptor -> MethodDescriptor -> Ordering compare :: MethodDescriptor -> MethodDescriptor -> Ordering $c< :: MethodDescriptor -> MethodDescriptor -> Bool < :: MethodDescriptor -> MethodDescriptor -> Bool $c<= :: MethodDescriptor -> MethodDescriptor -> Bool <= :: MethodDescriptor -> MethodDescriptor -> Bool $c> :: MethodDescriptor -> MethodDescriptor -> Bool > :: MethodDescriptor -> MethodDescriptor -> Bool $c>= :: MethodDescriptor -> MethodDescriptor -> Bool >= :: MethodDescriptor -> MethodDescriptor -> Bool $cmax :: MethodDescriptor -> MethodDescriptor -> MethodDescriptor max :: MethodDescriptor -> MethodDescriptor -> MethodDescriptor $cmin :: MethodDescriptor -> MethodDescriptor -> MethodDescriptor min :: MethodDescriptor -> MethodDescriptor -> MethodDescriptor Ord, Typeable MethodDescriptor Typeable MethodDescriptor => (forall (c :: * -> *). (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> MethodDescriptor -> c MethodDescriptor) -> (forall (c :: * -> *). (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c MethodDescriptor) -> (MethodDescriptor -> Constr) -> (MethodDescriptor -> DataType) -> (forall (t :: * -> *) (c :: * -> *). Typeable t => (forall d. Data d => c (t d)) -> Maybe (c MethodDescriptor)) -> (forall (t :: * -> * -> *) (c :: * -> *). Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c MethodDescriptor)) -> ((forall b. Data b => b -> b) -> MethodDescriptor -> MethodDescriptor) -> (forall r r'. (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> MethodDescriptor -> r) -> (forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> MethodDescriptor -> r) -> (forall u. (forall d. Data d => d -> u) -> MethodDescriptor -> [u]) -> (forall u. Int -> (forall d. Data d => d -> u) -> MethodDescriptor -> u) -> (forall (m :: * -> *). Monad m => (forall d. Data d => d -> m d) -> MethodDescriptor -> m MethodDescriptor) -> (forall (m :: * -> *). MonadPlus m => (forall d. Data d => d -> m d) -> MethodDescriptor -> m MethodDescriptor) -> (forall (m :: * -> *). MonadPlus m => (forall d. Data d => d -> m d) -> MethodDescriptor -> m MethodDescriptor) -> Data MethodDescriptor MethodDescriptor -> Constr MethodDescriptor -> DataType (forall b. Data b => b -> b) -> MethodDescriptor -> MethodDescriptor forall a. Typeable a => (forall (c :: * -> *). (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> a -> c a) -> (forall (c :: * -> *). (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c a) -> (a -> Constr) -> (a -> DataType) -> (forall (t :: * -> *) (c :: * -> *). Typeable t => (forall d. Data d => c (t d)) -> Maybe (c a)) -> (forall (t :: * -> * -> *) (c :: * -> *). Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a)) -> ((forall b. Data b => b -> b) -> a -> a) -> (forall r r'. (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r) -> (forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r) -> (forall u. (forall d. Data d => d -> u) -> a -> [u]) -> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u) -> (forall (m :: * -> *). Monad m => (forall d. Data d => d -> m d) -> a -> m a) -> (forall (m :: * -> *). MonadPlus m => (forall d. Data d => d -> m d) -> a -> m a) -> (forall (m :: * -> *). MonadPlus m => (forall d. Data d => d -> m d) -> a -> m a) -> Data a forall u. Int -> (forall d. Data d => d -> u) -> MethodDescriptor -> u forall u. (forall d. Data d => d -> u) -> MethodDescriptor -> [u] forall r r'. (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> MethodDescriptor -> r forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> MethodDescriptor -> r forall (m :: * -> *). Monad m => (forall d. Data d => d -> m d) -> MethodDescriptor -> m MethodDescriptor forall (m :: * -> *). MonadPlus m => (forall d. Data d => d -> m d) -> MethodDescriptor -> m MethodDescriptor forall (c :: * -> *). (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c MethodDescriptor forall (c :: * -> *). (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> MethodDescriptor -> c MethodDescriptor forall (t :: * -> *) (c :: * -> *). Typeable t => (forall d. Data d => c (t d)) -> Maybe (c MethodDescriptor) forall (t :: * -> * -> *) (c :: * -> *). Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c MethodDescriptor) $cgfoldl :: forall (c :: * -> *). (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> MethodDescriptor -> c MethodDescriptor gfoldl :: forall (c :: * -> *). (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> MethodDescriptor -> c MethodDescriptor $cgunfold :: forall (c :: * -> *). (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c MethodDescriptor gunfold :: forall (c :: * -> *). (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c MethodDescriptor $ctoConstr :: MethodDescriptor -> Constr toConstr :: MethodDescriptor -> Constr $cdataTypeOf :: MethodDescriptor -> DataType dataTypeOf :: MethodDescriptor -> DataType $cdataCast1 :: forall (t :: * -> *) (c :: * -> *). Typeable t => (forall d. Data d => c (t d)) -> Maybe (c MethodDescriptor) dataCast1 :: forall (t :: * -> *) (c :: * -> *). Typeable t => (forall d. Data d => c (t d)) -> Maybe (c MethodDescriptor) $cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *). Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c MethodDescriptor) dataCast2 :: forall (t :: * -> * -> *) (c :: * -> *). Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c MethodDescriptor) $cgmapT :: (forall b. Data b => b -> b) -> MethodDescriptor -> MethodDescriptor gmapT :: (forall b. Data b => b -> b) -> MethodDescriptor -> MethodDescriptor $cgmapQl :: forall r r'. (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> MethodDescriptor -> r gmapQl :: forall r r'. (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> MethodDescriptor -> r $cgmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> MethodDescriptor -> r gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> MethodDescriptor -> r $cgmapQ :: forall u. (forall d. Data d => d -> u) -> MethodDescriptor -> [u] gmapQ :: forall u. (forall d. Data d => d -> u) -> MethodDescriptor -> [u] $cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> MethodDescriptor -> u gmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> MethodDescriptor -> u $cgmapM :: forall (m :: * -> *). Monad m => (forall d. Data d => d -> m d) -> MethodDescriptor -> m MethodDescriptor gmapM :: forall (m :: * -> *). Monad m => (forall d. Data d => d -> m d) -> MethodDescriptor -> m MethodDescriptor $cgmapMp :: forall (m :: * -> *). MonadPlus m => (forall d. Data d => d -> m d) -> MethodDescriptor -> m MethodDescriptor gmapMp :: forall (m :: * -> *). MonadPlus m => (forall d. Data d => d -> m d) -> MethodDescriptor -> m MethodDescriptor $cgmapMo :: forall (m :: * -> *). MonadPlus m => (forall d. Data d => d -> m d) -> MethodDescriptor -> m MethodDescriptor gmapMo :: forall (m :: * -> *). MonadPlus m => (forall d. Data d => d -> m d) -> MethodDescriptor -> m MethodDescriptor Data) instance Pretty MethodDescriptor where pretty :: forall ann. MethodDescriptor -> Doc ann pretty (MethodDescriptor [FieldType] params ReturnDescriptor ret) = Doc ann "(" Doc ann -> Doc ann -> Doc ann forall a. Semigroup a => a -> a -> a <> [Doc ann] -> Doc ann forall ann. [Doc ann] -> Doc ann hsep (FieldType -> Doc ann forall a ann. Pretty a => a -> Doc ann forall ann. FieldType -> Doc ann pretty (FieldType -> Doc ann) -> [FieldType] -> [Doc ann] forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> [FieldType] params) Doc ann -> Doc ann -> Doc ann forall a. Semigroup a => a -> a -> a <> Doc ann ")" Doc ann -> Doc ann -> Doc ann forall a. Semigroup a => a -> a -> a <> ReturnDescriptor -> Doc ann forall a ann. Pretty a => a -> Doc ann forall ann. ReturnDescriptor -> Doc ann pretty ReturnDescriptor ret methodParam :: MethodDescriptor -> Int -> Maybe FieldType methodParam :: MethodDescriptor -> Int -> Maybe FieldType methodParam (MethodDescriptor [FieldType] params ReturnDescriptor _) Int i = [FieldType] params [FieldType] -> Int -> Maybe FieldType forall {t} {a}. (Eq t, Num t) => [a] -> t -> Maybe a !!? Int i where [] !!? :: [a] -> t -> Maybe a !!? t _ = Maybe a forall a. Maybe a Nothing (a x : [a] _) !!? t 0 = a -> Maybe a forall a. a -> Maybe a Just a x (a _ : [a] xs) !!? t n = [a] xs [a] -> t -> Maybe a !!? (t n t -> t -> t forall a. Num a => a -> a -> a - t 1) data ReturnDescriptor = VoidReturn | TypeReturn FieldType deriving (Int -> ReturnDescriptor -> ShowS [ReturnDescriptor] -> ShowS ReturnDescriptor -> String (Int -> ReturnDescriptor -> ShowS) -> (ReturnDescriptor -> String) -> ([ReturnDescriptor] -> ShowS) -> Show ReturnDescriptor forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a $cshowsPrec :: Int -> ReturnDescriptor -> ShowS showsPrec :: Int -> ReturnDescriptor -> ShowS $cshow :: ReturnDescriptor -> String show :: ReturnDescriptor -> String $cshowList :: [ReturnDescriptor] -> ShowS showList :: [ReturnDescriptor] -> ShowS Show, ReturnDescriptor -> ReturnDescriptor -> Bool (ReturnDescriptor -> ReturnDescriptor -> Bool) -> (ReturnDescriptor -> ReturnDescriptor -> Bool) -> Eq ReturnDescriptor forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a $c== :: ReturnDescriptor -> ReturnDescriptor -> Bool == :: ReturnDescriptor -> ReturnDescriptor -> Bool $c/= :: ReturnDescriptor -> ReturnDescriptor -> Bool /= :: ReturnDescriptor -> ReturnDescriptor -> Bool Eq, Eq ReturnDescriptor Eq ReturnDescriptor => (ReturnDescriptor -> ReturnDescriptor -> Ordering) -> (ReturnDescriptor -> ReturnDescriptor -> Bool) -> (ReturnDescriptor -> ReturnDescriptor -> Bool) -> (ReturnDescriptor -> ReturnDescriptor -> Bool) -> (ReturnDescriptor -> ReturnDescriptor -> Bool) -> (ReturnDescriptor -> ReturnDescriptor -> ReturnDescriptor) -> (ReturnDescriptor -> ReturnDescriptor -> ReturnDescriptor) -> Ord ReturnDescriptor ReturnDescriptor -> ReturnDescriptor -> Bool ReturnDescriptor -> ReturnDescriptor -> Ordering ReturnDescriptor -> ReturnDescriptor -> ReturnDescriptor forall a. Eq a => (a -> a -> Ordering) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> a) -> (a -> a -> a) -> Ord a $ccompare :: ReturnDescriptor -> ReturnDescriptor -> Ordering compare :: ReturnDescriptor -> ReturnDescriptor -> Ordering $c< :: ReturnDescriptor -> ReturnDescriptor -> Bool < :: ReturnDescriptor -> ReturnDescriptor -> Bool $c<= :: ReturnDescriptor -> ReturnDescriptor -> Bool <= :: ReturnDescriptor -> ReturnDescriptor -> Bool $c> :: ReturnDescriptor -> ReturnDescriptor -> Bool > :: ReturnDescriptor -> ReturnDescriptor -> Bool $c>= :: ReturnDescriptor -> ReturnDescriptor -> Bool >= :: ReturnDescriptor -> ReturnDescriptor -> Bool $cmax :: ReturnDescriptor -> ReturnDescriptor -> ReturnDescriptor max :: ReturnDescriptor -> ReturnDescriptor -> ReturnDescriptor $cmin :: ReturnDescriptor -> ReturnDescriptor -> ReturnDescriptor min :: ReturnDescriptor -> ReturnDescriptor -> ReturnDescriptor Ord, Typeable ReturnDescriptor Typeable ReturnDescriptor => (forall (c :: * -> *). (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> ReturnDescriptor -> c ReturnDescriptor) -> (forall (c :: * -> *). (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c ReturnDescriptor) -> (ReturnDescriptor -> Constr) -> (ReturnDescriptor -> DataType) -> (forall (t :: * -> *) (c :: * -> *). Typeable t => (forall d. Data d => c (t d)) -> Maybe (c ReturnDescriptor)) -> (forall (t :: * -> * -> *) (c :: * -> *). Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c ReturnDescriptor)) -> ((forall b. Data b => b -> b) -> ReturnDescriptor -> ReturnDescriptor) -> (forall r r'. (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> ReturnDescriptor -> r) -> (forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> ReturnDescriptor -> r) -> (forall u. (forall d. Data d => d -> u) -> ReturnDescriptor -> [u]) -> (forall u. Int -> (forall d. Data d => d -> u) -> ReturnDescriptor -> u) -> (forall (m :: * -> *). Monad m => (forall d. Data d => d -> m d) -> ReturnDescriptor -> m ReturnDescriptor) -> (forall (m :: * -> *). MonadPlus m => (forall d. Data d => d -> m d) -> ReturnDescriptor -> m ReturnDescriptor) -> (forall (m :: * -> *). MonadPlus m => (forall d. Data d => d -> m d) -> ReturnDescriptor -> m ReturnDescriptor) -> Data ReturnDescriptor ReturnDescriptor -> Constr ReturnDescriptor -> DataType (forall b. Data b => b -> b) -> ReturnDescriptor -> ReturnDescriptor forall a. Typeable a => (forall (c :: * -> *). (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> a -> c a) -> (forall (c :: * -> *). (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c a) -> (a -> Constr) -> (a -> DataType) -> (forall (t :: * -> *) (c :: * -> *). Typeable t => (forall d. Data d => c (t d)) -> Maybe (c a)) -> (forall (t :: * -> * -> *) (c :: * -> *). Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a)) -> ((forall b. Data b => b -> b) -> a -> a) -> (forall r r'. (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r) -> (forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r) -> (forall u. (forall d. Data d => d -> u) -> a -> [u]) -> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u) -> (forall (m :: * -> *). Monad m => (forall d. Data d => d -> m d) -> a -> m a) -> (forall (m :: * -> *). MonadPlus m => (forall d. Data d => d -> m d) -> a -> m a) -> (forall (m :: * -> *). MonadPlus m => (forall d. Data d => d -> m d) -> a -> m a) -> Data a forall u. Int -> (forall d. Data d => d -> u) -> ReturnDescriptor -> u forall u. (forall d. Data d => d -> u) -> ReturnDescriptor -> [u] forall r r'. (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> ReturnDescriptor -> r forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> ReturnDescriptor -> r forall (m :: * -> *). Monad m => (forall d. Data d => d -> m d) -> ReturnDescriptor -> m ReturnDescriptor forall (m :: * -> *). MonadPlus m => (forall d. Data d => d -> m d) -> ReturnDescriptor -> m ReturnDescriptor forall (c :: * -> *). (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c ReturnDescriptor forall (c :: * -> *). (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> ReturnDescriptor -> c ReturnDescriptor forall (t :: * -> *) (c :: * -> *). Typeable t => (forall d. Data d => c (t d)) -> Maybe (c ReturnDescriptor) forall (t :: * -> * -> *) (c :: * -> *). Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c ReturnDescriptor) $cgfoldl :: forall (c :: * -> *). (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> ReturnDescriptor -> c ReturnDescriptor gfoldl :: forall (c :: * -> *). (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> ReturnDescriptor -> c ReturnDescriptor $cgunfold :: forall (c :: * -> *). (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c ReturnDescriptor gunfold :: forall (c :: * -> *). (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c ReturnDescriptor $ctoConstr :: ReturnDescriptor -> Constr toConstr :: ReturnDescriptor -> Constr $cdataTypeOf :: ReturnDescriptor -> DataType dataTypeOf :: ReturnDescriptor -> DataType $cdataCast1 :: forall (t :: * -> *) (c :: * -> *). Typeable t => (forall d. Data d => c (t d)) -> Maybe (c ReturnDescriptor) dataCast1 :: forall (t :: * -> *) (c :: * -> *). Typeable t => (forall d. Data d => c (t d)) -> Maybe (c ReturnDescriptor) $cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *). Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c ReturnDescriptor) dataCast2 :: forall (t :: * -> * -> *) (c :: * -> *). Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c ReturnDescriptor) $cgmapT :: (forall b. Data b => b -> b) -> ReturnDescriptor -> ReturnDescriptor gmapT :: (forall b. Data b => b -> b) -> ReturnDescriptor -> ReturnDescriptor $cgmapQl :: forall r r'. (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> ReturnDescriptor -> r gmapQl :: forall r r'. (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> ReturnDescriptor -> r $cgmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> ReturnDescriptor -> r gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> ReturnDescriptor -> r $cgmapQ :: forall u. (forall d. Data d => d -> u) -> ReturnDescriptor -> [u] gmapQ :: forall u. (forall d. Data d => d -> u) -> ReturnDescriptor -> [u] $cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> ReturnDescriptor -> u gmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> ReturnDescriptor -> u $cgmapM :: forall (m :: * -> *). Monad m => (forall d. Data d => d -> m d) -> ReturnDescriptor -> m ReturnDescriptor gmapM :: forall (m :: * -> *). Monad m => (forall d. Data d => d -> m d) -> ReturnDescriptor -> m ReturnDescriptor $cgmapMp :: forall (m :: * -> *). MonadPlus m => (forall d. Data d => d -> m d) -> ReturnDescriptor -> m ReturnDescriptor gmapMp :: forall (m :: * -> *). MonadPlus m => (forall d. Data d => d -> m d) -> ReturnDescriptor -> m ReturnDescriptor $cgmapMo :: forall (m :: * -> *). MonadPlus m => (forall d. Data d => d -> m d) -> ReturnDescriptor -> m ReturnDescriptor gmapMo :: forall (m :: * -> *). MonadPlus m => (forall d. Data d => d -> m d) -> ReturnDescriptor -> m ReturnDescriptor Data) instance Pretty ReturnDescriptor where pretty :: forall ann. ReturnDescriptor -> Doc ann pretty ReturnDescriptor VoidReturn = Doc ann "V" pretty (TypeReturn FieldType t) = FieldType -> Doc ann forall a ann. Pretty a => a -> Doc ann forall ann. FieldType -> Doc ann pretty FieldType t returnDescriptorType :: ReturnDescriptor -> Maybe FieldType returnDescriptorType :: ReturnDescriptor -> Maybe FieldType returnDescriptorType ReturnDescriptor VoidReturn = Maybe FieldType forall a. Maybe a Nothing returnDescriptorType (TypeReturn FieldType t) = FieldType -> Maybe FieldType forall a. a -> Maybe a Just FieldType t