-
Notifications
You must be signed in to change notification settings - Fork 13.2k
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
Stabilize pub(restricted) #40556
Stabilize pub(restricted) #40556
Conversation
(rust_highfive has picked a reviewer for you, use r? to override) |
Shouldn't we first just stabilize |
@retep998 That seems reasonable to me. |
862e42b
to
376739f
Compare
@retep998 I'll have a new commit up in a minute with that change. |
src/librustc_privacy/lib.rs
Outdated
format!("private type `{}` in public \ | ||
interface (error E0446)", ty)); | ||
} | ||
let mut err = struct_span_err!(self.tcx.sess, self.span, E0446, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
private_in_public
can't be turned into an error in the near future unfortunately.
self.tcx.sess.features.borrow().pub_restricted
can be well approximated with is_pub_restricted(vis) && is_pub_restricted(self.required_visibility)
where is_pub_restricted = not pub && not private
.
The idea is to always report an error and not warning when pub(something)
is involved.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What do you mean by not private
? Visibility
is either Public
, Restricted(DefId)
, or Invisible
(reserved for private external items).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You can use hir::Visibility
for this (as opposed to ty::Visibility
).
For vis
HIR visibility is immediately available (item.vis
) , for self.required_visibility
you can pass it from PrivateItemsInPublicInterfacesVisitor::visit_item
to here somehow.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Even for hir::Visibility
, I still only see Public
, Crate
, Restricted {...}
, and Inherited
, no Private
. Am I missing something obvious?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Inherited
is private (i.e. no any explicit pub
)
376739f
to
7447348
Compare
Beta nominating since I think @aturon was interested in landing this in 1.17. |
7447348
to
28626ca
Compare
I'm not inclined to backport a stabilization -- or at least not this one. |
@bors r+ |
📌 Commit 28626ca has been approved by |
Note: doc pr is here: rust-lang/reference#12 |
Right now this PR turns all private-in-public errors for @bors r- |
Hmm. I see. OK, that probably makes sense. |
I disagree with this stabilization. This is a poor implementation of |
Removing beta-nominated. Seems like there is no need to backport a stabilization, no great urgency. |
Okay, I remove my disagreement, actually (sorry). I read more of the reasoning behind the need for |
@cramertj |
@petrochenkov I was just finishing up piping Just to make sure I understood you: the process is to add a new visitor which runs in |
Exactly. |
r? @petrochenkov -- since you have something specific in mind =) |
@bors r+ |
📌 Commit 60c1c96 has been approved by |
…r=petrochenkov Stabilize pub(restricted) Fix rust-lang#32409
support pub(restricted) in thread_local! (round 2) Resurrected #40984 now that the issue blocking it was fixed. Original description: `pub(restricted)` was stabilized in #40556 so let's go! Here is a [playground](https://play.rust-lang.org/?gist=f55f32f164a6ed18c219fec8f8293b98&version=nightly&backtrace=1). I changed the interface of `__thread_local_inner!`, which is supposedly unstable but this is not checked for macros (#34097 cc @petrochenkov @jseyfried), so this may be an issue.
Fix #32409