dtolnay/cxx
Implement glob import semantics for builtin type names
Aberta
#682 aberto em 16 de jan. de 2021
help wanted
Métricas do repositório
- Stars
- (4.472 estrelas)
- Métricas de merge de PR
- (Mesclagem média 8m) (3 fundiu PRs em 30d)
Description
Currently we disallow any user-defined type name that collides with one of the builtin type names.
error[cxxbridge]: reserved name
┌─ src/main.rs:3:12
│
3 │ struct UniquePtr { broken: bool }
│ ^^^^^^^^^ reserved name
error[cxxbridge]: reserved name
┌─ src/main.rs:5:12
│
5 │ struct c_char { broken: bool }
│ ^^^^^^ reserved name
However, this is bad because it makes it a breaking change for us to add new builtin bindings, such as #681. If the user already had their own type with the same name as the new binding, that code needs to continue to work.
We need to implement basically the same semantics that Rust has for prelude types and glob imports — a user-defined type replaces any builtin binding of the same name.