Skip to content

Instantly share code, notes, and snippets.

@bgamari
Created January 27, 2017 21:03
Show Gist options
  • Save bgamari/8c5e8a757ecf38c12f015b0f6dc2ef31 to your computer and use it in GitHub Desktop.
Save bgamari/8c5e8a757ecf38c12f015b0f6dc2ef31 to your computer and use it in GitHub Desktop.
[1 of 1] Compiling Hi ( Hi.hs, Hi.o )
Tc2 (src)
Tc3
txExtendKindEnv []
txExtendKindEnv []
kcTyClGroup
module Hi
data S (p_aCn :: forall k_aqE. k_aqE -> Type) = S
txExtendKindEnv [(S, APromotionErr TyConPE)]
env2 []
env2 [(k_aqE, Type variable ‘k_aqE’ = k_aqE[sk:1])]
lk1 k_aqE
u_tys
tclvl 1
k_aCp[tau:1] ~ *
arising from a type equality k_aCp[tau:1] ~ *
u_tys
tclvl 1
* ~ *
arising from a kind equality arising from k_aCp[tau:1] ~ *
u_tys
tclvl 1
'GHC.Types.LiftedRep ~ 'GHC.Types.LiftedRep
arising from a kind equality arising from k_aCp[tau:1] ~ *
u_tys yields no coercion
u_tys yields no coercion
writeMetaTyVar k_aCp[tau:1] := *
u_tys yields no coercion
checkExpectedKind
k_aCp[tau:1]
*
<*>_N
lk1 Type
tcTyVar2b
Type :: *
*
u_tys
tclvl 1
* ~ *
arising from a type equality * ~ *
u_tys
tclvl 1
'GHC.Types.LiftedRep ~ 'GHC.Types.LiftedRep
arising from a type equality * ~ *
u_tys yields no coercion
u_tys yields no coercion
checkExpectedKind
*
*
<*>_N
u_tys
tclvl 1
* ~ *
arising from a type equality * ~ *
u_tys
tclvl 1
'GHC.Types.LiftedRep ~ 'GHC.Types.LiftedRep
arising from a type equality * ~ *
u_tys yields no coercion
u_tys yields no coercion
checkExpectedKind
*
*
<*>_N
tcExplicitTKBndrs
Hs vars: [k_aqE]
tvs: k_aqE[sk:1]
env2 [(p_aCn, Type variable ‘p_aCn’ = p_aCn[sk:1])]
solveEqualities { wanted = WC {}
newTcEvBinds unique = aCq
solveWanteds { WC {}
solveSimpleWanteds { {}
solveSimpleWanteds end }
iterations = 1
residual = WC {}
solveWanteds middle
simples1 = {}
simples2 = {}
solveWanteds }
final wc = WC {}
current evbinds = {}
End solveEqualities }
reportAllUnsolved {
newTcEvBinds unique = aCr
reportAllUnsolved }
kcTyClGroup: initial kinds
S :: (forall k. k_aqE[sk:1] -> *) -> *
(S, APromotionErr RecDataConPE)
txExtendKindEnv [(S, ATcTyCon S), (S, APromotionErr RecDataConPE)]
env2 [(p_aCn, Type variable ‘p_aCn’ = p_aCn[sk:1])]
env2 []
solveEqualities { wanted = WC {}
newTcEvBinds unique = aCs
solveWanteds { WC {}
solveSimpleWanteds { {}
solveSimpleWanteds end }
iterations = 1
residual = WC {}
solveWanteds middle
simples1 = {}
simples2 = {}
solveWanteds }
final wc = WC {}
current evbinds = {}
End solveEqualities }
reportAllUnsolved {
newTcEvBinds unique = aCt
reportAllUnsolved }
quantifyZonkedTyVars
DV {dv_kvs = [] dv_tvs = []}
[]
quantifyTyVars
globals: []
nondep: []
dep: []
dep_kvs' []
nondep_tvs' []
Generalise kind
S
[p_aCn[sk:1]]
[]
[p_aCn[sk:1]]
*
[p_aCn]
*
[p_aCn[sk:1]]
[p_aCn[sk:1]]
kcTyClGroup result S :: (forall k. k -> *) -> *
tcTyAndCl generalized kinds (S, [p_aCn], *)
txExtendKindEnv [(S, ATcTyCon S)]
tcTyAndCl-x data S (p_aCn :: forall k_aqE. k_aqE -> Type) = S
env2 [(p_aCn, Type variable ‘p_aCn’ = p_aCn[sk:1])]
solveEqualities { wanted = WC {}
newTcEvBinds unique = aCv
solveWanteds { WC {}
solveSimpleWanteds { {}
solveSimpleWanteds end }
iterations = 1
residual = WC {}
solveWanteds middle
simples1 = {}
simples2 = {}
solveWanteds }
final wc = WC {}
current evbinds = {}
End solveEqualities }
reportAllUnsolved {
newTcEvBinds unique = aCw
reportAllUnsolved }
tcConDecl 1 S
env2 []
tcConDecl S tvs: []
lookupCF
S
Nothing
[]
tcExplicitTKBndrs
Hs vars: []
tvs:
tcImplicitTKBndrs
[]
[]
solveEqualities { wanted = WC {}
newTcEvBinds unique = aCx
solveWanteds { WC {}
solveSimpleWanteds { {}
solveSimpleWanteds end }
iterations = 1
residual = WC {}
solveWanteds middle
simples1 = {}
simples2 = {}
solveWanteds }
final wc = WC {}
current evbinds = {}
End solveEqualities }
reportAllUnsolved {
newTcEvBinds unique = aCy
reportAllUnsolved }
quantifyZonkedTyVars
DV {dv_kvs = [] dv_tvs = []}
[aCn :-> p_aCn]
quantifyTyVars
globals: [aCn :-> p_aCn]
nondep: []
dep: []
dep_kvs' []
nondep_tvs' []
tcConDecl 2
S
[]
tcConDecl 2 S
tcDataDefn
S
[p_aCn]
[]
Starting synonym cycle check [S]
Done synonym cycle check [S]
Starting family consistency check [S]
Done family consistency [S]
Starting validity check [S]
Starting validity for tycon S
checkValidTyCon
S
Nothing
cvtc1 S
cvtc2 S
checkValidDataCon
S
S
[p_aCn]
S p :: *
S p :: *
checkValidDataCon 2 forall (p :: forall k. k -> *). S p
checkValidType forall (p :: forall k. k -> *). S p :: *
check_type
forall (p :: forall k. k -> *). S p
True
Ambiguity check for forall (p :: forall k. k -> *). S p
tcSubType_NC
the type of the constructor ‘S’
forall (p :: forall k. k -> *). S p
forall (p :: forall k. k -> *). S p
tc_sub_tc_type (general case)
ty_actual = forall (p :: forall k. k -> *). S p
ty_expected = forall (p :: forall k. k -> *). S p
tcSkolemise
tcSkolemise
1
expected_ty forall (p :: forall k. k -> *). S p
inst tyvars [p_aCD[sk:2]]
given []
inst type S p_aCD[sk:2]
tc_sub_type_ds
ty_actual = forall (p :: forall k. k -> *). S p
ty_expected = S p_aCD[sk:2]
Instantiating
all tyvars? True
origin arising from a type equality forall (p :: forall k. k -> *).
S p
~
forall (p :: forall k. k -> *). S p
type forall (p :: forall k. k -> *). S p
theta []
leave_bndrs []
with [p_aCE[tau:2]]
theta: []
tc_sub_type_ds
ty_actual = S p_aCE[tau:2]
ty_expected = S p_aCD[sk:2]
deeply_instantiate final subst
origin: arising from a type equality forall (p :: forall k.
k -> *).
S p
~
forall (p :: forall k. k -> *). S p
type: S p_aCE[tau:2]
new type: S p_aCE[tau:2]
subst: [TCvSubst In scope: InScope {p_aCE} Type env: [] Co env: []]
u_tys
tclvl 2
S p_aCE[tau:2] ~ S p_aCD[sk:2]
arising from a type equality S p_aCE[tau:2] ~ S p_aCD[sk:2]
u_tys
tclvl 2
p_aCE[tau:2] ~ p_aCD[sk:2]
arising from a type equality S p_aCE[tau:2] ~ S p_aCD[sk:2]
u_tys
tclvl 2
forall k. k -> * ~ forall k. k -> *
arising from a kind equality arising from
p_aCE[tau:2] ~ p_aCD[sk:2]
u_tys yields no coercion
writeMetaTyVar p_aCE[tau:2] := p_aCD[sk:2]
u_tys yields no coercion
u_tys yields no coercion
simplifyAmbiguityCheck {
type = forall (p :: forall k. k -> *). S p
wanted = WC {}
newTcEvBinds unique = aCF
solveWanteds { WC {}
solveSimpleWanteds { {}
solveSimpleWanteds end }
iterations = 1
residual = WC {}
solveWanteds middle
simples1 = {}
simples2 = {}
solveWanteds }
final wc = WC {}
current evbinds = {}
End simplifyAmbiguityCheck }
reportUnsolved(ambig) {
newTcEvBinds unique = aCG
reportUnsolved(ambig) }
Done ambiguity check for forall (p :: forall k. k -> *). S p
checkValidType done forall (p :: forall k. k -> *). S p :: *
Done validity of data con S forall (p :: forall k. k -> *). S p
Done validity for tycon S
Done validity check [S]
tcAddImplicits
tycons [S]
implicits [Data constructor ‘S’, Identifier ‘Hi.S’]
txExtendKindEnv []
env2 []
Adding instances:
addFamInsts
tcAddImplicits
tycons []
implicits []
txExtendKindEnv []
env2 []
kcTyClGroup
module Hi
type SSyn = (S :: (forall k_aCo. k_aCo -> Type) -> Type)
txExtendKindEnv [(SSyn, APromotionErr TyConPE)]
env2 []
env2 [(k_aCo, Type variable ‘k_aCo’ = k_aCo[sk:1])]
lk1 k_aCo
u_tys
tclvl 1
k_aCH[tau:1] ~ *
arising from a type equality k_aCH[tau:1] ~ *
u_tys
tclvl 1
* ~ *
arising from a kind equality arising from k_aCH[tau:1] ~ *
u_tys
tclvl 1
'GHC.Types.LiftedRep ~ 'GHC.Types.LiftedRep
arising from a kind equality arising from k_aCH[tau:1] ~ *
u_tys yields no coercion
u_tys yields no coercion
writeMetaTyVar k_aCH[tau:1] := *
u_tys yields no coercion
checkExpectedKind
k_aCH[tau:1]
*
<*>_N
lk1 Type
tcTyVar2b
Type :: *
*
u_tys
tclvl 1
* ~ *
arising from a type equality * ~ *
u_tys
tclvl 1
'GHC.Types.LiftedRep ~ 'GHC.Types.LiftedRep
arising from a type equality * ~ *
u_tys yields no coercion
u_tys yields no coercion
checkExpectedKind
*
*
<*>_N
u_tys
tclvl 1
* ~ *
arising from a type equality * ~ *
u_tys
tclvl 1
'GHC.Types.LiftedRep ~ 'GHC.Types.LiftedRep
arising from a type equality * ~ *
u_tys yields no coercion
u_tys yields no coercion
checkExpectedKind
*
*
<*>_N
tcExplicitTKBndrs
Hs vars: [k_aCo]
tvs: k_aCo[sk:1]
lk1 Type
tcTyVar2b
Type :: *
*
u_tys
tclvl 1
* ~ *
arising from a type equality * ~ *
u_tys
tclvl 1
'GHC.Types.LiftedRep ~ 'GHC.Types.LiftedRep
arising from a type equality * ~ *
u_tys yields no coercion
u_tys yields no coercion
checkExpectedKind
*
*
<*>_N
u_tys
tclvl 1
* ~ *
arising from a type equality * ~ *
u_tys
tclvl 1
'GHC.Types.LiftedRep ~ 'GHC.Types.LiftedRep
arising from a type equality * ~ *
u_tys yields no coercion
u_tys yields no coercion
checkExpectedKind
*
*
<*>_N
solveEqualities { wanted = WC {}
newTcEvBinds unique = aCI
solveWanteds { WC {}
solveSimpleWanteds { {}
solveSimpleWanteds end }
iterations = 1
residual = WC {}
solveWanteds middle
simples1 = {}
simples2 = {}
solveWanteds }
final wc = WC {}
current evbinds = {}
End solveEqualities }
reportAllUnsolved {
newTcEvBinds unique = aCJ
reportAllUnsolved }
kcTyClGroup: initial kinds
SSyn :: (forall k. k_aCo[sk:1] -> *) -> *
txExtendKindEnv [(SSyn, ATcTyCon SSyn)]
env2 []
env2 [(k_aCo, Type variable ‘k_aCo’ = k_aCo[sk:1])]
lk1 k_aCo
u_tys
tclvl 1
k_aCK[tau:1] ~ *
arising from a type equality k_aCK[tau:1] ~ *
u_tys
tclvl 1
* ~ *
arising from a kind equality arising from k_aCK[tau:1] ~ *
u_tys
tclvl 1
'GHC.Types.LiftedRep ~ 'GHC.Types.LiftedRep
arising from a kind equality arising from k_aCK[tau:1] ~ *
u_tys yields no coercion
u_tys yields no coercion
writeMetaTyVar k_aCK[tau:1] := *
u_tys yields no coercion
checkExpectedKind
k_aCK[tau:1]
*
<*>_N
lk1 Type
tcTyVar2b
Type :: *
*
u_tys
tclvl 1
* ~ *
arising from a type equality * ~ *
u_tys
tclvl 1
'GHC.Types.LiftedRep ~ 'GHC.Types.LiftedRep
arising from a type equality * ~ *
u_tys yields no coercion
u_tys yields no coercion
checkExpectedKind
*
*
<*>_N
u_tys
tclvl 1
* ~ *
arising from a type equality * ~ *
u_tys
tclvl 1
'GHC.Types.LiftedRep ~ 'GHC.Types.LiftedRep
arising from a type equality * ~ *
u_tys yields no coercion
u_tys yields no coercion
checkExpectedKind
*
*
<*>_N
tcExplicitTKBndrs
Hs vars: [k_aCo]
tvs: k_aCo[sk:1]
lk1 Type
tcTyVar2b
Type :: *
*
u_tys
tclvl 1
* ~ *
arising from a type equality * ~ *
u_tys
tclvl 1
'GHC.Types.LiftedRep ~ 'GHC.Types.LiftedRep
arising from a type equality * ~ *
u_tys yields no coercion
u_tys yields no coercion
checkExpectedKind
*
*
<*>_N
u_tys
tclvl 1
* ~ *
arising from a type equality * ~ *
u_tys
tclvl 1
'GHC.Types.LiftedRep ~ 'GHC.Types.LiftedRep
arising from a type equality * ~ *
u_tys yields no coercion
u_tys yields no coercion
checkExpectedKind
*
*
<*>_N
lk1 S
tcTyVar2a
S
(forall k. k -> *) -> *
u_tys
tclvl 1
(forall k. k -> *) -> *
~
(forall (k :: k_aCK[tau:1]). k_aCo[sk:1] -> *) -> *
arising from a type equality (forall k. k -> *) -> *
~
(forall (k :: k_aCK[tau:1]). k_aCo[sk:1] -> *) -> *
u_tys
tclvl 1
forall k. k -> * ~ forall (k :: k_aCK[tau:1]). k_aCo[sk:1] -> *
arising from a type equality (forall k. k -> *) -> *
~
(forall (k :: k_aCK[tau:1]). k_aCo[sk:1] -> *) -> *
New coercion hole: aCL
utype_defer
U(hole:{aCL}, forall k. k -> *, forall (k :: k_aCK[tau:1]).
k_aCo[sk:1] -> *)_N
forall k. k -> *
forall (k :: k_aCK[tau:1]). k_aCo[sk:1] -> *
arising from a type equality (forall k. k -> *) -> *
~
(forall (k :: k_aCK[tau:1]). k_aCo[sk:1] -> *) -> *
In the type ‘(S :: (forall k_aCo. k_aCo -> Type) -> Type)’
In the type declaration for ‘SSyn’
u_tys yields coercion:
U(hole:{aCL}, forall k. k -> *, forall (k :: k_aCK[tau:1]).
k_aCo[sk:1] -> *)_N
u_tys
tclvl 1
* ~ *
arising from a type equality (forall k. k -> *) -> *
~
(forall (k :: k_aCK[tau:1]). k_aCo[sk:1] -> *) -> *
u_tys
tclvl 1
'GHC.Types.LiftedRep ~ 'GHC.Types.LiftedRep
arising from a type equality (forall k. k -> *) -> *
~
(forall (k :: k_aCK[tau:1]). k_aCo[sk:1] -> *) -> *
u_tys yields no coercion
u_tys yields no coercion
u_tys yields coercion:
U(hole:{aCL}, forall k. k -> *, forall (k :: k_aCK[tau:1]).
k_aCo[sk:1] -> *)_N
-> <*>_N
checkExpectedKind
(forall k. k -> *) -> *
(forall (k :: k_aCK[tau:1]). k_aCo[sk:1] -> *) -> *
U(hole:{aCL}, forall k. k -> *, forall (k :: k_aCK[tau:1]).
k_aCo[sk:1] -> *)_N
-> <*>_N
u_tys
tclvl 1
(forall (k :: k_aCK[tau:1]). k_aCo[sk:1] -> *) -> *
~
(forall k. k_aCo[sk:1] -> *) -> *
arising from a type equality (forall (k :: k_aCK[tau:1]).
k_aCo[sk:1] -> *)
-> *
~
(forall k. k_aCo[sk:1] -> *) -> *
u_tys
tclvl 1
forall (k :: k_aCK[tau:1]). k_aCo[sk:1] -> *
~
forall k. k_aCo[sk:1] -> *
arising from a type equality (forall (k :: k_aCK[tau:1]).
k_aCo[sk:1] -> *)
-> *
~
(forall k. k_aCo[sk:1] -> *) -> *
New coercion hole: aCM
utype_defer
U(hole:{aCM}, forall (k :: k_aCK[tau:1]).
k_aCo[sk:1] -> *, forall k. k_aCo[sk:1] -> *)_N
forall (k :: k_aCK[tau:1]). k_aCo[sk:1] -> *
forall k. k_aCo[sk:1] -> *
arising from a type equality (forall (k :: k_aCK[tau:1]).
k_aCo[sk:1] -> *)
-> *
~
(forall k. k_aCo[sk:1] -> *) -> *
In the type ‘(S :: (forall k_aCo. k_aCo -> Type) -> Type)’
In the type declaration for ‘SSyn’
u_tys yields coercion:
U(hole:{aCM}, forall (k :: k_aCK[tau:1]).
k_aCo[sk:1] -> *, forall k. k_aCo[sk:1] -> *)_N
u_tys
tclvl 1
* ~ *
arising from a type equality (forall (k :: k_aCK[tau:1]).
k_aCo[sk:1] -> *)
-> *
~
(forall k. k_aCo[sk:1] -> *) -> *
u_tys yields no coercion
u_tys yields coercion:
U(hole:{aCM}, forall (k :: k_aCK[tau:1]).
k_aCo[sk:1] -> *, forall k. k_aCo[sk:1] -> *)_N
-> <*>_N
checkExpectedKind
(forall (k :: k_aCK[tau:1]). k_aCo[sk:1] -> *) -> *
(forall k. k_aCo[sk:1] -> *) -> *
U(hole:{aCM}, forall (k :: k_aCK[tau:1]).
k_aCo[sk:1] -> *, forall k. k_aCo[sk:1] -> *)_N
-> <*>_N
solveEqualities {
wanted = WC {wc_simple =
[WD] hole{aCL} {0}:: ((forall k. k -> *) :: *)
GHC.Prim.~#
((forall (k :: k_aCK[tau:1]).
k_aCo[sk:1] -> *) :: *) (CNonCanonical)
[WD] hole{aCM} {0}:: ((forall (k :: k_aCK[tau:1]).
k_aCo[sk:1] -> *) :: *)
GHC.Prim.~#
((forall k. k_aCo[sk:1] -> *) :: *) (CNonCanonical)}
newTcEvBinds unique = aCN
solveWanteds {
WC {wc_simple =
[WD] hole{aCL} {0}:: ((forall k. k -> *) :: *)
GHC.Prim.~#
((forall (k :: k_aCK[tau:1]).
k_aCo[sk:1] -> *) :: *) (CNonCanonical)
[WD] hole{aCM} {0}:: ((forall (k :: k_aCK[tau:1]).
k_aCo[sk:1] -> *) :: *)
GHC.Prim.~#
((forall k. k_aCo[sk:1] -> *) :: *) (CNonCanonical)}
solveSimpleWanteds {
{[WD] hole{aCL} {0}:: ((forall k. k -> *) :: *)
GHC.Prim.~#
((forall (k :: k_aCK[tau:1]).
k_aCo[sk:1] -> *) :: *) (CNonCanonical),
[WD] hole{aCM} {0}:: ((forall (k :: k_aCK[tau:1]).
k_aCo[sk:1] -> *) :: *)
GHC.Prim.~#
((forall k. k_aCo[sk:1] -> *) :: *) (CNonCanonical)}
-----------------------------
Start solver pipeline {
work item = [WD] hole{aCL} {0}:: ((forall k. k -> *) :: *)
GHC.Prim.~#
((forall (k :: k_aCK[tau:1]).
k_aCo[sk:1] -> *) :: *) (CNonCanonical)
inerts = {Unsolved goals = 0}
rest of worklist = WL {Eqs = [WD] hole{aCM} {0}:: ((forall (k :: k_aCK[tau:1]).
k_aCo[sk:1] -> *) :: *)
GHC.Prim.~#
((forall k.
k_aCo[sk:1] -> *) :: *) (CNonCanonical)}
runStage canonicalization {
workitem = [WD] hole{aCL} {0}:: ((forall k. k -> *) :: *)
GHC.Prim.~#
((forall (k :: k_aCK[tau:1]).
k_aCo[sk:1] -> *) :: *) (CNonCanonical)
canonicalize (non-canonical)
[WD] hole{aCL} {0}:: ((forall k. k -> *) :: *)
GHC.Prim.~#
((forall (k :: k_aCK[tau:1]).
k_aCo[sk:1] -> *) :: *) (CNonCanonical)
canEvNC:eq
forall k. k -> *
forall (k :: k_aCK[tau:1]). k_aCo[sk:1] -> *
can_eq_nc
False
[WD] hole{aCL} {0}:: ((forall k. k -> *) :: *)
GHC.Prim.~#
((forall (k :: k_aCK[tau:1]). k_aCo[sk:1] -> *) :: *)
nominal equality
forall k. k -> *
forall k. k -> *
forall (k :: k_aCK[tau:1]). k_aCo[sk:1] -> *
forall (k :: k_aCK[tau:1]). k_aCo[sk:1] -> *
Creating implication for polytype equality
[WD] hole{aCL} {0}:: ((forall k. k -> *) :: *)
GHC.Prim.~#
((forall (k :: k_aCK[tau:1]). k_aCo[sk:1] -> *) :: *)
New coercion hole: aCP
Emitting new coercion hole
{aCP} :: ((k_aCO[sk:2] -> *) :: *)
GHC.Prim.~#
((k_aCO[sk:2] -> *) :: *)
newTcEvBinds unique = aCQ
Filling coercion hole aCL := <forall k. k_aCO[sk:2] -> *>_N
end stage canonicalization }
Step 1[l:1,d:0] Deferred polytype equality:
[WD] hole{aCL} {0}:: ((forall k. k -> *) :: *)
GHC.Prim.~#
((forall (k :: k_aCK[tau:1]). k_aCo[sk:1] -> *) :: *)
End solver pipeline (discharged) }
-----------------------------
Start solver pipeline {
work item = [WD] hole{aCM} {0}:: ((forall (k :: k_aCK[tau:1]).
k_aCo[sk:1] -> *) :: *)
GHC.Prim.~#
((forall k. k_aCo[sk:1] -> *) :: *) (CNonCanonical)
inerts = {Unsolved goals = 0}
rest of worklist = WL {(Implics omitted)}
runStage canonicalization {
workitem = [WD] hole{aCM} {0}:: ((forall (k :: k_aCK[tau:1]).
k_aCo[sk:1] -> *) :: *)
GHC.Prim.~#
((forall k. k_aCo[sk:1] -> *) :: *) (CNonCanonical)
canonicalize (non-canonical)
[WD] hole{aCM} {0}:: ((forall (k :: k_aCK[tau:1]).
k_aCo[sk:1] -> *) :: *)
GHC.Prim.~#
((forall k. k_aCo[sk:1] -> *) :: *) (CNonCanonical)
canEvNC:eq
forall (k :: k_aCK[tau:1]). k_aCo[sk:1] -> *
forall k. k_aCo[sk:1] -> *
can_eq_nc
False
[WD] hole{aCM} {0}:: ((forall (k :: k_aCK[tau:1]).
k_aCo[sk:1] -> *) :: *)
GHC.Prim.~#
((forall k. k_aCo[sk:1] -> *) :: *)
nominal equality
forall (k :: k_aCK[tau:1]). k_aCo[sk:1] -> *
forall (k :: k_aCK[tau:1]). k_aCo[sk:1] -> *
forall k. k_aCo[sk:1] -> *
forall k. k_aCo[sk:1] -> *
Creating implication for polytype equality
[WD] hole{aCM} {0}:: ((forall (k :: k_aCK[tau:1]).
k_aCo[sk:1] -> *) :: *)
GHC.Prim.~#
((forall k. k_aCo[sk:1] -> *) :: *)
New coercion hole: aCS
Emitting new coercion hole
{aCS} :: ((k_aCR[sk:2] -> *) :: *)
GHC.Prim.~#
((k_aCR[sk:2] -> *) :: *)
newTcEvBinds unique = aCT
Filling coercion hole
aCM := <forall (k :: k_aCK[tau:1]). k_aCR[sk:2] -> *>_N
end stage canonicalization }
Step 2[l:1,d:0] Deferred polytype equality:
[WD] hole{aCM} {0}:: ((forall (k :: k_aCK[tau:1]).
k_aCo[sk:1] -> *) :: *)
GHC.Prim.~#
((forall k. k_aCo[sk:1] -> *) :: *)
End solver pipeline (discharged) }
getUnsolvedInerts
tv eqs = {}
fun eqs = {}
insols = {}
others = {}
implics = {Implic {
TcLevel = 2
Skolems = (k_aCR[sk:2] :: k_aCK[tau:1])
No-eqs = True
Status = Unsolved
Given =
Wanted =
WC {wc_simple =
[WD] hole{aCS} {0}:: ((k_aCR[sk:2] -> *) :: *)
GHC.Prim.~#
((k_aCR[sk:2] -> *) :: *) (CNonCanonical)}
Binds = EvBindsVar<aCT>
Needed = []
the type k_aCR[sk:2] -> * },
Implic {
TcLevel = 2
Skolems = k_aCO[sk:2]
No-eqs = True
Status = Unsolved
Given =
Wanted =
WC {wc_simple =
[WD] hole{aCP} {0}:: ((k_aCO[sk:2] -> *) :: *)
GHC.Prim.~#
((k_aCO[sk:2] -> *) :: *) (CNonCanonical)}
Binds = EvBindsVar<aCQ>
Needed = []
the type k_aCO[sk:2] -> * }}
Unflattening
{Funeqs =
Tv eqs =}
Unflattening 1 {}
Unflattening 2 {}
Unflattening 3 {}
Unflattening done {}
zonkSimples done: {}
solveSimpleWanteds end }
iterations = 1
residual = WC {wc_impl =
Implic {
TcLevel = 2
Skolems = (k_aCR[sk:2] :: k_aCK[tau:1])
No-eqs = True
Status = Unsolved
Given =
Wanted =
WC {wc_simple =
[WD] hole{aCS} {0}:: ((k_aCR[sk:2] -> *) :: *)
GHC.Prim.~#
((k_aCR[sk:2] -> *) :: *) (CNonCanonical)}
Binds = EvBindsVar<aCT>
Needed = []
the type k_aCR[sk:2] -> * }
Implic {
TcLevel = 2
Skolems = k_aCO[sk:2]
No-eqs = True
Status = Unsolved
Given =
Wanted =
WC {wc_simple =
[WD] hole{aCP} {0}:: ((k_aCO[sk:2] -> *) :: *)
GHC.Prim.~#
((k_aCO[sk:2] -> *) :: *) (CNonCanonical)}
Binds = EvBindsVar<aCQ>
Needed = []
the type k_aCO[sk:2] -> * }}
solveNestedImplications starting {
solveImplication {
Implic {
TcLevel = 2
Skolems = (k_aCR[sk:2] :: k_aCK[tau:1])
No-eqs = True
Status = Unsolved
Given =
Wanted =
WC {wc_simple =
[WD] hole{aCS} {0}:: ((k_aCR[sk:2] -> *) :: *)
GHC.Prim.~#
((k_aCR[sk:2] -> *) :: *) (CNonCanonical)}
Binds = EvBindsVar<aCT>
Needed = []
the type k_aCR[sk:2] -> * }
Inerts {Unsolved goals = 0}
solveWanteds {
WC {wc_simple =
[WD] hole{aCS} {0}:: ((k_aCR[sk:2] -> *) :: *)
GHC.Prim.~#
((k_aCR[sk:2] -> *) :: *) (CNonCanonical)}
solveSimpleWanteds {
{[WD] hole{aCS} {0}:: ((k_aCR[sk:2] -> *) :: *)
GHC.Prim.~#
((k_aCR[sk:2] -> *) :: *) (CNonCanonical)}
-----------------------------
Start solver pipeline {
work item = [WD] hole{aCS} {0}:: ((k_aCR[sk:2] -> *) :: *)
GHC.Prim.~#
((k_aCR[sk:2] -> *) :: *) (CNonCanonical)
inerts = {Unsolved goals = 0}
rest of worklist = WL {}
runStage canonicalization {
workitem = [WD] hole{aCS} {0}:: ((k_aCR[sk:2] -> *) :: *)
GHC.Prim.~#
((k_aCR[sk:2] -> *) :: *) (CNonCanonical)
canonicalize (non-canonical)
[WD] hole{aCS} {0}:: ((k_aCR[sk:2] -> *) :: *)
GHC.Prim.~#
((k_aCR[sk:2] -> *) :: *) (CNonCanonical)
canEvNC:eq
k_aCR[sk:2] -> *
k_aCR[sk:2] -> *
ghc-stage1: panic! (the 'impossible' happened)
(GHC version 8.1.20170124 for x86_64-unknown-linux):
repSplitAppTy_maybe
k_aCR[sk:2] :: k_aCK[tau:1]
* :: *
Call stack:
CallStack (from HasCallStack):
prettyCurrentCallStack, called at compiler/utils/Outputable.hs:1166:58 in ghc:Outputable
callStackDoc, called at compiler/utils/Outputable.hs:1170:37 in ghc:Outputable
pprPanic, called at compiler/types/Type.hs:693:5 in ghc:Type
Please report this as a GHC bug: http://www.haskell.org/ghc/reportabug
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE KindSignatures #-}
{-# LANGUAGE TypeInType #-}
module Hi where
import Data.Kind
type SSyn = (S :: (forall k. k -> Type) -> Type)
data S (p :: forall k. k -> Type) = S
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment