Hello, I'm writing a type-checker plugin for ghc, and I'm stuck on two 
problems. I can't understand how does TcPluginContradiction work. My problem 
is, when I do TcPluginContradiction listOfFailedConstraints and run the plugin 
on something which should fail, compiler output contains strange errors for 
places which doesn't produce any errors when the rest type checks. And it can 
be seen from debug that listOfFailedConstraints does contain only the 
constraints that are expected to fail. 
For example my plugin should type check Set '[Int]) ~ Set '[Int, Int], and 
should not Set '[Int, Bool, Int] ~ Set '[Int]. And everything is great when I 
run it on the first case, but if I run it on the both first and second, the 
compiler output will contain «Couldn't match type ‘Set '[Int]’ with ‘Set '[Int, 
Int]’» and «Couldn't match type ‘Set '[Int, Bool, Int]’ with ‘Set '[Int]’».
My ghc version is 8.2.2.
Also how does ghc converts Type from 
https://hackage.haskell.org/package/ghc-8.2.1/docs/src/TyCoRep.html#Type 
<https://hackage.haskell.org/package/ghc-8.2.1/docs/src/TyCoRep.html#Type> to 
Typeable/TypeRep from 
https://hackage.haskell.org/package/base-4.10.1.0/docs/src/Data.Typeable.Internal.html#TypeRep
 
<https://hackage.haskell.org/package/base-4.10.1.0/docs/src/Data.Typeable.Internal.html#TypeRep>?
 I’d like to use a function (if there exists one) that takes Type and returns 
its fingerprint 
(https://hackage.haskell.org/package/base-4.10.1.0/docs/src/GHC.Fingerprint.Type.html#Fingerprint
 
<https://hackage.haskell.org/package/base-4.10.1.0/docs/src/GHC.Fingerprint.Type.html#Fingerprint>).
 

Thank you for your time,
Alice.
_______________________________________________
ghc-devs mailing list
ghc-devs@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs

Reply via email to