summaryrefslogtreecommitdiff
path: root/testsuite/tests/rep-poly
diff options
context:
space:
mode:
authorsheaf <sam.derbyshire@gmail.com>2022-03-02 00:12:17 +0100
committerMarge Bot <ben+marge-bot@smart-cactus.org>2022-03-02 14:08:36 -0500
commitb27b2af3fab48e21aabcc9441967c4dd7a6a75ea (patch)
treeca2919f3d98c35b6a22b08118ca32f4dae04a40d /testsuite/tests/rep-poly
parentaeea6bd588060108dea88996c19f48b9e50adad2 (diff)
downloadhaskell-b27b2af3fab48e21aabcc9441967c4dd7a6a75ea.tar.gz
Introduce ConcreteTv metavariables
This patch introduces a new kind of metavariable, by adding the constructor `ConcreteTv` to `MetaInfo`. A metavariable with `ConcreteTv` `MetaInfo`, henceforth a concrete metavariable, can only be unified with a type that is concrete (that is, a type that answers `True` to `GHC.Core.Type.isConcrete`). This solves the problem of dangling metavariables in `Concrete#` constraints: instead of emitting `Concrete# ty`, which contains a secret existential metavariable, we simply emit a primitive equality constraint `ty ~# concrete_tv` where `concrete_tv` is a fresh concrete metavariable. This means we can avoid all the complexity of canonicalising `Concrete#` constraints, as we can just re-use the existing machinery for `~#`. To finish things up, this patch then removes the `Concrete#` special predicate, and instead introduces the special predicate `IsRefl#` which enforces that a coercion is reflexive. Such a constraint is needed because the canonicaliser is quite happy to rewrite an equality constraint such as `ty ~# concrete_tv`, but such a rewriting is not handled by the rest of the compiler currently, as we need to make use of the resulting coercion, as outlined in the FixedRuntimeRep plan. The big upside of this approach (on top of simplifying the code) is that we can now selectively implement PHASE 2 of FixedRuntimeRep, by changing individual calls of `hasFixedRuntimeRep_MustBeRefl` to `hasFixedRuntimeRep` and making use of the obtained coercion.
Diffstat (limited to 'testsuite/tests/rep-poly')
-rw-r--r--testsuite/tests/rep-poly/LevPolyLet.stderr3
-rw-r--r--testsuite/tests/rep-poly/RepPolyApp.stderr3
-rw-r--r--testsuite/tests/rep-poly/RepPolyArrowCmd.stderr3
-rw-r--r--testsuite/tests/rep-poly/RepPolyArrowFun.stderr20
-rw-r--r--testsuite/tests/rep-poly/RepPolyBackpack1.stderr17
-rw-r--r--testsuite/tests/rep-poly/RepPolyBinder.stderr10
-rw-r--r--testsuite/tests/rep-poly/RepPolyDeferred.stderr5
-rw-r--r--testsuite/tests/rep-poly/RepPolyDoBind.stderr3
-rw-r--r--testsuite/tests/rep-poly/RepPolyDoBody1.stderr6
-rw-r--r--testsuite/tests/rep-poly/RepPolyDoBody2.stderr3
-rw-r--r--testsuite/tests/rep-poly/RepPolyLeftSection2.stderr3
-rw-r--r--testsuite/tests/rep-poly/RepPolyMagic.stderr6
-rw-r--r--testsuite/tests/rep-poly/RepPolyMatch.stderr5
-rw-r--r--testsuite/tests/rep-poly/RepPolyMcBind.stderr3
-rw-r--r--testsuite/tests/rep-poly/RepPolyMcBody.stderr3
-rw-r--r--testsuite/tests/rep-poly/RepPolyMcGuard.stderr6
-rw-r--r--testsuite/tests/rep-poly/RepPolyNPlusK.stderr5
-rw-r--r--testsuite/tests/rep-poly/RepPolyNewtypePat1.stderr5
-rw-r--r--testsuite/tests/rep-poly/RepPolyPatBind.stderr3
-rw-r--r--testsuite/tests/rep-poly/RepPolyRecordPattern.stderr10
-rw-r--r--testsuite/tests/rep-poly/RepPolyRecordUpdate.stderr9
-rw-r--r--testsuite/tests/rep-poly/RepPolyRightSection.stderr3
-rw-r--r--testsuite/tests/rep-poly/RepPolyRule1.stderr3
-rw-r--r--testsuite/tests/rep-poly/RepPolyRule2.stderr3
-rw-r--r--testsuite/tests/rep-poly/RepPolyRule3.stderr26
-rw-r--r--testsuite/tests/rep-poly/RepPolySum.stderr6
-rw-r--r--testsuite/tests/rep-poly/RepPolyTuple.stderr4
-rw-r--r--testsuite/tests/rep-poly/RepPolyTupleSection.stderr4
-rw-r--r--testsuite/tests/rep-poly/RepPolyUnboxedPatterns.stderr10
-rw-r--r--testsuite/tests/rep-poly/RepPolyWildcardPattern.stderr5
-rw-r--r--testsuite/tests/rep-poly/RepPolyWrappedVar.stderr3
-rw-r--r--testsuite/tests/rep-poly/T11473.stderr8
-rw-r--r--testsuite/tests/rep-poly/T12709.stderr12
-rw-r--r--testsuite/tests/rep-poly/T12973.stderr6
-rw-r--r--testsuite/tests/rep-poly/T13105.stderr10
-rw-r--r--testsuite/tests/rep-poly/T13233.stderr9
-rw-r--r--testsuite/tests/rep-poly/T13929.stderr14
-rw-r--r--testsuite/tests/rep-poly/T14561.stderr3
-rw-r--r--testsuite/tests/rep-poly/T14561b.stderr3
-rw-r--r--testsuite/tests/rep-poly/T14765.stderr3
-rw-r--r--testsuite/tests/rep-poly/T17021.stderr13
-rw-r--r--testsuite/tests/rep-poly/T17360.stderr5
-rw-r--r--testsuite/tests/rep-poly/T17536b.stderr22
-rw-r--r--testsuite/tests/rep-poly/T17817.stderr3
-rw-r--r--testsuite/tests/rep-poly/T19615.stderr3
-rw-r--r--testsuite/tests/rep-poly/T19709a.stderr5
-rw-r--r--testsuite/tests/rep-poly/T19709b.stderr3
-rw-r--r--testsuite/tests/rep-poly/T20113.stderr5
-rw-r--r--testsuite/tests/rep-poly/T20277.stderr3
-rw-r--r--testsuite/tests/rep-poly/T20363b.hs2
-rw-r--r--testsuite/tests/rep-poly/T20363b.stderr28
-rw-r--r--testsuite/tests/rep-poly/T20426.stderr5
-rw-r--r--testsuite/tests/rep-poly/UnliftedNewtypesCoerceFail.stderr3
-rw-r--r--testsuite/tests/rep-poly/UnliftedNewtypesLevityBinder.stderr3
-rw-r--r--testsuite/tests/rep-poly/all.T19
55 files changed, 287 insertions, 101 deletions
diff --git a/testsuite/tests/rep-poly/LevPolyLet.stderr b/testsuite/tests/rep-poly/LevPolyLet.stderr
index 24456e99a8..ed47733081 100644
--- a/testsuite/tests/rep-poly/LevPolyLet.stderr
+++ b/testsuite/tests/rep-poly/LevPolyLet.stderr
@@ -1,6 +1,7 @@
LevPolyLet.hs:17:7: error:
- • The binder ‘x’ does not have a fixed runtime representation:
+ • The binder ‘x’ does not have a fixed runtime representation.
+ Its type is:
a :: TYPE ('BoxedRep v)
• In the expression: let x = f 42 in undefined
In an equation for ‘example’: example f = let x = f 42 in undefined
diff --git a/testsuite/tests/rep-poly/RepPolyApp.stderr b/testsuite/tests/rep-poly/RepPolyApp.stderr
index ee7e914b02..e823c04dc2 100644
--- a/testsuite/tests/rep-poly/RepPolyApp.stderr
+++ b/testsuite/tests/rep-poly/RepPolyApp.stderr
@@ -2,7 +2,8 @@
RepPolyApp.hs:11:11: error:
• The function argument
‘(undefined :: a)’
- does not have a fixed runtime representation:
+ 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)
diff --git a/testsuite/tests/rep-poly/RepPolyArrowCmd.stderr b/testsuite/tests/rep-poly/RepPolyArrowCmd.stderr
index 0541ef43ab..26a96f349a 100644
--- a/testsuite/tests/rep-poly/RepPolyArrowCmd.stderr
+++ b/testsuite/tests/rep-poly/RepPolyArrowCmd.stderr
@@ -1,7 +1,8 @@
RepPolyArrowCmd.hs:26:17: error:
• The arrow command ‘returnA -< x’
- does not have a fixed runtime representation:
+ does not have a fixed runtime representation.
+ Its type is:
a :: TYPE r
• In the expression: proc x -> returnA -< x
In an equation for ‘foo’: foo = proc x -> returnA -< x
diff --git a/testsuite/tests/rep-poly/RepPolyArrowFun.stderr b/testsuite/tests/rep-poly/RepPolyArrowFun.stderr
index f4ce90d51d..014dc19144 100644
--- a/testsuite/tests/rep-poly/RepPolyArrowFun.stderr
+++ b/testsuite/tests/rep-poly/RepPolyArrowFun.stderr
@@ -2,16 +2,19 @@
RepPolyArrowFun.hs:29:9: error:
• • The return type of the arrow function
‘arr’
- does not have a fixed runtime representation:
+ does not have a fixed runtime representation.
+ Its type is:
arr b c :: TYPE r
• The return type of the arrow function
‘(>>>)’
- does not have a fixed runtime representation:
- arr a1 c1 :: TYPE r
+ does not have a fixed runtime representation.
+ Its type is:
+ arr a1 c4 :: TYPE r
• The return type of the arrow function
‘first’
- does not have a fixed runtime representation:
- arr (b1, d) (c2, d) :: TYPE r
+ does not have a fixed runtime representation.
+ Its type is:
+ arr (b1, d) (c5, d) :: TYPE r
• When checking that ‘arr’ (needed by a syntactic construct)
has the required type: forall b c. (b -> c) -> arr b c
arising from a proc expression at RepPolyArrowFun.hs:29:9-32
@@ -19,11 +22,12 @@ RepPolyArrowFun.hs:29:9: error:
In an equation for ‘foo’: foo _ = proc x -> undefined -< x
RepPolyArrowFun.hs:29:19: error:
- • In the first order arrow application of
+ • The function un the first order arrow application of
‘undefined’
to
- ‘x’,
- the function does not have a fixed runtime representation:
+ ‘x’
+ does not have a fixed runtime representation.
+ Its type is:
arr a a :: TYPE r
• In the command: undefined -< x
In the expression: proc x -> undefined -< x
diff --git a/testsuite/tests/rep-poly/RepPolyBackpack1.stderr b/testsuite/tests/rep-poly/RepPolyBackpack1.stderr
index 6c4c9901cd..9f3d77ff46 100644
--- a/testsuite/tests/rep-poly/RepPolyBackpack1.stderr
+++ b/testsuite/tests/rep-poly/RepPolyBackpack1.stderr
@@ -3,14 +3,16 @@
[2 of 2] Compiling NumberStuff ( number-unknown\NumberStuff.hs, nothing )
RepPolyBackpack1.bkp:17:5: error:
- The type of the first pattern in the equation for ‘funcA’
- does not have a fixed runtime representation:
+ The first pattern in the equation for ‘funcA’
+ does not have a fixed runtime representation.
+ Its type is:
Number l :: TYPE (Rep l)
RepPolyBackpack1.bkp:17:22: error:
• The function argument
‘x’
- does not have a fixed runtime representation:
+ 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)
@@ -19,7 +21,8 @@ RepPolyBackpack1.bkp:17:22: error:
RepPolyBackpack1.bkp:17:24: error:
• The function argument
‘(multiply x y)’
- does not have a fixed runtime representation:
+ 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)
@@ -28,7 +31,8 @@ RepPolyBackpack1.bkp:17:24: error:
RepPolyBackpack1.bkp:17:34: error:
• The function argument
‘x’
- does not have a fixed runtime representation:
+ 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)’
@@ -37,7 +41,8 @@ RepPolyBackpack1.bkp:17:34: error:
RepPolyBackpack1.bkp:17:36: error:
• The function argument
‘y’
- does not have a fixed runtime representation:
+ 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)’
diff --git a/testsuite/tests/rep-poly/RepPolyBinder.stderr b/testsuite/tests/rep-poly/RepPolyBinder.stderr
index 83489470e9..177a4865e6 100644
--- a/testsuite/tests/rep-poly/RepPolyBinder.stderr
+++ b/testsuite/tests/rep-poly/RepPolyBinder.stderr
@@ -1,8 +1,10 @@
RepPolyBinder.hs:11:1: error:
- • The type of the first pattern in the equation for ‘foo’
- does not have a fixed runtime representation:
+ • The first pattern in the equation for ‘foo’
+ does not have a fixed runtime representation.
+ Its type is:
a :: TYPE rep1
- • The type of the second pattern in the equation for ‘foo’
- does not have a fixed runtime representation:
+ • The second pattern in the equation for ‘foo’
+ does not have a fixed runtime representation.
+ Its type is:
b :: TYPE rep2
diff --git a/testsuite/tests/rep-poly/RepPolyDeferred.stderr b/testsuite/tests/rep-poly/RepPolyDeferred.stderr
index ff8fcc7688..4cb5449fa8 100644
--- a/testsuite/tests/rep-poly/RepPolyDeferred.stderr
+++ b/testsuite/tests/rep-poly/RepPolyDeferred.stderr
@@ -1,5 +1,6 @@
RepPolyDeferred.hs:8:1: error:
- The type of the first pattern in the equation for ‘foo’
- does not have a fixed runtime representation:
+ The first pattern in the equation for ‘foo’
+ does not have a fixed runtime representation.
+ Its type is:
a :: TYPE rep
diff --git a/testsuite/tests/rep-poly/RepPolyDoBind.stderr b/testsuite/tests/rep-poly/RepPolyDoBind.stderr
index 69974a54a7..ff92a1ae26 100644
--- a/testsuite/tests/rep-poly/RepPolyDoBind.stderr
+++ b/testsuite/tests/rep-poly/RepPolyDoBind.stderr
@@ -2,7 +2,8 @@
RepPolyDoBind.hs:26:3: error:
• The first argument to (>>=),
arising from the ‘do’ statement,
- does not have a fixed runtime representation:
+ does not have a fixed runtime representation.
+ Its type is:
ma0 :: TYPE rep
• In a stmt of a 'do' block: a <- undefined
In the expression:
diff --git a/testsuite/tests/rep-poly/RepPolyDoBody1.stderr b/testsuite/tests/rep-poly/RepPolyDoBody1.stderr
index 4e33390474..8779c23b39 100644
--- a/testsuite/tests/rep-poly/RepPolyDoBody1.stderr
+++ b/testsuite/tests/rep-poly/RepPolyDoBody1.stderr
@@ -2,11 +2,13 @@
RepPolyDoBody1.hs:24:3: error:
• • The first argument to (>>),
arising from the ‘do’ statement,
- does not have a fixed runtime representation:
+ does not have a fixed runtime representation.
+ Its type is:
ma :: TYPE rep
• The second argument to (>>),
arising from the ‘do’ statement,
- does not have a fixed runtime representation:
+ does not have a fixed runtime representation.
+ Its type is:
mb0 :: TYPE rep
• In a stmt of a 'do' block: undefined :: ma
In the expression:
diff --git a/testsuite/tests/rep-poly/RepPolyDoBody2.stderr b/testsuite/tests/rep-poly/RepPolyDoBody2.stderr
index 0154f2105e..5d83af9891 100644
--- a/testsuite/tests/rep-poly/RepPolyDoBody2.stderr
+++ b/testsuite/tests/rep-poly/RepPolyDoBody2.stderr
@@ -2,7 +2,8 @@
RepPolyDoBody2.hs:23:3: error:
• The second argument to (>>),
arising from the ‘do’ statement,
- does not have a fixed runtime representation:
+ does not have a fixed runtime representation.
+ Its type is:
mb0 :: TYPE rep
• In a stmt of a 'do' block: undefined :: ()
In the expression:
diff --git a/testsuite/tests/rep-poly/RepPolyLeftSection2.stderr b/testsuite/tests/rep-poly/RepPolyLeftSection2.stderr
index 79d0bc867e..6d299f2fed 100644
--- a/testsuite/tests/rep-poly/RepPolyLeftSection2.stderr
+++ b/testsuite/tests/rep-poly/RepPolyLeftSection2.stderr
@@ -2,7 +2,8 @@
RepPolyLeftSection2.hs:14:11: error:
• The function argument
‘undefined’
- does not have a fixed runtime representation:
+ does not have a fixed runtime representation.
+ Its type is:
a :: TYPE r
• In the expression: undefined
In the expression: undefined `f`
diff --git a/testsuite/tests/rep-poly/RepPolyMagic.stderr b/testsuite/tests/rep-poly/RepPolyMagic.stderr
index 3c83b2c3ec..47e7ba81d3 100644
--- a/testsuite/tests/rep-poly/RepPolyMagic.stderr
+++ b/testsuite/tests/rep-poly/RepPolyMagic.stderr
@@ -2,7 +2,8 @@
RepPolyMagic.hs:12:7: error:
• Unsaturated use of a representation-polymorphic primitive function.
The second argument of ‘seq’
- does not have a fixed runtime representation:
+ does not have a fixed runtime representation.
+ Its type is:
b :: TYPE r
• In the expression: seq
In an equation for ‘foo’: foo = seq
@@ -10,7 +11,8 @@ RepPolyMagic.hs:12:7: error:
RepPolyMagic.hs:15:7: error:
• Unsaturated use of a representation-polymorphic primitive function.
The second argument of ‘oneShot’
- does not have a fixed runtime representation:
+ does not have a fixed runtime representation.
+ Its type is:
a :: TYPE r
• In the expression: oneShot
In an equation for ‘bar’: bar = oneShot
diff --git a/testsuite/tests/rep-poly/RepPolyMatch.stderr b/testsuite/tests/rep-poly/RepPolyMatch.stderr
index f52a699002..7573de3c18 100644
--- a/testsuite/tests/rep-poly/RepPolyMatch.stderr
+++ b/testsuite/tests/rep-poly/RepPolyMatch.stderr
@@ -1,7 +1,8 @@
RepPolyMatch.hs:11:9: error:
- • The type of the first pattern in the case alternative
- does not have a fixed runtime representation:
+ • The first pattern in the case alternative
+ does not have a fixed runtime representation.
+ Its type is:
a :: TYPE rep
• In the expression: \case
In an equation for ‘match’: match = \case
diff --git a/testsuite/tests/rep-poly/RepPolyMcBind.stderr b/testsuite/tests/rep-poly/RepPolyMcBind.stderr
index 6468e4d73e..2febf28b9f 100644
--- a/testsuite/tests/rep-poly/RepPolyMcBind.stderr
+++ b/testsuite/tests/rep-poly/RepPolyMcBind.stderr
@@ -2,7 +2,8 @@
RepPolyMcBind.hs:26:16: error:
• The first argument to (>>=),
arising from the monad comprehension,
- does not have a fixed runtime representation:
+ does not have a fixed runtime representation.
+ Its type is:
ma :: TYPE rep
• In a stmt of a monad comprehension: x <- undefined :: ma
In the expression: [() | x <- undefined :: ma]
diff --git a/testsuite/tests/rep-poly/RepPolyMcBody.stderr b/testsuite/tests/rep-poly/RepPolyMcBody.stderr
index 631e28cbc7..56df668fdd 100644
--- a/testsuite/tests/rep-poly/RepPolyMcBody.stderr
+++ b/testsuite/tests/rep-poly/RepPolyMcBody.stderr
@@ -2,7 +2,8 @@
RepPolyMcBody.hs:30:16: error:
• The first argument to (>>),
arising from the monad comprehension,
- does not have a fixed runtime representation:
+ does not have a fixed runtime representation.
+ Its type is:
ma0 :: TYPE rep
• In a stmt of a monad comprehension: True
In the expression: [() | True]
diff --git a/testsuite/tests/rep-poly/RepPolyMcGuard.stderr b/testsuite/tests/rep-poly/RepPolyMcGuard.stderr
index 1d7036cb0a..46addb9982 100644
--- a/testsuite/tests/rep-poly/RepPolyMcGuard.stderr
+++ b/testsuite/tests/rep-poly/RepPolyMcGuard.stderr
@@ -2,11 +2,13 @@
RepPolyMcGuard.hs:30:16: error:
• • The first argument to (>>),
arising from the monad comprehension,
- does not have a fixed runtime representation:
+ does not have a fixed runtime representation.
+ Its type is:
ma0 :: TYPE rep
• The argument to ‘guard’,
arising from the monad comprehension,
- does not have a fixed runtime representation:
+ does not have a fixed runtime representation.
+ Its type is:
a0 :: TYPE rep
• In a stmt of a monad comprehension: undefined
In the expression: [() | undefined]
diff --git a/testsuite/tests/rep-poly/RepPolyNPlusK.stderr b/testsuite/tests/rep-poly/RepPolyNPlusK.stderr
index cb5f9c3ac4..80672387db 100644
--- a/testsuite/tests/rep-poly/RepPolyNPlusK.stderr
+++ b/testsuite/tests/rep-poly/RepPolyNPlusK.stderr
@@ -1,5 +1,6 @@
RepPolyNPlusK.hs:22:1: error:
- The type of the first pattern in the equation for ‘foo’
- does not have a fixed runtime representation:
+ The first pattern in the equation for ‘foo’
+ does not have a fixed runtime representation.
+ Its type is:
a :: TYPE rep1
diff --git a/testsuite/tests/rep-poly/RepPolyNewtypePat1.stderr b/testsuite/tests/rep-poly/RepPolyNewtypePat1.stderr
index c2f391f928..6981d02016 100644
--- a/testsuite/tests/rep-poly/RepPolyNewtypePat1.stderr
+++ b/testsuite/tests/rep-poly/RepPolyNewtypePat1.stderr
@@ -1,5 +1,6 @@
RepPolyNewtypePat1.hs:16:1: error:
- The type of the first pattern in the equation for ‘bar’
- does not have a fixed runtime representation:
+ The first pattern in the equation for ‘bar’
+ does not have a fixed runtime representation.
+ Its type is:
X a :: TYPE rep
diff --git a/testsuite/tests/rep-poly/RepPolyPatBind.stderr b/testsuite/tests/rep-poly/RepPolyPatBind.stderr
index b372027ea9..3914ea8e30 100644
--- a/testsuite/tests/rep-poly/RepPolyPatBind.stderr
+++ b/testsuite/tests/rep-poly/RepPolyPatBind.stderr
@@ -1,6 +1,7 @@
RepPolyPatBind.hs:18:5: error:
- • The binder ‘x’ does not have a fixed runtime representation:
+ • The binder ‘x’ does not have a fixed runtime representation.
+ Its type is:
a :: TYPE rep
• In the expression:
let
diff --git a/testsuite/tests/rep-poly/RepPolyRecordPattern.stderr b/testsuite/tests/rep-poly/RepPolyRecordPattern.stderr
index de3d9b66cc..50651762dd 100644
--- a/testsuite/tests/rep-poly/RepPolyRecordPattern.stderr
+++ b/testsuite/tests/rep-poly/RepPolyRecordPattern.stderr
@@ -1,10 +1,12 @@
RepPolyRecordPattern.hs:7:35: error:
- The type of the first pattern in the equation for ‘fld’
- does not have a fixed runtime representation:
+ 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 type of the first pattern in the equation for ‘upd’
- does not have a fixed runtime representation:
+ The first pattern in the equation for ‘upd’
+ does not have a fixed runtime representation.
+ Its type is:
X a :: TYPE rep
diff --git a/testsuite/tests/rep-poly/RepPolyRecordUpdate.stderr b/testsuite/tests/rep-poly/RepPolyRecordUpdate.stderr
index 91e7742f59..9189df8168 100644
--- a/testsuite/tests/rep-poly/RepPolyRecordUpdate.stderr
+++ b/testsuite/tests/rep-poly/RepPolyRecordUpdate.stderr
@@ -1,11 +1,14 @@
RepPolyRecordUpdate.hs:7:35: error:
- The type of the first pattern in the equation for ‘fld’
- does not have a fixed runtime representation:
+ 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’ does not have a fixed runtime representation:
+ • The record update at field ‘fld’
+ does not have a fixed runtime representation.
+ Its type is:
a :: TYPE rep
• In the ‘fld’ field of a record
In the expression: x {fld = meth ()}
diff --git a/testsuite/tests/rep-poly/RepPolyRightSection.stderr b/testsuite/tests/rep-poly/RepPolyRightSection.stderr
index 3209cdfff6..62c0bdcd8d 100644
--- a/testsuite/tests/rep-poly/RepPolyRightSection.stderr
+++ b/testsuite/tests/rep-poly/RepPolyRightSection.stderr
@@ -2,7 +2,8 @@
RepPolyRightSection.hs:14:11: error:
• Unsaturated use of a representation-polymorphic primitive function.
The third argument of ‘rightSection’
- does not have a fixed runtime representation:
+ does not have a fixed runtime representation.
+ Its type is:
a :: TYPE r
• In the expression: `g` undefined
In an equation for ‘test2’: test2 = (`g` undefined)
diff --git a/testsuite/tests/rep-poly/RepPolyRule1.stderr b/testsuite/tests/rep-poly/RepPolyRule1.stderr
index 45305c5b72..bef17d948f 100644
--- a/testsuite/tests/rep-poly/RepPolyRule1.stderr
+++ b/testsuite/tests/rep-poly/RepPolyRule1.stderr
@@ -2,7 +2,8 @@
RepPolyRule1.hs:11:51: error:
• The function argument
‘x’
- does not have a fixed runtime representation:
+ 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
diff --git a/testsuite/tests/rep-poly/RepPolyRule2.stderr b/testsuite/tests/rep-poly/RepPolyRule2.stderr
index 70a5af4687..70bd7eaa3a 100644
--- a/testsuite/tests/rep-poly/RepPolyRule2.stderr
+++ b/testsuite/tests/rep-poly/RepPolyRule2.stderr
@@ -2,7 +2,8 @@
RepPolyRule2.hs:17:55: error:
• The function argument
‘x’
- does not have a fixed runtime representation:
+ 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
diff --git a/testsuite/tests/rep-poly/RepPolyRule3.stderr b/testsuite/tests/rep-poly/RepPolyRule3.stderr
new file mode 100644
index 0000000000..524ddfd3e0
--- /dev/null
+++ b/testsuite/tests/rep-poly/RepPolyRule3.stderr
@@ -0,0 +1,26 @@
+
+RepPolyRule3.hs:17:59: error:
+ • The function argument
+ ‘x’
+ does not have a fixed runtime representation.
+ Its type is:
+ a :: TYPE (F 'WordRep)
+ 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
+ When checking the rewrite rule "g_id"
+
+RepPolyRule3.hs:23:54: error:
+ • The function argument
+ ‘x’
+ does not have a fixed runtime representation.
+ Its type is:
+ a :: TYPE (F 'WordRep)
+ 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
+ When checking the rewrite rule "h_id"
diff --git a/testsuite/tests/rep-poly/RepPolySum.stderr b/testsuite/tests/rep-poly/RepPolySum.stderr
index f4f7bd09fe..dacb118e2a 100644
--- a/testsuite/tests/rep-poly/RepPolySum.stderr
+++ b/testsuite/tests/rep-poly/RepPolySum.stderr
@@ -1,6 +1,7 @@
RepPolySum.hs:11:9: error:
- • The unboxed sum result type does not have a fixed runtime representation:
+ • The unboxed sum does not have a fixed runtime representation.
+ Its type is:
(# Int# | a #) :: TYPE ('SumRep '[ 'IntRep, rep])
• In the expression: (# | bar () #)
In an equation for ‘foo’:
@@ -11,7 +12,8 @@ RepPolySum.hs:11:9: error:
bar _ = undefined
RepPolySum.hs:20:9: error:
- • The unboxed sum result type does not have a fixed runtime representation:
+ • The unboxed sum does not have a fixed runtime representation.
+ Its type is:
(# Int# | a #) :: TYPE ('SumRep '[ 'IntRep, rep])
• In the expression: (# 17# | #)
In an equation for ‘baz’: baz _ = (# 17# | #)
diff --git a/testsuite/tests/rep-poly/RepPolyTuple.stderr b/testsuite/tests/rep-poly/RepPolyTuple.stderr
index 1c2c701fb2..e651dca0fd 100644
--- a/testsuite/tests/rep-poly/RepPolyTuple.stderr
+++ b/testsuite/tests/rep-poly/RepPolyTuple.stderr
@@ -1,6 +1,8 @@
RepPolyTuple.hs:11:9: error:
- • The tuple argument in first position does not have a fixed runtime representation:
+ • The tuple argument in first position
+ does not have a fixed runtime representation.
+ Its type is:
a :: TYPE r
• In the expression: (# bar (), bar (), bar () #)
In an equation for ‘foo’:
diff --git a/testsuite/tests/rep-poly/RepPolyTupleSection.stderr b/testsuite/tests/rep-poly/RepPolyTupleSection.stderr
index b4d08d02de..b2569ecfd6 100644
--- a/testsuite/tests/rep-poly/RepPolyTupleSection.stderr
+++ b/testsuite/tests/rep-poly/RepPolyTupleSection.stderr
@@ -1,6 +1,8 @@
RepPolyTupleSection.hs:11:7: error:
- • The tuple section does not have a fixed runtime representation in the second position:
+ • The second component of the tuple section
+ does not have a fixed runtime representation.
+ Its type is:
a :: TYPE r
• In the expression: (# 3#, #)
In an equation for ‘foo’: foo = (# 3#, #)
diff --git a/testsuite/tests/rep-poly/RepPolyUnboxedPatterns.stderr b/testsuite/tests/rep-poly/RepPolyUnboxedPatterns.stderr
index ced2503ca9..7efa7431c5 100644
--- a/testsuite/tests/rep-poly/RepPolyUnboxedPatterns.stderr
+++ b/testsuite/tests/rep-poly/RepPolyUnboxedPatterns.stderr
@@ -1,10 +1,12 @@
RepPolyUnboxedPatterns.hs:8:1: error:
- The type of the first pattern in the equation for ‘foo’
- does not have a fixed runtime representation:
+ The first pattern in the equation for ‘foo’
+ does not have a fixed runtime representation.
+ Its type is:
(# a, b #) :: TYPE ('TupleRep '[rep1, rep2])
RepPolyUnboxedPatterns.hs:11:1: error:
- The type of the first pattern in the equation for ‘bar’
- does not have a fixed runtime representation:
+ The first pattern in the equation 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/RepPolyWildcardPattern.stderr b/testsuite/tests/rep-poly/RepPolyWildcardPattern.stderr
index f5bb0cca08..de27799bbf 100644
--- a/testsuite/tests/rep-poly/RepPolyWildcardPattern.stderr
+++ b/testsuite/tests/rep-poly/RepPolyWildcardPattern.stderr
@@ -1,5 +1,6 @@
RepPolyWildcardPattern.hs:6:1: error:
- The type of the first pattern in the equation for ‘foo’
- does not have a fixed runtime representation:
+ The first pattern in the equation for ‘foo’
+ does not have a fixed runtime representation.
+ Its type is:
a :: TYPE rep
diff --git a/testsuite/tests/rep-poly/RepPolyWrappedVar.stderr b/testsuite/tests/rep-poly/RepPolyWrappedVar.stderr
index d89a54115e..d5ab6aaa0f 100644
--- a/testsuite/tests/rep-poly/RepPolyWrappedVar.stderr
+++ b/testsuite/tests/rep-poly/RepPolyWrappedVar.stderr
@@ -2,7 +2,8 @@
RepPolyWrappedVar.hs:15:10: error:
• Unsaturated use of a representation-polymorphic primitive function.
The first argument of ‘mkWeak#’
- does not have a fixed runtime representation:
+ does not have a fixed runtime representation.
+ Its type is:
a :: TYPE ('BoxedRep l)
• In the expression: mkWeak# @a @Int @Bool
In an equation for ‘primop’: primop = mkWeak# @a @Int @Bool
diff --git a/testsuite/tests/rep-poly/T11473.stderr b/testsuite/tests/rep-poly/T11473.stderr
index fdfa418318..2a4e92eae9 100644
--- a/testsuite/tests/rep-poly/T11473.stderr
+++ b/testsuite/tests/rep-poly/T11473.stderr
@@ -1,13 +1,15 @@
T11473.hs:19:1: error:
- The type of the first pattern in the equation for ‘hello’
- does not have a fixed runtime representation:
+ The first pattern in the equation for ‘hello’
+ does not have a fixed runtime representation.
+ Its type is:
a :: TYPE r
T11473.hs:19:17: error:
• The function argument
‘x’
- does not have a fixed runtime representation:
+ 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
diff --git a/testsuite/tests/rep-poly/T12709.stderr b/testsuite/tests/rep-poly/T12709.stderr
index 5b70aea4d7..78ebe39a7c 100644
--- a/testsuite/tests/rep-poly/T12709.stderr
+++ b/testsuite/tests/rep-poly/T12709.stderr
@@ -2,7 +2,8 @@
T12709.hs:28:13: error:
• The function argument
‘1’
- does not have a fixed runtime representation:
+ 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’
@@ -11,7 +12,8 @@ T12709.hs:28:13: error:
T12709.hs:28:17: error:
• The function argument
‘2’
- does not have a fixed runtime representation:
+ 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’
@@ -20,7 +22,8 @@ T12709.hs:28:17: error:
T12709.hs:28:21: error:
• The function argument
‘3’
- does not have a fixed runtime representation:
+ 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’
@@ -29,7 +32,8 @@ T12709.hs:28:21: error:
T12709.hs:28:25: error:
• The function argument
‘4’
- does not have a fixed runtime representation:
+ 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
diff --git a/testsuite/tests/rep-poly/T12973.stderr b/testsuite/tests/rep-poly/T12973.stderr
index cc03e032e3..1f677f3050 100644
--- a/testsuite/tests/rep-poly/T12973.stderr
+++ b/testsuite/tests/rep-poly/T12973.stderr
@@ -2,7 +2,8 @@
T12973.hs:13:7: error:
• The function argument
‘3’
- does not have a fixed runtime representation:
+ 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
@@ -11,7 +12,8 @@ T12973.hs:13:7: error:
T12973.hs:13:11: error:
• The function argument
‘4’
- does not have a fixed runtime representation:
+ 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
diff --git a/testsuite/tests/rep-poly/T13105.stderr b/testsuite/tests/rep-poly/T13105.stderr
new file mode 100644
index 0000000000..e5eaafa03a
--- /dev/null
+++ b/testsuite/tests/rep-poly/T13105.stderr
@@ -0,0 +1,10 @@
+
+T13105.hs:22:3: error:
+ • The first pattern in the equation for ‘abst’
+ does not have a fixed runtime representation.
+ Its type is:
+ Rep Int :: TYPE (RepRep 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 instance declaration for ‘HasRep Int’
diff --git a/testsuite/tests/rep-poly/T13233.stderr b/testsuite/tests/rep-poly/T13233.stderr
index 248b71c49d..614aa7b796 100644
--- a/testsuite/tests/rep-poly/T13233.stderr
+++ b/testsuite/tests/rep-poly/T13233.stderr
@@ -1,7 +1,8 @@
T13233.hs:14:11: error:
• The data constructor argument in first position
- does not have a fixed runtime representation:
+ does not have a fixed runtime representation.
+ Its type is:
a :: TYPE rep
• In the first argument of ‘bar’, namely ‘(#,#)’
In the expression: bar (#,#)
@@ -9,10 +10,12 @@ T13233.hs:14:11: error:
T13233.hs:22:16: error:
• • The data constructor argument in first position
- does not have a fixed runtime representation:
+ does not have a fixed runtime representation.
+ Its type is:
a :: TYPE rep1
• The data constructor argument in second position
- does not have a fixed runtime representation:
+ does not have a fixed runtime representation.
+ Its type is:
b :: TYPE rep2
• In the first argument of ‘obscure’, namely ‘(#,#)’
In the expression: obscure (#,#)
diff --git a/testsuite/tests/rep-poly/T13929.stderr b/testsuite/tests/rep-poly/T13929.stderr
index 2b4d8a9768..23f0005172 100644
--- a/testsuite/tests/rep-poly/T13929.stderr
+++ b/testsuite/tests/rep-poly/T13929.stderr
@@ -1,8 +1,12 @@
T13929.hs:29:24: error:
- • • The tuple argument in first position does not have a fixed runtime representation:
+ • • The tuple argument in first position
+ does not have a fixed runtime representation.
+ Its type is:
GUnboxed f rf :: TYPE rf
- • The tuple argument in second position does not have a fixed runtime representation:
+ • The tuple argument in second position
+ does not have a fixed runtime representation.
+ Its type is:
GUnboxed g rg :: TYPE rg
• In the expression: (# gunbox x, gunbox y #)
In an equation for ‘gunbox’:
@@ -11,7 +15,8 @@ T13929.hs:29:24: error:
‘GUnbox (f :*: g) ('TupleRep '[rf, rg])’
T13929.hs:33:21: error:
- • The unboxed sum result type does not have a fixed runtime representation:
+ • The unboxed sum does not have a fixed runtime representation.
+ Its type is:
GUnboxed (f :+: g) ('SumRep '[rf, rg]) :: TYPE ('SumRep '[rf, rg])
• In the expression: (# gunbox l | #)
In an equation for ‘gunbox’: gunbox (L1 l) = (# gunbox l | #)
@@ -19,7 +24,8 @@ T13929.hs:33:21: error:
‘GUnbox (f :+: g) ('SumRep '[rf, rg])’
T13929.hs:34:21: error:
- • The unboxed sum result type does not have a fixed runtime representation:
+ • The unboxed sum does not have a fixed runtime representation.
+ Its type is:
GUnboxed (f :+: g) ('SumRep '[rf, rg]) :: TYPE ('SumRep '[rf, rg])
• In the expression: (# | gunbox r #)
In an equation for ‘gunbox’: gunbox (R1 r) = (# | gunbox r #)
diff --git a/testsuite/tests/rep-poly/T14561.stderr b/testsuite/tests/rep-poly/T14561.stderr
index d6815cbdcf..3c372e689c 100644
--- a/testsuite/tests/rep-poly/T14561.stderr
+++ b/testsuite/tests/rep-poly/T14561.stderr
@@ -2,7 +2,8 @@
T14561.hs:12:9: error:
• Unsaturated use of a representation-polymorphic primitive function.
The first argument of ‘unsafeCoerce#’
- does not have a fixed runtime representation:
+ does not have a fixed runtime representation.
+ Its type is:
a :: TYPE r
• In the expression: unsafeCoerce#
In an equation for ‘badId’: badId = unsafeCoerce#
diff --git a/testsuite/tests/rep-poly/T14561b.stderr b/testsuite/tests/rep-poly/T14561b.stderr
index e7a919bb86..7af3b05511 100644
--- a/testsuite/tests/rep-poly/T14561b.stderr
+++ b/testsuite/tests/rep-poly/T14561b.stderr
@@ -2,7 +2,8 @@
T14561b.hs:12:9: error:
• Unsaturated use of a representation-polymorphic primitive function.
The first argument of ‘coerce’
- does not have a fixed runtime representation:
+ does not have a fixed runtime representation.
+ Its type is:
a :: TYPE r
• In the expression: coerce
In an equation for ‘badId’: badId = coerce
diff --git a/testsuite/tests/rep-poly/T14765.stderr b/testsuite/tests/rep-poly/T14765.stderr
index 3e580cc884..57281f6507 100644
--- a/testsuite/tests/rep-poly/T14765.stderr
+++ b/testsuite/tests/rep-poly/T14765.stderr
@@ -2,7 +2,8 @@
T14765.hs:11:31: error:
• The function argument
‘(k proxy#)’
- does not have a fixed runtime representation:
+ 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)’
diff --git a/testsuite/tests/rep-poly/T17021.stderr b/testsuite/tests/rep-poly/T17021.stderr
new file mode 100644
index 0000000000..accd9c1560
--- /dev/null
+++ b/testsuite/tests/rep-poly/T17021.stderr
@@ -0,0 +1,13 @@
+
+T17021.hs:18:9: error:
+ • The function argument
+ ‘42’
+ does not have a fixed runtime representation.
+ Its type is:
+ Int :: TYPE (Id LiftedRep)
+ 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 an equation for ‘f’: f = MkT 42
diff --git a/testsuite/tests/rep-poly/T17360.stderr b/testsuite/tests/rep-poly/T17360.stderr
index 5b9c25bc70..784eb9928b 100644
--- a/testsuite/tests/rep-poly/T17360.stderr
+++ b/testsuite/tests/rep-poly/T17360.stderr
@@ -1,5 +1,6 @@
T17360.hs:11:1: error:
- The type of the first pattern in the equation for ‘foo’
- does not have a fixed runtime representation:
+ The first pattern in the equation for ‘foo’
+ does not have a fixed runtime representation.
+ Its type is:
Id a :: TYPE r
diff --git a/testsuite/tests/rep-poly/T17536b.stderr b/testsuite/tests/rep-poly/T17536b.stderr
new file mode 100644
index 0000000000..0682f44282
--- /dev/null
+++ b/testsuite/tests/rep-poly/T17536b.stderr
@@ -0,0 +1,22 @@
+
+T17536b.hs:19:7: error:
+ • The first pattern in the lambda abstraction
+ does not have a fixed runtime representation.
+ Its type is:
+ a :: TYPE r
+ 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: \ _ -> 0
+ In an equation for ‘g’: g L = \ _ -> 0
+
+T17536b.hs:20:7: error:
+ • The first pattern in the lambda abstraction
+ does not have a fixed runtime representation.
+ Its type is:
+ a :: TYPE r
+ 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: \ _ -> 3#
+ In an equation for ‘g’: g U = \ _ -> 3#
diff --git a/testsuite/tests/rep-poly/T17817.stderr b/testsuite/tests/rep-poly/T17817.stderr
index 84eed10838..7acdec120a 100644
--- a/testsuite/tests/rep-poly/T17817.stderr
+++ b/testsuite/tests/rep-poly/T17817.stderr
@@ -2,7 +2,8 @@
T17817.hs:16:10: error:
• Unsaturated use of a representation-polymorphic primitive function.
The first argument of ‘mkWeak#’
- does not have a fixed runtime representation:
+ does not have a fixed runtime representation.
+ Its type is:
a :: TYPE ('BoxedRep l)
• In the expression: mkWeak#
In an equation for ‘primop’: primop = mkWeak#
diff --git a/testsuite/tests/rep-poly/T19615.stderr b/testsuite/tests/rep-poly/T19615.stderr
index e263dc7cd0..aff0d742cf 100644
--- a/testsuite/tests/rep-poly/T19615.stderr
+++ b/testsuite/tests/rep-poly/T19615.stderr
@@ -2,7 +2,8 @@
T19615.hs:17:20: error:
• The function argument
‘(f x)’
- does not have a fixed runtime representation:
+ 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
diff --git a/testsuite/tests/rep-poly/T19709a.stderr b/testsuite/tests/rep-poly/T19709a.stderr
index b4d0cce931..ee88ed0ed1 100644
--- a/testsuite/tests/rep-poly/T19709a.stderr
+++ b/testsuite/tests/rep-poly/T19709a.stderr
@@ -1,7 +1,8 @@
T19709a.hs:8:8: error:
- • The type of the first pattern in the equation for ‘levid’
- does not have a fixed runtime representation:
+ • The first pattern in the equation for ‘levid’
+ does not have a fixed runtime representation.
+ Its type is:
a :: TYPE r
• In the expression:
let
diff --git a/testsuite/tests/rep-poly/T19709b.stderr b/testsuite/tests/rep-poly/T19709b.stderr
index 2f228c257a..63aa0f3751 100644
--- a/testsuite/tests/rep-poly/T19709b.stderr
+++ b/testsuite/tests/rep-poly/T19709b.stderr
@@ -2,7 +2,8 @@
T19709b.hs:11:14: error:
• The function argument
‘(error @Any "e2")’
- does not have a fixed runtime representation:
+ 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")’
diff --git a/testsuite/tests/rep-poly/T20113.stderr b/testsuite/tests/rep-poly/T20113.stderr
index 4ea6546309..da8439e9e7 100644
--- a/testsuite/tests/rep-poly/T20113.stderr
+++ b/testsuite/tests/rep-poly/T20113.stderr
@@ -1,5 +1,6 @@
T20113.hs:4:35: error:
- The type of the first pattern in the equation for ‘$sel:y_fld:MkY’
- does not have a fixed runtime representation:
+ 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/T20277.stderr b/testsuite/tests/rep-poly/T20277.stderr
index 9445c55c79..b2e82c86eb 100644
--- a/testsuite/tests/rep-poly/T20277.stderr
+++ b/testsuite/tests/rep-poly/T20277.stderr
@@ -1,6 +1,7 @@
T20277.hs:14:9: error:
- • The unboxed sum result type does not have a fixed runtime representation:
+ • The unboxed sum does not have a fixed runtime representation.
+ Its type is:
(# Int# | a #) :: TYPE ('SumRep '[ 'IntRep, rep])
• In the expression: (# 17# | #)
In an equation for ‘baz’: baz _ = (# 17# | #)
diff --git a/testsuite/tests/rep-poly/T20363b.hs b/testsuite/tests/rep-poly/T20363b.hs
index 52158cbe13..cb2a0ea745 100644
--- a/testsuite/tests/rep-poly/T20363b.hs
+++ b/testsuite/tests/rep-poly/T20363b.hs
@@ -51,4 +51,4 @@ test1c :: Int
test1c = test1b ( MkNT (# #) )
test2c :: () -> Addr#
-test2c _ = test1b ( MkNT (# nullAddr#, (# #) #) )
+test2c _ = test2b ( MkNT (# nullAddr#, (# #) #) )
diff --git a/testsuite/tests/rep-poly/T20363b.stderr b/testsuite/tests/rep-poly/T20363b.stderr
new file mode 100644
index 0000000000..1d657f3237
--- /dev/null
+++ b/testsuite/tests/rep-poly/T20363b.stderr
@@ -0,0 +1,28 @@
+
+T20363b.hs:51:24: error:
+ • The function argument
+ ‘(##)’
+ 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 expression: test1b (MkNT (##))
+
+T20363b.hs:54:26: error:
+ • The function argument
+ ‘(# nullAddr#, (##) #)’
+ 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 first argument of ‘MkNT’, namely ‘(# nullAddr#, (##) #)’
+ In the first argument of ‘test2b’, namely
+ ‘(MkNT (# nullAddr#, (##) #))’
+ In the expression: test2b (MkNT (# nullAddr#, (##) #))
diff --git a/testsuite/tests/rep-poly/T20426.stderr b/testsuite/tests/rep-poly/T20426.stderr
index d6ef0f272f..9d9db41f8a 100644
--- a/testsuite/tests/rep-poly/T20426.stderr
+++ b/testsuite/tests/rep-poly/T20426.stderr
@@ -1,5 +1,6 @@
T20426.hs:15:1: error:
- The type of the first pattern in the equation for ‘getInt#’
- does not have a fixed runtime representation:
+ The first pattern in the equation for ‘getInt#’
+ does not have a fixed runtime representation.
+ Its type is:
LPGADT l :: TYPE ('BoxedRep l)
diff --git a/testsuite/tests/rep-poly/UnliftedNewtypesCoerceFail.stderr b/testsuite/tests/rep-poly/UnliftedNewtypesCoerceFail.stderr
index 344ef39328..ba92961bcb 100644
--- a/testsuite/tests/rep-poly/UnliftedNewtypesCoerceFail.stderr
+++ b/testsuite/tests/rep-poly/UnliftedNewtypesCoerceFail.stderr
@@ -2,7 +2,8 @@
UnliftedNewtypesCoerceFail.hs:15:8: error:
• Unsaturated use of a representation-polymorphic primitive function.
The first argument of ‘coerce’
- does not have a fixed runtime representation:
+ does not have a fixed runtime representation.
+ Its type is:
x :: TYPE rep
• In the expression: coerce
In an equation for ‘goof’: goof = coerce
diff --git a/testsuite/tests/rep-poly/UnliftedNewtypesLevityBinder.stderr b/testsuite/tests/rep-poly/UnliftedNewtypesLevityBinder.stderr
index d4746f75c2..f4e7c62b46 100644
--- a/testsuite/tests/rep-poly/UnliftedNewtypesLevityBinder.stderr
+++ b/testsuite/tests/rep-poly/UnliftedNewtypesLevityBinder.stderr
@@ -1,7 +1,8 @@
UnliftedNewtypesLevityBinder.hs:16:7: error:
• The newtype constructor argument
- does not have a fixed runtime representation:
+ does not have a fixed runtime representation.
+ Its type is:
a :: TYPE r
• In the expression: IdentC
In an equation for ‘bad’: bad = IdentC
diff --git a/testsuite/tests/rep-poly/all.T b/testsuite/tests/rep-poly/all.T
index c3b6e9eae6..d035558ef4 100644
--- a/testsuite/tests/rep-poly/all.T
+++ b/testsuite/tests/rep-poly/all.T
@@ -3,15 +3,12 @@ test('T11473', normal, compile_fail, [''])
test('T11724', normal, compile_fail, [''])
test('T12709', normal, compile_fail, [''])
test('T12973', normal, compile_fail, [''])
-test('T13105', expect_broken(17201), compile, [''])
test('T13233', normal, compile_fail, [''])
test('T13929', normal, compile_fail, [''])
test('T14561', normal, compile_fail, [''])
test('T14561b', normal, compile_fail, [''])
test('T14765', normal, compile_fail, [''])
-test('T17021', expect_broken(17201), compile, [''])
test('T17360', normal, compile_fail, [''])
-test('T17536b', expect_broken(17201), compile, [''])
test('T17817', normal, compile_fail, [''])
test('T18170a', [extra_files(['T18170c.hs'])], multimod_compile, ['T18170a.hs', '-v0'])
test('T18170b', [extra_files(['T18170c.hs']), expect_broken(19893)], multimod_compile_fail, ['T18170b.hs', '-v0'])
@@ -28,7 +25,6 @@ test('T20277', normal, compile_fail, [''])
test('T20330a', normal, compile, [''])
test('T20330b', normal, compile, [''])
test('T20363', normal, compile, [''])
-test('T20363b', expect_broken(17201), compile, [''])
test('T20423', normal, compile_fail, [''])
test('T20423b', normal, compile_fail, [''])
test('T20426', normal, compile_fail, [''])
@@ -69,7 +65,6 @@ test('RepPolyRecordUpdate', normal, compile_fail, [''])
test('RepPolyRightSection', normal, compile_fail, [''])
test('RepPolyRule1', normal, compile_fail, [''])
test('RepPolyRule2', normal, compile_fail, [''])
-test('RepPolyRule3', expect_broken(17201), compile, [''])
test('RepPolySum', normal, compile_fail, [''])
test('RepPolyTuple', normal, compile_fail, [''])
test('RepPolyTupleSection', normal, compile_fail, [''])
@@ -80,3 +75,17 @@ test('RepPolyWrappedVar', normal, compile_fail, [''])
test('RepPolyWrappedVar2', normal, compile, [''])
test('UnliftedNewtypesCoerceFail', normal, compile_fail, [''])
test('UnliftedNewtypesLevityBinder', normal, compile_fail, [''])
+
+######################################################################
+## The following tests require rewriting in RuntimeReps, ##
+## i.e. PHASE 2 of the FixedRuntimeRep plan. ##
+## ##
+## For the moment, we check that we get the expected error message, ##
+## as we want to reject these in the typechecker instead of getting ##
+## a compiler crash. ##
+test('T13105', normal, compile_fail, ['']) ##
+test('T17021', normal, compile_fail, ['']) ##
+test('T17536b', normal, compile_fail, ['']) ##
+test('T20363b', normal, compile_fail, ['']) ##
+test('RepPolyRule3', normal, compile_fail, ['']) ##
+######################################################################