module Language.Haskell.TH.Compat.Reify.Current (
  ParentName,
  unClassOpI, unDataConI, unVarI,
  reifyFixity,
  )where

import Language.Haskell.TH (Info (..), Name, Type, ParentName, Dec, reifyFixity)


-- | Compatible interface to destruct 'ClassOpI'
unClassOpI :: Info -> Maybe (Name, Type, ParentName)
unClassOpI :: Info -> Maybe (Name, Type, Name)
unClassOpI (ClassOpI Name
n Type
t Name
p) = (Name, Type, Name) -> Maybe (Name, Type, Name)
forall a. a -> Maybe a
Just (Name
n, Type
t, Name
p)
unClassOpI  Info
_               = Maybe (Name, Type, Name)
forall a. Maybe a
Nothing

-- | Compatible interface to destruct 'DataConI'
unDataConI :: Info -> Maybe (Name, Type, ParentName)
unDataConI :: Info -> Maybe (Name, Type, Name)
unDataConI (DataConI Name
n Type
t Name
p) = (Name, Type, Name) -> Maybe (Name, Type, Name)
forall a. a -> Maybe a
Just (Name
n, Type
t, Name
p)
unDataConI  Info
_               = Maybe (Name, Type, Name)
forall a. Maybe a
Nothing

-- | Compatible interface to destruct 'VarI'
unVarI :: Info -> Maybe (Name, Type, Maybe Dec)
unVarI :: Info -> Maybe (Name, Type, Maybe Dec)
unVarI (VarI Name
n Type
t Maybe Dec
md) = (Name, Type, Maybe Dec) -> Maybe (Name, Type, Maybe Dec)
forall a. a -> Maybe a
Just (Name
n, Type
t, Maybe Dec
md)
unVarI  Info
_            = Maybe (Name, Type, Maybe Dec)
forall a. Maybe a
Nothing