-
Notifications
You must be signed in to change notification settings - Fork 347
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
Allow namespace override #370
Conversation
This change allows a #[namespace (namespace = A::B)] attribute for each item in a cxx::bridge. We now have a fair number of different types of name floating around: * C++ identifiers * C++ fully-qualified names * Rust identifiers * Rust fully-qualified names (future, when we support sub-modules) * Items with both a Rust and C++ name (a 'Pair') * Types with only a known Rust name, which can be resolved to a C++ name. This change attempts to put some sensible names for all these things in syntax/mod.rs, and so that would be a good place to start review. At the moment, the Namespace (included in each CppName) is ruthlessly cloned all over the place. As a given namespace is likely to be applicable to many types and functions, it may save significant memory in future to use Rc<> here. But let's not optimise too early.
Thanks for the review! I agree with all your points and will (eventually) get to them. |
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.
Thanks, this is great. I agree with the comments above but I don't mind merging as is and taking followup PRs to clean up.
Thanks for merging! I will prioritize a PR to get the syntax finalized per #370 (comment) (I assume you agree with that @dtolnay ), hopefully I'll get that done tomorrow. I'll then do more cleanup PRs subsequently for all the other comments. Thanks for the review both! |
Yeah it should be |
This PR consists of lots of commits adding tests, then a commit which actually achieves it.
It should achieve points 1-3 on the plan in #353, and most of #4 (it doesn't currently look for namespace attributes on
extern
blocks but the rest is done).Obsoletes #369.