Automatically format generated C++ bindings using clang-format.
PiperOrigin-RevId: 397274947
diff --git a/rs_bindings_from_cc/src_code_gen.cc b/rs_bindings_from_cc/src_code_gen.cc
index 86dbd85..35cc9ef 100644
--- a/rs_bindings_from_cc/src_code_gen.cc
+++ b/rs_bindings_from_cc/src_code_gen.cc
@@ -9,6 +9,7 @@
#include "rs_bindings_from_cc/ffi_types.h"
#include "rs_bindings_from_cc/ir.h"
#include "third_party/json/src/json.hpp"
+#include "third_party/llvm/llvm-project/clang/include/clang/Format/Format.h"
namespace rs_bindings_from_cc {
@@ -29,7 +30,13 @@
const FfiU8SliceBox& rs_api_impl = ffi_bindings.rs_api_impl;
bindings.rs_api = std::string(rs_api.ptr, rs_api.size);
- bindings.rs_api_impl = std::string(rs_api_impl.ptr, rs_api_impl.size);
+
+ std::string impl{rs_api_impl.ptr, rs_api_impl.size};
+ bindings.rs_api_impl = *clang::tooling::applyAllReplacements(
+ impl,
+ clang::format::reformat(
+ clang::format::getGoogleStyle(clang::format::FormatStyle::LK_Cpp),
+ impl, clang::tooling::Range(0, impl.size()), "<stdin>"));
return bindings;
}
diff --git a/rs_bindings_from_cc/src_code_gen_test.cc b/rs_bindings_from_cc/src_code_gen_test.cc
index 5eca88e..cd782f2 100644
--- a/rs_bindings_from_cc/src_code_gen_test.cc
+++ b/rs_bindings_from_cc/src_code_gen_test.cc
@@ -40,15 +40,11 @@
"} "
"}"));
- EXPECT_THAT(
- // TODO(hlopko): Run generated C++ sources through clang-format.
- bindings.rs_api_impl,
- StrEq(
- // TODO(hlopko): Run generated C++ sources through clang-format.
- "# include \"foo/bar.h\" \n "
- "extern \"C\" int __rust_thunk__hello_world (int arg) { "
- "return hello_world (arg) ; "
- "}"));
+ EXPECT_THAT(bindings.rs_api_impl,
+ StrEq("#include \"foo/bar.h\"\n"
+ "extern \"C\" int __rust_thunk__hello_world(int arg) { "
+ "return hello_world(arg); "
+ "}"));
}
} // namespace