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. |
dtolnay
left a comment
There was a problem hiding this comment.
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
externblocks but the rest is done).Obsoletes #369.