{"push_id":909348553,"size":4,"distinct_size":0,"ref":"refs/heads/tmp","head":"440ef8b1548edf9d03a5b880d77a8b476cfb7fa2","before":"8ad12c3e251df6b8ed42b4d32709f4f55470a0be","commits":[{"sha":"b8157cc67fa25f2944b24f4306151d53d1b80b56","author":{"email":"7b617481dc67255f8ac089bf33cb7fadcdc5dda1@gmail.com","name":"Eduard Burtescu"},"message":"Implement type ascription.","distinct":false,"url":"https://api.github.com/repos/rust-lang/rust/commits/b8157cc67fa25f2944b24f4306151d53d1b80b56"},{"sha":"e0ceef5a9e9224baf1f108ede1d1033e5e7fef08","author":{"email":"a2efa2b758ab72066c3f54752ab11d60ffc4331f@gmail.com","name":"Vadim Petrochenkov"},"message":"Add ExprType to HIR and make everything compile\n+ Apply parser changes manually\n+ Add feature gate","distinct":false,"url":"https://api.github.com/repos/rust-lang/rust/commits/e0ceef5a9e9224baf1f108ede1d1033e5e7fef08"},{"sha":"95fdaf237575e44ecf16f9fb13ab60058909f281","author":{"email":"a2efa2b758ab72066c3f54752ab11d60ffc4331f@gmail.com","name":"Vadim Petrochenkov"},"message":"Require exact type equality + add tests\n\n+ Rebase fixes","distinct":false,"url":"https://api.github.com/repos/rust-lang/rust/commits/95fdaf237575e44ecf16f9fb13ab60058909f281"},{"sha":"440ef8b1548edf9d03a5b880d77a8b476cfb7fa2","author":{"email":"3a2c29237f73c7cf88424b80e427b1884f346b35@rust-lang.org","name":"bors"},"message":"Auto merge of #30184 - petrochenkov:ascr, r=nikomatsakis\n\nThis PR is a rebase of the original PR by @eddyb https://github.com/rust-lang/rust/pull/21836 with some unrebasable parts manually reapplied, feature gate added + type equality restriction added as described below.\n\nThis implementation is partial because the type equality restriction is applied to all type ascription expressions and not only those in lvalue contexts. Thus, all difficulties with detection of these contexts and translation of coercions having effect in runtime are avoided.\nSo, you can't write things with coercions like `let slice = &[1, 2, 3]: &[u8];`. It obviously makes type ascription less useful than it should be, but it's still much more useful than not having type ascription at all.\nIn particular, things like `let v = something.iter().collect(): Vec<_>;` and `let u = t.into(): U;` work as expected and I'm pretty happy with these improvements alone.\n\nPart of https://github.com/rust-lang/rust/issues/23416","distinct":false,"url":"https://api.github.com/repos/rust-lang/rust/commits/440ef8b1548edf9d03a5b880d77a8b476cfb7fa2"}]}