[GHC] #16401: Bad error message if we use TypeApplications with an identifier that doesn't exist

#16401: Bad error message if we use TypeApplications with an identifier that doesn't exist -------------------------------------+------------------------------------- Reporter: Fuuzetsu | Owner: (none) Type: bug | Status: new Priority: normal | Milestone: Component: Compiler | Version: 8.6.3 Keywords: | Operating System: Unknown/Multiple Architecture: | Type of failure: None/Unknown Unknown/Multiple | Test Case: | Blocked By: Blocking: | Related Tickets: Differential Rev(s): | Wiki Page: -------------------------------------+------------------------------------- {{{#!hs {-# 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. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/16401 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler

#16401: Bad error message if we use TypeApplications with an identifier that doesn't exist -------------------------------------+------------------------------------- Reporter: Fuuzetsu | Owner: (none) Type: bug | Status: closed Priority: normal | Milestone: Component: Compiler | Version: 8.6.3 Resolution: duplicate | Keywords: Operating System: Unknown/Multiple | Architecture: | Unknown/Multiple Type of failure: None/Unknown | Test Case: Blocked By: | Blocking: Related Tickets: #13834 | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Changes (by RyanGlScott): * status: new => closed * resolution: => duplicate * related: => #13834 Comment: Thanks for the bug report. This is "fixed" in GHC 8.8 in the sense that it will at least report that `doesNotExist` is not in scope: {{{ [1 of 1] Compiling BadError ( Bug.hs, interpreted ) Bug.hs:6:7: error: Variable not in scope: doesNotExist | 6 | foo = doesNotExist @123 | ^^^^^^^^^^^^ Bug.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 | ^^^^^^^^^^^^^^^^^ }}} Of course, there's still the confusing "Cannot apply expression" part. That has previously been reported as #13834, so to avoid ticket duplication, I'll close this ticket in favor of that one. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/16401#comment:1 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler
participants (1)
-
GHC