| Age | Commit message (Collapse) | Author | Lines |
|
Lower them into a single item with multiple resolutions instead.
This also allows to remove additional `NodId`s and `DefId`s related to those additional items.
|
|
It becomes relatively expensive if done often and shows up during perf profiling.
|
|
Previously if the parent was not in the table, and there was nothing to inherit from, the child's private visibility was used, but that's not correct - the parent may have a larger visibility so we should set it to at least the parent's private visibility.
That parent's private visibility is also inserted into the table for caching, so it's not recalculated later if used again.
|
|
Optimizations removed in the previous commit required this function to behave incorrectly, but now those optimizations are gone so we can fix the bug.
Fixes https://github.com/rust-lang/rust/issues/104249
|
|
First, they require eagerly calculating private visibility (current normal module), which is somewhat expensive.
Private visibilities are also lost once calculated, instead of being cached in the table.
Second, I cannot prove that the optimizations are correct.
Maybe they can be partially reinstated in the future in cases when it's cheap and provably correct to do them.
They will also probably be merged into `fn update` in that case.
Partially fixes https://github.com/rust-lang/rust/issues/104249
Fixes https://github.com/rust-lang/rust/issues/104539
|
|
closure
|
|
Signed-off-by: cui fliter <imcusg@gmail.com>
|
|
This should result in less update calls than doing it repeatedly during the fix point iteration.
|
|
Also drop `extern` blocks from the effective visibility table, they are nominally private and it doesn't make sense to keep them there.
|
|
|
|
|
|
And a couple of other naming tweaks
Related to https://github.com/rust-lang/rust/issues/48054
|