fix: clang is too stupid to provide a deprecation warning for text_encoding

This commit is contained in:
Mateusz Pusz
2024-11-21 11:25:57 +01:00
parent c745e90dfd
commit 0c09008671
3 changed files with 20 additions and 10 deletions

View File

@ -220,13 +220,18 @@ template<std::intmax_t Num, std::intmax_t Den = 1, Dimension D>
[[nodiscard]] consteval Dimension auto cbrt(Dimension auto d) { return pow<1, 3>(d); } [[nodiscard]] consteval Dimension auto cbrt(Dimension auto d) { return pow<1, 3>(d); }
MP_UNITS_DIAGNOSTIC_PUSH
MP_UNITS_DIAGNOSTIC_IGNORE_DEPRECATED
struct dimension_symbol_formatting { struct dimension_symbol_formatting {
#if MP_UNITS_COMP_CLANG
// TODO prevents the deprecated usage in implicit copy constructor warning
character_set char_set = character_set::default_character_set;
#else
[[deprecated("Use `char_set` instead")]] character_set encoding = character_set::default_character_set; [[deprecated("Use `char_set` instead")]] character_set encoding = character_set::default_character_set;
MP_UNITS_DIAGNOSTIC_PUSH
MP_UNITS_DIAGNOSTIC_IGNORE_DEPRECATED
character_set char_set = encoding; character_set char_set = encoding;
MP_UNITS_DIAGNOSTIC_POP
#endif
}; };
MP_UNITS_DIAGNOSTIC_POP
MP_UNITS_EXPORT_END MP_UNITS_EXPORT_END

View File

@ -53,15 +53,20 @@ enum class unit_symbol_separator : std::int8_t {
default_separator = space default_separator = space
}; };
MP_UNITS_DIAGNOSTIC_PUSH
MP_UNITS_DIAGNOSTIC_IGNORE_DEPRECATED
struct unit_symbol_formatting { struct unit_symbol_formatting {
#if MP_UNITS_COMP_CLANG
// TODO prevents the deprecated usage in implicit copy constructor warning
character_set char_set = character_set::default_character_set;
#else
[[deprecated("Use `char_set` instead")]] character_set encoding = character_set::default_character_set; [[deprecated("Use `char_set` instead")]] character_set encoding = character_set::default_character_set;
MP_UNITS_DIAGNOSTIC_PUSH
MP_UNITS_DIAGNOSTIC_IGNORE_DEPRECATED
character_set char_set = encoding; character_set char_set = encoding;
MP_UNITS_DIAGNOSTIC_POP
#endif
unit_symbol_solidus solidus = unit_symbol_solidus::default_denominator; unit_symbol_solidus solidus = unit_symbol_solidus::default_denominator;
unit_symbol_separator separator = unit_symbol_separator::default_separator; unit_symbol_separator separator = unit_symbol_separator::default_separator;
}; };
MP_UNITS_DIAGNOSTIC_POP
} // namespace mp_units } // namespace mp_units

View File

@ -55,7 +55,7 @@ using v = cartesian_vector<double>;
TEST_CASE("dimension_symbol", "[dimension][symbol]") TEST_CASE("dimension_symbol", "[dimension][symbol]")
{ {
using enum text_encoding; using enum character_set;
std::ostringstream os; std::ostringstream os;
@ -67,14 +67,14 @@ TEST_CASE("dimension_symbol", "[dimension][symbol]")
SECTION("Portable mode") SECTION("Portable mode")
{ {
os << dimension_symbol<dimension_symbol_formatting{.encoding = portable}>(isq::power.dimension); os << dimension_symbol<dimension_symbol_formatting{.char_set = portable}>(isq::power.dimension);
CHECK(os.str() == "L^2MT^-3"); CHECK(os.str() == "L^2MT^-3");
} }
} }
TEST_CASE("unit_symbol", "[unit][symbol]") TEST_CASE("unit_symbol", "[unit][symbol]")
{ {
using enum text_encoding; using enum character_set;
using enum unit_symbol_solidus; using enum unit_symbol_solidus;
using enum unit_symbol_separator; using enum unit_symbol_separator;
@ -88,7 +88,7 @@ TEST_CASE("unit_symbol", "[unit][symbol]")
SECTION("Portable mode") SECTION("Portable mode")
{ {
os << unit_symbol<unit_symbol_formatting{.encoding = portable}>(m / s2); os << unit_symbol<unit_symbol_formatting{.char_set = portable}>(m / s2);
CHECK(os.str() == "m/s^2"); CHECK(os.str() == "m/s^2");
} }