overloaded-0.2.1: example/Boring.hs
{-# LANGUAGE OverloadedLabels #-}
{-# LANGUAGE TypeOperators #-}
{-# OPTIONS -fplugin=Overloaded
-fplugin-opt=Overloaded:Unit=Data.Boring.boring #-}
module Main (main) where
import Data.Constraint (Dict (..))
import Data.Type.Equality ((:~:) (..))
import Data.Void (Void)
import Test.HUnit ((@?=))
main :: IO ()
main = do
-- vanilla unit
let ex1 :: ()
ex1 = ()
() @?= ex1
-- Boring instances
let ex2 :: [Void]
ex2 = ()
[] @?= ex2
let ex3 :: Dict (Ord [(Int, Char)])
ex3 = ()
let ex4 :: (Int :~: Int, ())
ex4 = ()
(Refl, ()) @?= ex4