Skip to content

For type error involving inferred types, show source of the type

Consider the code:

module TestTypes where

a = 42

b = a ++ "hello"

The type Error is (ghc-8.2.1):

TestTypes.hs:3:5: error:
    • No instance for (Num [Char]) arising from the literal ‘42’
    • In the expression: 42
      In an equation for ‘a’: a = 42
  |
3 | a = 42
  |     ^^

Actually, the real mistake is in line 5, where a is inferred as of type [Char], while it was not meant to. But that location is not reported to the error. As you can guess, in real code location where the unexpected type is inferred for a binding is not that obvious to find.

Suggestion: track locations where bindings' types are inferred, and in case of type error involvin the bindings, add them to the "Relevant bindings" section, or otherwise show it.

Edited by max630
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information