{"action":"closed","issue":{"url":"https://api.github.com/repos/dotnet/roslyn/issues/27042","repository_url":"https://api.github.com/repos/dotnet/roslyn","labels_url":"https://api.github.com/repos/dotnet/roslyn/issues/27042/labels{/name}","comments_url":"https://api.github.com/repos/dotnet/roslyn/issues/27042/comments","events_url":"https://api.github.com/repos/dotnet/roslyn/issues/27042/events","html_url":"https://github.com/dotnet/roslyn/issues/27042","id":325116757,"node_id":"MDU6SXNzdWUzMjUxMTY3NTc=","number":27042,"title":"Consolidate diagnostic IDs for predefined types","user":{"login":"sharwell","id":1408396,"node_id":"MDQ6VXNlcjE0MDgzOTY=","avatar_url":"https://avatars1.githubusercontent.com/u/1408396?v=4","gravatar_id":"","url":"https://api.github.com/users/sharwell","html_url":"https://github.com/sharwell","followers_url":"https://api.github.com/users/sharwell/followers","following_url":"https://api.github.com/users/sharwell/following{/other_user}","gists_url":"https://api.github.com/users/sharwell/gists{/gist_id}","starred_url":"https://api.github.com/users/sharwell/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sharwell/subscriptions","organizations_url":"https://api.github.com/users/sharwell/orgs","repos_url":"https://api.github.com/users/sharwell/repos","events_url":"https://api.github.com/users/sharwell/events{/privacy}","received_events_url":"https://api.github.com/users/sharwell/received_events","type":"User","site_admin":false},"labels":[{"id":166377917,"node_id":"MDU6TGFiZWwxNjYzNzc5MTc=","url":"https://api.github.com/repos/dotnet/roslyn/labels/Area-IDE","name":"Area-IDE","color":"5319e7","default":false},{"id":258871715,"node_id":"MDU6TGFiZWwyNTg4NzE3MTU=","url":"https://api.github.com/repos/dotnet/roslyn/labels/Feature%20Specification","name":"Feature Specification","color":"e52727","default":false},{"id":180107608,"node_id":"MDU6TGFiZWwxODAxMDc2MDg=","url":"https://api.github.com/repos/dotnet/roslyn/labels/Resolution-Fixed","name":"Resolution-Fixed","color":"cccccc","default":false}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/dotnet/roslyn/milestones/33","html_url":"https://github.com/dotnet/roslyn/milestone/33","labels_url":"https://api.github.com/repos/dotnet/roslyn/milestones/33/labels","id":3020805,"node_id":"MDk6TWlsZXN0b25lMzAyMDgwNQ==","number":33,"title":"15.8","description":null,"creator":{"login":"sharwell","id":1408396,"node_id":"MDQ6VXNlcjE0MDgzOTY=","avatar_url":"https://avatars1.githubusercontent.com/u/1408396?v=4","gravatar_id":"","url":"https://api.github.com/users/sharwell","html_url":"https://github.com/sharwell","followers_url":"https://api.github.com/users/sharwell/followers","following_url":"https://api.github.com/users/sharwell/following{/other_user}","gists_url":"https://api.github.com/users/sharwell/gists{/gist_id}","starred_url":"https://api.github.com/users/sharwell/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sharwell/subscriptions","organizations_url":"https://api.github.com/users/sharwell/orgs","repos_url":"https://api.github.com/users/sharwell/repos","events_url":"https://api.github.com/users/sharwell/events{/privacy}","received_events_url":"https://api.github.com/users/sharwell/received_events","type":"User","site_admin":false},"open_issues":177,"closed_issues":508,"state":"open","created_at":"2018-01-08T19:35:57Z","updated_at":"2018-06-29T20:44:12Z","due_on":null,"closed_at":null},"comments":3,"created_at":"2018-05-22T02:11:57Z","updated_at":"2018-06-29T20:44:12Z","closed_at":"2018-06-29T20:44:12Z","author_association":"MEMBER","body":"**Version Used**: The proposal is an implementation detail of #26578 which is called to the surface.\r\n\r\n:memo: This change has since been removed from #26578, but is still under consideration as an independent change.\r\n\r\n**Current behavior:**\r\n\r\nCurrently diagnostics related to predefined types have four diagnostic IDs. Suppose a user wishes to use `string` when declaring a variable with this type, but `String` when referring to static members. The following code would produce the two diagnostics:\r\n\r\n```csharp\r\nString value // IDE0012\r\n  = string.Empty; // IDE0015\r\n```\r\n\r\nBased on the configuration selected by the user, only two distinct IDs can appear in any given file (.editorconfig allows different configurations to apply to different source files, so it's possible a project or solution could reveal all four).\r\n\r\n**Proposed behavior:**\r\n\r\nThe proposed behavior would consolidate all four situations to use the same diagnostic ID. This diagnostic ID would be a different ID from the previous ones, and the current IDs would be retired. The configuration functionality would not change *at all*. The benefit of this change is it allows Fix All operations to fix *all* situations related to this configuration in a single pass, rather than requiring users to make up to four passes to fix everything.\r\n\r\n**Breaking change:**\r\n\r\nThis is a breaking change for cases where diagnostics are suppressed. However, this is a relatively low risk change because the impacted analyzers were never shipped as NuGet packages and thus have never had an impact on the actual build outcome."}}
{"actor":{"display_login":"sharwell"}}