privacy: no nominal visibility for assoc fns #114099
Merged
bors merged 1 commit intorust-lang:masterfrom Jul 29, 2023
Merged
Conversation
Collaborator
|
r? @fee1-dead (rustbot has picked a reviewer for you, use r? to override) |
Contributor
|
I'd like too look in more detail why the invariant is broken in this scenario, maybe it can affect non-erroneous cases too. |
Contributor
|
Minimized reproduction: #![feature(staged_api)]
pub trait Trait {
fn fun() {}
}
impl Trait for u8 {
pub(self) fn fun() {}
}
fn main() {}
That shouldn't be the case, from what I remember the |
6860108 to
422cae7
Compare
span_bug! -> delay_span_bugWhen `staged_api` is enabled, effective visibilities are computed earlier and this can trigger an ICE in some cases. In particular, if a impl of a trait method has a visibility then an error will be reported for that, but when privacy invariants are being checked, the effective visibility will still be greater than the nominal visbility and that will trigger a `span_bug!`. However, this invariant - that effective visibilites are limited to nominal visibility - doesn't make sense for associated functions. Signed-off-by: David Wood <david@davidtw.co>
422cae7 to
e051a32
Compare
Contributor
|
@bors r+ rollup |
Collaborator
bors
added a commit
to rust-lang-ci/rust
that referenced
this pull request
Jul 28, 2023
…iaskrgr Rollup of 7 pull requests Successful merges: - rust-lang#114099 (privacy: no nominal visibility for assoc fns ) - rust-lang#114128 (When flushing delayed span bugs, write to the ICE dump file even if it doesn't exist) - rust-lang#114138 (Adjust spans correctly for fn -> method suggestion) - rust-lang#114146 (Skip reporting item name when checking RPITIT GAT's associated type bounds hold) - rust-lang#114147 (Insert RPITITs that were shadowed by missing ADTs that resolve to [type error]) - rust-lang#114155 (Replace a lazy `RefCell<Option<T>>` with `OnceCell<T>`) - rust-lang#114164 (Add regression test for `--cap-lints allow` and trait bounds warning) r? `@ghost` `@rustbot` modify labels: rollup
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #113860.
When
staged_apiis enabled, effective visibilities are computed earlier and this can trigger an ICE in some cases.In particular, if a impl of a trait method has a visibility then an error will be reported for that, but when privacy invariants are being checked, the effective visibility will still be greater than the nominal visbility and that will trigger a
span_bug!.However, this invariant - that effective visibilites are limited to nominal visibility - doesn't make sense for associated functions.