[GHC] #15370: Typed hole panic on GHC 8.6 (tcTyVarDetails)
GHC
ghc-devs at haskell.org
Mon Jul 23 15:40:31 UTC 2018
#15370: Typed hole panic on GHC 8.6 (tcTyVarDetails)
-------------------------------------+-------------------------------------
Reporter: RyanGlScott | Owner: Tritlo
Type: bug | Status: new
Priority: high | Milestone: 8.6.1
Component: Compiler (Type | Version: 8.4.3
checker) | Keywords: TypeInType,
Resolution: | TypedHoles
Operating System: Unknown/Multiple | Architecture:
Type of failure: Compile-time | Unknown/Multiple
crash or panic | Test Case:
Blocked By: | Blocking:
Related Tickets: | Differential Rev(s):
Wiki Page: |
-------------------------------------+-------------------------------------
Comment (by RyanGlScott):
Tritlo, what commit are you on? I just tried compiling the program in
comment:1 using commit f0d27f515ffbc476144d1d1dd1a71bf9fa93c94b, and to my
surprise, it no longer panics!
{{{
$ inplace/bin/ghc-stage2 ../Bug.hs
[1 of 1] Compiling Bug ( ../Bug.hs, ../Bug.o )
../Bug.hs:14:10: error:
• Couldn't match type ‘n’ with ‘j’
‘n’ is a rigid type variable bound by
the type signature for:
mkRefl :: forall k (n :: k) (j :: k). n :~: j
at ../Bug.hs:13:1-17
‘j’ is a rigid type variable bound by
the type signature for:
mkRefl :: forall k (n :: k) (j :: k). n :~: j
at ../Bug.hs:13:1-17
Expected type: n :~: j
Actual type: n :~: n
• In the expression: Refl
In an equation for ‘mkRefl’: mkRefl = Refl
• Relevant bindings include
mkRefl :: n :~: j (bound at ../Bug.hs:14:1)
|
14 | mkRefl = Refl
| ^^^^
../Bug.hs:20:13: error:
• Couldn't match type ‘S r’ with ‘()’
Expected type: ()
Actual type: S r
• In the expression: no + _
In a case alternative: Refl -> no + _
In the expression: case mkRefl @x @y of { Refl -> no + _ }
• Relevant bindings include
no :: S r (bound at ../Bug.hs:18:7)
right :: S r -> () (bound at ../Bug.hs:18:1)
|
20 | Refl -> no + _
| ^^^^^^
../Bug.hs:20:18: error:
• Found hole: _ :: S r
Where: ‘r’, ‘y’, ‘x’ are rigid type variables bound by
the type signature for:
right :: forall x y (r :: Either x y). S r -> ()
at ../Bug.hs:(16,1)-(17,18)
• In the second argument of ‘(+)’, namely ‘_’
In the expression: no + _
In a case alternative: Refl -> no + _
• Relevant bindings include
no :: S r (bound at ../Bug.hs:18:7)
right :: S r -> () (bound at ../Bug.hs:18:1)
Constraints include y ~ x (from ../Bug.hs:20:5-8)
|
20 | Refl -> no + _
| ^
}}}
Which seems positive, although I'm not sure which commit would have fixed
this.
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/15370#comment:5>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list