packages feed

large-records-0.4: test/Test/Record/Sanity/Operators.hs

{-# LANGUAGE ConstraintKinds       #-}
{-# LANGUAGE DataKinds             #-}
{-# LANGUAGE FlexibleContexts      #-}
{-# LANGUAGE FlexibleInstances     #-}
{-# LANGUAGE GADTs                 #-}
{-# LANGUAGE KindSignatures        #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE ScopedTypeVariables   #-}
{-# LANGUAGE TypeFamilies          #-}
{-# LANGUAGE TypeOperators         #-}
{-# LANGUAGE UndecidableInstances  #-}

{-# OPTIONS_GHC -fplugin=Data.Record.Plugin #-}

module Test.Record.Sanity.Operators () where

import Data.Kind (Type)

import Data.Record.Plugin

-- Some type family (e.g. servant record-style API def).
type family tag :- route :: Type

{-# ANN type X largeRecord #-}
data X mode = MkX { _fx1 :: (mode :- Int) }

{-# ANN type Y largeRecord #-}
data Y mode = MkY { _fy1 :: mode :- Int }