[GHC] #11136: Associated type family: panic due to mismatch in arity of default instances
GHC
ghc-devs at haskell.org
Thu Nov 26 16:26:42 UTC 2015
#11136: Associated type family: panic due to mismatch in arity of default instances
-------------------------------------+-------------------------------------
Reporter: airini | Owner:
Type: bug | Status: new
Priority: normal | Milestone:
Component: Compiler | Version: 7.10.2
(Type checker) |
Keywords: | Operating System: Unknown/Multiple
Architecture: | Type of failure: Compile-time
Unknown/Multiple | crash
Test Case: | Blocked By:
Blocking: | Related Tickets:
Differential Rev(s): | Wiki Page:
-------------------------------------+-------------------------------------
Having extra type parameters in the definition of default instances for an
associated type family causes a ghc panic error (should be detected as a
not valid instance). Smallest case example:
{{{#!hs
class C a where
type D a
type instance D a x = x
}}}
It produces the error:
{{{
[1 of 1] Compiling Main ( SplitKindFun.hs, interpreted )
ghc: panic! (the 'impossible' happened)
(GHC version 7.10.2 for x86_64-apple-darwin):
splitKindFunTysN 1 *
Please report this as a GHC bug: http://www.haskell.org/ghc/reportabug
}}}
Crashes similarly for additional parameters in the default instance:
{{{#!hs
class C a where
type D a
type instance D a x y = x
}}}
{{{
[1 of 1] Compiling Main ( SplitKindFun.hs, interpreted )
ghc: panic! (the 'impossible' happened)
(GHC version 7.10.2 for x86_64-apple-darwin):
splitKindFunTysN 2 *
Please report this as a GHC bug: http://www.haskell.org/ghc/reportabug
}}}
Presumably the arity is not compared correctly to that of the family
declaration when the kind is default `*` since the following (and
equivalent) causes the panic crash:
{{{#!hs
class C a where
type D a :: *
type instance D a x = x
}}}
but increasing the arity of the family's kind
{{{#!hs
class C a where
type D a :: * -> *
type instance D a x = x
}}}
raises the appropriate error:
{{{
[1 of 1] Compiling Main ( SplitKindFun.hs, interpreted )
SplitKindFun.hs:6:3:
Number of parameters must match family declaration; expected 1
In the default type instance declaration for ‘D’
In the class declaration for ‘C’
Failed, modules loaded: none.
}}}
Longer verbose compiler output of the original error:
{{{
$ ghc -v SplitKindFun.hs
Glasgow Haskell Compiler, Version 7.10.2, stage 2 booted by GHC version
7.10.1.20150612
Using binary package database:
/Library/Frameworks/GHC.framework/Versions/7.10.2-x86_64/usr/lib/ghc-7.10.2/package.conf.d/package.cache
Using binary package database:
/Users/uu/.ghc/x86_64-darwin-7.10.2/package.conf.d/package.cache
wired-in package ghc-prim mapped to ghc-
prim-0.4.0.0-af16264bc80979d06e37ac63e3ba9a21
wired-in package integer-gmp mapped to integer-
gmp-1.0.0.0-8e0f14d0262184533b417ca1f8b44482
wired-in package base mapped to
base-4.8.1.0-075aa0db10075facc5aaa59a7991ca2f
wired-in package rts mapped to builtin_rts
wired-in package template-haskell mapped to template-
haskell-2.10.0.0-161ca39a5ae657ff216d049e722e60ea
wired-in package ghc mapped to ghc-7.10.2-5c2381785a7b22838c6eda985bc898cf
wired-in package dph-seq not found.
wired-in package dph-par not found.
Hsc static flags:
wired-in package ghc-prim mapped to ghc-
prim-0.4.0.0-af16264bc80979d06e37ac63e3ba9a21
wired-in package integer-gmp mapped to integer-
gmp-1.0.0.0-8e0f14d0262184533b417ca1f8b44482
wired-in package base mapped to
base-4.8.1.0-075aa0db10075facc5aaa59a7991ca2f
wired-in package rts mapped to builtin_rts
wired-in package template-haskell mapped to template-
haskell-2.10.0.0-161ca39a5ae657ff216d049e722e60ea
wired-in package ghc mapped to ghc-7.10.2-5c2381785a7b22838c6eda985bc898cf
wired-in package dph-seq not found.
wired-in package dph-par not found.
*** Chasing dependencies:
Chasing modules from: *SplitKindFun.hs
Stable obj: []
Stable BCO: []
Ready for upsweep
[NONREC
ModSummary {
ms_hs_date = 2015-11-26 15:20:15 UTC
ms_mod = Main,
ms_textual_imps = [import (implicit) Prelude]
ms_srcimps = []
}]
*** Deleting temp files:
Deleting:
compile: input file SplitKindFun.hs
Created temporary directory:
/var/folders/m3/cx6_zbks6qq2xtwx92njp8w40000gn/T/ghc755_0
*** Checking old interface for Main:
[1 of 1] Compiling Main ( SplitKindFun.hs, SplitKindFun.o )
*** Parser:
*** Renamer/typechecker:
*** Deleting temp files:
Deleting:
/var/folders/m3/cx6_zbks6qq2xtwx92njp8w40000gn/T/ghc755_0/ghc_1.s
Warning: deleting non-existent
/var/folders/m3/cx6_zbks6qq2xtwx92njp8w40000gn/T/ghc755_0/ghc_1.s
*** Deleting temp dirs:
Deleting: /var/folders/m3/cx6_zbks6qq2xtwx92njp8w40000gn/T/ghc755_0
ghc: panic! (the 'impossible' happened)
(GHC version 7.10.2 for x86_64-apple-darwin):
splitKindFunTysN 1 *
Please report this as a GHC bug: http://www.haskell.org/ghc/reportabug
}}}
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/11136>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list