Implement error reporting for the bindings generator.
This feature aggregates nonfatal errors encountered while generating bindings and writes a JSON report to a file. It can be activated by passing `--//path/to/crubit/bazel_support:generate_error_report` to a Bazel build that generates bindings. The error report is named `${cc_library}_rust_api_error_report.json` and appears in the output directory alongside the generated bindings.
PiperOrigin-RevId: 481263077
diff --git a/rs_bindings_from_cc/generate_bindings_and_metadata_test.cc b/rs_bindings_from_cc/generate_bindings_and_metadata_test.cc
index 6decefc..4cb60e3 100644
--- a/rs_bindings_from_cc/generate_bindings_and_metadata_test.cc
+++ b/rs_bindings_from_cc/generate_bindings_and_metadata_test.cc
@@ -42,7 +42,8 @@
/* public_headers= */ {"a.h"}, std::string(kTargetsAndHeaders),
/* extra_rs_srcs= */ {},
/* srcs_to_scan_for_instantiations= */ {},
- /* instantiations_out= */ ""));
+ /* instantiations_out= */ "",
+ /* error_report_out= */ ""));
ASSERT_OK_AND_ASSIGN(
BindingsAndMetadata result,
@@ -52,6 +53,7 @@
ASSERT_EQ(result.ir.used_headers.size(), 1);
ASSERT_EQ(result.ir.used_headers.front().IncludePath(), "a.h");
+ ASSERT_EQ(result.error_report, "");
// Check that IR items have the proper owning target set.
auto item = result.ir.get_items_if<Namespace>().front();
@@ -71,7 +73,8 @@
/* public_headers= */ {"a.h"}, std::string(kTargetsAndHeaders),
/* extra_rs_srcs= */ {},
/* srcs_to_scan_for_instantiations= */ {},
- /* instantiations_out= */ ""));
+ /* instantiations_out= */ "",
+ /* error_report_out= */ ""));
ASSERT_OK_AND_ASSIGN(
BindingsAndMetadata result,
@@ -100,7 +103,7 @@
{"a.h"}, std::string(kTargetsAndHeaders),
/* extra_rs_srcs= */ {},
/* srcs_to_scan_for_instantiations= */ {a_rs_path},
- "instantiations_out"));
+ "instantiations_out", /* error_report_out= */ ""));
CRUBIT_ASSIGN_OR_RETURN(
BindingsAndMetadata result,
@@ -267,7 +270,7 @@
/* public_headers= */ {"a.h"}, std::string(kTargetsAndHeaders),
/* extra_rs_srcs= */ {},
/* srcs_to_scan_for_instantiations= */ {},
- /* instantiations_out= */ ""));
+ /* instantiations_out= */ "", /* error_report_out= */ ""));
ASSERT_OK_AND_ASSIGN(BindingsAndMetadata result,
GenerateBindingsAndMetadata(
cmdline, DefaultClangArgs(),