[GHC] #10547: feature request: expanding type synonyms in error messages
GHC
ghc-devs at haskell.org
Mon Jun 29 08:39:59 UTC 2015
#10547: feature request: expanding type synonyms in error messages
-------------------------------------+-------------------------------------
Reporter: osa1 | Owner: osa1
Type: feature request | Status: new
Priority: low | Milestone: 7.12.1
Component: Compiler (Type | Version:
checker) | Keywords:
Resolution: | Architecture:
Operating System: Unknown/Multiple | Unknown/Multiple
Type of failure: None/Unknown | Test Case:
Blocked By: | Blocking:
Related Tickets: | Differential Revisions: D1016
-------------------------------------+-------------------------------------
Comment (by simonpj):
Thanks for doing this, but I think we can do better without too much
difficulty.
The trouble here is that
* You will often display types that are identical to the ones originally
reported
{{{
Couldn't match type ‘Int’ with ‘Bool’
Expected type: Int
Actual type: Bool
Type synonyms expanded:
Expected type: Int
Actual type: Bool
}}}
That would not be helpful!
* You will expand synonyms that make it more, not less obscure:
{{{
Couldn't match type ‘Int’ with ‘Bool’
Expected type: T Int
Actual type: T Bool
Type synonyms expanded:
Expected type: big -> blab -> wibble -> Int -> wottle
Actual type: big -> blab -> wibble -> Bool -> wottle
}}}
So, what you really want to do is to walk down the two types together,
expanding synonyms in the one to make it match the other, and vice versa,
until you get to the actual error. A function like
{{{
expandSynonymsToMatch :: Type -> Type -> (Type, Type)
}}}
I suppose you could return a `Maybe` to say if any expansion at all
happened; or you can do a type-equality test afterwards which is perhaps
easier.
Make sense?
Simon
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/10547#comment:2>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list