Admin message

Due to a large amount of spam we do not allow new users to create repositories, they are "external" users. If you are a new user and want to create a repository, for example for forking GHC, open a new issue on ghc/ghc using the "get-verified" issue template

Use of Assert in Data.Type.Ord discards crucial evidence
## Summary The constraints exposed by `Data.Type.Ord` only restrict and do not provide. Rewriting them simply and directly without `Assert` yields variants that do both, demonstrating that the issue is a regression introduced in !6066 (see [change](https://gitlab.haskell.org/ghc/ghc/-/merge_requests/6066/diffs#diff-content-95e73d0931d48e4d7a170c2b4255816dae723645)). ## Steps to reproduce Run `ghc NoProvide.hs`, where: `NoProvide.hs` ```haskell {-# LANGUAGE ExplicitNamespaces, DataKinds, AllowAmbiguousTypes #-} module NoProvide where import Data.Type.Ord (Compare, type (<=?), type (>=?)) import qualified Data.Type.Ord as Base type a < b = Compare a b ~ LT type a > b = Compare a b ~ GT type a <= b = (a <=? b) ~ True type a >= b = (a >=? b) ~ True type p ==> q = forall r. (q => r) -> (p => r) forwardsLt :: (a < b) ==> (a Base.< b) forwardsLt r = r backwardsLt :: (a Base.< b) ==> (a < b) backwardsLt r = r forwardsLeq :: (a <= b) ==> (a Base.<= b) forwardsLeq r = r backwardsLeq :: (a Base.<= b) ==> (a <= b) backwardsLeq r = r ``` ## Expected behavior The reproducer *should* compile without error. Alas, it fails on the backwards directions: ```text NoProvide.hs:21:17: error: [GHC-05617] • Could not deduce ‘Compare a b ~ LT’ arising from a use of ‘r’ from the context: a Base.< b bound by the type signature for: backwardsLt :: ((a < b) => r) -> (a Base.< b) => r at NoProvide.hs:21:1-17 • In the expression: r In an equation for ‘backwardsLt’: backwardsLt r = r • Relevant bindings include r :: (a < b) => r (bound at NoProvide.hs:21:13) backwardsLt :: ((a < b) => r) -> (a Base.< b) => r (bound at NoProvide.hs:21:1) | 21 | backwardsLt r = r | ^ NoProvide.hs:27:18: error: [GHC-05617] • Could not deduce ‘Base.OrdCond (Compare a b) True True False ~ True’ arising from a use of ‘r’ from the context: a Base.<= b bound by the type signature for: backwardsLeq :: ((a <= b) => r) -> (a Base.<= b) => r at NoProvide.hs:27:1-18 • In the expression: r In an equation for ‘backwardsLeq’: backwardsLeq r = r • Relevant bindings include r :: (a <= b) => r (bound at NoProvide.hs:27:14) backwardsLeq :: ((a <= b) => r) -> (a Base.<= b) => r (bound at NoProvide.hs:27:1) | 27 | backwardsLeq r = r | ^ ``` ## Environment * GHC version used: 9.10.1
issue