Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support "pub" for structs and traits #4775

Closed
Tracked by #4515
michaeljklein opened this issue Apr 10, 2024 · 0 comments · Fixed by #6056
Closed
Tracked by #4515

Support "pub" for structs and traits #4775

michaeljklein opened this issue Apr 10, 2024 · 0 comments · Fixed by #6056
Labels
enhancement New feature or request

Comments

@michaeljklein
Copy link
Contributor

Problem

Compiling the following snippet fails with a parsing error:

pub struct Foo {}
error: Unexpected struct, expected one of fn, open
  ┌─ /Users/michaelklein/Coding/noir/name_shadowing_template/library2/src/lib.nr:7:57pub struct Foo {}
  │     ------
  │

Likewise, compiling a similar snippet for traits fails with the same error:

pub trait Foo { ..
error: Unexpected trait, expected one of fn, open
   ┌─ /Users/michaelklein/Coding/noir/name_shadowing_template/library2/src/lib.nr:15:5
   │
15 │ pub trait Foo {
   │     -----
   │

Happy Case

Either support pub for struct's or fail with a more informative error message, e.g. the 'pub' keyword is only supported for functions at this time.

Project Impact

Nice-to-have

Impact Context

No response

Workaround

None

Workaround Description

No response

Additional Context

No response

Would you like to submit a PR for this Issue?

None

Support Needs

No response

@michaeljklein michaeljklein added the enhancement New feature or request label Apr 10, 2024
github-merge-queue bot pushed a commit that referenced this issue Sep 17, 2024
# Description

## Problem

Part of #4515
Part of #4775

## Summary

Allows marking structs as pub or pub(crate). Also will now report unused
structs.

## Additional Context

Let me know if some of the structs I marked as `pub` shouldn't actually
be `pub`. I didn't mark some as pub, I think only the ones used for
tests.

## 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.
github-merge-queue bot pushed a commit that referenced this issue Sep 17, 2024
# Description

## Problem

Part of #4515
Fixes #4775

## Summary

Traits can now be marked as `pub` or `pub(crate)`, and a warning will
happen if a trait is unused.

## Additional Context

## 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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
Status: Done
Development

Successfully merging a pull request may close this issue.

1 participant