[libc++][format] Improves compile-time diagnostics.
authorMark de Wever <koraq@xs4all.nl>
Sun, 4 Jun 2023 19:32:10 +0000 (21:32 +0200)
committerMark de Wever <koraq@xs4all.nl>
Tue, 18 Jul 2023 18:46:06 +0000 (20:46 +0200)
commitcf931d4fa56e38e0c806f5f628c5bab831a45991
tree0656f03bceecc997c7533f95cdd20feb6ab5790a
parentd8ba8741120eaf1118e96449e0ed972ef2e2ecec
[libc++][format] Improves compile-time diagnostics.

Then a std-format-spec option is invalid for a type the compile-time
validation will detect its usage and issue a diagnostic. Before it
validated after parsing the entire std-format-spec, which meant the
diagnostic was less precise. It would be possible to do this validation
run-time but that has a performance overhead. When using the format
family of functions, this would be unneeded overhead; the validation was
done at run-time. For the vformat family it would give better
diagnostics.

To avoid paying what you don't use, it has been decided to aim for the
better performance. It's more likely users will use the format family of
functions.

Depends on D155264

Reviewed By: #libc, ldionne

Differential Revision: https://reviews.llvm.org/D155364
libcxx/include/__format/parser_std_format_spec.h