{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE NoImplicitPrelude #-}

module Data.Mergeable.Internal.NameCollision
  ( NameCollision (..),
  )
where

import Data.Mergeable.Internal.Resolution (Indexed (..))
import Relude

class NameCollision e a where
  nameCollision :: a -> e

instance NameCollision e a => NameCollision e (Indexed k a) where
  nameCollision :: Indexed k a -> e
nameCollision = a -> e
forall e a. NameCollision e a => a -> e
nameCollision (a -> e) -> (Indexed k a -> a) -> Indexed k a -> e
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Indexed k a -> a
forall k a. Indexed k a -> a
indexedValue