Bad error message if we use TypeApplications with an identifier that doesn't exist
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE DataKinds #-}
module BadError where
foo :: Int
foo = doesNotExist @123
{-
[1 of 1] Compiling BadError ( BadError.hs, BadError.o )
BadError.hs:6:7: error:
• Cannot apply expression of type ‘t1’
to a visible type argument ‘123’
• In the expression: doesNotExist @123
In an equation for ‘foo’: foo = doesNotExist @123
|
6 | foo = doesNotExist @123
-}
What I would expect is for it to say that doesNotExist
is not bound as one might reasonably expect. This is very, very confusing and easy to hit in real life. If you are exposing a function f
, using it somewhere with f @123
but then later decide to remove or rename f
, the error message doesn't suggest at all that f
has disappeared and leaves the user scratching their head.
Trac metadata
Trac field | Value |
---|---|
Version | 8.6.3 |
Type | Bug |
TypeOfFailure | OtherFailure |
Priority | normal |
Resolution | Unresolved |
Component | Compiler |
Test case | |
Differential revisions | |
BlockedBy | |
Related | |
Blocking | |
CC | |
Operating system | |
Architecture |