Fix ClangTidy warnings, include what you spell PiperOrigin-RevId: 548113357 Change-Id: I4627d73b34660596274833f368b09ff34408e6a9
diff --git a/rs_bindings_from_cc/BUILD b/rs_bindings_from_cc/BUILD index e4f8510..40bae5d 100644 --- a/rs_bindings_from_cc/BUILD +++ b/rs_bindings_from_cc/BUILD
@@ -73,8 +73,8 @@ "//common:status_macros", "@absl//absl/flags:parse", "@absl//absl/status", - "@absl//absl/status:statusor", "@absl//absl/strings", + "@absl//absl/types:span", "@llvm-project//llvm:Support", ], ) @@ -93,6 +93,7 @@ "//common:status_macros", "@absl//absl/container:flat_hash_map", "@absl//absl/container:flat_hash_set", + "@absl//absl/log:check", "@absl//absl/status:statusor", "@absl//absl/strings", ], @@ -113,10 +114,11 @@ ":cmdline", ":collect_namespaces", ":generate_bindings_and_metadata", + "//common:cc_ffi_types", "//common:rust_allocator_shims", "//common:status_macros", "//common:test_utils", - "@absl//absl/status", + "@absl//absl/container:flat_hash_map", "@absl//absl/status:statusor", "@absl//absl/strings", "@com_google_googletest//:gtest_main", @@ -130,6 +132,7 @@ visibility = ["//:__subpackages__"], deps = [ "@llvm-project//clang:ast", + "@llvm-project//clang:basic", ], ) @@ -152,6 +155,7 @@ srcs = ["bazel_types_test.cc"], deps = [ ":bazel_types", + "@absl//absl/strings:string_view", "@com_google_googletest//:gtest_main", ], ) @@ -163,9 +167,7 @@ visibility = ["//:__subpackages__"], deps = [ ":cc_ir", - "//common:status_macros", "@absl//absl/container:flat_hash_map", - "@absl//absl/status:statusor", "@absl//absl/strings", "@llvm-project//clang:ast", ], @@ -185,6 +187,7 @@ "@absl//absl/container:flat_hash_set", "@absl//absl/flags:flag", "@absl//absl/log", + "@absl//absl/status", "@absl//absl/status:statusor", "@absl//absl/strings", "@llvm-project//llvm:Support", @@ -196,8 +199,13 @@ srcs = ["cmdline_test.cc"], deps = [ ":bazel_types", + ":cc_ir", ":cmdline", + "//common:cc_ffi_types", "//common:status_test_matchers", + "@absl//absl/status", + "@absl//absl/status:statusor", + "@absl//absl/strings:string_view", "@com_google_googletest//:gtest_main", ], ) @@ -214,7 +222,10 @@ "@absl//absl/container:flat_hash_map", "@absl//absl/log:check", "@absl//absl/status:statusor", + "@absl//absl/types:span", "@llvm-project//clang:ast", + "@llvm-project//clang:basic", + "@llvm-project//clang:sema", ], ) @@ -225,8 +236,10 @@ deps = [ ":ast_consumer", ":decl_importer", + "//lifetime_annotations", "@llvm-project//clang:ast", "@llvm-project//clang:frontend", + "@llvm-project//llvm:Support", ], ) @@ -289,11 +302,8 @@ ":cc_ir", ":ir_from_cc", "//common:status_test_matchers", - "//common:test_utils", "@absl//absl/status", - "@absl//absl/status:statusor", "@absl//absl/strings", - "@absl//absl/types:span", "@com_google_googletest//:gtest_main", ], ) @@ -305,6 +315,7 @@ visibility = ["//rs_bindings_from_cc:__subpackages__"], deps = [ ":bazel_types", + "//common:string_type", "//common:strong_int", "@absl//absl/container:flat_hash_map", "@absl//absl/container:flat_hash_set", @@ -374,6 +385,7 @@ deps = [ ":bazel_types", ":cc_ir", + ":decl_importer", ":frontend_action", "@absl//absl/container:flat_hash_map", "@absl//absl/container:flat_hash_set", @@ -382,7 +394,7 @@ "@absl//absl/status:statusor", "@absl//absl/strings", "@absl//absl/types:span", - "@llvm-project//clang:frontend", + "@llvm-project//clang:serialization", "@llvm-project//clang:tooling", ], ) @@ -397,6 +409,7 @@ ":ir_from_cc", "//common:cc_ffi_types", "@absl//absl/status:statusor", + "@absl//absl/strings:string_view", "@llvm-project//llvm:Support", ], ) @@ -548,6 +561,7 @@ deps = [ ":collect_instantiations", # build_cleaner: keep "//common:cc_ffi_types", + "@absl//absl/status", "@absl//absl/status:statusor", "@absl//absl/types:span", "@llvm-project//llvm:Support",
diff --git a/rs_bindings_from_cc/ast_convert.cc b/rs_bindings_from_cc/ast_convert.cc index 575a221..f341864 100644 --- a/rs_bindings_from_cc/ast_convert.cc +++ b/rs_bindings_from_cc/ast_convert.cc
@@ -9,6 +9,7 @@ #include "rs_bindings_from_cc/ir.h" #include "clang/AST/Decl.h" #include "clang/AST/DeclCXX.h" +#include "clang/Basic/LLVM.h" #include "clang/Basic/Specifiers.h" namespace crubit {
diff --git a/rs_bindings_from_cc/ast_util.cc b/rs_bindings_from_cc/ast_util.cc index ff8df3b..547990c 100644 --- a/rs_bindings_from_cc/ast_util.cc +++ b/rs_bindings_from_cc/ast_util.cc
@@ -4,8 +4,9 @@ #include "rs_bindings_from_cc/ast_util.h" -#include "clang/AST/DeclCXX.h" +#include "clang/AST/DeclBase.h" #include "clang/AST/DeclTemplate.h" +#include "clang/Basic/LLVM.h" namespace crubit {
diff --git a/rs_bindings_from_cc/ast_util.h b/rs_bindings_from_cc/ast_util.h index 576c9b2..e341ba7 100644 --- a/rs_bindings_from_cc/ast_util.h +++ b/rs_bindings_from_cc/ast_util.h
@@ -5,7 +5,7 @@ #ifndef CRUBIT_RS_BINDINGS_FROM_CC_AST_UTIL_H_ #define CRUBIT_RS_BINDINGS_FROM_CC_AST_UTIL_H_ -#include "clang/AST/DeclCXX.h" +#include "clang/AST/DeclBase.h" namespace crubit {
diff --git a/rs_bindings_from_cc/bazel_types.cc b/rs_bindings_from_cc/bazel_types.cc index 62f82a9..6992f95 100644 --- a/rs_bindings_from_cc/bazel_types.cc +++ b/rs_bindings_from_cc/bazel_types.cc
@@ -4,7 +4,9 @@ #include "rs_bindings_from_cc/bazel_types.h" +#include <cstddef> #include <limits> +#include <string> #include "absl/log/check.h" #include "absl/strings/ascii.h"
diff --git a/rs_bindings_from_cc/bazel_types_test.cc b/rs_bindings_from_cc/bazel_types_test.cc index f2e7657..c97a235 100644 --- a/rs_bindings_from_cc/bazel_types_test.cc +++ b/rs_bindings_from_cc/bazel_types_test.cc
@@ -4,8 +4,10 @@ #include "rs_bindings_from_cc/bazel_types.h" -#include "gmock/gmock.h" +#include <string> + #include "gtest/gtest.h" +#include "absl/strings/string_view.h" namespace crubit {
diff --git a/rs_bindings_from_cc/cmdline.cc b/rs_bindings_from_cc/cmdline.cc index f22885e..8740e25 100644 --- a/rs_bindings_from_cc/cmdline.cc +++ b/rs_bindings_from_cc/cmdline.cc
@@ -6,16 +6,20 @@ #include <algorithm> #include <iterator> -#include <optional> #include <string> #include <utility> #include <vector> #include "absl/flags/flag.h" #include "absl/log/log.h" +#include "absl/status/status.h" #include "absl/strings/str_cat.h" #include "absl/strings/substitute.h" +#include "common/ffi_types.h" #include "common/status_macros.h" +#include "rs_bindings_from_cc/bazel_types.h" +#include "rs_bindings_from_cc/ir.h" +#include "llvm/Support/Error.h" #include "llvm/Support/JSON.h" ABSL_FLAG(bool, do_nothing, false,
diff --git a/rs_bindings_from_cc/cmdline.h b/rs_bindings_from_cc/cmdline.h index 533fac2..feae0da 100644 --- a/rs_bindings_from_cc/cmdline.h +++ b/rs_bindings_from_cc/cmdline.h
@@ -33,7 +33,7 @@ std::string crubit_support_path, std::string clang_format_exe_path, std::string rustfmt_exe_path, std::string rustfmt_config_path, bool do_nothing, std::vector<std::string> public_headers, - std::string target_args_str, std::vector<std::string> extra_rs_sources, + std::string target_args_str, std::vector<std::string> extra_rs_srcs, std::vector<std::string> srcs_to_scan_for_instantiations, std::string instantiations_out, std::string error_report_out, SourceLocationDocComment generate_source_location_in_doc_comment) { @@ -43,7 +43,7 @@ std::move(crubit_support_path), std::move(clang_format_exe_path), std::move(rustfmt_exe_path), std::move(rustfmt_config_path), do_nothing, std::move(public_headers), std::move(target_args_str), - std::move(extra_rs_sources), std::move(srcs_to_scan_for_instantiations), + std::move(extra_rs_srcs), std::move(srcs_to_scan_for_instantiations), std::move(instantiations_out), std::move(error_report_out), generate_source_location_in_doc_comment); } @@ -102,7 +102,7 @@ std::string crubit_support_path, std::string clang_format_exe_path, std::string rustfmt_exe_path, std::string rustfmt_config_path, bool do_nothing, std::vector<std::string> public_headers, - std::string target_args_str, std::vector<std::string> extra_rs_sources, + std::string target_args_str, std::vector<std::string> extra_rs_srcs, std::vector<std::string> srcs_to_scan_for_instantiations, std::string instantiations_out, std::string error_report_out, SourceLocationDocComment generate_source_location_in_doc_comment);
diff --git a/rs_bindings_from_cc/cmdline_test.cc b/rs_bindings_from_cc/cmdline_test.cc index 77864fb..599c20a 100644 --- a/rs_bindings_from_cc/cmdline_test.cc +++ b/rs_bindings_from_cc/cmdline_test.cc
@@ -5,12 +5,18 @@ #include "rs_bindings_from_cc/cmdline.h" #include <string> +#include <utility> #include <vector> #include "gmock/gmock.h" #include "gtest/gtest.h" +#include "absl/status/status.h" +#include "absl/status/statusor.h" +#include "absl/strings/string_view.h" +#include "common/ffi_types.h" #include "common/status_test_matchers.h" #include "rs_bindings_from_cc/bazel_types.h" +#include "rs_bindings_from_cc/ir.h" namespace crubit { namespace {
diff --git a/rs_bindings_from_cc/collect_instantiations.cc b/rs_bindings_from_cc/collect_instantiations.cc index 926f842..2626b38 100644 --- a/rs_bindings_from_cc/collect_instantiations.cc +++ b/rs_bindings_from_cc/collect_instantiations.cc
@@ -4,9 +4,15 @@ #include "rs_bindings_from_cc/collect_instantiations.h" +#include <string> +#include <utility> +#include <vector> + +#include "absl/status/status.h" #include "absl/status/statusor.h" #include "absl/types/span.h" #include "common/ffi_types.h" +#include "llvm/Support/Error.h" #include "llvm/Support/FormatVariadic.h" #include "llvm/Support/JSON.h"
diff --git a/rs_bindings_from_cc/collect_instantiations.h b/rs_bindings_from_cc/collect_instantiations.h index fb54efa..e78d8ea 100644 --- a/rs_bindings_from_cc/collect_instantiations.h +++ b/rs_bindings_from_cc/collect_instantiations.h
@@ -6,6 +6,7 @@ #define CRUBIT_RS_BINDINGS_FROM_CC_COLLECT_INSTANTIATIONS_H_ #include <string> +#include <vector> #include "absl/status/statusor.h" #include "absl/types/span.h"
diff --git a/rs_bindings_from_cc/collect_instantiations_test.cc b/rs_bindings_from_cc/collect_instantiations_test.cc index 83997f0..f1a2262 100644 --- a/rs_bindings_from_cc/collect_instantiations_test.cc +++ b/rs_bindings_from_cc/collect_instantiations_test.cc
@@ -4,7 +4,8 @@ #include "rs_bindings_from_cc/collect_instantiations.h" -#include <climits> +#include <string> +#include <utility> #include "gmock/gmock.h" #include "gtest/gtest.h"
diff --git a/rs_bindings_from_cc/collect_namespaces.cc b/rs_bindings_from_cc/collect_namespaces.cc index 55ebea8..12d49e4 100644 --- a/rs_bindings_from_cc/collect_namespaces.cc +++ b/rs_bindings_from_cc/collect_namespaces.cc
@@ -4,7 +4,8 @@ #include "rs_bindings_from_cc/collect_namespaces.h" -#include <string_view> +#include <string> +#include <utility> #include <vector> #include "absl/container/btree_map.h"
diff --git a/rs_bindings_from_cc/collect_namespaces.h b/rs_bindings_from_cc/collect_namespaces.h index 282c876..8322ef2 100644 --- a/rs_bindings_from_cc/collect_namespaces.h +++ b/rs_bindings_from_cc/collect_namespaces.h
@@ -5,10 +5,13 @@ #ifndef CRUBIT_RS_BINDINGS_FROM_CC_COLLECT_NAMESPACES_H_ #define CRUBIT_RS_BINDINGS_FROM_CC_COLLECT_NAMESPACES_H_ +#include <ostream> #include <string> +#include <vector> #include "rs_bindings_from_cc/bazel_types.h" #include "rs_bindings_from_cc/ir.h" +#include "llvm/Support/FormatVariadic.h" #include "llvm/Support/JSON.h" namespace crubit {
diff --git a/rs_bindings_from_cc/decl_importer.h b/rs_bindings_from_cc/decl_importer.h index 6c7e346..af82aa6 100644 --- a/rs_bindings_from_cc/decl_importer.h +++ b/rs_bindings_from_cc/decl_importer.h
@@ -14,11 +14,15 @@ #include "absl/container/flat_hash_map.h" #include "absl/log/check.h" #include "absl/status/statusor.h" +#include "absl/types/span.h" #include "lifetime_annotations/lifetime_annotations.h" #include "lifetime_annotations/type_lifetimes.h" #include "rs_bindings_from_cc/bazel_types.h" #include "rs_bindings_from_cc/ir.h" +#include "clang/AST/DeclBase.h" #include "clang/AST/Type.h" +#include "clang/Basic/SourceLocation.h" +#include "clang/Sema/Sema.h" namespace crubit {
diff --git a/rs_bindings_from_cc/frontend_action.cc b/rs_bindings_from_cc/frontend_action.cc index 4dd9dc5..3d85c98 100644 --- a/rs_bindings_from_cc/frontend_action.cc +++ b/rs_bindings_from_cc/frontend_action.cc
@@ -6,9 +6,11 @@ #include <memory> +#include "lifetime_annotations/lifetime_annotations.h" #include "rs_bindings_from_cc/ast_consumer.h" #include "clang/AST/ASTConsumer.h" #include "clang/Frontend/CompilerInstance.h" +#include "llvm/ADT/StringRef.h" namespace crubit {
diff --git a/rs_bindings_from_cc/frontend_action.h b/rs_bindings_from_cc/frontend_action.h index 3ba2c44..f156812 100644 --- a/rs_bindings_from_cc/frontend_action.h +++ b/rs_bindings_from_cc/frontend_action.h
@@ -11,6 +11,7 @@ #include "clang/AST/ASTConsumer.h" #include "clang/Frontend/CompilerInstance.h" #include "clang/Frontend/FrontendAction.h" +#include "llvm/ADT/StringRef.h" namespace crubit {
diff --git a/rs_bindings_from_cc/generate_bindings_and_metadata.cc b/rs_bindings_from_cc/generate_bindings_and_metadata.cc index 3c6044a..0ce67d4 100644 --- a/rs_bindings_from_cc/generate_bindings_and_metadata.cc +++ b/rs_bindings_from_cc/generate_bindings_and_metadata.cc
@@ -7,11 +7,14 @@ #include <optional> #include <string> #include <utility> +#include <vector> #include "absl/container/flat_hash_map.h" #include "absl/container/flat_hash_set.h" +#include "absl/log/check.h" #include "absl/strings/string_view.h" #include "common/status_macros.h" +#include "rs_bindings_from_cc/cmdline.h" #include "rs_bindings_from_cc/collect_instantiations.h" #include "rs_bindings_from_cc/collect_namespaces.h" #include "rs_bindings_from_cc/ir.h"
diff --git a/rs_bindings_from_cc/generate_bindings_and_metadata.h b/rs_bindings_from_cc/generate_bindings_and_metadata.h index ef69f40..1dca1e8 100644 --- a/rs_bindings_from_cc/generate_bindings_and_metadata.h +++ b/rs_bindings_from_cc/generate_bindings_and_metadata.h
@@ -8,6 +8,7 @@ #include <string> #include <vector> +#include "absl/container/flat_hash_map.h" #include "absl/status/statusor.h" #include "rs_bindings_from_cc/cmdline.h" #include "rs_bindings_from_cc/collect_namespaces.h"
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 393fae1..0fc96ad 100644 --- a/rs_bindings_from_cc/generate_bindings_and_metadata_test.cc +++ b/rs_bindings_from_cc/generate_bindings_and_metadata_test.cc
@@ -5,12 +5,14 @@ #include "rs_bindings_from_cc/generate_bindings_and_metadata.h" #include <string> +#include <utility> #include "gmock/gmock.h" #include "gtest/gtest.h" -#include "absl/status/status.h" +#include "absl/container/flat_hash_map.h" #include "absl/status/statusor.h" #include "absl/strings/string_view.h" +#include "common/ffi_types.h" #include "common/status_macros.h" #include "common/test_utils.h" #include "rs_bindings_from_cc/cmdline.h"
diff --git a/rs_bindings_from_cc/importer_test.cc b/rs_bindings_from_cc/importer_test.cc index 7896e71..ddb3601 100644 --- a/rs_bindings_from_cc/importer_test.cc +++ b/rs_bindings_from_cc/importer_test.cc
@@ -4,18 +4,14 @@ #include <optional> #include <string> -#include <type_traits> #include <variant> #include <vector> #include "gmock/gmock.h" #include "gtest/gtest.h" #include "absl/status/status.h" -#include "absl/status/statusor.h" #include "absl/strings/string_view.h" -#include "absl/types/span.h" #include "common/status_test_matchers.h" -#include "common/test_utils.h" #include "rs_bindings_from_cc/bazel_types.h" #include "rs_bindings_from_cc/ir.h" #include "rs_bindings_from_cc/ir_from_cc.h"
diff --git a/rs_bindings_from_cc/ir.cc b/rs_bindings_from_cc/ir.cc index 2179232..410653c 100644 --- a/rs_bindings_from_cc/ir.cc +++ b/rs_bindings_from_cc/ir.cc
@@ -4,8 +4,6 @@ #include "rs_bindings_from_cc/ir.h" -#include <stdint.h> - #include <optional> #include <ostream> #include <string> @@ -14,9 +12,10 @@ #include <vector> #include "absl/log/check.h" +#include "absl/strings/str_cat.h" #include "absl/strings/string_view.h" +#include "common/string_type.h" #include "common/strong_int.h" -#include "rs_bindings_from_cc/bazel_types.h" #include "clang/AST/Type.h" #include "llvm/Support/JSON.h"
diff --git a/rs_bindings_from_cc/ir.h b/rs_bindings_from_cc/ir.h index 935fe13..938751e 100644 --- a/rs_bindings_from_cc/ir.h +++ b/rs_bindings_from_cc/ir.h
@@ -13,7 +13,6 @@ #include <stdint.h> -#include <cstddef> #include <iomanip> #include <optional> #include <ostream>
diff --git a/rs_bindings_from_cc/ir_from_cc.cc b/rs_bindings_from_cc/ir_from_cc.cc index 6e39634..425f637 100644 --- a/rs_bindings_from_cc/ir_from_cc.cc +++ b/rs_bindings_from_cc/ir_from_cc.cc
@@ -4,6 +4,7 @@ #include "rs_bindings_from_cc/ir_from_cc.h" +#include <cstdint> #include <memory> #include <string> #include <utility> @@ -18,9 +19,10 @@ #include "absl/strings/substitute.h" #include "absl/types/span.h" #include "rs_bindings_from_cc/bazel_types.h" +#include "rs_bindings_from_cc/decl_importer.h" #include "rs_bindings_from_cc/frontend_action.h" #include "rs_bindings_from_cc/ir.h" -#include "clang/Frontend/FrontendAction.h" +#include "clang/Serialization/PCHContainerOperations.h" #include "clang/Tooling/Tooling.h" namespace crubit {
diff --git a/rs_bindings_from_cc/json_from_cc.cc b/rs_bindings_from_cc/json_from_cc.cc index 6c2d953..c1a8771 100644 --- a/rs_bindings_from_cc/json_from_cc.cc +++ b/rs_bindings_from_cc/json_from_cc.cc
@@ -5,13 +5,13 @@ #include <string> #include "absl/status/statusor.h" +#include "absl/strings/string_view.h" #include "common/ffi_types.h" #include "rs_bindings_from_cc/bazel_types.h" #include "rs_bindings_from_cc/ir.h" #include "rs_bindings_from_cc/ir_from_cc.h" #include "llvm/Support/ErrorHandling.h" #include "llvm/Support/FormatVariadic.h" -#include "llvm/Support/JSON.h" namespace crubit {
diff --git a/rs_bindings_from_cc/rs_bindings_from_cc.cc b/rs_bindings_from_cc/rs_bindings_from_cc.cc index b6fd721..320d8db 100644 --- a/rs_bindings_from_cc/rs_bindings_from_cc.cc +++ b/rs_bindings_from_cc/rs_bindings_from_cc.cc
@@ -6,20 +6,23 @@ // * a Rust source file with bindings for the C++ API // * a C++ source file with the implementation of the bindings +#include <cstddef> #include <string> #include <utility> #include <vector> #include "absl/flags/parse.h" #include "absl/status/status.h" -#include "absl/status/statusor.h" #include "absl/strings/string_view.h" +#include "absl/types/span.h" #include "common/file_io.h" #include "common/status_macros.h" #include "rs_bindings_from_cc/cmdline.h" #include "rs_bindings_from_cc/collect_namespaces.h" #include "rs_bindings_from_cc/generate_bindings_and_metadata.h" #include "rs_bindings_from_cc/ir.h" +#include "llvm/Support/FormatVariadic.h" +#include "llvm/Support/JSON.h" #include "llvm/Support/raw_ostream.h" namespace crubit {
diff --git a/rs_bindings_from_cc/src_code_gen.cc b/rs_bindings_from_cc/src_code_gen.cc index 2d38736..2514293 100644 --- a/rs_bindings_from_cc/src_code_gen.cc +++ b/rs_bindings_from_cc/src_code_gen.cc
@@ -6,11 +6,12 @@ #include <string> +#include "absl/status/statusor.h" +#include "absl/strings/string_view.h" #include "common/ffi_types.h" #include "common/status_macros.h" #include "rs_bindings_from_cc/ir.h" #include "llvm/Support/FormatVariadic.h" -#include "llvm/Support/JSON.h" namespace crubit {
diff --git a/rs_bindings_from_cc/type_map.cc b/rs_bindings_from_cc/type_map.cc index d02853f..d28b598 100644 --- a/rs_bindings_from_cc/type_map.cc +++ b/rs_bindings_from_cc/type_map.cc
@@ -8,8 +8,7 @@ #include <string> #include "absl/container/flat_hash_map.h" -#include "absl/status/statusor.h" -#include "common/status_macros.h" +#include "absl/strings/string_view.h" #include "rs_bindings_from_cc/ir.h" #include "clang/AST/Type.h"
diff --git a/rs_bindings_from_cc/type_map.h b/rs_bindings_from_cc/type_map.h index fd2c039..6bc6e02 100644 --- a/rs_bindings_from_cc/type_map.h +++ b/rs_bindings_from_cc/type_map.h
@@ -7,7 +7,6 @@ #include <optional> -#include "absl/strings/string_view.h" #include "rs_bindings_from_cc/ir.h" #include "clang/AST/Type.h"
diff --git a/support/rs_std/rs_char_test.cc b/support/rs_std/rs_char_test.cc index d08066c..be478cd 100644 --- a/support/rs_std/rs_char_test.cc +++ b/support/rs_std/rs_char_test.cc
@@ -6,9 +6,9 @@ #include <stdint.h> +#include <optional> #include <type_traits> -#include "gmock/gmock.h" #include "gtest/gtest.h" namespace {