Refactor precision parsing

This commit is contained in:
Victor Zverovich
2022-12-24 13:29:23 -08:00
parent fc96938345
commit 934c8e5f76
5 changed files with 126 additions and 152 deletions
+14 -4
View File
@@ -568,10 +568,20 @@ struct test_format_specs_handler {
}
}
constexpr void on_precision(int p) { precision = p; }
constexpr void on_dynamic_precision(fmt::detail::auto_id) {}
constexpr void on_dynamic_precision(int index) { precision_ref = index; }
constexpr void on_dynamic_precision(string_view) {}
constexpr void on_precision(const fmt::detail::dynamic_spec<char>& spec) {
switch (spec.kind) {
case fmt::detail::dynamic_spec_kind::none:
break;
case fmt::detail::dynamic_spec_kind::value:
precision = spec.value;
break;
case fmt::detail::dynamic_spec_kind::index:
precision_ref = spec.value;
break;
case fmt::detail::dynamic_spec_kind::name:
break;
}
}
constexpr void end_precision() {}
constexpr void on_type(fmt::presentation_type t) { type = t; }
+2 -2
View File
@@ -929,9 +929,9 @@ TEST(format_test, precision) {
"number is too big");
EXPECT_THROW_MSG((void)fmt::format(runtime("{0:."), 0), format_error,
"missing precision specifier");
"missing precision");
EXPECT_THROW_MSG((void)fmt::format(runtime("{0:.}"), 0), format_error,
"missing precision specifier");
"missing precision");
EXPECT_THROW_MSG((void)fmt::format(runtime("{0:.2"), 0), format_error,
"precision not allowed for this argument type");