packages feed

ruin-0.1.0.0: test/MustCompile/ClosedHas.hs

{-# Language DataKinds #-}
{-# Language DeriveGeneric #-}
{-# Language FlexibleContexts #-}
{-# Language FlexibleInstances #-}
{-# Language MultiParamTypeClasses #-}
{-# Language TemplateHaskell #-}
{-# Language TypeApplications #-}
{-# Language UndecidableInstances #-}
{-# Language ViewPatterns #-}

module MustCompile.ClosedHas () where

import GHC.Generics (Generic)

import Data.Ruin
import Data.Ruin.Ancillaries (genericBuild)
import Data.Ruin.ClosedHas

data XY x y = MkXY {x::x,y::y} deriving Generic

instance NoWarnUnusedTopBind XY where
   noWarnUnusedTopBind MkXY{x=_,y=_} = ()

instance ClosedHas s (XY x y) => Has s (XY x y) where
  {-# INLINE extricate1 #-}
  extricate1 = closedExtricate1

instance HasCase "x" (XY x y)
instance HasCase "y" (XY x y)

instance Build (XY x y) where
  {-# INLINE build #-}
  build = genericBuild