commit | d1d5dd04a6f05ec8349473e5ab7051f9304a5305 | [log] [tgz] |
---|---|---|
author | Devin Jeanpierre <jeanpierreda@google.com> | Thu Mar 09 01:22:54 2023 -0800 |
committer | Copybara-Service <copybara-worker@google.com> | Thu Mar 09 01:23:38 2023 -0800 |
tree | d4624d7cb6300ba9ec10a44bd9f09673f37aa0f9 | |
parent | 5227499426569e36530f6807aead6891e8332248 [diff] |
Cleanup: Return `IR`, not `Rc<IR>`, from testing functions. This makes it more obvious that you can mutate the IR for testing purposes. You could before, as well, using e.g. `Rc::make_mut(&mut ir)`, but it was clunky. And because the IR was behind an `Rc`, it wasn't obvious that it wasn't also stored somewhere else -- it could have been that you could mutate your copy, but there was some copy somewhere else that couldn't be mutated. That's what the API made it look like. By using `IR` by value, it's obvious that there's no shared state you'd be decoupling yourself from, and it's always OK to mutate the IR for testing purposes. I think it was an `Rc<IR>` originally so that it could be passed in where an `Rc<IR>` is expected, but as this CL shows, it isn't hard to uncouple that. PiperOrigin-RevId: 515266544
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