Skip to content

feature request: warn if OverloadedStrings provides valid semantics

Feature Request

Generate warning if you don’t have OverloadedStrings on, and you provided another type (such as [Char]) where you expected something with an IsString instance.

GHC can look up whether the type in question has an IsString instance, from Data.String, rather than assuming that the programmer should have looked up to see whether there is an instance of IsString for the desired type.

If the type in question does have an IsString instance, it can warn that you need one. If it doesn’t, then it should produce the same error.

Example

When experiencing this error due to use of [Char], it was not immediately clear based on the message that OverloadedStrings was required:

error:
    • Couldn't match expected type 'text-1.2.3.1:Data.Text.Internal.Text'
                  with actual type '[Char]'
    • In the second argument of '(.:)', namely '"name"'
      In the second argument of '(<$>)', namely 'v .: "name"'
      In the first argument of '(<*>)', namely 'SumType <$> v .: "name"'
   |
35 |       <$> v .: "name"
   |                ^^^^^^
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information