GHC: Ticket #4420: T3851 fails because of untouchable type variables and escaping skolems
http://ghc.haskell.org/trac/ghc/ticket/4420
<pre class="wiki">=====> T3851(normal) 1990 of 2612 [0, 7, 0]
cd ./indexed-types/should_compile && '/home/dafis/Haskell/Hacking/testTree/bindisttest/install dir/bin/ghc' -fforce-recomp -dcore-lint -dcmm-lint -dno-debug-output -no-user-package-conf -rtsopts -c T3851.hs >T3851.comp.stderr 2>&1
Wrong exit code (expected 0 , actual 2 )
Stdout:
Stderr:
IndTypesPerfMerge.hs:90:5:
Couldn't match type `a1' with `UnmergedLeft (MergerType a1 b1)'
because a1 is untouchable
inside the constraints (Merger (DiscardRightHead h1 t1 h2 t2),
t1 ~ UnmergedLeft (MergerType t1 t2),
t2 ~ UnmergedRight (MergerType t1 t2),
Mergeable t1 t2,
Merger (MergerType t1 t2))
bound at the instance declaration
In the instance declaration for `Merger
(DiscardRightHead h1 t1 h2 t2)'
IndTypesPerfMerge.hs:90:5:
Couldn't match type `b1' with `UnmergedRight (MergerType a1 b1)'
because b1 is untouchable
inside the constraints (Merger (DiscardRightHead h1 t1 h2 t2),
t1 ~ UnmergedLeft (MergerType t1 t2),
t2 ~ UnmergedRight (MergerType t1 t2),
Mergeable t1 t2,
Merger (MergerType t1 t2))
bound at the instance declaration
In the instance declaration for `Merger
(DiscardRightHead h1 t1 h2 t2)'
IndTypesPerfMerge.hs:98:16:
Couldn't match type `t1' with `UnmergedLeft (MergerType a1 b1)'
`t1' is a rigid type variable bound by
the instance declaration at IndTypesPerfMerge.hs:90:16
In the pattern: h1 :* t1
In an equation for `mkMerge':
mkMerge _ (h1 :* t1) (h2 :* t2)
= h1 :* mkMerge (merger t1 t2) t1 t2
In the instance declaration for `Merger
(DiscardRightHead h1 t1 h2 t2)'
IndTypesPerfMerge.hs:98:27:
Couldn't match type `t2' with `UnmergedRight (MergerType a1 b1)'
`t2' is a rigid type variable bound by
the instance declaration at IndTypesPerfMerge.hs:90:19
In the pattern: h2 :* t2
In an equation for `mkMerge':
mkMerge _ (h1 :* t1) (h2 :* t2)
= h1 :* mkMerge (merger t1 t2) t1 t2
In the instance declaration for `Merger
(DiscardRightHead h1 t1 h2 t2)'
IndTypesPerfMerge.hs:101:5:
Couldn't match type `a'
with `UnmergedLeft (MergerType a (h2 :* t2))'
because these skolem type variables would escape: `h2', `t2'
These skolems are bound by the instance declaration
In the instance declaration for `Merger
(LeftHeadFirst h1 t1 h2 t2)'
IndTypesPerfMerge.hs:109:16:
Couldn't match type `t1'
with `UnmergedLeft (MergerType a (h2 :* t2))'
`t1' is a rigid type variable bound by
the instance declaration at IndTypesPerfMerge.hs:101:16
In the pattern: h1 :* t1
In an equation for `mkMerge':
mkMerge _ (h1 :* t1) (h2 :* t2)
= h1 :* mkMerge (merger t1 (h2 :* t2)) t1 (h2 :* t2)
In the instance declaration for `Merger
(LeftHeadFirst h1 t1 h2 t2)'
IndTypesPerfMerge.hs:112:5:
Couldn't match type `b'
with `UnmergedRight (MergerType (h1 :* t1) b)'
because these skolem type variables would escape: `h1', `t1'
These skolems are bound by the instance declaration
In the instance declaration for `Merger
(RightHeadFirst h1 t1 h2 t2)'
IndTypesPerfMerge.hs:120:27:
Couldn't match type `t2'
with `UnmergedRight (MergerType (h1 :* t1) b)'
`t2' is a rigid type variable bound by
the instance declaration at IndTypesPerfMerge.hs:112:27
In the pattern: h2 :* t2
In an equation for `mkMerge':
mkMerge _ (h1 :* t1) (h2 :* t2)
= h2 :* mkMerge (merger (h1 :* t1) t2) (h1 :* t1) t2
In the instance declaration for `Merger
(RightHeadFirst h1 t1 h2 t2)'
gmake[3]: *** [IndTypesPerf] Fehler 1
*** unexpected failure for IndTypesPerf(normal)
</pre>en-usGHChttp://ghc.haskell.org/trac/ghc/chrome/site/ghc_logo.png
http://ghc.haskell.org/trac/ghc/ticket/4420
Trac 1.2.2.dev0simonpjWed, 20 Oct 2010 06:47:55 GMT
http://ghc.haskell.org/trac/ghc/ticket/4420#comment:1
http://ghc.haskell.org/trac/ghc/ticket/4420#comment:1
<p>
Yes. This is the last remaining testsuite failure relating to the type checker. We're on it.
</p>
TicketsimonpjWed, 20 Oct 2010 14:19:55 GMTstatus changed
http://ghc.haskell.org/trac/ghc/ticket/4420#comment:2
http://ghc.haskell.org/trac/ghc/ticket/4420#comment:2
<ul>
<li><strong>status</strong>
changed from <em>new</em> to <em>merge</em>
</li>
</ul>
<p>
Fixed
</p>
TicketiglooThu, 21 Oct 2010 14:09:41 GMTstatus changed; resolution set
http://ghc.haskell.org/trac/ghc/ticket/4420#comment:3
http://ghc.haskell.org/trac/ghc/ticket/4420#comment:3
<ul>
<li><strong>status</strong>
changed from <em>merge</em> to <em>closed</em>
</li>
<li><strong>resolution</strong>
set to <em>fixed</em>
</li>
</ul>
<p>
I'm assuming the appropriate patch got merged, as I think I've merged all the type-checker patches, and the test is passing in the 7.0 branch.
</p>
Ticket