{"action":"created","issue":{"url":"https://api.github.com/repos/dotnet/roslyn/issues/31243","repository_url":"https://api.github.com/repos/dotnet/roslyn","labels_url":"https://api.github.com/repos/dotnet/roslyn/issues/31243/labels{/name}","comments_url":"https://api.github.com/repos/dotnet/roslyn/issues/31243/comments","events_url":"https://api.github.com/repos/dotnet/roslyn/issues/31243/events","html_url":"https://github.com/dotnet/roslyn/issues/31243","id":382007799,"node_id":"MDU6SXNzdWUzODIwMDc3OTk=","number":31243,"title":"Remove special casing code for F# in diagnostics infrastructure.","user":{"login":"CyrusNajmabadi","id":4564579,"node_id":"MDQ6VXNlcjQ1NjQ1Nzk=","avatar_url":"https://avatars3.githubusercontent.com/u/4564579?v=4","gravatar_id":"","url":"https://api.github.com/users/CyrusNajmabadi","html_url":"https://github.com/CyrusNajmabadi","followers_url":"https://api.github.com/users/CyrusNajmabadi/followers","following_url":"https://api.github.com/users/CyrusNajmabadi/following{/other_user}","gists_url":"https://api.github.com/users/CyrusNajmabadi/gists{/gist_id}","starred_url":"https://api.github.com/users/CyrusNajmabadi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/CyrusNajmabadi/subscriptions","organizations_url":"https://api.github.com/users/CyrusNajmabadi/orgs","repos_url":"https://api.github.com/users/CyrusNajmabadi/repos","events_url":"https://api.github.com/users/CyrusNajmabadi/events{/privacy}","received_events_url":"https://api.github.com/users/CyrusNajmabadi/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":20,"created_at":"2018-11-18T22:31:22Z","updated_at":"2018-11-18T23:09:55Z","closed_at":null,"author_association":"CONTRIBUTOR","body":"@heejaechang asked me to open this. \r\n\r\nhttps://github.com/dotnet/roslyn/pull/31134 Seems to be introducing an inappropriate mechanism to support standalone files.  As mentioned in the PR, core parts of the customer-as are not supported.  For example: https://github.com/dotnet/roslyn/pull/31134#issuecomment-439731301\r\n\r\nInstead, this acts as a half measure, making it appear as if a file works properly, but actually does not.  This is because the approach works to try to make the misc-workspace work somewhat like a real workspace.  A more appropriate fix is to just have F# team create a real Project that is added to the normal Roslyn workspace.  With this approach, every single feature works properly as the real workspace is how everything is built today.  For example, diagnostics would work properly for all scenarios, not just the single-file case.\r\n\r\nNote: this is the approach we've taken for C#, VB, TypeScript, JavaScript and I believe Razor/Xaml.  This is the most well tested system, and it has been tested extensively to ensure appropriate behavior across any language that wants to plug in.  The misc-workspace exists simply as a historical fallback.  It is not feature-rich, and it is not very well tested.  It also increases the burden for maintenance as any partner request to work in that means duplicating logic and testing already available in the normal workspace.  For example, if F# wants analyzer behavior similar to the normal workspace, that will have then be made to work on top of the existing PR that is trying to go in.\r\n\r\nIt is especially telling that there is no test coverage at all for these new codepaths, and nothing that verifies taht it actually works properly.  This is the problem of creating one-off solutions for use cases already handled by the normal system.  Not only is there the burden of the extra code to maintain for a single customer, but there is also the need to have to write a whole set of tests to validate that things work properly.  At least when using the existing infrastructure, testing is at least covered just by having our normal languages all sharing the same codepaths.\r\n\r\nThis was an approach we looked at for TypeScript and rejected because it simply would lead to so much extra unnecessary code in Roslyn (including having to have a much larger test burden that Roslyn clearly would not want to have to support).  Instead, we went the approach of ensuring that TS followed the normal Roslyn workspace model, ensuring that all the same code was runnign for all the languages, instead of having two separate systems working together that need to be kept in sync.\r\n\r\n"},"comment":{"url":"https://api.github.com/repos/dotnet/roslyn/issues/comments/439734646","html_url":"https://github.com/dotnet/roslyn/issues/31243#issuecomment-439734646","issue_url":"https://api.github.com/repos/dotnet/roslyn/issues/31243","id":439734646,"node_id":"MDEyOklzc3VlQ29tbWVudDQzOTczNDY0Ng==","user":{"login":"CyrusNajmabadi","id":4564579,"node_id":"MDQ6VXNlcjQ1NjQ1Nzk=","avatar_url":"https://avatars3.githubusercontent.com/u/4564579?v=4","gravatar_id":"","url":"https://api.github.com/users/CyrusNajmabadi","html_url":"https://github.com/CyrusNajmabadi","followers_url":"https://api.github.com/users/CyrusNajmabadi/followers","following_url":"https://api.github.com/users/CyrusNajmabadi/following{/other_user}","gists_url":"https://api.github.com/users/CyrusNajmabadi/gists{/gist_id}","starred_url":"https://api.github.com/users/CyrusNajmabadi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/CyrusNajmabadi/subscriptions","organizations_url":"https://api.github.com/users/CyrusNajmabadi/orgs","repos_url":"https://api.github.com/users/CyrusNajmabadi/repos","events_url":"https://api.github.com/users/CyrusNajmabadi/events{/privacy}","received_events_url":"https://api.github.com/users/CyrusNajmabadi/received_events","type":"User","site_admin":false},"created_at":"2018-11-18T23:09:55Z","updated_at":"2018-11-18T23:09:55Z","author_association":"CONTRIBUTOR","body":"> oh my got. you just keep changing my wording.\r\n\r\nI have not changed any of your words.  I have quoted you directly each time.  "}}
{"actor":{"display_login":"CyrusNajmabadi"}}