{-# LANGUAGE CPP #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE RankNTypes #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE TypeApplications #-} {-# OPTIONS_GHC -Wno-orphans #-} {-# OPTIONS_GHC -fdefer-type-errors -Wno-deferred-type-errors -dcore-lint #-} {-# OPTIONS_GHC -fplugin GHC.Magic.Dict.Plugin #-} module GHC.Magic.Dict.Errors (badClass1, badClass2, badVoid, withEqFail) where import Data.Void (Void) import GHC.Magic.Dict.Compat import GHC.Magic.Dict.Defs withEqFail :: forall a r. (a -> a -> Bool) -> ((Eq a) => r) -> r withEqFail = withDict @(Eq a) badClass1 :: Int -> Int badClass1 = withDict @(BadClass1 Int) (id @Int) neg badClass2 :: Int -> Int -> Bool badClass2 = withDict @(BadClass2 Int) ((==) @Int) badeq2 #if defined(__GLASGOW_HASKELL__) && __GLASGOW_HASKELL__ < 904 instance WithDict (Inhabited Void) () #endif badVoid :: Void badVoid = withDict @(Inhabited Void) () (inhibitant @Void)