payload: {"action":"opened","issue":{"url":"https://api.github.com/repos/dotnet/roslyn/issues/39749","repository_url":"https://api.github.com/repos/dotnet/roslyn","labels_url":"https://api.github.com/repos/dotnet/roslyn/issues/39749/labels{/name}","comments_url":"https://api.github.com/repos/dotnet/roslyn/issues/39749/comments","events_url":"https://api.github.com/repos/dotnet/roslyn/issues/39749/events","html_url":"https://github.com/dotnet/roslyn/issues/39749","id":520478660,"node_id":"MDU6SXNzdWU1MjA0Nzg2NjA=","number":39749,"title":"Inconsistent CS8602 if the return value of a method is stored in a variable","user":{"login":"Foxite","id":20421657,"node_id":"MDQ6VXNlcjIwNDIxNjU3","avatar_url":"https://avatars0.githubusercontent.com/u/20421657?v=4","gravatar_id":"","url":"https://api.github.com/users/Foxite","html_url":"https://github.com/Foxite","followers_url":"https://api.github.com/users/Foxite/followers","following_url":"https://api.github.com/users/Foxite/following{/other_user}","gists_url":"https://api.github.com/users/Foxite/gists{/gist_id}","starred_url":"https://api.github.com/users/Foxite/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Foxite/subscriptions","organizations_url":"https://api.github.com/users/Foxite/orgs","repos_url":"https://api.github.com/users/Foxite/repos","events_url":"https://api.github.com/users/Foxite/events{/privacy}","received_events_url":"https://api.github.com/users/Foxite/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2019-11-09T16:54:32Z","updated_at":"2019-11-09T16:54:32Z","closed_at":null,"author_association":"NONE","body":"**Version Used**: 3.3.1-beta3-19461-02 (2fd12c21)\r\n\r\n**Steps to Reproduce**:\r\n\r\n```csharp\r\n#nullable enable\r\npublic class TestClass {\r\n\tprivate bool TryGetValue([NotNullWhen(true)] out string? value) {\r\n\t\tvalue = \"Bla\";\r\n\t\treturn true;\r\n\t}\r\n\r\n\tpublic void DoStuff1() {\r\n\t\tbool success = TryGetValue(out string? result);\r\n\t\tif (success) {\r\n\t\t\tConsole.WriteLine(result.Length);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic void DoStuff2() {\r\n\t\tif (TryGetValue(out string? result)) {\r\n\t\t\tConsole.WriteLine(result.Length);\r\n\t\t}\r\n\t}\r\n}\r\n```\r\n\r\n**Expected Behavior**: `DoStuff1` and `DoStuff2` do not generate different warnings (better yet, neither generates a warning)\r\n\r\n**Actual Behavior**: A CS8602 warning is generated in `DoStuff1`, saying `result` may be null inside the if statement, which is incorrect. `DoStuff2` does not have such a warning."}}
other: {"actor":{"display_login":"Foxite"}}