module Yhc.Core.Extra (module X, coreCtorMaybe, coreDataMaybe) where

import Yhc.Core as X

import Yhc.Core.MapNames as X
import Yhc.Core.Unreachable as X
import Yhc.Core.Annotation as X
import Yhc.Core.AnnotatePrims as X
import Yhc.Core.StrictAnno as X
import Yhc.Core.Selector as X

import Data.Maybe

-- |Non-crashing version of coreCtor

coreCtorMaybe :: Core -> CoreCtorName -> Maybe CoreCtor

coreCtorMaybe core name = listToMaybe 
  [ctr | dat <- coreDatas core, ctr <- coreDataCtors dat, coreCtorName ctr == name]

-- |Non-crashing version of coreData

coreDataMaybe :: Core -> CoreDataName -> Maybe CoreData
coreDataMaybe core name = listToMaybe
  [dat | dat <- coreDatas core, coreDataName dat == name]