{"action":"opened","issue":{"url":"https://api.github.com/repos/elm-lang/elm-compiler/issues/1144","labels_url":"https://api.github.com/repos/elm-lang/elm-compiler/issues/1144/labels{/name}","comments_url":"https://api.github.com/repos/elm-lang/elm-compiler/issues/1144/comments","events_url":"https://api.github.com/repos/elm-lang/elm-compiler/issues/1144/events","html_url":"https://github.com/elm-lang/elm-compiler/issues/1144","id":114733243,"number":1144,"title":"0.16 incorrect error message when type annotation is too generic","user":{"login":"avh4","id":1222,"avatar_url":"https://avatars.githubusercontent.com/u/1222?v=3","gravatar_id":"","url":"https://api.github.com/users/avh4","html_url":"https://github.com/avh4","followers_url":"https://api.github.com/users/avh4/followers","following_url":"https://api.github.com/users/avh4/following{/other_user}","gists_url":"https://api.github.com/users/avh4/gists{/gist_id}","starred_url":"https://api.github.com/users/avh4/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/avh4/subscriptions","organizations_url":"https://api.github.com/users/avh4/orgs","repos_url":"https://api.github.com/users/avh4/repos","events_url":"https://api.github.com/users/avh4/events{/privacy}","received_events_url":"https://api.github.com/users/avh4/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":0,"created_at":"2015-11-03T02:59:27Z","updated_at":"2015-11-03T02:59:27Z","closed_at":null,"body":"The following\r\n\r\n```elm\r\ntype alias Employee a b =\r\n   ()\r\n\r\n\r\njimJones : Employee {} {}\r\njimJones =\r\n  ()\r\n\r\n\r\nlocateAssociateOfJim : (Employee a b -> c) -> c\r\nlocateAssociateOfJim associateLocator =\r\n  associateLocator jimJones\r\n```\r\n\r\nProduces in incorrect message:\r\n\r\n```\r\n-- TYPE MISMATCH ------------------------------------------------------- tmp.elm\r\n\r\nThe type annotation for `locateAssociateOfJim` does not match its definition.\r\n\r\n29│ locateAssociateOfJim : (Employee a b -> c) -> c\r\n                           ^^^^^^^^^^^^^^^^^^^^^^^^\r\nThe type annotation is saying:\r\n\r\n    (Employee {} {} -> c) -> c\r\n\r\nBut I am inferring that the definition has this type:\r\n\r\n    (Employee {} {} -> c) -> c\r\n\r\nHint: There is some problem with a rigid type variable. It is very likely that a\r\ntype annotation is too generic. One type is saying *many* kinds of value can be\r\ngiven, but the other needs a more specific type.\r\n\r\nDetected errors in 1 module.                                        \r\n```\r\n\r\nIt should say: `The type annotation is saying: (Employee a b -> c) -> c`\r\n"}}