summaryrefslogtreecommitdiff
path: root/testsuite/tests/rep-poly
diff options
context:
space:
mode:
authorsheaf <sam.derbyshire@gmail.com>2022-03-11 17:01:33 +0100
committerMarge Bot <ben+marge-bot@smart-cactus.org>2022-03-14 15:08:24 -0400
commit8eadea670adb5de49ddba7e23d04ec8242ba76a3 (patch)
tree11d5284281b78446cbbe6dce54bc275b3bad3fba /testsuite/tests/rep-poly
parent106413f094d01485503a9b84fa4545d938ea934d (diff)
downloadhaskell-8eadea670adb5de49ddba7e23d04ec8242ba76a3.tar.gz
Fix isLiftedType_maybe and handle fallout
As #20837 pointed out, `isLiftedType_maybe` returned `Just False` in many situations where it should return `Nothing`, because it didn't take into account type families or type variables. In this patch, we fix this issue. We rename `isLiftedType_maybe` to `typeLevity_maybe`, which now returns a `Levity` instead of a boolean. We now return `Nothing` for types with kinds of the form `TYPE (F a1 ... an)` for a type family `F`, as well as `TYPE (BoxedRep l)` where `l` is a type variable. This fix caused several other problems, as other parts of the compiler were relying on `isLiftedType_maybe` returning a `Just` value, and were now panicking after the above fix. There were two main situations in which panics occurred: 1. Issues involving the let/app invariant. To uphold that invariant, we need to know whether something is lifted or not. If we get an answer of `Nothing` from `isLiftedType_maybe`, then we don't know what to do. As this invariant isn't particularly invariant, we can change the affected functions to not panic, e.g. by behaving the same in the `Just False` case and in the `Nothing` case (meaning: no observable change in behaviour compared to before). 2. Typechecking of data (/newtype) constructor patterns. Some programs involving patterns with unknown representations were accepted, such as T20363. Now that we are stricter, this caused further issues, culminating in Core Lint errors. However, the behaviour was incorrect the whole time; the incorrectness only being revealed by this change, not triggered by it. This patch fixes this by overhauling where the representation polymorphism involving pattern matching are done. Instead of doing it in `tcMatches`, we instead ensure that the `matchExpected` functions such as `matchExpectedFunTys`, `matchActualFunTySigma`, `matchActualFunTysRho` allow return argument pattern types which have a fixed RuntimeRep (as defined in Note [Fixed RuntimeRep]). This ensures that the pattern matching code only ever handles types with a known runtime representation. One exception was that patterns with an unknown representation type could sneak in via `tcConPat`, which points to a missing representation-polymorphism check, which this patch now adds. This means that we now reject the program in #20363, at least until we implement PHASE 2 of FixedRuntimeRep (allowing type families in RuntimeRep positions). The aforementioned refactoring, in which checks have been moved to `matchExpected` functions, is a first step in implementing PHASE 2 for patterns. Fixes #20837
Diffstat (limited to 'testsuite/tests/rep-poly')
-rw-r--r--testsuite/tests/rep-poly/Makefile3
-rw-r--r--testsuite/tests/rep-poly/RepPolyApp.stderr8
-rw-r--r--testsuite/tests/rep-poly/RepPolyArrowFun.stderr2
-rw-r--r--testsuite/tests/rep-poly/RepPolyBackpack1.stderr33
-rw-r--r--testsuite/tests/rep-poly/RepPolyBinder.stderr9
-rw-r--r--testsuite/tests/rep-poly/RepPolyCase1.hs15
-rw-r--r--testsuite/tests/rep-poly/RepPolyCase1.stderr8
-rw-r--r--testsuite/tests/rep-poly/RepPolyCase2.hs33
-rw-r--r--testsuite/tests/rep-poly/RepPolyCase2.stderr11
-rw-r--r--testsuite/tests/rep-poly/RepPolyDoBind.stderr4
-rw-r--r--testsuite/tests/rep-poly/RepPolyDoBody1.stderr8
-rw-r--r--testsuite/tests/rep-poly/RepPolyDoBody2.stderr4
-rw-r--r--testsuite/tests/rep-poly/RepPolyFFI.hs11
-rw-r--r--testsuite/tests/rep-poly/RepPolyLeftSection2.stderr6
-rw-r--r--testsuite/tests/rep-poly/RepPolyMatch.stderr2
-rw-r--r--testsuite/tests/rep-poly/RepPolyMcBind.stderr4
-rw-r--r--testsuite/tests/rep-poly/RepPolyMcBody.stderr4
-rw-r--r--testsuite/tests/rep-poly/RepPolyMcGuard.stderr8
-rw-r--r--testsuite/tests/rep-poly/RepPolyNPlusK.stderr9
-rw-r--r--testsuite/tests/rep-poly/RepPolyNewtypePat1.stderr8
-rw-r--r--testsuite/tests/rep-poly/RepPolyRecordPattern.stderr20
-rw-r--r--testsuite/tests/rep-poly/RepPolyRecordUpdate.stderr12
-rw-r--r--testsuite/tests/rep-poly/RepPolyRule1.stderr8
-rw-r--r--testsuite/tests/rep-poly/RepPolyRule2.stderr8
-rw-r--r--testsuite/tests/rep-poly/RepPolyRule3.stderr26
-rw-r--r--testsuite/tests/rep-poly/RepPolyUnboxedPatterns.stderr2
-rw-r--r--testsuite/tests/rep-poly/RepPolyUnliftedDatatype2.hs34
-rw-r--r--testsuite/tests/rep-poly/T11473.stderr8
-rw-r--r--testsuite/tests/rep-poly/T12709.stderr41
-rw-r--r--testsuite/tests/rep-poly/T12973.stderr16
-rw-r--r--testsuite/tests/rep-poly/T14765.stderr10
-rw-r--r--testsuite/tests/rep-poly/T17021.stderr13
-rw-r--r--testsuite/tests/rep-poly/T17536b.stderr4
-rw-r--r--testsuite/tests/rep-poly/T19615.stderr9
-rw-r--r--testsuite/tests/rep-poly/T19709b.stderr13
-rw-r--r--testsuite/tests/rep-poly/T20113.hs3
-rw-r--r--testsuite/tests/rep-poly/T20113.stderr14
-rw-r--r--testsuite/tests/rep-poly/T20363.hs37
-rw-r--r--testsuite/tests/rep-poly/T20363.stderr12
-rw-r--r--testsuite/tests/rep-poly/T20363_show_co.hs23
-rw-r--r--testsuite/tests/rep-poly/T20363_show_co.stderr12
-rw-r--r--testsuite/tests/rep-poly/T20363b.stderr42
-rw-r--r--testsuite/tests/rep-poly/T20426.stderr2
-rw-r--r--testsuite/tests/rep-poly/all.T8
44 files changed, 354 insertions, 213 deletions
diff --git a/testsuite/tests/rep-poly/Makefile b/testsuite/tests/rep-poly/Makefile
new file mode 100644
index 0000000000..9a36a1c5fe
--- /dev/null
+++ b/testsuite/tests/rep-poly/Makefile
@@ -0,0 +1,3 @@
+TOP=../..
+include $(TOP)/mk/boilerplate.mk
+include $(TOP)/mk/test.mk
diff --git a/testsuite/tests/rep-poly/RepPolyApp.stderr b/testsuite/tests/rep-poly/RepPolyApp.stderr
index e823c04dc2..77dd0a30cf 100644
--- a/testsuite/tests/rep-poly/RepPolyApp.stderr
+++ b/testsuite/tests/rep-poly/RepPolyApp.stderr
@@ -1,10 +1,8 @@
-RepPolyApp.hs:11:11: error:
- • The function argument
- ‘(undefined :: a)’
+RepPolyApp.hs:11:9: error:
+ • The argument ‘(undefined :: a)’ of ‘f’
does not have a fixed runtime representation.
Its type is:
a :: TYPE rep
- • In the first argument of ‘f’, namely ‘(undefined :: a)’
- In the expression: f (undefined :: a)
+ • In the expression: f (undefined :: a)
In an equation for ‘foo’: foo f = f (undefined :: a)
diff --git a/testsuite/tests/rep-poly/RepPolyArrowFun.stderr b/testsuite/tests/rep-poly/RepPolyArrowFun.stderr
index 014dc19144..db14b272f3 100644
--- a/testsuite/tests/rep-poly/RepPolyArrowFun.stderr
+++ b/testsuite/tests/rep-poly/RepPolyArrowFun.stderr
@@ -22,7 +22,7 @@ RepPolyArrowFun.hs:29:9: error:
In an equation for ‘foo’: foo _ = proc x -> undefined -< x
RepPolyArrowFun.hs:29:19: error:
- • The function un the first order arrow application of
+ • The function in the first order arrow application of
‘undefined’
to
‘x’
diff --git a/testsuite/tests/rep-poly/RepPolyBackpack1.stderr b/testsuite/tests/rep-poly/RepPolyBackpack1.stderr
index 9f3d77ff46..f521ada91c 100644
--- a/testsuite/tests/rep-poly/RepPolyBackpack1.stderr
+++ b/testsuite/tests/rep-poly/RepPolyBackpack1.stderr
@@ -8,42 +8,19 @@ RepPolyBackpack1.bkp:17:5: error:
Its type is:
Number l :: TYPE (Rep l)
-RepPolyBackpack1.bkp:17:22: error:
- • The function argument
- ‘x’
+RepPolyBackpack1.bkp:17:17: error:
+ • The argument ‘x’ of ‘plus’
does not have a fixed runtime representation.
Its type is:
Number l :: TYPE (Rep l)
- • In the first argument of ‘plus’, namely ‘x’
- In the expression: plus x (multiply x y)
+ • In the expression: plus x (multiply x y)
In an equation for ‘funcA’: funcA x y = plus x (multiply x y)
-RepPolyBackpack1.bkp:17:24: error:
- • The function argument
- ‘(multiply x y)’
+RepPolyBackpack1.bkp:17:25: error:
+ • The argument ‘x’ of ‘multiply’
does not have a fixed runtime representation.
Its type is:
Number l :: TYPE (Rep l)
• In the second argument of ‘plus’, namely ‘(multiply x y)’
In the expression: plus x (multiply x y)
In an equation for ‘funcA’: funcA x y = plus x (multiply x y)
-
-RepPolyBackpack1.bkp:17:34: error:
- • The function argument
- ‘x’
- does not have a fixed runtime representation.
- Its type is:
- Number l :: TYPE (Rep l)
- • In the first argument of ‘multiply’, namely ‘x’
- In the second argument of ‘plus’, namely ‘(multiply x y)’
- In the expression: plus x (multiply x y)
-
-RepPolyBackpack1.bkp:17:36: error:
- • The function argument
- ‘y’
- does not have a fixed runtime representation.
- Its type is:
- Number l :: TYPE (Rep l)
- • In the second argument of ‘multiply’, namely ‘y’
- In the second argument of ‘plus’, namely ‘(multiply x y)’
- In the expression: plus x (multiply x y)
diff --git a/testsuite/tests/rep-poly/RepPolyBinder.stderr b/testsuite/tests/rep-poly/RepPolyBinder.stderr
index 177a4865e6..33802a0621 100644
--- a/testsuite/tests/rep-poly/RepPolyBinder.stderr
+++ b/testsuite/tests/rep-poly/RepPolyBinder.stderr
@@ -8,3 +8,12 @@ RepPolyBinder.hs:11:1: error:
does not have a fixed runtime representation.
Its type is:
b :: TYPE rep2
+
+RepPolyBinder.hs:11:17: error:
+ • The first argument of the view pattern
+ myId
+ does not have a fixed runtime representation.
+ Its type is:
+ b :: TYPE rep2
+ • In the pattern: myId -> bndr_b
+ In an equation for ‘foo’: foo bndr_a pat@(myId -> bndr_b) = ()
diff --git a/testsuite/tests/rep-poly/RepPolyCase1.hs b/testsuite/tests/rep-poly/RepPolyCase1.hs
new file mode 100644
index 0000000000..11579c563f
--- /dev/null
+++ b/testsuite/tests/rep-poly/RepPolyCase1.hs
@@ -0,0 +1,15 @@
+{-# LANGUAGE EmptyCase #-}
+{-# LANGUAGE PolyKinds #-}
+{-# LANGUAGE ScopedTypeVariables #-}
+{-# LANGUAGE TypeApplications #-}
+
+module RepPolyCase1 where
+
+import GHC.Exts
+
+bar :: forall {r} (a :: TYPE r). () -> a
+bar = error "no bar"
+
+x :: forall {r} (a :: TYPE r) proxy. proxy a -> ()
+x _ = case bar @a () of {}
+
diff --git a/testsuite/tests/rep-poly/RepPolyCase1.stderr b/testsuite/tests/rep-poly/RepPolyCase1.stderr
new file mode 100644
index 0000000000..4804a67f8a
--- /dev/null
+++ b/testsuite/tests/rep-poly/RepPolyCase1.stderr
@@ -0,0 +1,8 @@
+
+RepPolyCase1.hs:14:7: error:
+ • The scrutinee of the case statement
+ does not have a fixed runtime representation.
+ Its type is:
+ a :: TYPE r
+ • In the expression: case bar @a () of {}
+ In an equation for ‘x’: x _ = case bar @a () of {}
diff --git a/testsuite/tests/rep-poly/RepPolyCase2.hs b/testsuite/tests/rep-poly/RepPolyCase2.hs
new file mode 100644
index 0000000000..5b8b355fee
--- /dev/null
+++ b/testsuite/tests/rep-poly/RepPolyCase2.hs
@@ -0,0 +1,33 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE EmptyCase #-}
+{-# LANGUAGE MagicHash #-}
+{-# LANGUAGE PolyKinds #-}
+{-# LANGUAGE ScopedTypeVariables #-}
+{-# LANGUAGE StandaloneKindSignatures #-}
+{-# LANGUAGE TypeApplications #-}
+{-# LANGUAGE TypeFamilies #-}
+
+module RepPolyCase2 where
+
+import Data.Kind
+import GHC.Exts
+
+type Rep :: Type -> RuntimeRep
+type family Rep a
+
+class Unboxable a where
+ type Unbox a :: TYPE (Rep a)
+ unbox :: a -> Unbox a
+
+type instance Rep Int = IntRep
+instance Unboxable Int where
+ type Unbox Int = Int#
+ unbox (I# i#) = i#
+
+type instance Rep Double = DoubleRep
+instance Unboxable Double where
+ type Unbox Double = Double#
+ unbox (D# d#) = d#
+
+x :: () -> ()
+x _ = case unbox (3 :: Int) of { _ -> () }
diff --git a/testsuite/tests/rep-poly/RepPolyCase2.stderr b/testsuite/tests/rep-poly/RepPolyCase2.stderr
new file mode 100644
index 0000000000..f1f59116c9
--- /dev/null
+++ b/testsuite/tests/rep-poly/RepPolyCase2.stderr
@@ -0,0 +1,11 @@
+
+RepPolyCase2.hs:33:7: error:
+ • The scrutinee of the case statement
+ does not have a fixed runtime representation.
+ Its type is:
+ Unbox Int :: TYPE (Rep Int)
+ NB: GHC does not (yet) support rewriting in runtime representations.
+ Please comment on GHC ticket #13105 if this is causing you trouble.
+ <https://gitlab.haskell.org/ghc/ghc/-/issues/13105>
+ • In the expression: case unbox (3 :: Int) of _ -> ()
+ In an equation for ‘x’: x _ = case unbox (3 :: Int) of _ -> ()
diff --git a/testsuite/tests/rep-poly/RepPolyDoBind.stderr b/testsuite/tests/rep-poly/RepPolyDoBind.stderr
index ff92a1ae26..b3541dc5d5 100644
--- a/testsuite/tests/rep-poly/RepPolyDoBind.stderr
+++ b/testsuite/tests/rep-poly/RepPolyDoBind.stderr
@@ -1,7 +1,7 @@
RepPolyDoBind.hs:26:3: error:
- • The first argument to (>>=),
- arising from the ‘do’ statement,
+ • The first argument of the rebindable syntax operator ‘(>>=)’
+ arising from a do statement
does not have a fixed runtime representation.
Its type is:
ma0 :: TYPE rep
diff --git a/testsuite/tests/rep-poly/RepPolyDoBody1.stderr b/testsuite/tests/rep-poly/RepPolyDoBody1.stderr
index 8779c23b39..f71deeb24b 100644
--- a/testsuite/tests/rep-poly/RepPolyDoBody1.stderr
+++ b/testsuite/tests/rep-poly/RepPolyDoBody1.stderr
@@ -1,12 +1,12 @@
RepPolyDoBody1.hs:24:3: error:
- • • The first argument to (>>),
- arising from the ‘do’ statement,
+ • • The first argument of the rebindable syntax operator ‘(>>)’
+ arising from a do statement
does not have a fixed runtime representation.
Its type is:
ma :: TYPE rep
- • The second argument to (>>),
- arising from the ‘do’ statement,
+ • The first argument of the rebindable syntax operator ‘(>>)’
+ arising from a do statement
does not have a fixed runtime representation.
Its type is:
mb0 :: TYPE rep
diff --git a/testsuite/tests/rep-poly/RepPolyDoBody2.stderr b/testsuite/tests/rep-poly/RepPolyDoBody2.stderr
index 5d83af9891..1d28c20d26 100644
--- a/testsuite/tests/rep-poly/RepPolyDoBody2.stderr
+++ b/testsuite/tests/rep-poly/RepPolyDoBody2.stderr
@@ -1,7 +1,7 @@
RepPolyDoBody2.hs:23:3: error:
- • The second argument to (>>),
- arising from the ‘do’ statement,
+ • The first argument of the rebindable syntax operator ‘(>>)’
+ arising from a do statement
does not have a fixed runtime representation.
Its type is:
mb0 :: TYPE rep
diff --git a/testsuite/tests/rep-poly/RepPolyFFI.hs b/testsuite/tests/rep-poly/RepPolyFFI.hs
new file mode 100644
index 0000000000..4dabe7b7a6
--- /dev/null
+++ b/testsuite/tests/rep-poly/RepPolyFFI.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE MagicHash #-}
+{-# LANGUAGE PolyKinds #-}
+{-# LANGUAGE UnliftedFFITypes #-}
+
+module RepPolyFFI1 where
+
+import GHC.Exts
+
+foreign import ccall safe "foo" foo
+ :: forall {l} (a :: TYPE (BoxedRep l)). Array# a -> Array# a
diff --git a/testsuite/tests/rep-poly/RepPolyLeftSection2.stderr b/testsuite/tests/rep-poly/RepPolyLeftSection2.stderr
index 6d299f2fed..fd9dbb31b1 100644
--- a/testsuite/tests/rep-poly/RepPolyLeftSection2.stderr
+++ b/testsuite/tests/rep-poly/RepPolyLeftSection2.stderr
@@ -1,10 +1,8 @@
RepPolyLeftSection2.hs:14:11: error:
- • The function argument
- ‘undefined’
+ • The argument ‘undefined’ of ‘f’
does not have a fixed runtime representation.
Its type is:
a :: TYPE r
- • In the expression: undefined
- In the expression: undefined `f`
+ • In the expression: undefined `f`
In an equation for ‘test1’: test1 = (undefined `f`)
diff --git a/testsuite/tests/rep-poly/RepPolyMatch.stderr b/testsuite/tests/rep-poly/RepPolyMatch.stderr
index 7573de3c18..420c38efe2 100644
--- a/testsuite/tests/rep-poly/RepPolyMatch.stderr
+++ b/testsuite/tests/rep-poly/RepPolyMatch.stderr
@@ -1,6 +1,6 @@
RepPolyMatch.hs:11:9: error:
- • The first pattern in the case alternative
+ • The binder of the lambda-case expression
does not have a fixed runtime representation.
Its type is:
a :: TYPE rep
diff --git a/testsuite/tests/rep-poly/RepPolyMcBind.stderr b/testsuite/tests/rep-poly/RepPolyMcBind.stderr
index 2febf28b9f..647a8d625d 100644
--- a/testsuite/tests/rep-poly/RepPolyMcBind.stderr
+++ b/testsuite/tests/rep-poly/RepPolyMcBind.stderr
@@ -1,7 +1,7 @@
RepPolyMcBind.hs:26:16: error:
- • The first argument to (>>=),
- arising from the monad comprehension,
+ • The first argument of the rebindable syntax operator ‘(>>=)’
+ arising from a statement in a monad comprehension
does not have a fixed runtime representation.
Its type is:
ma :: TYPE rep
diff --git a/testsuite/tests/rep-poly/RepPolyMcBody.stderr b/testsuite/tests/rep-poly/RepPolyMcBody.stderr
index 56df668fdd..de9848d4c6 100644
--- a/testsuite/tests/rep-poly/RepPolyMcBody.stderr
+++ b/testsuite/tests/rep-poly/RepPolyMcBody.stderr
@@ -1,7 +1,7 @@
RepPolyMcBody.hs:30:16: error:
- • The first argument to (>>),
- arising from the monad comprehension,
+ • The first argument of the rebindable syntax operator ‘(>>)’
+ arising from a statement in a monad comprehension
does not have a fixed runtime representation.
Its type is:
ma0 :: TYPE rep
diff --git a/testsuite/tests/rep-poly/RepPolyMcGuard.stderr b/testsuite/tests/rep-poly/RepPolyMcGuard.stderr
index 46addb9982..a1a32f7a3a 100644
--- a/testsuite/tests/rep-poly/RepPolyMcGuard.stderr
+++ b/testsuite/tests/rep-poly/RepPolyMcGuard.stderr
@@ -1,12 +1,12 @@
RepPolyMcGuard.hs:30:16: error:
- • • The first argument to (>>),
- arising from the monad comprehension,
+ • • The first argument of the rebindable syntax operator ‘(>>)’
+ arising from a statement in a monad comprehension
does not have a fixed runtime representation.
Its type is:
ma0 :: TYPE rep
- • The argument to ‘guard’,
- arising from the monad comprehension,
+ • The first argument of the rebindable syntax operator ‘guard’
+ arising from a statement in a monad comprehension
does not have a fixed runtime representation.
Its type is:
a0 :: TYPE rep
diff --git a/testsuite/tests/rep-poly/RepPolyNPlusK.stderr b/testsuite/tests/rep-poly/RepPolyNPlusK.stderr
index 80672387db..c5e5f84662 100644
--- a/testsuite/tests/rep-poly/RepPolyNPlusK.stderr
+++ b/testsuite/tests/rep-poly/RepPolyNPlusK.stderr
@@ -4,3 +4,12 @@ RepPolyNPlusK.hs:22:1: error:
does not have a fixed runtime representation.
Its type is:
a :: TYPE rep1
+
+RepPolyNPlusK.hs:22:6: error:
+ • The first argument of the rebindable syntax operator ‘(>=)’
+ arising from the literal ‘2’
+ does not have a fixed runtime representation.
+ Its type is:
+ a :: TYPE rep1
+ • In the pattern: bndr_a+2
+ In an equation for ‘foo’: foo (bndr_a+2) = ()
diff --git a/testsuite/tests/rep-poly/RepPolyNewtypePat1.stderr b/testsuite/tests/rep-poly/RepPolyNewtypePat1.stderr
index 6981d02016..b49bd58f2a 100644
--- a/testsuite/tests/rep-poly/RepPolyNewtypePat1.stderr
+++ b/testsuite/tests/rep-poly/RepPolyNewtypePat1.stderr
@@ -4,3 +4,11 @@ RepPolyNewtypePat1.hs:16:1: error:
does not have a fixed runtime representation.
Its type is:
X a :: TYPE rep
+
+RepPolyNewtypePat1.hs:16:6: error:
+ • The newtype constructor pattern
+ does not have a fixed runtime representation.
+ Its type is:
+ a :: TYPE rep
+ • In the pattern: MkX bndr_a
+ In an equation for ‘bar’: bar (MkX bndr_a) = bndr_a
diff --git a/testsuite/tests/rep-poly/RepPolyRecordPattern.stderr b/testsuite/tests/rep-poly/RepPolyRecordPattern.stderr
index 50651762dd..085e2da393 100644
--- a/testsuite/tests/rep-poly/RepPolyRecordPattern.stderr
+++ b/testsuite/tests/rep-poly/RepPolyRecordPattern.stderr
@@ -1,12 +1,24 @@
RepPolyRecordPattern.hs:7:35: error:
- The first pattern in the equation for ‘fld’
- does not have a fixed runtime representation.
- Its type is:
- X a :: TYPE rep
+ • The newtype constructor pattern
+ does not have a fixed runtime representation.
+ Its type is:
+ a :: TYPE rep
+ • The first pattern in the equation for ‘fld’
+ does not have a fixed runtime representation.
+ Its type is:
+ X a :: TYPE rep
RepPolyRecordPattern.hs:13:1: error:
The first pattern in the equation for ‘upd’
does not have a fixed runtime representation.
Its type is:
X a :: TYPE rep
+
+RepPolyRecordPattern.hs:13:7: error:
+ • The newtype constructor pattern
+ does not have a fixed runtime representation.
+ Its type is:
+ a :: TYPE rep
+ • In the pattern: MkX bndr_a
+ In an equation for ‘upd’: upd (MkX bndr_a) = bndr_a
diff --git a/testsuite/tests/rep-poly/RepPolyRecordUpdate.stderr b/testsuite/tests/rep-poly/RepPolyRecordUpdate.stderr
index 9189df8168..5cdc9205f0 100644
--- a/testsuite/tests/rep-poly/RepPolyRecordUpdate.stderr
+++ b/testsuite/tests/rep-poly/RepPolyRecordUpdate.stderr
@@ -1,9 +1,13 @@
RepPolyRecordUpdate.hs:7:35: error:
- The first pattern in the equation for ‘fld’
- does not have a fixed runtime representation.
- Its type is:
- X a :: TYPE rep
+ • The newtype constructor pattern
+ does not have a fixed runtime representation.
+ Its type is:
+ a :: TYPE rep
+ • The first pattern in the equation for ‘fld’
+ does not have a fixed runtime representation.
+ Its type is:
+ X a :: TYPE rep
RepPolyRecordUpdate.hs:13:9: error:
• The record update at field ‘fld’
diff --git a/testsuite/tests/rep-poly/RepPolyRule1.stderr b/testsuite/tests/rep-poly/RepPolyRule1.stderr
index bef17d948f..f2fcb378da 100644
--- a/testsuite/tests/rep-poly/RepPolyRule1.stderr
+++ b/testsuite/tests/rep-poly/RepPolyRule1.stderr
@@ -1,10 +1,8 @@
-RepPolyRule1.hs:11:51: error:
- • The function argument
- ‘x’
+RepPolyRule1.hs:11:49: error:
+ • The argument ‘x’ of ‘f’
does not have a fixed runtime representation.
Its type is:
a :: TYPE rep
- • In the first argument of ‘f’, namely ‘x’
- In the expression: f x
+ • In the expression: f x
When checking the rewrite rule "f_id"
diff --git a/testsuite/tests/rep-poly/RepPolyRule2.stderr b/testsuite/tests/rep-poly/RepPolyRule2.stderr
index 70bd7eaa3a..82403d3c7d 100644
--- a/testsuite/tests/rep-poly/RepPolyRule2.stderr
+++ b/testsuite/tests/rep-poly/RepPolyRule2.stderr
@@ -1,10 +1,8 @@
-RepPolyRule2.hs:17:55: error:
- • The function argument
- ‘x’
+RepPolyRule2.hs:17:53: error:
+ • The argument ‘x’ of ‘f’
does not have a fixed runtime representation.
Its type is:
a :: TYPE (F rep)
- • In the first argument of ‘f’, namely ‘x’
- In the expression: f x
+ • In the expression: f x
When checking the rewrite rule "f_id"
diff --git a/testsuite/tests/rep-poly/RepPolyRule3.stderr b/testsuite/tests/rep-poly/RepPolyRule3.stderr
index 524ddfd3e0..cdbfcdb66b 100644
--- a/testsuite/tests/rep-poly/RepPolyRule3.stderr
+++ b/testsuite/tests/rep-poly/RepPolyRule3.stderr
@@ -1,26 +1,24 @@
-RepPolyRule3.hs:17:59: error:
- • The function argument
- ‘x’
+RepPolyRule3.hs:17:57: error:
+ • The argument ‘x’ of ‘g’
does not have a fixed runtime representation.
- Its type is:
- a :: TYPE (F 'WordRep)
+ Its kind is:
+ TYPE (F 'WordRep)
+ (Use -fprint-explicit-coercions to see the full type.)
NB: GHC does not (yet) support rewriting in runtime representations.
Please comment on GHC ticket #13105 if this is causing you trouble.
<https://gitlab.haskell.org/ghc/ghc/-/issues/13105>
- • In the first argument of ‘g’, namely ‘x’
- In the expression: g x
+ • In the expression: g x
When checking the rewrite rule "g_id"
-RepPolyRule3.hs:23:54: error:
- • The function argument
- ‘x’
+RepPolyRule3.hs:23:52: error:
+ • The argument ‘x’ of ‘h’
does not have a fixed runtime representation.
- Its type is:
- a :: TYPE (F 'WordRep)
+ Its kind is:
+ TYPE (F 'WordRep)
+ (Use -fprint-explicit-coercions to see the full type.)
NB: GHC does not (yet) support rewriting in runtime representations.
Please comment on GHC ticket #13105 if this is causing you trouble.
<https://gitlab.haskell.org/ghc/ghc/-/issues/13105>
- • In the first argument of ‘h’, namely ‘x’
- In the expression: h x
+ • In the expression: h x
When checking the rewrite rule "h_id"
diff --git a/testsuite/tests/rep-poly/RepPolyUnboxedPatterns.stderr b/testsuite/tests/rep-poly/RepPolyUnboxedPatterns.stderr
index 7efa7431c5..a2d6e6bd1d 100644
--- a/testsuite/tests/rep-poly/RepPolyUnboxedPatterns.stderr
+++ b/testsuite/tests/rep-poly/RepPolyUnboxedPatterns.stderr
@@ -6,7 +6,7 @@ RepPolyUnboxedPatterns.hs:8:1: error:
(# a, b #) :: TYPE ('TupleRep '[rep1, rep2])
RepPolyUnboxedPatterns.hs:11:1: error:
- The first pattern in the equation for ‘bar’
+ The first pattern in the equations for ‘bar’
does not have a fixed runtime representation.
Its type is:
(# a | b #) :: TYPE ('SumRep '[rep1, rep2])
diff --git a/testsuite/tests/rep-poly/RepPolyUnliftedDatatype2.hs b/testsuite/tests/rep-poly/RepPolyUnliftedDatatype2.hs
new file mode 100644
index 0000000000..b16480f0ef
--- /dev/null
+++ b/testsuite/tests/rep-poly/RepPolyUnliftedDatatype2.hs
@@ -0,0 +1,34 @@
+
+{-# LANGUAGE UnliftedDatatypes #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE PolyKinds #-}
+{-# LANGUAGE GADTs #-}
+{-# LANGUAGE KindSignatures #-}
+{-# LANGUAGE TypeApplications #-}
+{-# LANGUAGE RankNTypes #-}
+
+module RepPolyUnliftedDatatype2 where
+
+import GHC.Exts
+
+type Interpret :: Bool -> Levity
+type family Interpret b where
+ Interpret True = Lifted
+ Interpret False = Unlifted
+
+type A :: TYPE (BoxedRep (Interpret b))
+data A = MkA Int
+
+a :: A @True
+a = MkA 42
+
+-- type Interpret :: Bool -> RuntimeRep
+-- type family Interpret b where
+-- Interpret True = BoxedRep Lifted
+-- Interpret False = BoxedRep Unlifted
+--
+-- type A :: TYPE (Interpret b)
+-- data A = MkA Int
+--
+-- data B :: TYPE (Interpret b) where
+-- MkB :: Int -> B @b
diff --git a/testsuite/tests/rep-poly/T11473.stderr b/testsuite/tests/rep-poly/T11473.stderr
index 2a4e92eae9..411e074c0e 100644
--- a/testsuite/tests/rep-poly/T11473.stderr
+++ b/testsuite/tests/rep-poly/T11473.stderr
@@ -5,12 +5,10 @@ T11473.hs:19:1: error:
Its type is:
a :: TYPE r
-T11473.hs:19:17: error:
- • The function argument
- ‘x’
+T11473.hs:19:11: error:
+ • The argument ‘x’ of ‘boxed’
does not have a fixed runtime representation.
Its type is:
a :: TYPE r
- • In the first argument of ‘boxed’, namely ‘x’
- In the expression: boxed x
+ • In the expression: boxed x
In an equation for ‘hello’: hello x = boxed x
diff --git a/testsuite/tests/rep-poly/T12709.stderr b/testsuite/tests/rep-poly/T12709.stderr
index 78ebe39a7c..782f995942 100644
--- a/testsuite/tests/rep-poly/T12709.stderr
+++ b/testsuite/tests/rep-poly/T12709.stderr
@@ -1,40 +1,13 @@
T12709.hs:28:13: error:
- • The function argument
- ‘1’
+ • The argument ‘1 + 2 + 3’ of ‘(+)’
does not have a fixed runtime representation.
Its type is:
a :: TYPE rep
- • In the first argument of ‘(+)’, namely ‘1’
- In the first argument of ‘(+)’, namely ‘1 + 2’
- In the first argument of ‘(+)’, namely ‘1 + 2 + 3’
-
-T12709.hs:28:17: error:
- • The function argument
- ‘2’
- does not have a fixed runtime representation.
- Its type is:
- a :: TYPE rep
- • In the second argument of ‘(+)’, namely ‘2’
- In the first argument of ‘(+)’, namely ‘1 + 2’
- In the first argument of ‘(+)’, namely ‘1 + 2 + 3’
-
-T12709.hs:28:21: error:
- • The function argument
- ‘3’
- does not have a fixed runtime representation.
- Its type is:
- a :: TYPE rep
- • In the second argument of ‘(+)’, namely ‘3’
- In the first argument of ‘(+)’, namely ‘1 + 2 + 3’
- In the expression: 1 + 2 + 3 + 4
-
-T12709.hs:28:25: error:
- • The function argument
- ‘4’
- does not have a fixed runtime representation.
- Its type is:
- a :: TYPE rep
- • In the second argument of ‘(+)’, namely ‘4’
- In the expression: 1 + 2 + 3 + 4
+ • In the expression: 1 + 2 + 3 + 4
In an equation for ‘u’: u = 1 + 2 + 3 + 4
+ In the expression:
+ let
+ u :: Num (a :: TYPE rep) => a
+ u = 1 + 2 + 3 + 4
+ in BUB u u
diff --git a/testsuite/tests/rep-poly/T12973.stderr b/testsuite/tests/rep-poly/T12973.stderr
index 1f677f3050..7a70b92859 100644
--- a/testsuite/tests/rep-poly/T12973.stderr
+++ b/testsuite/tests/rep-poly/T12973.stderr
@@ -1,20 +1,8 @@
T12973.hs:13:7: error:
- • The function argument
- ‘3’
+ • The argument ‘3’ of ‘(+)’
does not have a fixed runtime representation.
Its type is:
a :: TYPE r
- • In the first argument of ‘(+)’, namely ‘3’
- In the expression: 3 + 4
- In an equation for ‘foo’: foo = 3 + 4
-
-T12973.hs:13:11: error:
- • The function argument
- ‘4’
- does not have a fixed runtime representation.
- Its type is:
- a :: TYPE r
- • In the second argument of ‘(+)’, namely ‘4’
- In the expression: 3 + 4
+ • In the expression: 3 + 4
In an equation for ‘foo’: foo = 3 + 4
diff --git a/testsuite/tests/rep-poly/T14765.stderr b/testsuite/tests/rep-poly/T14765.stderr
index 57281f6507..0b70a16404 100644
--- a/testsuite/tests/rep-poly/T14765.stderr
+++ b/testsuite/tests/rep-poly/T14765.stderr
@@ -1,10 +1,10 @@
-T14765.hs:11:31: error:
- • The function argument
- ‘(k proxy#)’
+T14765.hs:11:29: error:
+ • The argument ‘(k proxy#)’ of ‘f’
does not have a fixed runtime representation.
Its type is:
r :: TYPE rep
- • In the first argument of ‘f’, namely ‘(k proxy#)’
- In the second argument of ‘fold’, namely ‘(f (k proxy#) x)’
+ • In the second argument of ‘fold’, namely ‘(f (k proxy#) x)’
In the expression: fold f (f (k proxy#) x) xs
+ In an equation for ‘fold’:
+ fold f k (x : xs) = fold f (f (k proxy#) x) xs
diff --git a/testsuite/tests/rep-poly/T17021.stderr b/testsuite/tests/rep-poly/T17021.stderr
index accd9c1560..0521ed1259 100644
--- a/testsuite/tests/rep-poly/T17021.stderr
+++ b/testsuite/tests/rep-poly/T17021.stderr
@@ -1,13 +1,12 @@
-T17021.hs:18:9: error:
- • The function argument
- ‘42’
+T17021.hs:18:5: error:
+ • The argument ‘42’ of ‘MkT’
does not have a fixed runtime representation.
- Its type is:
- Int :: TYPE (Id LiftedRep)
+ Its kind is:
+ TYPE (Id LiftedRep)
+ (Use -fprint-explicit-coercions to see the full type.)
NB: GHC does not (yet) support rewriting in runtime representations.
Please comment on GHC ticket #13105 if this is causing you trouble.
<https://gitlab.haskell.org/ghc/ghc/-/issues/13105>
- • In the first argument of ‘MkT’, namely ‘42’
- In the expression: MkT 42
+ • In the expression: MkT 42
In an equation for ‘f’: f = MkT 42
diff --git a/testsuite/tests/rep-poly/T17536b.stderr b/testsuite/tests/rep-poly/T17536b.stderr
index 0682f44282..a2d161038a 100644
--- a/testsuite/tests/rep-poly/T17536b.stderr
+++ b/testsuite/tests/rep-poly/T17536b.stderr
@@ -1,6 +1,6 @@
T17536b.hs:19:7: error:
- • The first pattern in the lambda abstraction
+ • The binder of the lambda expression
does not have a fixed runtime representation.
Its type is:
a :: TYPE r
@@ -11,7 +11,7 @@ T17536b.hs:19:7: error:
In an equation for ‘g’: g L = \ _ -> 0
T17536b.hs:20:7: error:
- • The first pattern in the lambda abstraction
+ • The binder of the lambda expression
does not have a fixed runtime representation.
Its type is:
a :: TYPE r
diff --git a/testsuite/tests/rep-poly/T19615.stderr b/testsuite/tests/rep-poly/T19615.stderr
index aff0d742cf..873b3816f9 100644
--- a/testsuite/tests/rep-poly/T19615.stderr
+++ b/testsuite/tests/rep-poly/T19615.stderr
@@ -1,10 +1,9 @@
-T19615.hs:17:20: error:
- • The function argument
- ‘(f x)’
+T19615.hs:17:14: error:
+ • The argument ‘(f x)’ of ‘lift'’
does not have a fixed runtime representation.
Its type is:
b :: TYPE r'
- • In the first argument of ‘lift'’, namely ‘(f x)’
- In the expression: lift' (f x) id
+ • In the expression: lift' (f x) id
In an equation for ‘mapF’: mapF f x = lift' (f x) id
+ In the instance declaration for ‘Call LiftedRep’
diff --git a/testsuite/tests/rep-poly/T19709b.stderr b/testsuite/tests/rep-poly/T19709b.stderr
index 63aa0f3751..6592f2d67f 100644
--- a/testsuite/tests/rep-poly/T19709b.stderr
+++ b/testsuite/tests/rep-poly/T19709b.stderr
@@ -1,10 +1,13 @@
-T19709b.hs:11:14: error:
- • The function argument
- ‘(error @Any "e2")’
+T19709b.hs:11:7: error:
+ • The argument ‘(error @Any "e2")’ of ‘levfun’
does not have a fixed runtime representation.
Its type is:
a0 :: TYPE Any
- • In the first argument of ‘levfun’, namely ‘(error @Any "e2")’
- In the first argument of ‘seq’, namely ‘levfun (error @Any "e2")’
+ • In the first argument of ‘seq’, namely ‘levfun (error @Any "e2")’
In the expression: levfun (error @Any "e2") `seq` return []
+ In the expression:
+ let
+ levfun :: forall (r :: RuntimeRep) (a :: TYPE r). a -> ()
+ levfun = error "e1"
+ in levfun (error @Any "e2") `seq` return []
diff --git a/testsuite/tests/rep-poly/T20113.hs b/testsuite/tests/rep-poly/T20113.hs
index da01589dfb..40184483df 100644
--- a/testsuite/tests/rep-poly/T20113.hs
+++ b/testsuite/tests/rep-poly/T20113.hs
@@ -1,4 +1,7 @@
{-# LANGUAGE PolyKinds, UnliftedNewtypes, NoFieldSelectors #-}
+
+module T20113 where
+
import GHC.Exts
newtype Y (a :: TYPE rep) = MkY { y_fld :: a }
diff --git a/testsuite/tests/rep-poly/T20113.stderr b/testsuite/tests/rep-poly/T20113.stderr
index da8439e9e7..2e51b23d85 100644
--- a/testsuite/tests/rep-poly/T20113.stderr
+++ b/testsuite/tests/rep-poly/T20113.stderr
@@ -1,6 +1,10 @@
-T20113.hs:4:35: error:
- The first pattern in the equation for ‘$sel:y_fld:MkY’
- does not have a fixed runtime representation.
- Its type is:
- Y a :: TYPE rep
+T20113.hs:7:35: error:
+ • The newtype constructor pattern
+ does not have a fixed runtime representation.
+ Its type is:
+ a :: TYPE rep
+ • The first pattern in the equation for ‘$sel:y_fld:MkY’
+ does not have a fixed runtime representation.
+ Its type is:
+ Y a :: TYPE rep
diff --git a/testsuite/tests/rep-poly/T20363.hs b/testsuite/tests/rep-poly/T20363.hs
index a28e483ffb..f6ab357972 100644
--- a/testsuite/tests/rep-poly/T20363.hs
+++ b/testsuite/tests/rep-poly/T20363.hs
@@ -12,37 +12,12 @@ module T20363 where
import GHC.Exts
-data Nat = Zero | Suc Nat
+type NilRep :: RuntimeRep
+type family NilRep where
+ NilRep = TupleRep '[]
-type NestedTupleRep :: Nat -> RuntimeRep -> RuntimeRep
-type family NestedTupleRep n r where
- NestedTupleRep Zero r = TupleRep '[]
- NestedTupleRep (Suc n) r = TupleRep '[ r, NestedTupleRep n r ]
+type UnitTupleNT :: TYPE NilRep
+newtype UnitTupleNT = MkNT (# #)
-type NestedTuple
- :: forall ( n :: Nat )
- -> forall ( r :: RuntimeRep )
- . forall ( a :: TYPE r )
- -> TYPE ( NestedTupleRep n r )
-type family NestedTuple n a where
- NestedTuple Zero @r a = (# #)
- NestedTuple (Suc n) @r a = (# a, NestedTuple n @r a #)
-
-type NestedTupleNT
- :: forall ( n :: Nat )
- -> forall ( r :: RuntimeRep )
- . forall ( a :: TYPE r )
- -> TYPE ( NestedTupleRep n r )
-newtype NestedTupleNT n (a :: TYPE r) = MkNT ( NestedTuple n a )
-
-test1a :: NestedTuple Zero Addr# -> Int
-test1a (# #) = 0
-
-test2a :: NestedTuple (Suc Zero) Addr# -> Addr#
-test2a (# i, (# #) #) = i
-
-test1b :: NestedTupleNT Zero Addr# -> Int
+test1b :: UnitTupleNT -> Int
test1b ( MkNT (# #) ) = 0
-
-test2b :: NestedTupleNT (Suc Zero) Addr# -> Addr#
-test2b ( MkNT (# i, (# #) #) ) = i
diff --git a/testsuite/tests/rep-poly/T20363.stderr b/testsuite/tests/rep-poly/T20363.stderr
new file mode 100644
index 0000000000..fdc6f94db6
--- /dev/null
+++ b/testsuite/tests/rep-poly/T20363.stderr
@@ -0,0 +1,12 @@
+
+T20363.hs:23:10: error:
+ • The newtype constructor pattern
+ does not have a fixed runtime representation.
+ Its kind is:
+ TYPE NilRep
+ (Use -fprint-explicit-coercions to see the full type.)
+ NB: GHC does not (yet) support rewriting in runtime representations.
+ Please comment on GHC ticket #13105 if this is causing you trouble.
+ <https://gitlab.haskell.org/ghc/ghc/-/issues/13105>
+ • In the pattern: MkNT (##)
+ In an equation for ‘test1b’: test1b (MkNT (##)) = 0
diff --git a/testsuite/tests/rep-poly/T20363_show_co.hs b/testsuite/tests/rep-poly/T20363_show_co.hs
new file mode 100644
index 0000000000..00a3492f3f
--- /dev/null
+++ b/testsuite/tests/rep-poly/T20363_show_co.hs
@@ -0,0 +1,23 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE MagicHash #-}
+{-# LANGUAGE PolyKinds #-}
+{-# LANGUAGE RankNTypes #-}
+{-# LANGUAGE StandaloneKindSignatures #-}
+{-# LANGUAGE TypeApplications #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE UnboxedTuples #-}
+{-# LANGUAGE UnliftedNewtypes #-}
+
+module T20363_show_co where
+
+import GHC.Exts
+
+type NilRep :: RuntimeRep
+type family NilRep where
+ NilRep = TupleRep '[]
+
+type UnitTupleNT :: TYPE NilRep
+newtype UnitTupleNT = MkNT (# #)
+
+test1b :: UnitTupleNT -> Int
+test1b ( MkNT (# #) ) = 0
diff --git a/testsuite/tests/rep-poly/T20363_show_co.stderr b/testsuite/tests/rep-poly/T20363_show_co.stderr
new file mode 100644
index 0000000000..6b18496208
--- /dev/null
+++ b/testsuite/tests/rep-poly/T20363_show_co.stderr
@@ -0,0 +1,12 @@
+
+T20363_show_co.hs:23:10: error:
+ • The newtype constructor pattern
+ does not have a fixed runtime representation.
+ Its type is:
+ ((# #) |> (TYPE (Sym (T20363_show_co.D:R:NilRep[0])))_N) :: TYPE
+ NilRep
+ NB: GHC does not (yet) support rewriting in runtime representations.
+ Please comment on GHC ticket #13105 if this is causing you trouble.
+ <https://gitlab.haskell.org/ghc/ghc/-/issues/13105>
+ • In the pattern: MkNT (##)
+ In an equation for ‘test1b’: test1b (MkNT (##)) = 0
diff --git a/testsuite/tests/rep-poly/T20363b.stderr b/testsuite/tests/rep-poly/T20363b.stderr
index 1d657f3237..8d2251390f 100644
--- a/testsuite/tests/rep-poly/T20363b.stderr
+++ b/testsuite/tests/rep-poly/T20363b.stderr
@@ -1,20 +1,41 @@
-T20363b.hs:51:24: error:
- • The function argument
- ‘(##)’
+T20363b.hs:45:10: error:
+ • The newtype constructor pattern
does not have a fixed runtime representation.
Its type is:
NestedTuple 'Zero Addr# :: TYPE (NestedTupleRep 'Zero 'AddrRep)
NB: GHC does not (yet) support rewriting in runtime representations.
Please comment on GHC ticket #13105 if this is causing you trouble.
<https://gitlab.haskell.org/ghc/ghc/-/issues/13105>
- • In the first argument of ‘MkNT’, namely ‘(##)’
- In the first argument of ‘test1b’, namely ‘(MkNT (##))’
+ • In the pattern: MkNT (##)
+ In an equation for ‘test1b’: test1b (MkNT (##)) = 0
+
+T20363b.hs:48:10: error:
+ • The newtype constructor pattern
+ does not have a fixed runtime representation.
+ Its type is:
+ NestedTuple ('Suc 'Zero) Addr# :: TYPE
+ (NestedTupleRep ('Suc 'Zero) 'AddrRep)
+ NB: GHC does not (yet) support rewriting in runtime representations.
+ Please comment on GHC ticket #13105 if this is causing you trouble.
+ <https://gitlab.haskell.org/ghc/ghc/-/issues/13105>
+ • In the pattern: MkNT (# i, (##) #)
+ In an equation for ‘test2b’: test2b (MkNT (# i, (##) #)) = i
+
+T20363b.hs:51:19: error:
+ • The argument ‘(##)’ of ‘MkNT’
+ does not have a fixed runtime representation.
+ Its type is:
+ NestedTuple 'Zero Addr# :: TYPE (NestedTupleRep 'Zero 'AddrRep)
+ NB: GHC does not (yet) support rewriting in runtime representations.
+ Please comment on GHC ticket #13105 if this is causing you trouble.
+ <https://gitlab.haskell.org/ghc/ghc/-/issues/13105>
+ • In the first argument of ‘test1b’, namely ‘(MkNT (##))’
In the expression: test1b (MkNT (##))
+ In an equation for ‘test1c’: test1c = test1b (MkNT (##))
-T20363b.hs:54:26: error:
- • The function argument
- ‘(# nullAddr#, (##) #)’
+T20363b.hs:54:21: error:
+ • The argument ‘(# nullAddr#, (##) #)’ of ‘MkNT’
does not have a fixed runtime representation.
Its type is:
NestedTuple ('Suc 'Zero) Addr# :: TYPE
@@ -22,7 +43,8 @@ T20363b.hs:54:26: error:
NB: GHC does not (yet) support rewriting in runtime representations.
Please comment on GHC ticket #13105 if this is causing you trouble.
<https://gitlab.haskell.org/ghc/ghc/-/issues/13105>
- • In the first argument of ‘MkNT’, namely ‘(# nullAddr#, (##) #)’
- In the first argument of ‘test2b’, namely
+ • In the first argument of ‘test2b’, namely
‘(MkNT (# nullAddr#, (##) #))’
In the expression: test2b (MkNT (# nullAddr#, (##) #))
+ In an equation for ‘test2c’:
+ test2c _ = test2b (MkNT (# nullAddr#, (##) #))
diff --git a/testsuite/tests/rep-poly/T20426.stderr b/testsuite/tests/rep-poly/T20426.stderr
index 9d9db41f8a..9c4f802a1b 100644
--- a/testsuite/tests/rep-poly/T20426.stderr
+++ b/testsuite/tests/rep-poly/T20426.stderr
@@ -1,6 +1,6 @@
T20426.hs:15:1: error:
- The first pattern in the equation for ‘getInt#’
+ The first pattern in the equations for ‘getInt#’
does not have a fixed runtime representation.
Its type is:
LPGADT l :: TYPE ('BoxedRep l)
diff --git a/testsuite/tests/rep-poly/all.T b/testsuite/tests/rep-poly/all.T
index d035558ef4..e97ae78192 100644
--- a/testsuite/tests/rep-poly/all.T
+++ b/testsuite/tests/rep-poly/all.T
@@ -24,7 +24,6 @@ test('T20113', normal, compile_fail, [''])
test('T20277', normal, compile_fail, [''])
test('T20330a', normal, compile, [''])
test('T20330b', normal, compile, [''])
-test('T20363', normal, compile, [''])
test('T20423', normal, compile_fail, [''])
test('T20423b', normal, compile_fail, [''])
test('T20426', normal, compile_fail, [''])
@@ -40,12 +39,14 @@ test('RepPolyBackpack3', normal, backpack_compile_fail, [''])
test('RepPolyBackpack4', normal, backpack_run, [''])
test('RepPolyBackpack5', normal, backpack_run, [''])
test('RepPolyBinder', normal, compile_fail, [''])
+test('RepPolyCase1', normal, compile_fail, [''])
test('RepPolyClassMethod', normal, compile_fail, [''])
test('RepPolyDeferred', normal, compile_fail, [''])
test('RepPolyDoBind', normal, compile_fail, [''])
test('RepPolyDoBody1', normal, compile_fail, [''])
test('RepPolyDoBody2', normal, compile_fail, [''])
test('RepPolyDoReturn', normal, compile, [''])
+test('RepPolyFFI', normal, compile, [''])
test('RepPolyLeftSection1', normal, compile, [''])
test('RepPolyLeftSection2', normal, compile_fail, [''])
test('RepPolyMagic', normal, compile_fail, [''])
@@ -70,6 +71,7 @@ test('RepPolyTuple', normal, compile_fail, [''])
test('RepPolyTupleSection', normal, compile_fail, [''])
test('RepPolyUnboxedPatterns', normal, compile_fail, [''])
test('RepPolyUnliftedDatatype', normal, compile, [''])
+test('RepPolyUnliftedDatatype2', normal, compile, ['-O'])
test('RepPolyWildcardPattern', normal, compile_fail, [''])
test('RepPolyWrappedVar', normal, compile_fail, [''])
test('RepPolyWrappedVar2', normal, compile, [''])
@@ -86,6 +88,10 @@ test('UnliftedNewtypesLevityBinder', normal, compile_fail, [''])
test('T13105', normal, compile_fail, ['']) ##
test('T17021', normal, compile_fail, ['']) ##
test('T17536b', normal, compile_fail, ['']) ##
+test('T20363', normal, compile_fail, ['']) ##
+test('T20363_show_co', normal, compile_fail ##
+ , ['-fprint-explicit-coercions']) ##
test('T20363b', normal, compile_fail, ['']) ##
+test('RepPolyCase2', normal, compile_fail, ['']) ##
test('RepPolyRule3', normal, compile_fail, ['']) ##
######################################################################