diff options
author | sheaf <sam.derbyshire@gmail.com> | 2021-06-03 14:17:52 +0200 |
---|---|---|
committer | Marge Bot <ben+marge-bot@smart-cactus.org> | 2021-06-04 12:44:19 -0400 |
commit | 733757adb54eccdb4428e5ca4b2d896804bf5965 (patch) | |
tree | 6542f3d992d0e5d1a95665597c2d13cba9e95fec /testsuite/tests/codeGen | |
parent | f1b748b491dc49cfbe698cd790610ca21ae21ee7 (diff) | |
download | haskell-733757adb54eccdb4428e5ca4b2d896804bf5965.tar.gz |
Make some simple primops levity-polymorphic
Fixes #17817
Diffstat (limited to 'testsuite/tests/codeGen')
-rw-r--r-- | testsuite/tests/codeGen/should_fail/T13233.hs | 7 | ||||
-rw-r--r-- | testsuite/tests/codeGen/should_fail/T13233.stderr | 12 | ||||
-rw-r--r-- | testsuite/tests/codeGen/should_fail/T13233_elab.hs | 10 | ||||
-rw-r--r-- | testsuite/tests/codeGen/should_fail/T13233_elab.stderr | 10 |
4 files changed, 2 insertions, 37 deletions
diff --git a/testsuite/tests/codeGen/should_fail/T13233.hs b/testsuite/tests/codeGen/should_fail/T13233.hs index f24fc03bfb..c4c0480a75 100644 --- a/testsuite/tests/codeGen/should_fail/T13233.hs +++ b/testsuite/tests/codeGen/should_fail/T13233.hs @@ -5,7 +5,7 @@ {-# LANGUAGE MagicHash #-} module Bug where -import GHC.Exts (TYPE, RuntimeRep, Weak#, State#, RealWorld, mkWeak# ) +import GHC.Exts ( TYPE, RuntimeRep ) class Foo (a :: TYPE rep) where bar :: forall rep2 (b :: TYPE rep2). (a -> a -> b) -> a -> a -> b @@ -20,8 +20,3 @@ obscure _ = () quux :: () quux = obscure (#,#) - -primop :: forall (rep :: RuntimeRep) (a :: TYPE rep) b c. - a -> b -> (State# RealWorld -> (# State# RealWorld, c #)) - -> State# RealWorld -> (# State# RealWorld, Weak# b #) -primop = mkWeak# diff --git a/testsuite/tests/codeGen/should_fail/T13233.stderr b/testsuite/tests/codeGen/should_fail/T13233.stderr index 0208b2695a..2609e41d97 100644 --- a/testsuite/tests/codeGen/should_fail/T13233.stderr +++ b/testsuite/tests/codeGen/should_fail/T13233.stderr @@ -18,15 +18,3 @@ T13233.hs:22:16: error: Levity-polymorphic arguments: a :: TYPE rep1 b :: TYPE rep2 - -T13233.hs:27:10: error: - Cannot use function with levity-polymorphic arguments: - mkWeak# :: a - -> b - -> (State# RealWorld -> (# State# RealWorld, c #)) - -> State# RealWorld - -> (# State# RealWorld, Weak# b #) - (Note that levity-polymorphic primops such as 'coerce' and unboxed tuples - are eta-expanded internally because they must occur fully saturated. - Use -fprint-typechecker-elaboration to display the full expression.) - Levity-polymorphic arguments: a :: TYPE rep diff --git a/testsuite/tests/codeGen/should_fail/T13233_elab.hs b/testsuite/tests/codeGen/should_fail/T13233_elab.hs index 8f62332af6..96adc5ff9a 100644 --- a/testsuite/tests/codeGen/should_fail/T13233_elab.hs +++ b/testsuite/tests/codeGen/should_fail/T13233_elab.hs @@ -8,7 +8,7 @@ {-# LANGUAGE MagicHash #-} module Bug where -import GHC.Exts (TYPE, RuntimeRep, Weak#, State#, RealWorld, mkWeak# ) +import GHC.Exts ( TYPE, RuntimeRep ) class Foo (a :: TYPE rep) where bar :: forall rep2 (b :: TYPE rep2). (a -> a -> b) -> a -> a -> b @@ -23,11 +23,3 @@ obscure _ = () quux :: () quux = obscure (#,#) - --- It used to be that primops has no binding. However, as described in --- Note [Primop wrappers] in GHC.Builtin.PrimOps we now rewrite unsaturated primop --- applications to their wrapper, which allows safe use of levity polymorphism. -primop :: forall (rep :: RuntimeRep) (a :: TYPE rep) b c. - a -> b -> (State# RealWorld -> (# State# RealWorld, c #)) - -> State# RealWorld -> (# State# RealWorld, Weak# b #) -primop = mkWeak# diff --git a/testsuite/tests/codeGen/should_fail/T13233_elab.stderr b/testsuite/tests/codeGen/should_fail/T13233_elab.stderr index ec9a04d726..1b84b9bf95 100644 --- a/testsuite/tests/codeGen/should_fail/T13233_elab.stderr +++ b/testsuite/tests/codeGen/should_fail/T13233_elab.stderr @@ -12,13 +12,3 @@ T13233_elab.hs:25:16: error: Levity-polymorphic arguments: a :: TYPE rep1 b :: TYPE rep2 - -T13233_elab.hs:33:10: error: - Cannot use function with levity-polymorphic arguments: - mkWeak# @rep @a @b @c - :: a - -> b - -> (State# RealWorld -> (# State# RealWorld, c #)) - -> State# RealWorld - -> (# State# RealWorld, Weak# b #) - Levity-polymorphic arguments: a :: TYPE rep |