{"push_id":908964759,"size":13,"distinct_size":0,"ref":"refs/heads/tmp","head":"ef91cdb140d7dffa4b04f42ab0bc02dc257940e3","before":"29ea4eef9fa6e36f40bc1f31eb1e56bf5941ee72","commits":[{"sha":"f3f27a5c6483d9e2bb3c872a3b05291a6e1d9cb3","author":{"email":"a2efa2b758ab72066c3f54752ab11d60ffc4331f@gmail.com","name":"Vadim Petrochenkov"},"message":"Rewrite VisiblePrivateTypesVisitor","distinct":false,"url":"https://api.github.com/repos/rust-lang/rust/commits/f3f27a5c6483d9e2bb3c872a3b05291a6e1d9cb3"},{"sha":"26a2f852beae15235e7d3c4c5751ffe8e9459817","author":{"email":"a2efa2b758ab72066c3f54752ab11d60ffc4331f@gmail.com","name":"Vadim Petrochenkov"},"message":"Fix the fallout","distinct":false,"url":"https://api.github.com/repos/rust-lang/rust/commits/26a2f852beae15235e7d3c4c5751ffe8e9459817"},{"sha":"f8ae31f60123584b3c40521177bb703022faa8c8","author":{"email":"a2efa2b758ab72066c3f54752ab11d60ffc4331f@gmail.com","name":"Vadim Petrochenkov"},"message":"Update error messages and error descriptions","distinct":false,"url":"https://api.github.com/repos/rust-lang/rust/commits/f8ae31f60123584b3c40521177bb703022faa8c8"},{"sha":"a09246ad34ee83b5c8be9af836d7b0aa06d4aabe","author":{"email":"a2efa2b758ab72066c3f54752ab11d60ffc4331f@gmail.com","name":"Vadim Petrochenkov"},"message":"Approximate type aliases as public when determining impl publicity","distinct":false,"url":"https://api.github.com/repos/rust-lang/rust/commits/a09246ad34ee83b5c8be9af836d7b0aa06d4aabe"},{"sha":"73307475f9bc405d3aebd6f3a5240b364746217d","author":{"email":"a2efa2b758ab72066c3f54752ab11d60ffc4331f@gmail.com","name":"Vadim Petrochenkov"},"message":"Prohibit private variant reexports","distinct":false,"url":"https://api.github.com/repos/rust-lang/rust/commits/73307475f9bc405d3aebd6f3a5240b364746217d"},{"sha":"1a9239c964f4589c7f1646a1faf8412eb0c37a0e","author":{"email":"a2efa2b758ab72066c3f54752ab11d60ffc4331f@gmail.com","name":"Vadim Petrochenkov"},"message":"Report errors not caught by the old visitor as warnings","distinct":false,"url":"https://api.github.com/repos/rust-lang/rust/commits/1a9239c964f4589c7f1646a1faf8412eb0c37a0e"},{"sha":"a745614f44d343cf40bd2a623d0b8d522547d570","author":{"email":"a2efa2b758ab72066c3f54752ab11d60ffc4331f@gmail.com","name":"Vadim Petrochenkov"},"message":"Use lint instead of warning","distinct":false,"url":"https://api.github.com/repos/rust-lang/rust/commits/a745614f44d343cf40bd2a623d0b8d522547d570"},{"sha":"fcbd553f0fb12f226df9ba5648a319bc1e8a2af4","author":{"email":"a2efa2b758ab72066c3f54752ab11d60ffc4331f@gmail.com","name":"Vadim Petrochenkov"},"message":"Substitute type aliases before checking for privacy","distinct":false,"url":"https://api.github.com/repos/rust-lang/rust/commits/fcbd553f0fb12f226df9ba5648a319bc1e8a2af4"},{"sha":"187c89a92a530eabec78e6db9d4ceddd1f5ae00b","author":{"email":"a2efa2b758ab72066c3f54752ab11d60ffc4331f@gmail.com","name":"Vadim Petrochenkov"},"message":"Address the comments","distinct":false,"url":"https://api.github.com/repos/rust-lang/rust/commits/187c89a92a530eabec78e6db9d4ceddd1f5ae00b"},{"sha":"8f359d5912de9162534d65fe01fb2f52941e97d0","author":{"email":"a2efa2b758ab72066c3f54752ab11d60ffc4331f@gmail.com","name":"Vadim Petrochenkov"},"message":"Prohibit public glob reexports of private variants","distinct":false,"url":"https://api.github.com/repos/rust-lang/rust/commits/8f359d5912de9162534d65fe01fb2f52941e97d0"},{"sha":"cda7244a2a8f16549a0ed8db49ff721b5f7d78e4","author":{"email":"a2efa2b758ab72066c3f54752ab11d60ffc4331f@gmail.com","name":"Vadim Petrochenkov"},"message":"Add more systematic tests","distinct":false,"url":"https://api.github.com/repos/rust-lang/rust/commits/cda7244a2a8f16549a0ed8db49ff721b5f7d78e4"},{"sha":"785cbe02008985f98fee2a013f2d308207ca596f","author":{"email":"a2efa2b758ab72066c3f54752ab11d60ffc4331f@gmail.com","name":"Vadim Petrochenkov"},"message":"Do not substitute type aliases during error reporting\nType aliases are still substituted when determining impl publicity","distinct":false,"url":"https://api.github.com/repos/rust-lang/rust/commits/785cbe02008985f98fee2a013f2d308207ca596f"},{"sha":"ef91cdb140d7dffa4b04f42ab0bc02dc257940e3","author":{"email":"3a2c29237f73c7cf88424b80e427b1884f346b35@rust-lang.org","name":"bors"},"message":"Auto merge of #29973 - petrochenkov:privinpub, r=nikomatsakis\n\nSome notes:\nThis patch enforces the rules from [RFC 136](https://github.com/rust-lang/rfcs/blob/master/text/0136-no-privates-in-public.md) and makes \"private in public\" a module-level concept and not crate-level. Only `pub` annotations are used by the new algorithm, crate-level exported node set produced by `EmbargoVisitor` is not used. The error messages are tweaked accordingly and don't use the word \"exported\" to avoid confusing people (https://github.com/rust-lang/rust/issues/29668).\n\nThe old algorithm tried to be extra smart with impls, but it mostly led to unpredictable behavior and bugs like https://github.com/rust-lang/rust/issues/28325.\nThe new algorithm tries to be as simple as possible - an impl is considered public iff its type is public and its trait is public (if presents).\nA type or trait is considered public if all its components are public, [complications](https://internals.rust-lang.org/t/limits-of-type-inference-smartness/2919) with private types leaking to other crates/modules through trait impls and type inference are deliberately ignored so far.\n\nThe new algorithm is not recursive and uses the nice new facility `Crate::visit_all_items`!\n\nObsolete pre-1.0 feature `visible_private_types` is removed.\n\nThis is a [breaking-change].\nThe two main vectors of breakage are type aliases (https://github.com/rust-lang/rust/issues/28450) and impls (https://github.com/rust-lang/rust/issues/28325).\nI need some statistics from a crater run (cc @alexcrichton) to decide on the breakage mitigation strategy.\nUPDATE: All the new errors are reported as warnings controlled by a lint `private_in_public` and lint group `future_incompatible`, but the intent is to make them hard errors eventually.\n\nCloses https://github.com/rust-lang/rust/issues/28325\nCloses https://github.com/rust-lang/rust/issues/28450\nCloses https://github.com/rust-lang/rust/issues/29524\nCloses https://github.com/rust-lang/rust/issues/29627\nCloses https://github.com/rust-lang/rust/issues/29668\nCloses https://github.com/rust-lang/rust/issues/30055\n\nr? @nikomatsakis","distinct":false,"url":"https://api.github.com/repos/rust-lang/rust/commits/ef91cdb140d7dffa4b04f42ab0bc02dc257940e3"}]}