commit | 8e5042c95b780bad49fcecd44aba136e65908a27 | [log] [tgz] |
---|---|---|
author | Lukasz Anforowicz <lukasza@google.com> | Tue Jan 03 11:19:07 2023 -0800 |
committer | Copybara-Service <copybara-worker@google.com> | Tue Jan 03 11:19:46 2023 -0800 |
tree | feec74cd7397cc14b3bf6f0947c70b6a39856af9 | |
parent | 5d2aff414b2b30fcb5e5d235ffe8ed5cd68f7470 [diff] |
Make payload of `NamespaceQualifier` private. This CL prevents direct construction of `NamespaceQualifier` and forces using explicit `code_gen_utils` APIs to construct a `NamespaceQualifier`. This is a step toward a future where the provided construction API performs *early* verification of the input (e.g. panicking or returning an error early when the inputs cannot be formatted as C++ namespace identifiers or Rust module names). This CL refactors places that used to depend on a public payload of `NamespaceQualifier` in the following way: * Construction of `NamespaceQualifier` now goes through an explicit `NamespaceQualifier::new` API. * `CratePath` has been refactored to avoid having to rip-open and deconstruct a `NamespaceQualifier`. PiperOrigin-RevId: 499270950
Extremely experimental interop tooling for C++ and Rust.
Please don‘t use, this is an experiment and we don’t yet know where will it take us. There will be breaking changes without warning. Unfortunately, we can't take contributions at this point.
$ apt install clang lld bazel $ git clone git@github.com:google/crubit.git $ cd crubit $ bazel build --linkopt=-fuse-ld=/usr/bin/ld.lld //rs_bindings_from_cc:rs_bindings_from_cc_impl
$ git clone https://github.com/llvm/llvm-project $ cd llvm-project $ CC=clang CXX=clang++ cmake -S llvm -B build -DLLVM_ENABLE_PROJECTS='clang' -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install $ cmake --build build -j $ # wait... $ cmake --install build $ cd ../crubit $ LLVM_INSTALL_PATH=../llvm-project/install bazel build //rs_bindings_from_cc:rs_bindings_from_cc_impl