{"action":"created","issue":{"url":"https://api.github.com/repos/rust-lang/rfcs/issues/1216","repository_url":"https://api.github.com/repos/rust-lang/rfcs","labels_url":"https://api.github.com/repos/rust-lang/rfcs/issues/1216/labels{/name}","comments_url":"https://api.github.com/repos/rust-lang/rfcs/issues/1216/comments","events_url":"https://api.github.com/repos/rust-lang/rfcs/issues/1216/events","html_url":"https://github.com/rust-lang/rfcs/pull/1216","id":95894379,"number":1216,"title":"Promote `!` to a type.","user":{"login":"canndrew","id":5555066,"avatar_url":"https://avatars.githubusercontent.com/u/5555066?v=3","gravatar_id":"","url":"https://api.github.com/users/canndrew","html_url":"https://github.com/canndrew","followers_url":"https://api.github.com/users/canndrew/followers","following_url":"https://api.github.com/users/canndrew/following{/other_user}","gists_url":"https://api.github.com/users/canndrew/gists{/gist_id}","starred_url":"https://api.github.com/users/canndrew/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/canndrew/subscriptions","organizations_url":"https://api.github.com/users/canndrew/orgs","repos_url":"https://api.github.com/users/canndrew/repos","events_url":"https://api.github.com/users/canndrew/events{/privacy}","received_events_url":"https://api.github.com/users/canndrew/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/rust-lang/rfcs/labels/T-lang","name":"T-lang","color":"bfd4f2"}],"state":"open","locked":false,"assignee":{"login":"nikomatsakis","id":155238,"avatar_url":"https://avatars.githubusercontent.com/u/155238?v=3","gravatar_id":"","url":"https://api.github.com/users/nikomatsakis","html_url":"https://github.com/nikomatsakis","followers_url":"https://api.github.com/users/nikomatsakis/followers","following_url":"https://api.github.com/users/nikomatsakis/following{/other_user}","gists_url":"https://api.github.com/users/nikomatsakis/gists{/gist_id}","starred_url":"https://api.github.com/users/nikomatsakis/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nikomatsakis/subscriptions","organizations_url":"https://api.github.com/users/nikomatsakis/orgs","repos_url":"https://api.github.com/users/nikomatsakis/repos","events_url":"https://api.github.com/users/nikomatsakis/events{/privacy}","received_events_url":"https://api.github.com/users/nikomatsakis/received_events","type":"User","site_admin":false},"assignees":[{"login":"nikomatsakis","id":155238,"avatar_url":"https://avatars.githubusercontent.com/u/155238?v=3","gravatar_id":"","url":"https://api.github.com/users/nikomatsakis","html_url":"https://github.com/nikomatsakis","followers_url":"https://api.github.com/users/nikomatsakis/followers","following_url":"https://api.github.com/users/nikomatsakis/following{/other_user}","gists_url":"https://api.github.com/users/nikomatsakis/gists{/gist_id}","starred_url":"https://api.github.com/users/nikomatsakis/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nikomatsakis/subscriptions","organizations_url":"https://api.github.com/users/nikomatsakis/orgs","repos_url":"https://api.github.com/users/nikomatsakis/repos","events_url":"https://api.github.com/users/nikomatsakis/events{/privacy}","received_events_url":"https://api.github.com/users/nikomatsakis/received_events","type":"User","site_admin":false}],"milestone":null,"comments":202,"created_at":"2015-07-19T07:27:48Z","updated_at":"2016-07-07T05:35:57Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/rust-lang/rfcs/pulls/1216","html_url":"https://github.com/rust-lang/rfcs/pull/1216","diff_url":"https://github.com/rust-lang/rfcs/pull/1216.diff","patch_url":"https://github.com/rust-lang/rfcs/pull/1216.patch"},"body":"Promote `!` to be a full-fledged type equivalent to an `enum` with no variants.\r\n\r\n[Rendered](https://github.com/canndrew/rfcs/blob/bang_type/text/0000-bang-type.md)"},"comment":{"url":"https://api.github.com/repos/rust-lang/rfcs/issues/comments/230983372","html_url":"https://github.com/rust-lang/rfcs/pull/1216#issuecomment-230983372","issue_url":"https://api.github.com/repos/rust-lang/rfcs/issues/1216","id":230983372,"user":{"login":"canndrew","id":5555066,"avatar_url":"https://avatars.githubusercontent.com/u/5555066?v=3","gravatar_id":"","url":"https://api.github.com/users/canndrew","html_url":"https://github.com/canndrew","followers_url":"https://api.github.com/users/canndrew/followers","following_url":"https://api.github.com/users/canndrew/following{/other_user}","gists_url":"https://api.github.com/users/canndrew/gists{/gist_id}","starred_url":"https://api.github.com/users/canndrew/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/canndrew/subscriptions","organizations_url":"https://api.github.com/users/canndrew/orgs","repos_url":"https://api.github.com/users/canndrew/repos","events_url":"https://api.github.com/users/canndrew/events{/privacy}","received_events_url":"https://api.github.com/users/canndrew/received_events","type":"User","site_admin":false},"created_at":"2016-07-07T05:35:57Z","updated_at":"2016-07-07T05:35:57Z","body":"Thanks @brson.\r\n\r\nAll-in-all those are some fairly positive results. There's 28 regressions which breakdown like this:\r\n\r\n* There's an implementation bug where an unused `!` can trigger the `unused_result` lint.\r\n  * nalgebra-0.8.2\r\n  * maidsafe_utilities-0.8.0\r\n  * get_if_addrs-0.4.0\r\n  * multiaddr-0.1.0\r\n  * pabst-0.1.0\r\n  * pos-0.1.1\r\n  * secrets-0.11.1\r\n  * ncollide_utils-0.4.0\r\n  * ncollide_geometry-0.1.1\r\n  * ncollide_transformation-0.4.0\r\n  * ncollide_entities-0.5.0\r\n  * ncollide_pipeline-0.8.1\r\n  * kiss3d-0.5.0\r\n  * nphysics2d-0.4.0\r\n  * nphysics3d-0.4.0\r\n* Changes to `libsyntax` break procedural macros.\r\n  * plugger-macros-0.1.2\r\n  * enum_stream_codegen-0.0.0\r\n  * rustler_codegen-0.8.3\r\n  * panini_macros-0.0.0\r\n  * panini_macros_snapshot-0.0.0\r\n  * plugger-core-0.1.2\r\n  * char-classifier-0.0.0\r\n* The same `nickel` problem as before: The trait bound `!: nickel::Responder<()>` is not satisfied\r\n  * confusion-0.0.1\r\n  * aurelius0.1.8 (although this crate is already warning that it's going to break in the next release)\r\n  * cryptosphere-0.0.0\r\n* The trait bound `!: serde::de::Deserialize` is not satisfied.\r\n  * challonge-0.3.0\r\n\r\nAnd then there's a couple of outliers. It seems like cargo/rustc [hung while building netlib-blas-provider-0.0.8](https://public-artifacts.taskcluster.net/DK9Ze_KJQiuNgLCyNiFmBQ/0/public/logs/live_backing.log). Is this known to happen sometimes? At any rate it's definitely a bug.\r\n\r\nThen there's monkey-0.1.0 which seems to be another genuine regression. It creates a closure of type `Transfer -> !`:\r\n\r\n    (box move |transfer: Transfer| {\r\n        ...\r\n        unreachable!()\r\n    }) ...\r\n\r\nThen casts it to a `FnBox(Transfer)`\r\n\r\n    ... as Box<FnBox(Transfer)>\r\n\r\nBefore the closure would have been typed `Transfer -> ()` but now it's (correctly) typed as `Transfer -> !` so the cast doesn't compile. I suppose if inference were clever enough it could force the closure to have the expected return type, but right now it's not."}}
{"actor":{"display_login":"canndrew"}}