{"action":"created","issue":{"url":"https://api.github.com/repos/dotnet/roslyn/issues/3849","labels_url":"https://api.github.com/repos/dotnet/roslyn/issues/3849/labels{/name}","comments_url":"https://api.github.com/repos/dotnet/roslyn/issues/3849/comments","events_url":"https://api.github.com/repos/dotnet/roslyn/issues/3849/events","html_url":"https://github.com/dotnet/roslyn/pull/3849","id":93558024,"number":3849,"title":"Local functions update: Use detection, expression trees, inferred multiple returns","user":{"login":"khyperia","id":953151,"avatar_url":"https://avatars.githubusercontent.com/u/953151?v=3","gravatar_id":"","url":"https://api.github.com/users/khyperia","html_url":"https://github.com/khyperia","followers_url":"https://api.github.com/users/khyperia/followers","following_url":"https://api.github.com/users/khyperia/following{/other_user}","gists_url":"https://api.github.com/users/khyperia/gists{/gist_id}","starred_url":"https://api.github.com/users/khyperia/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/khyperia/subscriptions","organizations_url":"https://api.github.com/users/khyperia/orgs","repos_url":"https://api.github.com/users/khyperia/repos","events_url":"https://api.github.com/users/khyperia/events{/privacy}","received_events_url":"https://api.github.com/users/khyperia/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/dotnet/roslyn/labels/cla-already-signed","name":"cla-already-signed","color":"009800"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":2,"created_at":"2015-07-07T15:28:25Z","updated_at":"2015-07-08T17:39:34Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/dotnet/roslyn/pulls/3849","html_url":"https://github.com/dotnet/roslyn/pull/3849","diff_url":"https://github.com/dotnet/roslyn/pull/3849.diff","patch_url":"https://github.com/dotnet/roslyn/pull/3849.patch"},"body":"Things in this PR:\r\n\r\n* The type `BoundBlock` now contains an `ImmutableArray<LocalFunctionSymbol>` alongside its `ImmutableArray<LocalSymbol>`. This generates lots of noise in this PR, as a lot of construction sites had to be updated. Note that this was planned from the start, in the original local functions discussion BoundBlock having a list was mentioned, but I just never got around to adding it (as it was never needed).\r\n* Data flow analysis now reports unused local functions. This is the reason why `BoundBlock` suddenly needs a symbol list only now, this far in.\r\n* References to local functions are now disallowed in expression trees, which may or may not change in the future (Previously they were generated as a reference to a mangled method name, which seemed wrong). Added a new error for this.\r\n* Multiple return statements in an inferred return type local function must all have exactly the same type. This may change later, but for this prototype it's an acceptable restriction. Added a new error for this.\r\n\r\nFYI @jaredpar @VSadov @agocke Theoretically these PRs will get smaller and more frequent compared to the first three, but this one is rather noisy due to the BoundBlock change."},"comment":{"url":"https://api.github.com/repos/dotnet/roslyn/issues/comments/119673348","html_url":"https://github.com/dotnet/roslyn/pull/3849#issuecomment-119673348","issue_url":"https://api.github.com/repos/dotnet/roslyn/issues/3849","id":119673348,"user":{"login":"khyperia","id":953151,"avatar_url":"https://avatars.githubusercontent.com/u/953151?v=3","gravatar_id":"","url":"https://api.github.com/users/khyperia","html_url":"https://github.com/khyperia","followers_url":"https://api.github.com/users/khyperia/followers","following_url":"https://api.github.com/users/khyperia/following{/other_user}","gists_url":"https://api.github.com/users/khyperia/gists{/gist_id}","starred_url":"https://api.github.com/users/khyperia/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/khyperia/subscriptions","organizations_url":"https://api.github.com/users/khyperia/orgs","repos_url":"https://api.github.com/users/khyperia/repos","events_url":"https://api.github.com/users/khyperia/events{/privacy}","received_events_url":"https://api.github.com/users/khyperia/received_events","type":"User","site_admin":false},"created_at":"2015-07-08T17:39:34Z","updated_at":"2015-07-08T17:39:34Z","body":"@dotnet-bot test this please"}}