From d9a764278b3110465ec4f210ebf10d4299fa24ed Mon Sep 17 00:00:00 2001 From: Googler Date: Wed, 4 Mar 2026 13:01:20 -0800 Subject: [PATCH] Remove `fmt` feature as launched It's worked! PiperOrigin-RevId: 878627843 --- .../test/consts/consts_cc_api.h | 2 +- .../test/consts/consts_cc_api_impl.rs | 2 +- cc_bindings_from_rs/test/enums/enums_cc_api.h | 2 +- .../test/enums/enums_cc_api_impl.rs | 2 +- .../function_pointers_cc_api.h | 2 +- .../function_pointers_cc_api_impl.rs | 2 +- .../test/functions/functions_cc_api.h | 2 +- .../test/functions/functions_cc_api_impl.rs | 2 +- .../test/golden/composable_bridging_cc_api.h | 2 +- .../golden/composable_bridging_cc_api_impl.rs | 2 +- .../test/golden/function_annotations_cc_api.h | 4 +- .../function_annotations_cc_api_impl.rs | 2 +- .../non_trivially_destructible_cc_api.h | 2 +- .../non_trivially_destructible_cc_api_impl.rs | 2 +- ...cting_fields_and_member_functions_cc_api.h | 2 +- ...fields_and_member_functions_cc_api_impl.rs | 2 +- .../test/golden/tag_decl_annotations_cc_api.h | 4 +- .../tag_decl_annotations_cc_api_impl.rs | 2 +- .../test/golden/type_aliases_cc_api.h | 2 +- .../test/golden/type_aliases_cc_api_impl.rs | 2 +- cc_bindings_from_rs/test/golden/uses_cc_api.h | 2 +- .../test/golden/uses_cc_api_impl.rs | 2 +- .../primitive_types/primitive_types_cc_api.h | 2 +- .../primitive_types_cc_api_impl.rs | 2 +- .../test/traits/traits_cc_api.h | 2 +- .../test/traits/traits_cc_api_impl.rs | 2 +- .../test/tuples/tuples_cc_api.h | 2 +- .../test/tuples/tuples_cc_api_impl.rs | 2 +- common/crubit_feature.rs | 10 - features/BUILD | 10 - rs_bindings_from_cc/decl_importer.h | 3 - .../generate_bindings/generate_enum.rs | 49 ++-- .../generate_bindings/generate_enum_test.rs | 4 +- .../generate_struct_and_union.rs | 4 +- .../generate_struct_and_union_test.rs | 4 +- rs_bindings_from_cc/generate_bindings/lib.rs | 10 +- .../multiplatform_ir_testing.rs | 10 - rs_bindings_from_cc/importer.cc | 4 - rs_bindings_from_cc/importer.h | 1 - rs_bindings_from_cc/importer_test.cc | 271 ++++++++++-------- rs_bindings_from_cc/importers/cxx_record.cc | 12 +- rs_bindings_from_cc/importers/enum.cc | 12 +- rs_bindings_from_cc/ir_from_cc_test.rs | 12 +- rs_bindings_from_cc/test/display/BUILD | 5 +- .../test/display/displayables_api.rs | 2 +- .../test/display/displayables_api_impl.cc | 2 +- .../constructors/constructors_api_impl.cc | 2 +- .../constructors/constructors_rs_api.rs | 2 +- .../inheritance/inherited_methods_rs_api.rs | 2 +- .../methods_qualifiers_api_impl.cc | 2 +- .../methods_qualifiers_rs_api.rs | 2 +- .../type_alias/type_alias_api_impl.cc | 2 +- .../templates/type_alias/type_alias_rs_api.rs | 2 +- .../type_alias_access_rule_rs_api.rs | 2 +- support/rs_std/BUILD | 2 - 55 files changed, 223 insertions(+), 280 deletions(-) diff --git a/cc_bindings_from_rs/test/consts/consts_cc_api.h b/cc_bindings_from_rs/test/consts/consts_cc_api.h index 084aed79c..94594ec7e 100644 --- a/cc_bindings_from_rs/test/consts/consts_cc_api.h +++ b/cc_bindings_from_rs/test/consts/consts_cc_api.h @@ -5,7 +5,7 @@ // Automatically @generated C++ bindings for the following Rust crate: // consts_golden // Features: assume_lifetimes, callables, check_default_initialized, -// experimental, fmt, supported, unsafe_view, wrapper +// experimental, supported, unsafe_view, wrapper // clang-format off #ifndef THIRD_PARTY_CRUBIT_CC_BINDINGS_FROM_RS_TEST_CONSTS_CONSTS_GOLDEN diff --git a/cc_bindings_from_rs/test/consts/consts_cc_api_impl.rs b/cc_bindings_from_rs/test/consts/consts_cc_api_impl.rs index f7b5e5007..5d5daae47 100644 --- a/cc_bindings_from_rs/test/consts/consts_cc_api_impl.rs +++ b/cc_bindings_from_rs/test/consts/consts_cc_api_impl.rs @@ -4,7 +4,7 @@ // Automatically @generated C++ bindings for the following Rust crate: // consts_golden -// Features: assume_lifetimes, callables, check_default_initialized, experimental, fmt, supported, unsafe_view, wrapper +// Features: assume_lifetimes, callables, check_default_initialized, experimental, supported, unsafe_view, wrapper #![allow(unused_unsafe, deprecated, non_snake_case, unreachable_code)] #![allow(improper_ctypes_definitions)] diff --git a/cc_bindings_from_rs/test/enums/enums_cc_api.h b/cc_bindings_from_rs/test/enums/enums_cc_api.h index 6451ca0b9..4f84e4ea1 100644 --- a/cc_bindings_from_rs/test/enums/enums_cc_api.h +++ b/cc_bindings_from_rs/test/enums/enums_cc_api.h @@ -5,7 +5,7 @@ // Automatically @generated C++ bindings for the following Rust crate: // enums_golden // Features: assume_lifetimes, callables, check_default_initialized, -// experimental, fmt, supported, unsafe_view, wrapper +// experimental, supported, unsafe_view, wrapper // clang-format off #ifndef THIRD_PARTY_CRUBIT_CC_BINDINGS_FROM_RS_TEST_ENUMS_ENUMS_GOLDEN diff --git a/cc_bindings_from_rs/test/enums/enums_cc_api_impl.rs b/cc_bindings_from_rs/test/enums/enums_cc_api_impl.rs index 0563e2c38..4eea20cd4 100644 --- a/cc_bindings_from_rs/test/enums/enums_cc_api_impl.rs +++ b/cc_bindings_from_rs/test/enums/enums_cc_api_impl.rs @@ -4,7 +4,7 @@ // Automatically @generated C++ bindings for the following Rust crate: // enums_golden -// Features: assume_lifetimes, callables, check_default_initialized, experimental, fmt, supported, unsafe_view, wrapper +// Features: assume_lifetimes, callables, check_default_initialized, experimental, supported, unsafe_view, wrapper #![allow(unused_unsafe, deprecated, non_snake_case, unreachable_code)] #![allow(improper_ctypes_definitions)] diff --git a/cc_bindings_from_rs/test/function_pointers/function_pointers_cc_api.h b/cc_bindings_from_rs/test/function_pointers/function_pointers_cc_api.h index a76f1f859..4d6ae89b3 100644 --- a/cc_bindings_from_rs/test/function_pointers/function_pointers_cc_api.h +++ b/cc_bindings_from_rs/test/function_pointers/function_pointers_cc_api.h @@ -5,7 +5,7 @@ // Automatically @generated C++ bindings for the following Rust crate: // function_pointers_golden // Features: assume_lifetimes, callables, check_default_initialized, -// experimental, fmt, supported, unsafe_view, wrapper +// experimental, supported, unsafe_view, wrapper // clang-format off #ifndef THIRD_PARTY_CRUBIT_CC_BINDINGS_FROM_RS_TEST_FUNCTION_POINTERS_FUNCTION_POINTERS_GOLDEN diff --git a/cc_bindings_from_rs/test/function_pointers/function_pointers_cc_api_impl.rs b/cc_bindings_from_rs/test/function_pointers/function_pointers_cc_api_impl.rs index 41cf831fb..616890264 100644 --- a/cc_bindings_from_rs/test/function_pointers/function_pointers_cc_api_impl.rs +++ b/cc_bindings_from_rs/test/function_pointers/function_pointers_cc_api_impl.rs @@ -4,7 +4,7 @@ // Automatically @generated C++ bindings for the following Rust crate: // function_pointers_golden -// Features: assume_lifetimes, callables, check_default_initialized, experimental, fmt, supported, unsafe_view, wrapper +// Features: assume_lifetimes, callables, check_default_initialized, experimental, supported, unsafe_view, wrapper #![allow(unused_unsafe, deprecated, non_snake_case, unreachable_code)] #![allow(improper_ctypes_definitions)] diff --git a/cc_bindings_from_rs/test/functions/functions_cc_api.h b/cc_bindings_from_rs/test/functions/functions_cc_api.h index aff25ba0d..bb9e50244 100644 --- a/cc_bindings_from_rs/test/functions/functions_cc_api.h +++ b/cc_bindings_from_rs/test/functions/functions_cc_api.h @@ -5,7 +5,7 @@ // Automatically @generated C++ bindings for the following Rust crate: // functions_golden // Features: assume_lifetimes, callables, check_default_initialized, -// experimental, fmt, supported, unsafe_view, wrapper +// experimental, supported, unsafe_view, wrapper // clang-format off #ifndef THIRD_PARTY_CRUBIT_CC_BINDINGS_FROM_RS_TEST_FUNCTIONS_FUNCTIONS_GOLDEN diff --git a/cc_bindings_from_rs/test/functions/functions_cc_api_impl.rs b/cc_bindings_from_rs/test/functions/functions_cc_api_impl.rs index 3737cb418..9b831a500 100644 --- a/cc_bindings_from_rs/test/functions/functions_cc_api_impl.rs +++ b/cc_bindings_from_rs/test/functions/functions_cc_api_impl.rs @@ -4,7 +4,7 @@ // Automatically @generated C++ bindings for the following Rust crate: // functions_golden -// Features: assume_lifetimes, callables, check_default_initialized, experimental, fmt, supported, unsafe_view, wrapper +// Features: assume_lifetimes, callables, check_default_initialized, experimental, supported, unsafe_view, wrapper #![allow(unused_unsafe, deprecated, non_snake_case, unreachable_code)] #![allow(improper_ctypes_definitions)] diff --git a/cc_bindings_from_rs/test/golden/composable_bridging_cc_api.h b/cc_bindings_from_rs/test/golden/composable_bridging_cc_api.h index 012290afc..ae6ceaadd 100644 --- a/cc_bindings_from_rs/test/golden/composable_bridging_cc_api.h +++ b/cc_bindings_from_rs/test/golden/composable_bridging_cc_api.h @@ -5,7 +5,7 @@ // Automatically @generated C++ bindings for the following Rust crate: // composable_bridging_rust_golden // Features: assume_lifetimes, callables, check_default_initialized, -// experimental, fmt, supported, unsafe_view, wrapper +// experimental, supported, unsafe_view, wrapper // clang-format off #ifndef THIRD_PARTY_CRUBIT_CC_BINDINGS_FROM_RS_TEST_GOLDEN_COMPOSABLE_BRIDGING_RUST_GOLDEN diff --git a/cc_bindings_from_rs/test/golden/composable_bridging_cc_api_impl.rs b/cc_bindings_from_rs/test/golden/composable_bridging_cc_api_impl.rs index d3e9bfef3..bb28d9dd6 100644 --- a/cc_bindings_from_rs/test/golden/composable_bridging_cc_api_impl.rs +++ b/cc_bindings_from_rs/test/golden/composable_bridging_cc_api_impl.rs @@ -4,7 +4,7 @@ // Automatically @generated C++ bindings for the following Rust crate: // composable_bridging_rust_golden -// Features: assume_lifetimes, callables, check_default_initialized, experimental, fmt, supported, unsafe_view, wrapper +// Features: assume_lifetimes, callables, check_default_initialized, experimental, supported, unsafe_view, wrapper #![allow(unused_unsafe, deprecated, non_snake_case, unreachable_code)] #![allow(improper_ctypes_definitions)] diff --git a/cc_bindings_from_rs/test/golden/function_annotations_cc_api.h b/cc_bindings_from_rs/test/golden/function_annotations_cc_api.h index 09962fa72..12c3f5da7 100644 --- a/cc_bindings_from_rs/test/golden/function_annotations_cc_api.h +++ b/cc_bindings_from_rs/test/golden/function_annotations_cc_api.h @@ -5,7 +5,7 @@ // Automatically @generated C++ bindings for the following Rust crate: // function_annotations_rust_golden // Features: assume_lifetimes, callables, check_default_initialized, -// experimental, fmt, supported, unsafe_view, wrapper +// experimental, supported, unsafe_view, wrapper // clang-format off #ifndef THIRD_PARTY_CRUBIT_CC_BINDINGS_FROM_RS_TEST_GOLDEN_FUNCTION_ANNOTATIONS_RUST_GOLDEN @@ -39,4 +39,4 @@ inline std::int32_t add_two_integers(std::int32_t x, std::int32_t y) { #pragma clang diagnostic pop #endif // THIRD_PARTY_CRUBIT_CC_BINDINGS_FROM_RS_TEST_GOLDEN_FUNCTION_ANNOTATIONS_RUST_GOLDEN -// This file contains Kythe metadata. eyJ0eXBlIjoia3l0aGUwIiwibWV0YSI6W3sidHlwZSI6ImFuY2hvcl9hbmNob3IiLCJzb3VyY2VfYmVnaW4iOjE5MSwic291cmNlX2VuZCI6MjA3LCJ0YXJnZXRfYmVnaW4iOjExNzEsInRhcmdldF9lbmQiOjExODcsImVkZ2UiOiIva3l0aGUvZWRnZS9pbXB1dGVzIiwic291cmNlX3ZuYW1lIjp7ImNvcnB1cyI6ImNvcnB1cyIsInBhdGgiOiJ0aGlyZF9wYXJ0eS9jcnViaXQvY2NfYmluZGluZ3NfZnJvbV9ycy90ZXN0L2dvbGRlbi9mdW5jdGlvbl9hbm5vdGF0aW9ucy5ycyIsImxhbmd1YWdlIjoicnVzdCJ9fV19 +// This file contains Kythe metadata. eyJ0eXBlIjoia3l0aGUwIiwibWV0YSI6W3sidHlwZSI6ImFuY2hvcl9hbmNob3IiLCJzb3VyY2VfYmVnaW4iOjE5MSwic291cmNlX2VuZCI6MjA3LCJ0YXJnZXRfYmVnaW4iOjExNjYsInRhcmdldF9lbmQiOjExODIsImVkZ2UiOiIva3l0aGUvZWRnZS9pbXB1dGVzIiwic291cmNlX3ZuYW1lIjp7ImNvcnB1cyI6ImNvcnB1cyIsInBhdGgiOiJ0aGlyZF9wYXJ0eS9jcnViaXQvY2NfYmluZGluZ3NfZnJvbV9ycy90ZXN0L2dvbGRlbi9mdW5jdGlvbl9hbm5vdGF0aW9ucy5ycyIsImxhbmd1YWdlIjoicnVzdCJ9fV19 diff --git a/cc_bindings_from_rs/test/golden/function_annotations_cc_api_impl.rs b/cc_bindings_from_rs/test/golden/function_annotations_cc_api_impl.rs index d0dba5ddc..a17280d22 100644 --- a/cc_bindings_from_rs/test/golden/function_annotations_cc_api_impl.rs +++ b/cc_bindings_from_rs/test/golden/function_annotations_cc_api_impl.rs @@ -4,7 +4,7 @@ // Automatically @generated C++ bindings for the following Rust crate: // function_annotations_rust_golden -// Features: assume_lifetimes, callables, check_default_initialized, experimental, fmt, supported, unsafe_view, wrapper +// Features: assume_lifetimes, callables, check_default_initialized, experimental, supported, unsafe_view, wrapper #![allow(unused_unsafe, deprecated, non_snake_case, unreachable_code)] #![allow(improper_ctypes_definitions)] diff --git a/cc_bindings_from_rs/test/golden/non_trivially_destructible_cc_api.h b/cc_bindings_from_rs/test/golden/non_trivially_destructible_cc_api.h index 22e11f06b..9334d05c2 100644 --- a/cc_bindings_from_rs/test/golden/non_trivially_destructible_cc_api.h +++ b/cc_bindings_from_rs/test/golden/non_trivially_destructible_cc_api.h @@ -5,7 +5,7 @@ // Automatically @generated C++ bindings for the following Rust crate: // non_trivially_destructible_rust_golden // Features: assume_lifetimes, callables, check_default_initialized, -// experimental, fmt, supported, unsafe_view, wrapper +// experimental, supported, unsafe_view, wrapper // clang-format off #ifndef THIRD_PARTY_CRUBIT_CC_BINDINGS_FROM_RS_TEST_GOLDEN_NON_TRIVIALLY_DESTRUCTIBLE_RUST_GOLDEN diff --git a/cc_bindings_from_rs/test/golden/non_trivially_destructible_cc_api_impl.rs b/cc_bindings_from_rs/test/golden/non_trivially_destructible_cc_api_impl.rs index b1a3c1278..0a145a1f8 100644 --- a/cc_bindings_from_rs/test/golden/non_trivially_destructible_cc_api_impl.rs +++ b/cc_bindings_from_rs/test/golden/non_trivially_destructible_cc_api_impl.rs @@ -4,7 +4,7 @@ // Automatically @generated C++ bindings for the following Rust crate: // non_trivially_destructible_rust_golden -// Features: assume_lifetimes, callables, check_default_initialized, experimental, fmt, supported, unsafe_view, wrapper +// Features: assume_lifetimes, callables, check_default_initialized, experimental, supported, unsafe_view, wrapper #![allow(unused_unsafe, deprecated, non_snake_case, unreachable_code)] #![allow(improper_ctypes_definitions)] diff --git a/cc_bindings_from_rs/test/golden/struct_with_conflicting_fields_and_member_functions_cc_api.h b/cc_bindings_from_rs/test/golden/struct_with_conflicting_fields_and_member_functions_cc_api.h index 464767c7d..bd4496201 100644 --- a/cc_bindings_from_rs/test/golden/struct_with_conflicting_fields_and_member_functions_cc_api.h +++ b/cc_bindings_from_rs/test/golden/struct_with_conflicting_fields_and_member_functions_cc_api.h @@ -5,7 +5,7 @@ // Automatically @generated C++ bindings for the following Rust crate: // struct_with_conflicting_fields_and_member_functions_rust_golden // Features: assume_lifetimes, callables, check_default_initialized, -// experimental, fmt, supported, unsafe_view, wrapper +// experimental, supported, unsafe_view, wrapper // clang-format off #ifndef THIRD_PARTY_CRUBIT_CC_BINDINGS_FROM_RS_TEST_GOLDEN_STRUCT_WITH_CONFLICTING_FIELDS_AND_MEMBER_FUNCTIONS_RUST_GOLDEN diff --git a/cc_bindings_from_rs/test/golden/struct_with_conflicting_fields_and_member_functions_cc_api_impl.rs b/cc_bindings_from_rs/test/golden/struct_with_conflicting_fields_and_member_functions_cc_api_impl.rs index 42941bff8..788b96cea 100644 --- a/cc_bindings_from_rs/test/golden/struct_with_conflicting_fields_and_member_functions_cc_api_impl.rs +++ b/cc_bindings_from_rs/test/golden/struct_with_conflicting_fields_and_member_functions_cc_api_impl.rs @@ -4,7 +4,7 @@ // Automatically @generated C++ bindings for the following Rust crate: // struct_with_conflicting_fields_and_member_functions_rust_golden -// Features: assume_lifetimes, callables, check_default_initialized, experimental, fmt, supported, unsafe_view, wrapper +// Features: assume_lifetimes, callables, check_default_initialized, experimental, supported, unsafe_view, wrapper #![allow(unused_unsafe, deprecated, non_snake_case, unreachable_code)] #![allow(improper_ctypes_definitions)] diff --git a/cc_bindings_from_rs/test/golden/tag_decl_annotations_cc_api.h b/cc_bindings_from_rs/test/golden/tag_decl_annotations_cc_api.h index 7ec90394e..7235198e8 100644 --- a/cc_bindings_from_rs/test/golden/tag_decl_annotations_cc_api.h +++ b/cc_bindings_from_rs/test/golden/tag_decl_annotations_cc_api.h @@ -5,7 +5,7 @@ // Automatically @generated C++ bindings for the following Rust crate: // tag_decl_annotations_rust_golden // Features: assume_lifetimes, callables, check_default_initialized, -// experimental, fmt, supported, unsafe_view, wrapper +// experimental, supported, unsafe_view, wrapper // clang-format off #ifndef THIRD_PARTY_CRUBIT_CC_BINDINGS_FROM_RS_TEST_GOLDEN_TAG_DECL_ANNOTATIONS_RUST_GOLDEN @@ -95,4 +95,4 @@ inline void SomeStruct::__crubit_field_offset_assertions() { #pragma clang diagnostic pop #endif // THIRD_PARTY_CRUBIT_CC_BINDINGS_FROM_RS_TEST_GOLDEN_TAG_DECL_ANNOTATIONS_RUST_GOLDEN -// This file contains Kythe metadata. eyJ0eXBlIjoia3l0aGUwIiwibWV0YSI6W3sidHlwZSI6ImFuY2hvcl9hbmNob3IiLCJzb3VyY2VfYmVnaW4iOjI2NCwic291cmNlX2VuZCI6MjcyLCJ0YXJnZXRfYmVnaW4iOjExODAsInRhcmdldF9lbmQiOjExODgsImVkZ2UiOiIva3l0aGUvZWRnZS9pbXB1dGVzIiwic291cmNlX3ZuYW1lIjp7ImNvcnB1cyI6ImNvcnB1cyIsInBhdGgiOiJ0aGlyZF9wYXJ0eS9jcnViaXQvY2NfYmluZGluZ3NfZnJvbV9ycy90ZXN0L2dvbGRlbi90YWdfZGVjbF9hbm5vdGF0aW9ucy5ycyIsImxhbmd1YWdlIjoicnVzdCJ9fSx7InR5cGUiOiJhbmNob3JfYW5jaG9yIiwic291cmNlX2JlZ2luIjozMDksInNvdXJjZV9lbmQiOjMxOCwidGFyZ2V0X2JlZ2luIjoxMzIxLCJ0YXJnZXRfZW5kIjoxMzMwLCJlZGdlIjoiL2t5dGhlL2VkZ2UvaW1wdXRlcyIsInNvdXJjZV92bmFtZSI6eyJjb3JwdXMiOiJjb3JwdXMiLCJwYXRoIjoidGhpcmRfcGFydHkvY3J1Yml0L2NjX2JpbmRpbmdzX2Zyb21fcnMvdGVzdC9nb2xkZW4vdGFnX2RlY2xfYW5ub3RhdGlvbnMucnMiLCJsYW5ndWFnZSI6InJ1c3QifX0seyJ0eXBlIjoiYW5jaG9yX2FuY2hvciIsInNvdXJjZV9iZWdpbiI6MzU4LCJzb3VyY2VfZW5kIjozNjcsInRhcmdldF9iZWdpbiI6MTQ2MSwidGFyZ2V0X2VuZCI6MTQ3MCwiZWRnZSI6Ii9reXRoZS9lZGdlL2ltcHV0ZXMiLCJzb3VyY2Vfdm5hbWUiOnsiY29ycHVzIjoiY29ycHVzIiwicGF0aCI6InRoaXJkX3BhcnR5L2NydWJpdC9jY19iaW5kaW5nc19mcm9tX3JzL3Rlc3QvZ29sZGVuL3RhZ19kZWNsX2Fubm90YXRpb25zLnJzIiwibGFuZ3VhZ2UiOiJydXN0In19LHsidHlwZSI6ImFuY2hvcl9hbmNob3IiLCJzb3VyY2VfYmVnaW4iOjQwNywic291cmNlX2VuZCI6NDE2LCJ0YXJnZXRfYmVnaW4iOjE2MDEsInRhcmdldF9lbmQiOjE2MTAsImVkZ2UiOiIva3l0aGUvZWRnZS9pbXB1dGVzIiwic291cmNlX3ZuYW1lIjp7ImNvcnB1cyI6ImNvcnB1cyIsInBhdGgiOiJ0aGlyZF9wYXJ0eS9jcnViaXQvY2NfYmluZGluZ3NfZnJvbV9ycy90ZXN0L2dvbGRlbi90YWdfZGVjbF9hbm5vdGF0aW9ucy5ycyIsImxhbmd1YWdlIjoicnVzdCJ9fSx7InR5cGUiOiJhbmNob3JfYW5jaG9yIiwic291cmNlX2JlZ2luIjo0NTYsInNvdXJjZV9lbmQiOjQ2NiwidGFyZ2V0X2JlZ2luIjoxODY4LCJ0YXJnZXRfZW5kIjoxODc4LCJlZGdlIjoiL2t5dGhlL2VkZ2UvaW1wdXRlcyIsInNvdXJjZV92bmFtZSI6eyJjb3JwdXMiOiJjb3JwdXMiLCJwYXRoIjoidGhpcmRfcGFydHkvY3J1Yml0L2NjX2JpbmRpbmdzX2Zyb21fcnMvdGVzdC9nb2xkZW4vdGFnX2RlY2xfYW5ub3RhdGlvbnMucnMiLCJsYW5ndWFnZSI6InJ1c3QifX0seyJ0eXBlIjoiYW5jaG9yX2FuY2hvciIsInNvdXJjZV9iZWdpbiI6NDc3LCJzb3VyY2VfZW5kIjo0NzgsInRhcmdldF9iZWdpbiI6MjY2NSwidGFyZ2V0X2VuZCI6MjY2NiwiZWRnZSI6Ii9reXRoZS9lZGdlL2ltcHV0ZXMiLCJzb3VyY2Vfdm5hbWUiOnsiY29ycHVzIjoiY29ycHVzIiwicGF0aCI6InRoaXJkX3BhcnR5L2NydWJpdC9jY19iaW5kaW5nc19mcm9tX3JzL3Rlc3QvZ29sZGVuL3RhZ19kZWNsX2Fubm90YXRpb25zLnJzIiwibGFuZ3VhZ2UiOiJydXN0In19XX0= +// This file contains Kythe metadata. eyJ0eXBlIjoia3l0aGUwIiwibWV0YSI6W3sidHlwZSI6ImFuY2hvcl9hbmNob3IiLCJzb3VyY2VfYmVnaW4iOjI2NCwic291cmNlX2VuZCI6MjcyLCJ0YXJnZXRfYmVnaW4iOjExNzUsInRhcmdldF9lbmQiOjExODMsImVkZ2UiOiIva3l0aGUvZWRnZS9pbXB1dGVzIiwic291cmNlX3ZuYW1lIjp7ImNvcnB1cyI6ImNvcnB1cyIsInBhdGgiOiJ0aGlyZF9wYXJ0eS9jcnViaXQvY2NfYmluZGluZ3NfZnJvbV9ycy90ZXN0L2dvbGRlbi90YWdfZGVjbF9hbm5vdGF0aW9ucy5ycyIsImxhbmd1YWdlIjoicnVzdCJ9fSx7InR5cGUiOiJhbmNob3JfYW5jaG9yIiwic291cmNlX2JlZ2luIjozMDksInNvdXJjZV9lbmQiOjMxOCwidGFyZ2V0X2JlZ2luIjoxMzE2LCJ0YXJnZXRfZW5kIjoxMzI1LCJlZGdlIjoiL2t5dGhlL2VkZ2UvaW1wdXRlcyIsInNvdXJjZV92bmFtZSI6eyJjb3JwdXMiOiJjb3JwdXMiLCJwYXRoIjoidGhpcmRfcGFydHkvY3J1Yml0L2NjX2JpbmRpbmdzX2Zyb21fcnMvdGVzdC9nb2xkZW4vdGFnX2RlY2xfYW5ub3RhdGlvbnMucnMiLCJsYW5ndWFnZSI6InJ1c3QifX0seyJ0eXBlIjoiYW5jaG9yX2FuY2hvciIsInNvdXJjZV9iZWdpbiI6MzU4LCJzb3VyY2VfZW5kIjozNjcsInRhcmdldF9iZWdpbiI6MTQ1NiwidGFyZ2V0X2VuZCI6MTQ2NSwiZWRnZSI6Ii9reXRoZS9lZGdlL2ltcHV0ZXMiLCJzb3VyY2Vfdm5hbWUiOnsiY29ycHVzIjoiY29ycHVzIiwicGF0aCI6InRoaXJkX3BhcnR5L2NydWJpdC9jY19iaW5kaW5nc19mcm9tX3JzL3Rlc3QvZ29sZGVuL3RhZ19kZWNsX2Fubm90YXRpb25zLnJzIiwibGFuZ3VhZ2UiOiJydXN0In19LHsidHlwZSI6ImFuY2hvcl9hbmNob3IiLCJzb3VyY2VfYmVnaW4iOjQwNywic291cmNlX2VuZCI6NDE2LCJ0YXJnZXRfYmVnaW4iOjE1OTYsInRhcmdldF9lbmQiOjE2MDUsImVkZ2UiOiIva3l0aGUvZWRnZS9pbXB1dGVzIiwic291cmNlX3ZuYW1lIjp7ImNvcnB1cyI6ImNvcnB1cyIsInBhdGgiOiJ0aGlyZF9wYXJ0eS9jcnViaXQvY2NfYmluZGluZ3NfZnJvbV9ycy90ZXN0L2dvbGRlbi90YWdfZGVjbF9hbm5vdGF0aW9ucy5ycyIsImxhbmd1YWdlIjoicnVzdCJ9fSx7InR5cGUiOiJhbmNob3JfYW5jaG9yIiwic291cmNlX2JlZ2luIjo0NTYsInNvdXJjZV9lbmQiOjQ2NiwidGFyZ2V0X2JlZ2luIjoxODYzLCJ0YXJnZXRfZW5kIjoxODczLCJlZGdlIjoiL2t5dGhlL2VkZ2UvaW1wdXRlcyIsInNvdXJjZV92bmFtZSI6eyJjb3JwdXMiOiJjb3JwdXMiLCJwYXRoIjoidGhpcmRfcGFydHkvY3J1Yml0L2NjX2JpbmRpbmdzX2Zyb21fcnMvdGVzdC9nb2xkZW4vdGFnX2RlY2xfYW5ub3RhdGlvbnMucnMiLCJsYW5ndWFnZSI6InJ1c3QifX0seyJ0eXBlIjoiYW5jaG9yX2FuY2hvciIsInNvdXJjZV9iZWdpbiI6NDc3LCJzb3VyY2VfZW5kIjo0NzgsInRhcmdldF9iZWdpbiI6MjY2MCwidGFyZ2V0X2VuZCI6MjY2MSwiZWRnZSI6Ii9reXRoZS9lZGdlL2ltcHV0ZXMiLCJzb3VyY2Vfdm5hbWUiOnsiY29ycHVzIjoiY29ycHVzIiwicGF0aCI6InRoaXJkX3BhcnR5L2NydWJpdC9jY19iaW5kaW5nc19mcm9tX3JzL3Rlc3QvZ29sZGVuL3RhZ19kZWNsX2Fubm90YXRpb25zLnJzIiwibGFuZ3VhZ2UiOiJydXN0In19XX0= diff --git a/cc_bindings_from_rs/test/golden/tag_decl_annotations_cc_api_impl.rs b/cc_bindings_from_rs/test/golden/tag_decl_annotations_cc_api_impl.rs index 3b50fd4df..4d368d631 100644 --- a/cc_bindings_from_rs/test/golden/tag_decl_annotations_cc_api_impl.rs +++ b/cc_bindings_from_rs/test/golden/tag_decl_annotations_cc_api_impl.rs @@ -4,7 +4,7 @@ // Automatically @generated C++ bindings for the following Rust crate: // tag_decl_annotations_rust_golden -// Features: assume_lifetimes, callables, check_default_initialized, experimental, fmt, supported, unsafe_view, wrapper +// Features: assume_lifetimes, callables, check_default_initialized, experimental, supported, unsafe_view, wrapper #![allow(unused_unsafe, deprecated, non_snake_case, unreachable_code)] #![allow(improper_ctypes_definitions)] diff --git a/cc_bindings_from_rs/test/golden/type_aliases_cc_api.h b/cc_bindings_from_rs/test/golden/type_aliases_cc_api.h index 1ebbed695..965956bd6 100644 --- a/cc_bindings_from_rs/test/golden/type_aliases_cc_api.h +++ b/cc_bindings_from_rs/test/golden/type_aliases_cc_api.h @@ -5,7 +5,7 @@ // Automatically @generated C++ bindings for the following Rust crate: // type_aliases_rust_golden // Features: assume_lifetimes, callables, check_default_initialized, -// experimental, fmt, supported, unsafe_view, wrapper +// experimental, supported, unsafe_view, wrapper // clang-format off #ifndef THIRD_PARTY_CRUBIT_CC_BINDINGS_FROM_RS_TEST_GOLDEN_TYPE_ALIASES_RUST_GOLDEN diff --git a/cc_bindings_from_rs/test/golden/type_aliases_cc_api_impl.rs b/cc_bindings_from_rs/test/golden/type_aliases_cc_api_impl.rs index 4de72f4da..9be869f98 100644 --- a/cc_bindings_from_rs/test/golden/type_aliases_cc_api_impl.rs +++ b/cc_bindings_from_rs/test/golden/type_aliases_cc_api_impl.rs @@ -4,7 +4,7 @@ // Automatically @generated C++ bindings for the following Rust crate: // type_aliases_rust_golden -// Features: assume_lifetimes, callables, check_default_initialized, experimental, fmt, supported, unsafe_view, wrapper +// Features: assume_lifetimes, callables, check_default_initialized, experimental, supported, unsafe_view, wrapper #![allow(unused_unsafe, deprecated, non_snake_case, unreachable_code)] #![allow(improper_ctypes_definitions)] diff --git a/cc_bindings_from_rs/test/golden/uses_cc_api.h b/cc_bindings_from_rs/test/golden/uses_cc_api.h index e4becb3ab..42a0572e5 100644 --- a/cc_bindings_from_rs/test/golden/uses_cc_api.h +++ b/cc_bindings_from_rs/test/golden/uses_cc_api.h @@ -5,7 +5,7 @@ // Automatically @generated C++ bindings for the following Rust crate: // uses_rust_golden // Features: assume_lifetimes, callables, check_default_initialized, -// experimental, fmt, supported, unsafe_view, wrapper +// experimental, supported, unsafe_view, wrapper // clang-format off #ifndef THIRD_PARTY_CRUBIT_CC_BINDINGS_FROM_RS_TEST_GOLDEN_USES_RUST_GOLDEN diff --git a/cc_bindings_from_rs/test/golden/uses_cc_api_impl.rs b/cc_bindings_from_rs/test/golden/uses_cc_api_impl.rs index 86ec519c3..b9eb19796 100644 --- a/cc_bindings_from_rs/test/golden/uses_cc_api_impl.rs +++ b/cc_bindings_from_rs/test/golden/uses_cc_api_impl.rs @@ -4,7 +4,7 @@ // Automatically @generated C++ bindings for the following Rust crate: // uses_rust_golden -// Features: assume_lifetimes, callables, check_default_initialized, experimental, fmt, supported, unsafe_view, wrapper +// Features: assume_lifetimes, callables, check_default_initialized, experimental, supported, unsafe_view, wrapper #![allow(unused_unsafe, deprecated, non_snake_case, unreachable_code)] #![allow(improper_ctypes_definitions)] diff --git a/cc_bindings_from_rs/test/primitive_types/primitive_types_cc_api.h b/cc_bindings_from_rs/test/primitive_types/primitive_types_cc_api.h index 6b4e77ce7..bad08452a 100644 --- a/cc_bindings_from_rs/test/primitive_types/primitive_types_cc_api.h +++ b/cc_bindings_from_rs/test/primitive_types/primitive_types_cc_api.h @@ -5,7 +5,7 @@ // Automatically @generated C++ bindings for the following Rust crate: // primitive_types_golden // Features: assume_lifetimes, callables, check_default_initialized, -// experimental, fmt, supported, unsafe_view, wrapper +// experimental, supported, unsafe_view, wrapper // clang-format off #ifndef THIRD_PARTY_CRUBIT_CC_BINDINGS_FROM_RS_TEST_PRIMITIVE_TYPES_PRIMITIVE_TYPES_GOLDEN diff --git a/cc_bindings_from_rs/test/primitive_types/primitive_types_cc_api_impl.rs b/cc_bindings_from_rs/test/primitive_types/primitive_types_cc_api_impl.rs index 5011d4147..af72032cd 100644 --- a/cc_bindings_from_rs/test/primitive_types/primitive_types_cc_api_impl.rs +++ b/cc_bindings_from_rs/test/primitive_types/primitive_types_cc_api_impl.rs @@ -4,7 +4,7 @@ // Automatically @generated C++ bindings for the following Rust crate: // primitive_types_golden -// Features: assume_lifetimes, callables, check_default_initialized, experimental, fmt, supported, unsafe_view, wrapper +// Features: assume_lifetimes, callables, check_default_initialized, experimental, supported, unsafe_view, wrapper #![allow(unused_unsafe, deprecated, non_snake_case, unreachable_code)] #![allow(improper_ctypes_definitions)] diff --git a/cc_bindings_from_rs/test/traits/traits_cc_api.h b/cc_bindings_from_rs/test/traits/traits_cc_api.h index 3b2a3ac43..93f54048c 100644 --- a/cc_bindings_from_rs/test/traits/traits_cc_api.h +++ b/cc_bindings_from_rs/test/traits/traits_cc_api.h @@ -5,7 +5,7 @@ // Automatically @generated C++ bindings for the following Rust crate: // traits_golden // Features: assume_lifetimes, callables, check_default_initialized, -// experimental, fmt, supported, unsafe_view, wrapper +// experimental, supported, unsafe_view, wrapper // clang-format off #ifndef THIRD_PARTY_CRUBIT_CC_BINDINGS_FROM_RS_TEST_TRAITS_TRAITS_GOLDEN diff --git a/cc_bindings_from_rs/test/traits/traits_cc_api_impl.rs b/cc_bindings_from_rs/test/traits/traits_cc_api_impl.rs index 3a2c4b061..449b6d04e 100644 --- a/cc_bindings_from_rs/test/traits/traits_cc_api_impl.rs +++ b/cc_bindings_from_rs/test/traits/traits_cc_api_impl.rs @@ -4,7 +4,7 @@ // Automatically @generated C++ bindings for the following Rust crate: // traits_golden -// Features: assume_lifetimes, callables, check_default_initialized, experimental, fmt, supported, unsafe_view, wrapper +// Features: assume_lifetimes, callables, check_default_initialized, experimental, supported, unsafe_view, wrapper #![allow(unused_unsafe, deprecated, non_snake_case, unreachable_code)] #![allow(improper_ctypes_definitions)] diff --git a/cc_bindings_from_rs/test/tuples/tuples_cc_api.h b/cc_bindings_from_rs/test/tuples/tuples_cc_api.h index 5ca171fdd..87a87b79d 100644 --- a/cc_bindings_from_rs/test/tuples/tuples_cc_api.h +++ b/cc_bindings_from_rs/test/tuples/tuples_cc_api.h @@ -5,7 +5,7 @@ // Automatically @generated C++ bindings for the following Rust crate: // tuples_golden // Features: assume_lifetimes, callables, check_default_initialized, -// experimental, fmt, supported, unsafe_view, wrapper +// experimental, supported, unsafe_view, wrapper // clang-format off #ifndef THIRD_PARTY_CRUBIT_CC_BINDINGS_FROM_RS_TEST_TUPLES_TUPLES_GOLDEN diff --git a/cc_bindings_from_rs/test/tuples/tuples_cc_api_impl.rs b/cc_bindings_from_rs/test/tuples/tuples_cc_api_impl.rs index 44a8d7fe0..9c0b599d3 100644 --- a/cc_bindings_from_rs/test/tuples/tuples_cc_api_impl.rs +++ b/cc_bindings_from_rs/test/tuples/tuples_cc_api_impl.rs @@ -4,7 +4,7 @@ // Automatically @generated C++ bindings for the following Rust crate: // tuples_golden -// Features: assume_lifetimes, callables, check_default_initialized, experimental, fmt, supported, unsafe_view, wrapper +// Features: assume_lifetimes, callables, check_default_initialized, experimental, supported, unsafe_view, wrapper #![allow(unused_unsafe, deprecated, non_snake_case, unreachable_code)] #![allow(improper_ctypes_definitions)] diff --git a/common/crubit_feature.rs b/common/crubit_feature.rs index 88cb71319..436a2e3f4 100644 --- a/common/crubit_feature.rs +++ b/common/crubit_feature.rs @@ -28,9 +28,6 @@ flagset::flags! { /// Disable AssumeLifetimes (useful for :experimental). NoAssumeLifetimes, - /// Enable formatting to Rust via C++. - Fmt, - /// Enable experimental support for `rs_std::DynCallable` and `absl::AnyInvocable`. Callables, @@ -55,7 +52,6 @@ impl CrubitFeature { Self::Experimental => "experimental", Self::AssumeLifetimes => "assume_lifetimes", Self::NoAssumeLifetimes => "no_assume_lifetimes", - Self::Fmt => "fmt", Self::Callables => "callables", Self::UnsafeView => "unsafe_view", Self::CheckDefaultInitialized => "check_default_initialized", @@ -72,7 +68,6 @@ impl CrubitFeature { Self::Experimental => "//features:experimental", Self::AssumeLifetimes => "//features:assume_lifetimes", Self::NoAssumeLifetimes => "//features:no_assume_lifetimes", - Self::Fmt => "//features:fmt", Self::Callables => "//features:callables", Self::UnsafeView => "//features:unsafe_view", Self::CheckDefaultInitialized => { @@ -92,7 +87,6 @@ pub fn named_features(name: &[u8]) -> Option> { b"experimental" => CrubitFeature::Experimental.into(), b"assume_lifetimes" => CrubitFeature::AssumeLifetimes.into(), b"no_assume_lifetimes" => CrubitFeature::NoAssumeLifetimes.into(), - b"fmt" => CrubitFeature::Fmt.into(), b"callables" => CrubitFeature::Callables.into(), b"unsafe_view" => CrubitFeature::UnsafeView.into(), b"check_default_initialized" => CrubitFeature::CheckDefaultInitialized.into(), @@ -206,7 +200,6 @@ mod tests { | CrubitFeature::Wrapper | CrubitFeature::Experimental | CrubitFeature::AssumeLifetimes - | CrubitFeature::Fmt | CrubitFeature::Callables | CrubitFeature::UnsafeView | CrubitFeature::CheckDefaultInitialized @@ -235,7 +228,6 @@ mod tests { | CrubitFeature::Wrapper | CrubitFeature::Experimental | CrubitFeature::AssumeLifetimes - | CrubitFeature::Fmt | CrubitFeature::Callables | CrubitFeature::UnsafeView | CrubitFeature::CheckDefaultInitialized @@ -252,7 +244,6 @@ mod tests { | CrubitFeature::Wrapper | CrubitFeature::Experimental | CrubitFeature::AssumeLifetimes - | CrubitFeature::Fmt | CrubitFeature::Callables | CrubitFeature::UnsafeView | CrubitFeature::CheckDefaultInitialized @@ -270,7 +261,6 @@ mod tests { CrubitFeature::Supported | CrubitFeature::Wrapper | CrubitFeature::Experimental - | CrubitFeature::Fmt | CrubitFeature::Callables | CrubitFeature::UnsafeView | CrubitFeature::CheckDefaultInitialized diff --git a/features/BUILD b/features/BUILD index c1697325e..c4581f6a3 100644 --- a/features/BUILD +++ b/features/BUILD @@ -63,16 +63,6 @@ crubit_feature_hint( visibility = ["//visibility:public"], ) -# A feature set enabling bindings to Rust's `Display` trait. -# -# See crubit.rs-features#other -crubit_feature_hint( - name = "fmt", - compatible_with = ["//buildenv/target:non_prod"], - crubit_features = SUPPORTED_FEATURES + ["fmt"], - visibility = ["//visibility:public"], -) - # A feature set containing experimental Crubit features, in addition to the officially supported # features. # diff --git a/rs_bindings_from_cc/decl_importer.h b/rs_bindings_from_cc/decl_importer.h index 7c10b233e..b9b73a6de 100644 --- a/rs_bindings_from_cc/decl_importer.h +++ b/rs_bindings_from_cc/decl_importer.h @@ -182,9 +182,6 @@ class ImportContext { virtual bool AreAssumedLifetimesEnabledForTarget( const BazelLabel& label) const = 0; - // Returns true iff `label` has opted in to formatter detection. - virtual bool IsFmtEnabledForTarget(const BazelLabel& label) const = 0; - // Returns true iff `label` has opted in to marking classes with // `[[gsl::Pointer]]` as unsafe. virtual bool IsUnsafeViewEnabledForTarget(const BazelLabel& label) const = 0; diff --git a/rs_bindings_from_cc/generate_bindings/generate_enum.rs b/rs_bindings_from_cc/generate_bindings/generate_enum.rs index e4a0acca6..7efdc24ae 100644 --- a/rs_bindings_from_cc/generate_bindings/generate_enum.rs +++ b/rs_bindings_from_cc/generate_bindings/generate_enum.rs @@ -6,7 +6,6 @@ use arc_anyhow::Result; use code_gen_utils::{format_cc_ident, make_rs_ident}; -use crubit_feature::CrubitFeature; use database::code_snippet::{ integer_constant_to_token_stream, ApiSnippets, DisplayImpl, Feature, GeneratedItem, Thunk, ThunkImpl, @@ -55,33 +54,29 @@ pub fn generate_enum(db: &BindingsGenerator, enum_: Rc) -> Result = vec![]; let mut cc_details: Vec = vec![]; - let display_impl: TokenStream = - if db.ir().target_crubit_features(&enum_.owning_target).contains(CrubitFeature::Fmt) - && enum_.detected_formatter - { - let fmt_fn_name = make_rs_ident(&format!( - "__crubit_fmt__{type_name}_{odr_suffix}", - type_name = enum_.cc_name, - odr_suffix = enum_.owning_target.convert_to_cc_identifier(), - )); - let crate_root_path = db.ir().crate_root_path_tokens(); - let namespace_qualifier = db.ir().namespace_qualifier(&enum_).format_for_rs(); - let qualified_name = { - quote! { #crate_root_path:: #namespace_qualifier #name } - }; - thunks - .push(Thunk::Fmt { fmt_fn_name: fmt_fn_name.clone(), param_type: qualified_name }); - cc_details.push(ThunkImpl::Fmt { - fmt_fn_name: fmt_fn_name.clone(), - param_type: fully_qualified_cc_name.clone(), - }); - let display_impl = DisplayImpl { type_name: name.clone(), fmt_fn_name }; - quote! { - #display_impl - } - } else { - quote! {} + let display_impl: TokenStream = if enum_.detected_formatter { + let fmt_fn_name = make_rs_ident(&format!( + "__crubit_fmt__{type_name}_{odr_suffix}", + type_name = enum_.cc_name, + odr_suffix = enum_.owning_target.convert_to_cc_identifier(), + )); + let crate_root_path = db.ir().crate_root_path_tokens(); + let namespace_qualifier = db.ir().namespace_qualifier(&enum_).format_for_rs(); + let qualified_name = { + quote! { #crate_root_path:: #namespace_qualifier #name } }; + thunks.push(Thunk::Fmt { fmt_fn_name: fmt_fn_name.clone(), param_type: qualified_name }); + cc_details.push(ThunkImpl::Fmt { + fmt_fn_name: fmt_fn_name.clone(), + param_type: fully_qualified_cc_name.clone(), + }); + let display_impl = DisplayImpl { type_name: name.clone(), fmt_fn_name }; + quote! { + #display_impl + } + } else { + quote! {} + }; let annotation = format!("CRUBIT_ANNOTATE: cpp_type={fully_qualified_cc_name}"); let item = quote! { diff --git a/rs_bindings_from_cc/generate_bindings/generate_enum_test.rs b/rs_bindings_from_cc/generate_bindings/generate_enum_test.rs index b31e1c537..caf9f3e38 100644 --- a/rs_bindings_from_cc/generate_bindings/generate_enum_test.rs +++ b/rs_bindings_from_cc/generate_bindings/generate_enum_test.rs @@ -4,7 +4,7 @@ use arc_anyhow::Result; use googletest::prelude::gtest; -use multiplatform_ir_testing::{ir_from_cc, ir_from_fmt_cc}; +use multiplatform_ir_testing::ir_from_cc; use quote::quote; use test_generators::generate_bindings_tokens_for_test; use token_stream_matchers::{assert_rs_matches, assert_rs_not_matches}; @@ -283,7 +283,7 @@ fn test_generate_enum_bool_alias() -> Result<()> { #[gtest] fn test_display() -> Result<()> { - let ir = ir_from_fmt_cc( + let ir = ir_from_cc( r#" enum class Enum { kEnum, diff --git a/rs_bindings_from_cc/generate_bindings/generate_struct_and_union.rs b/rs_bindings_from_cc/generate_bindings/generate_struct_and_union.rs index a82df0ad7..5578e7b5b 100644 --- a/rs_bindings_from_cc/generate_bindings/generate_struct_and_union.rs +++ b/rs_bindings_from_cc/generate_bindings/generate_struct_and_union.rs @@ -626,9 +626,7 @@ pub fn generate_record(db: &BindingsGenerator, record: Rc) -> Result Result<()> { #[gtest] fn test_display() -> Result<()> { - let ir = ir_from_fmt_cc( + let ir = ir_from_cc( r#" struct CanDisplay { template diff --git a/rs_bindings_from_cc/generate_bindings/lib.rs b/rs_bindings_from_cc/generate_bindings/lib.rs index 909b2fe62..3a57c0548 100644 --- a/rs_bindings_from_cc/generate_bindings/lib.rs +++ b/rs_bindings_from_cc/generate_bindings/lib.rs @@ -864,11 +864,7 @@ fn generate_rs_api_impl_includes( } } - if ir - .target_crubit_features(&record.owning_target) - .contains(crubit_feature::CrubitFeature::Fmt) - && record.detected_formatter - { + if record.detected_formatter { internal_includes.insert(CcInclude::SupportLibHeader( crubit_support_path_format.clone(), "rs_std/lossy_formatter_for_bindings.h".into(), @@ -881,9 +877,7 @@ fn generate_rs_api_impl_includes( } for e in ir.enums() { - if ir.target_crubit_features(&e.owning_target).contains(crubit_feature::CrubitFeature::Fmt) - && e.detected_formatter - { + if e.detected_formatter { internal_includes.insert(CcInclude::SupportLibHeader( crubit_support_path_format.clone(), "rs_std/lossy_formatter_for_bindings.h".into(), diff --git a/rs_bindings_from_cc/generate_bindings/multiplatform_ir_testing.rs b/rs_bindings_from_cc/generate_bindings/multiplatform_ir_testing.rs index ac2374fba..a1baac4f9 100644 --- a/rs_bindings_from_cc/generate_bindings/multiplatform_ir_testing.rs +++ b/rs_bindings_from_cc/generate_bindings/multiplatform_ir_testing.rs @@ -42,13 +42,3 @@ pub fn ir_from_assumed_lifetimes_cc(program: &str) -> Result { /*kythe_annotations=*/ false, ) } - -pub fn ir_from_fmt_cc(program: &str) -> Result { - ir_testing::ir_from_cc_dependency( - multiplatform_testing::test_platform(), - program, - "// empty header", - Some("fmt"), - /*kythe_annotations=*/ false, - ) -} diff --git a/rs_bindings_from_cc/importer.cc b/rs_bindings_from_cc/importer.cc index 229f3c88f..a10cd6f6a 100644 --- a/rs_bindings_from_cc/importer.cc +++ b/rs_bindings_from_cc/importer.cc @@ -993,10 +993,6 @@ bool Importer::AreAssumedLifetimesEnabledForTarget( return IsFeatureEnabledForTarget(label, "assume_lifetimes"); } -bool Importer::IsFmtEnabledForTarget(const BazelLabel& label) const { - return IsFeatureEnabledForTarget(label, "fmt"); -} - bool Importer::IsUnsafeViewEnabledForTarget(const BazelLabel& label) const { return IsFeatureEnabledForTarget(label, "unsafe_view"); } diff --git a/rs_bindings_from_cc/importer.h b/rs_bindings_from_cc/importer.h index 0b20e0bb2..55e75d154 100644 --- a/rs_bindings_from_cc/importer.h +++ b/rs_bindings_from_cc/importer.h @@ -123,7 +123,6 @@ class Importer final : public ImportContext { bool IsCrubitEnabledForTarget(const BazelLabel& label) const override; bool AreAssumedLifetimesEnabledForTarget( const BazelLabel& label) const override; - bool IsFmtEnabledForTarget(const BazelLabel& label) const override; bool IsUnsafeViewEnabledForTarget(const BazelLabel& label) const override; absl::StatusOr DetectFormatter( const clang::TypeDecl& decl) const override; diff --git a/rs_bindings_from_cc/importer_test.cc b/rs_bindings_from_cc/importer_test.cc index 7959d6417..4cc1c85ea 100644 --- a/rs_bindings_from_cc/importer_test.cc +++ b/rs_bindings_from_cc/importer_test.cc @@ -1047,24 +1047,20 @@ TEST(ImporterTest, CrashRepro_AutoInvolvingTemplate) { ASSERT_OK_AND_ASSIGN(IR ir, IrFromCc({file})); } -absl::StatusOr IrFromCcWithFmt(absl::string_view program) { - return IrFromCc(IrFromCcOptions{ - .extra_source_code_for_testing = program, - .crubit_features = {{BazelLabel{"//test:testing_target"}, {"fmt"}}}}); -} - TEST(ImporterTest, DetectsFormatterAsAbslStringify) { - ASSERT_OK_AND_ASSIGN(const IR ir, IrFromCcWithFmt(R"cc( - struct ByRef { - template - friend void AbslStringify(Sink&, const ByRef&) {} - }; - struct ByValue { - template - friend void AbslStringify(Sink&, ByValue) {} - }; - struct NoFormatter {}; - )cc")); + ASSERT_OK_AND_ASSIGN( + const IR ir, IrFromCc({R"cc( + struct ByRef { + template + friend void AbslStringify(Sink&, + const ByRef&) {} + }; + struct ByValue { + template + friend void AbslStringify(Sink&, ByValue) {} + }; + struct NoFormatter {}; + )cc"})); EXPECT_THAT( ir.get_items_if(), AllOf( @@ -1075,27 +1071,28 @@ TEST(ImporterTest, DetectsFormatterAsAbslStringify) { } TEST(ImporterTest, DetectsFormatterAsOstream) { - ASSERT_OK_AND_ASSIGN( // - const IR ir, // - IrFromCcWithFmt(R"cc( - namespace std { - template - struct char_traits {}; - template > - struct basic_ostream {}; - using ostream = basic_ostream; - } // namespace std - - struct ByRef { - friend std::ostream& operator<<(std::ostream& out, const ByRef&) { - return out; - } - }; - struct ByValue { - friend std::ostream& operator<<(std::ostream& out, ByValue) { return out; } - }; - struct NoFormatter {}; - )cc")); + ASSERT_OK_AND_ASSIGN( + const IR ir, + IrFromCc( // + {R"cc( + namespace std { + template + struct char_traits {}; + template > + struct basic_ostream {}; + using ostream = basic_ostream; + } // namespace std + + struct ByRef { + friend std::ostream& operator<<(std::ostream& out, const ByRef&) { + return out; + } + }; + struct ByValue { + friend std::ostream& operator<<(std::ostream& out, ByValue) { return out; } + }; + struct NoFormatter {}; + )cc"})); EXPECT_THAT( ir.get_items_if(), AllOf( @@ -1106,63 +1103,71 @@ TEST(ImporterTest, DetectsFormatterAsOstream) { } TEST(ImporterTest, DetectsFormatterAsPrinterOfBase) { - ASSERT_OK_AND_ASSIGN(const IR ir, IrFromCcWithFmt(R"cc( - struct Base { - template - friend void AbslStringify(Sink&, const Base&) {} - }; - struct Derived : Base {}; - )cc")); + ASSERT_OK_AND_ASSIGN( + const IR ir, IrFromCc({R"cc( + struct Base { + template + friend void AbslStringify(Sink&, const Base&) { + } + }; + struct Derived : Base {}; + )cc"})); EXPECT_THAT( ir.get_items_if(), Contains(Pointee(AllOf(RsNameIs("Derived"), HasDetectedFormatter())))); } TEST(ImporterTest, DetectsFormatterAsPrinterInCrtpBase) { - ASSERT_OK_AND_ASSIGN(const IR ir, IrFromCcWithFmt(R"cc( - template - struct Base { - template - friend void AbslStringify(Sink&, const This&) {} - }; - struct Derived : private Base {}; - )cc")); + ASSERT_OK_AND_ASSIGN( + const IR ir, IrFromCc({R"cc( + template + struct Base { + template + friend void AbslStringify(Sink&, const This&) { + } + }; + struct Derived : private Base {}; + )cc"})); EXPECT_THAT( ir.get_items_if(), Contains(Pointee(AllOf(RsNameIs("Derived"), HasDetectedFormatter())))); } TEST(ImporterTest, DetectsEnumFormatter) { - ASSERT_OK_AND_ASSIGN(const IR ir, IrFromCcWithFmt(R"cc( - enum class Foo { - kFoo, - }; - template - void AbslStringify(Sink&, Foo) {} - )cc")); + ASSERT_OK_AND_ASSIGN(const IR ir, IrFromCc({R"cc( + enum class Foo { + kFoo, + }; + template + void AbslStringify(Sink&, Foo) { + } + )cc"})); EXPECT_THAT( ir.get_items_if(), Contains(Pointee(AllOf(RsNameIs("Foo"), HasDetectedFormatter())))); } TEST(ImporterTest, DoesNotDetectAbslStringifyMemberFunctionAsFormatter) { - ASSERT_OK_AND_ASSIGN(const IR ir, IrFromCcWithFmt(R"cc( - struct Foo { - template - static void AbslStringify(Sink&, const Foo&) {} - }; - )cc")); + ASSERT_OK_AND_ASSIGN( + const IR ir, IrFromCc({R"cc( + struct Foo { + template + static void AbslStringify(Sink&, const Foo&) {} + }; + )cc"})); EXPECT_THAT( ir.get_items_if(), Contains(Pointee(AllOf(RsNameIs("Foo"), Not(HasDetectedFormatter()))))); } TEST(ImporterTest, DoesNotDetectOperatorLeftShiftWrongTypesAsFormatter) { - ASSERT_OK_AND_ASSIGN(const IR ir, IrFromCcWithFmt(R"cc( - struct Foo { - friend Foo& operator<<(Foo& foo, int) { return foo; } - }; - )cc")); + ASSERT_OK_AND_ASSIGN( // + const IR ir, // + IrFromCc({R"cc( + struct Foo { + friend Foo& operator<<(Foo& foo, int) { return foo; } + }; + )cc"})); EXPECT_THAT( ir.get_items_if(), Contains(Pointee(AllOf(RsNameIs("Foo"), Not(HasDetectedFormatter()))))); @@ -1170,29 +1175,31 @@ TEST(ImporterTest, DoesNotDetectOperatorLeftShiftWrongTypesAsFormatter) { TEST(ImporterTest, OverridesDisplayForRecord) { ASSERT_OK_AND_ASSIGN( - const IR ir, IrFromCcWithFmt(R"cc( - template - struct enable_if {}; - - template <> - struct enable_if { - using type = void; - }; - - template - using enable_if_t = typename enable_if::type; - - template - struct [[clang::annotate("crubit_override_display", b)]] - MaybeFormattable { - // Use SFINAE so that `AbslStringify` isn't as easily detectable. - template - friend enable_if_t AbslStringify(Sink& sink, - const MaybeFormattable&) {} - }; - struct NotFormattable : MaybeFormattable {}; - struct Formattable : MaybeFormattable {}; - )cc")); + const IR ir, + IrFromCc({R"cc( + template + struct enable_if {}; + + template <> + struct enable_if { + using type = void; + }; + + template + using enable_if_t = typename enable_if::type; + + template + struct [[clang::annotate("crubit_override_display", b)]] + MaybeFormattable { + // Use SFINAE so that `AbslStringify` isn't as easily + // detectable. + template + friend enable_if_t AbslStringify( + Sink& sink, const MaybeFormattable&) {} + }; + struct NotFormattable : MaybeFormattable {}; + struct Formattable : MaybeFormattable {}; + )cc"})); EXPECT_THAT(ir.get_items_if(), AllOf(Contains(Pointee(AllOf(RsNameIs("NotFormattable"), Not(HasDetectedFormatter())))), @@ -1202,32 +1209,38 @@ TEST(ImporterTest, OverridesDisplayForRecord) { TEST(ImporterTest, OverridesDisplayForEnum) { ASSERT_OK_AND_ASSIGN( - const IR ir, IrFromCcWithFmt(R"cc( - namespace std { - template - struct basic_ostream {}; - } // namespace std - - enum class [[clang::annotate("crubit_override_display", true)]] Foo { - kFoo, - }; - // Make this generic so that `operator<<` isn't as easily detectable. - template - auto& operator<<(std::basic_ostream& out, Foo) { - return out; - } - )cc")); + const IR ir, + IrFromCc({R"cc( + namespace std { + template + struct basic_ostream {}; + } // namespace std + + enum class [[clang::annotate("crubit_override_display", + true)]] Foo { + kFoo, + }; + // Make this generic so that `operator<<` isn't as easily + // detectable. + template + auto& operator<<(std::basic_ostream& out, Foo) { + return out; + } + )cc"})); EXPECT_THAT( ir.get_items_if(), Contains(Pointee(AllOf(RsNameIs("Foo"), HasDetectedFormatter())))); } TEST(ImporterTest, OverrideDisplayInconsistent) { - ASSERT_OK_AND_ASSIGN(const IR ir, IrFromCcWithFmt(R"cc( - struct [[clang::annotate("crubit_override_display", - true)]] Inconsistent; - struct [[clang::annotate("crubit_override_display", false)]] Inconsistent {}; - )cc")); + ASSERT_OK_AND_ASSIGN( + const IR ir, // + IrFromCc( // + {R"cc( + struct [[clang::annotate("crubit_override_display", + true)]] Inconsistent; + struct [[clang::annotate("crubit_override_display", false)]] Inconsistent {}; + )cc"})); EXPECT_THAT(ir.get_items_if(), ElementsAre(Pointee( AllOf(UnsupportedItemNameIs("Inconsistent"), @@ -1238,10 +1251,12 @@ TEST(ImporterTest, OverrideDisplayInconsistent) { } TEST(ImporterTest, OverrideDisplayMissingArgs) { - ASSERT_OK_AND_ASSIGN(const IR ir, IrFromCcWithFmt(R"cc( - struct [[clang::annotate("crubit_override_display")]] - MissingArgs {}; - )cc")); + ASSERT_OK_AND_ASSIGN( + const IR ir, + IrFromCc({R"cc( + struct [[clang::annotate("crubit_override_display")]] + MissingArgs {}; + )cc"})); EXPECT_THAT(ir.get_items_if(), ElementsAre(Pointee( AllOf(UnsupportedItemNameIs("MissingArgs"), @@ -1251,11 +1266,12 @@ TEST(ImporterTest, OverrideDisplayMissingArgs) { } TEST(ImporterTest, OverrideDisplayMultipleArgs) { - ASSERT_OK_AND_ASSIGN( - const IR ir, IrFromCcWithFmt(R"cc( - struct [[clang::annotate("crubit_override_display", true, false)]] - MultipleArgs {}; - )cc")); + ASSERT_OK_AND_ASSIGN(const IR ir, + IrFromCc({R"cc( + struct [[clang::annotate( + "crubit_override_display", true, false)]] + MultipleArgs {}; + )cc"})); EXPECT_THAT(ir.get_items_if(), ElementsAre(Pointee( AllOf(UnsupportedItemNameIs("MultipleArgs"), @@ -1266,10 +1282,11 @@ TEST(ImporterTest, OverrideDisplayMultipleArgs) { TEST(ImporterTest, OverrideDisplayWrongArgType) { ASSERT_OK_AND_ASSIGN( - const IR ir, IrFromCcWithFmt(R"cc( - struct [[clang::annotate("crubit_override_display", "foo")]] - WrongArgType {}; - )cc")); + const IR ir, + IrFromCc({R"cc( + struct [[clang::annotate("crubit_override_display", "foo")]] + WrongArgType {}; + )cc"})); EXPECT_THAT(ir.get_items_if(), ElementsAre(Pointee( AllOf(UnsupportedItemNameIs("WrongArgType"), diff --git a/rs_bindings_from_cc/importers/cxx_record.cc b/rs_bindings_from_cc/importers/cxx_record.cc index d81d16e94..af2cf67cf 100644 --- a/rs_bindings_from_cc/importers/cxx_record.cc +++ b/rs_bindings_from_cc/importers/cxx_record.cc @@ -1138,14 +1138,10 @@ std::optional CXXRecordDeclImporter::Import( } } - bool fmt_enabled = ictx_.IsFmtEnabledForTarget(owning_target); - absl::StatusOr detected_formatter = false; - if (fmt_enabled) { - detected_formatter = ictx_.DetectFormatter(*record_decl); - if (!detected_formatter.ok()) { - return unsupported( - FormattedError::FromStatus(std::move(detected_formatter).status())); - } + absl::StatusOr detected_formatter = ictx_.DetectFormatter(*record_decl); + if (!detected_formatter.ok()) { + return unsupported( + FormattedError::FromStatus(std::move(detected_formatter).status())); } auto record = Record{ diff --git a/rs_bindings_from_cc/importers/enum.cc b/rs_bindings_from_cc/importers/enum.cc index 2de0c2c07..7e647b2cd 100644 --- a/rs_bindings_from_cc/importers/enum.cc +++ b/rs_bindings_from_cc/importers/enum.cc @@ -146,14 +146,10 @@ std::optional EnumDeclImporter::Import(clang::EnumDecl* enum_decl) { } BazelLabel owning_target = ictx_.GetOwningTarget(enum_decl); - bool fmt_enabled = ictx_.IsFmtEnabledForTarget(owning_target); - absl::StatusOr detected_formatter = false; - if (fmt_enabled) { - detected_formatter = ictx_.DetectFormatter(*enum_decl); - if (!detected_formatter.ok()) { - return unsupported( - FormattedError::FromStatus(std::move(detected_formatter).status())); - } + absl::StatusOr detected_formatter = ictx_.DetectFormatter(*enum_decl); + if (!detected_formatter.ok()) { + return unsupported( + FormattedError::FromStatus(std::move(detected_formatter).status())); } ictx_.MarkAsSuccessfullyImported(enum_decl); diff --git a/rs_bindings_from_cc/ir_from_cc_test.rs b/rs_bindings_from_cc/ir_from_cc_test.rs index 03626eb4b..09a519428 100644 --- a/rs_bindings_from_cc/ir_from_cc_test.rs +++ b/rs_bindings_from_cc/ir_from_cc_test.rs @@ -43,16 +43,6 @@ fn ir_from_assumed_lifetimes_cc(program: &str) -> Result { ) } -fn ir_from_fmt_cc(program: &str) -> Result { - ir_testing::ir_from_cc_dependency( - multiplatform_testing::test_platform(), - program, - "// empty header", - Some("fmt"), - /*kythe_annotations=*/ false, - ) -} - #[gtest] fn test_function() { let ir = ir_from_cc("int f(int a, int b);").unwrap(); @@ -4685,7 +4675,7 @@ fn test_assumed_lifetimes_lifetime_capture_by_multiple_params() { #[gtest] fn test_detects_formatter() { - let ir = ir_from_fmt_cc( + let ir = ir_from_cc( r#" struct Foo { template diff --git a/rs_bindings_from_cc/test/display/BUILD b/rs_bindings_from_cc/test/display/BUILD index 85d7946b7..b51bfe9d6 100644 --- a/rs_bindings_from_cc/test/display/BUILD +++ b/rs_bindings_from_cc/test/display/BUILD @@ -17,7 +17,7 @@ cc_library( hdrs = ["displayables.h"], aspect_hints = [ ":displayables_rs", - "//features:fmt", + "//features:supported", ], deps = [ "//support:annotations", @@ -30,9 +30,6 @@ cc_library( additional_rust_srcs_for_crubit_bindings( name = "displayables_rs", srcs = ["displayables.rs"], - aspect_hints = [ - "//features:fmt", - ], ) golden_test( diff --git a/rs_bindings_from_cc/test/display/displayables_api.rs b/rs_bindings_from_cc/test/display/displayables_api.rs index ab0f4f218..6320a4779 100644 --- a/rs_bindings_from_cc/test/display/displayables_api.rs +++ b/rs_bindings_from_cc/test/display/displayables_api.rs @@ -4,7 +4,7 @@ // Automatically @generated Rust bindings for the following C++ target: // //rs_bindings_from_cc/test/display:displayables -// Features: fmt, supported +// Features: supported #![rustfmt::skip] #![feature(allocator_api, cfg_sanitize, custom_inner_attributes, negative_impls, register_tool)] diff --git a/rs_bindings_from_cc/test/display/displayables_api_impl.cc b/rs_bindings_from_cc/test/display/displayables_api_impl.cc index eccbc5f0d..4fbdef67f 100644 --- a/rs_bindings_from_cc/test/display/displayables_api_impl.cc +++ b/rs_bindings_from_cc/test/display/displayables_api_impl.cc @@ -4,7 +4,7 @@ // Automatically @generated Rust bindings for the following C++ target: // //rs_bindings_from_cc/test/display:displayables -// Features: fmt, supported +// Features: supported #include "support/bridge.h" #include "support/internal/cxx20_backports.h" diff --git a/rs_bindings_from_cc/test/struct/constructors/constructors_api_impl.cc b/rs_bindings_from_cc/test/struct/constructors/constructors_api_impl.cc index 804b09095..4a507cb86 100644 --- a/rs_bindings_from_cc/test/struct/constructors/constructors_api_impl.cc +++ b/rs_bindings_from_cc/test/struct/constructors/constructors_api_impl.cc @@ -4,7 +4,7 @@ // Automatically @generated Rust bindings for the following C++ target: // //rs_bindings_from_cc/test/struct/constructors:constructors -// Features: assume_lifetimes, callables, check_default_initialized, experimental, fmt, supported, unsafe_view, wrapper +// Features: assume_lifetimes, callables, check_default_initialized, experimental, supported, unsafe_view, wrapper #include "support/internal/cxx20_backports.h" #include "support/internal/offsetof.h" diff --git a/rs_bindings_from_cc/test/struct/constructors/constructors_rs_api.rs b/rs_bindings_from_cc/test/struct/constructors/constructors_rs_api.rs index 8926a235e..a0e084791 100644 --- a/rs_bindings_from_cc/test/struct/constructors/constructors_rs_api.rs +++ b/rs_bindings_from_cc/test/struct/constructors/constructors_rs_api.rs @@ -4,7 +4,7 @@ // Automatically @generated Rust bindings for the following C++ target: // //rs_bindings_from_cc/test/struct/constructors:constructors -// Features: assume_lifetimes, callables, check_default_initialized, experimental, fmt, supported, unsafe_view, wrapper +// Features: assume_lifetimes, callables, check_default_initialized, experimental, supported, unsafe_view, wrapper #![rustfmt::skip] #![feature( diff --git a/rs_bindings_from_cc/test/struct/inheritance/inherited_methods_rs_api.rs b/rs_bindings_from_cc/test/struct/inheritance/inherited_methods_rs_api.rs index 6cb141f95..71fc88a53 100644 --- a/rs_bindings_from_cc/test/struct/inheritance/inherited_methods_rs_api.rs +++ b/rs_bindings_from_cc/test/struct/inheritance/inherited_methods_rs_api.rs @@ -4,7 +4,7 @@ // Automatically @generated Rust bindings for the following C++ target: // //rs_bindings_from_cc/test/struct/inheritance:inherited_methods -// Features: assume_lifetimes, callables, check_default_initialized, experimental, fmt, supported, unsafe_view, wrapper +// Features: assume_lifetimes, callables, check_default_initialized, experimental, supported, unsafe_view, wrapper #![rustfmt::skip] #![feature( diff --git a/rs_bindings_from_cc/test/struct/methods_qualifiers/methods_qualifiers_api_impl.cc b/rs_bindings_from_cc/test/struct/methods_qualifiers/methods_qualifiers_api_impl.cc index 09e9e8488..32ebb05db 100644 --- a/rs_bindings_from_cc/test/struct/methods_qualifiers/methods_qualifiers_api_impl.cc +++ b/rs_bindings_from_cc/test/struct/methods_qualifiers/methods_qualifiers_api_impl.cc @@ -4,7 +4,7 @@ // Automatically @generated Rust bindings for the following C++ target: // //rs_bindings_from_cc/test/struct/methods_qualifiers:methods_qualifiers -// Features: callables, check_default_initialized, experimental, fmt, supported, unsafe_view, wrapper +// Features: callables, check_default_initialized, experimental, supported, unsafe_view, wrapper #include "support/internal/cxx20_backports.h" #include "support/internal/offsetof.h" diff --git a/rs_bindings_from_cc/test/struct/methods_qualifiers/methods_qualifiers_rs_api.rs b/rs_bindings_from_cc/test/struct/methods_qualifiers/methods_qualifiers_rs_api.rs index 691e4393f..cf7a77c7b 100644 --- a/rs_bindings_from_cc/test/struct/methods_qualifiers/methods_qualifiers_rs_api.rs +++ b/rs_bindings_from_cc/test/struct/methods_qualifiers/methods_qualifiers_rs_api.rs @@ -4,7 +4,7 @@ // Automatically @generated Rust bindings for the following C++ target: // //rs_bindings_from_cc/test/struct/methods_qualifiers:methods_qualifiers -// Features: callables, check_default_initialized, experimental, fmt, supported, unsafe_view, wrapper +// Features: callables, check_default_initialized, experimental, supported, unsafe_view, wrapper #![rustfmt::skip] #![feature( diff --git a/rs_bindings_from_cc/test/templates/type_alias/type_alias_api_impl.cc b/rs_bindings_from_cc/test/templates/type_alias/type_alias_api_impl.cc index 473da05d7..b3c377f70 100644 --- a/rs_bindings_from_cc/test/templates/type_alias/type_alias_api_impl.cc +++ b/rs_bindings_from_cc/test/templates/type_alias/type_alias_api_impl.cc @@ -4,7 +4,7 @@ // Automatically @generated Rust bindings for the following C++ target: // //rs_bindings_from_cc/test/templates/type_alias:type_alias -// Features: assume_lifetimes, callables, check_default_initialized, experimental, fmt, supported, unsafe_view, wrapper +// Features: assume_lifetimes, callables, check_default_initialized, experimental, supported, unsafe_view, wrapper #include "support/internal/cxx20_backports.h" #include "support/internal/offsetof.h" diff --git a/rs_bindings_from_cc/test/templates/type_alias/type_alias_rs_api.rs b/rs_bindings_from_cc/test/templates/type_alias/type_alias_rs_api.rs index f2f00b6aa..420d49ab2 100644 --- a/rs_bindings_from_cc/test/templates/type_alias/type_alias_rs_api.rs +++ b/rs_bindings_from_cc/test/templates/type_alias/type_alias_rs_api.rs @@ -4,7 +4,7 @@ // Automatically @generated Rust bindings for the following C++ target: // //rs_bindings_from_cc/test/templates/type_alias:type_alias -// Features: assume_lifetimes, callables, check_default_initialized, experimental, fmt, supported, unsafe_view, wrapper +// Features: assume_lifetimes, callables, check_default_initialized, experimental, supported, unsafe_view, wrapper #![rustfmt::skip] #![feature(allocator_api, cfg_sanitize, custom_inner_attributes, negative_impls)] diff --git a/rs_bindings_from_cc/test/templates/type_alias_access_rule/type_alias_access_rule_rs_api.rs b/rs_bindings_from_cc/test/templates/type_alias_access_rule/type_alias_access_rule_rs_api.rs index 278b3564d..e7c99b426 100644 --- a/rs_bindings_from_cc/test/templates/type_alias_access_rule/type_alias_access_rule_rs_api.rs +++ b/rs_bindings_from_cc/test/templates/type_alias_access_rule/type_alias_access_rule_rs_api.rs @@ -4,7 +4,7 @@ // Automatically @generated Rust bindings for the following C++ target: // //rs_bindings_from_cc/test/templates/type_alias_access_rule:type_alias_access_rule -// Features: assume_lifetimes, callables, check_default_initialized, experimental, fmt, supported, unsafe_view, wrapper +// Features: assume_lifetimes, callables, check_default_initialized, experimental, supported, unsafe_view, wrapper #![rustfmt::skip] #![feature(allocator_api, cfg_sanitize, custom_inner_attributes, negative_impls)] diff --git a/support/rs_std/BUILD b/support/rs_std/BUILD index ed2d49c6e..272f851df 100644 --- a/support/rs_std/BUILD +++ b/support/rs_std/BUILD @@ -236,7 +236,6 @@ crubit_rust_test( cc_bindings_from_rust( name = "lossy_formatter_cc", - aspect_hints = ["//features:fmt"], compatible_with = ["//buildenv/target:non_prod"], crate = ":lossy_formatter", ) @@ -244,7 +243,6 @@ cc_bindings_from_rust( cc_library( name = "lossy_formatter_for_bindings", hdrs = ["lossy_formatter_for_bindings.h"], - aspect_hints = ["//features:fmt"], compatible_with = ["//buildenv/target:non_prod"], visibility = ["//:__subpackages__"], deps = [":lossy_formatter_cc"],