| commit | 932b74353c63a00067743c0640b4324c58299944 | [log] [tgz] |
|---|---|---|
| author | Sam McCall <sammccall@google.com> | Mon Jan 23 04:41:22 2023 -0800 |
| committer | Copybara-Service <copybara-worker@google.com> | Mon Jan 23 04:41:56 2023 -0800 |
| tree | 387501956a2d7b04fc397215ccc54cd4e197c350 | |
| parent | 442733cdc06a4f33cf0fcce02fe7435440532841 [diff] |
Unify three type nullability traversals, so they don't get out of sync NullabilityWalker is the source of truth for which type nodes are traversed in which sequence, and how NullabilityKinds are associated with PointerTypes. Not a panacea, NullabilityWalker must: - stay in sync with expr transfer functions - find the same pointers regardless of sugar (I have some further idea here) The template substitution logic gets folded in as an optional part of getNullabilityAnnotationsFromType as Dmitri suggested. While here, give the callback the option to bail out (and we just traverse the template arg sans sugar) instead of returning an invalid empty vector. This fixes a couple of testcases. PiperOrigin-RevId: 503951667
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