{"action":"closed","issue":{"url":"https://api.github.com/repos/Microsoft/visualfsharp/issues/1232","repository_url":"https://api.github.com/repos/Microsoft/visualfsharp","labels_url":"https://api.github.com/repos/Microsoft/visualfsharp/issues/1232/labels{/name}","comments_url":"https://api.github.com/repos/Microsoft/visualfsharp/issues/1232/comments","events_url":"https://api.github.com/repos/Microsoft/visualfsharp/issues/1232/events","html_url":"https://github.com/Microsoft/visualfsharp/issues/1232","id":157835669,"number":1232,"title":"Improve error reporting: No abstract method matching implementation","user":{"login":"isaacabraham","id":1781813,"avatar_url":"https://avatars.githubusercontent.com/u/1781813?v=3","gravatar_id":"","url":"https://api.github.com/users/isaacabraham","html_url":"https://github.com/isaacabraham","followers_url":"https://api.github.com/users/isaacabraham/followers","following_url":"https://api.github.com/users/isaacabraham/following{/other_user}","gists_url":"https://api.github.com/users/isaacabraham/gists{/gist_id}","starred_url":"https://api.github.com/users/isaacabraham/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/isaacabraham/subscriptions","organizations_url":"https://api.github.com/users/isaacabraham/orgs","repos_url":"https://api.github.com/users/isaacabraham/repos","events_url":"https://api.github.com/users/isaacabraham/events{/privacy}","received_events_url":"https://api.github.com/users/isaacabraham/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/Microsoft/visualfsharp/labels/Feature%20Specification","name":"Feature Specification","color":"0e8a16"}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2016-06-01T06:51:13Z","updated_at":"2016-08-13T12:49:26Z","closed_at":"2016-08-13T12:49:26Z","body":"## What\r\nThe following code leads to the resulting error message: -\r\n```fsharp\r\n\r\ntype IInterface =\r\n    abstract MyFunction : int * int -> unit\r\n    abstract SomeOtherFunction : int * int -> unit\r\n\r\nlet x = { new IInterface with member this.MtFunction (i,j) = () }\r\n```\r\n```error FS0767: The member 'MtFunction' does not correspond to any abstract or virtual method available to override or implement```\r\n\r\n## Why\r\nThe error message is correct and clearly explains why the error has occurred. However, it does not provide any further guidance as to how best to fix the warning e.g. - if there is a typo as the above example.\r\n\r\n## How\r\nThe error message should also contain any likely abstract methods that are likely matches for what the user supplied e.g.\r\n\r\n```\r\nerror FS0767: The member 'MtFunction' does not correspond to any abstract or virtual method available to override or implement. Did you mean one of the following?\r\n\r\n   MyFunction\r\n   SomeOtherFunction\r\n```\r\n"}}
{"actor":{"display_login":"isaacabraham"}}