packages feed

large-records-0.1.0.0: test/Test/Record/Prop/Show/Large.hs

{-# LANGUAGE ConstraintKinds        #-}
{-# LANGUAGE DataKinds              #-}
{-# LANGUAGE FlexibleContexts       #-}
{-# LANGUAGE FlexibleInstances      #-}
{-# LANGUAGE FunctionalDependencies #-}
{-# LANGUAGE MultiParamTypeClasses  #-}
{-# LANGUAGE QuasiQuotes            #-}
{-# LANGUAGE RecordWildCards        #-}
{-# LANGUAGE ScopedTypeVariables    #-}
{-# LANGUAGE TemplateHaskell        #-}
{-# LANGUAGE TypeFamilies           #-}
{-# LANGUAGE UndecidableInstances   #-}

-- {-# OPTIONS_GHC -ddump-splices #-}

module Test.Record.Prop.Show.Large (
      FromRegular(..)
    , Example1(..)
    ) where

import Data.Record.TH

import qualified Test.Record.Prop.Show.Regular as Regular

class FromRegular a b | a -> b, b -> a where
  fromRegular :: a -> b

largeRecord defaultPureScript [d|
    data Example1 = MkExample1 {
          example1Field1 :: Int
        , example1Field2 :: Bool
        }
      deriving (Show)
  |]

instance FromRegular Regular.Example1 Example1 where
  fromRegular Regular.MkExample1{..} = [lr| MkExample1 {
        example1Field1 = example1Field1
      , example1Field2 = example1Field2
      } |]