Skip to content

nightly-2024-09-03: feat: use visibility (#5856)

Pre-release
Pre-release
Compare
Choose a tag to compare
@github-actions github-actions released this 03 Sep 12:11
· 198 commits to master since this release
e349f30
# Description

## Problem

Part of #4515

## Summary

We recently added a warning for unused imports... but only for bin and
contract packages. We didn't enable it for lib packages because a `use`
could also be used as `pub use`, something we don't have yet. I thought
it would be really nice if we had `pub use`, and warned on unused
imports in libs too. I checked the code and we already track visibility
for any item, in general, it's just that for things that don't allow a
visibility modifier we just consider it's public. So I tried to see how
difficult it would be to implement it, and it turned out it wasn't that
hard or time-consuming.

That said, visibility for `use` involves some more logic, particularly
for autocompletion, because now `pub use` should be suggested, but the
"parent" module of that item isn't the actual parent (it's the module
where the `pub use` is defined) but that was relatively striaght-forward
to implement too.

## Additional Context

If we decide to go forward with this, any existing `use` that was used
as `pub use` will likely start producing a warning for libs (a lot of
them in Aztec-Packages), but now that can be silenced by changing them
to `pub use`.

Where should this new feature be documented? I'm not sure if it should
go in `dependencies.md` or `modules.md`.

## Documentation\*

Check one:
- [ ] No documentation needed.
- [x] Documentation included in this PR.
- [ ] **[For Experimental Features]** Documentation to be submitted in a
separate PR.

# PR Checklist

- [x] I have tested the changes locally.
- [x] I have formatted the changes with [Prettier](https://prettier.io/)
and/or `cargo fmt` on default settings.

---------

Co-authored-by: Tom French <[email protected]>