mirror of
https://github.com/nlohmann/json.git
synced 2026-09-03 06:57:15 +00:00
Un-nest the run-length ternary in the string escaper
clang-tidy's readability-avoid-nested-conditional-operator (newly enforced by the ci_clang_tidy job's clang) rejected the nested ?: that picked the run length: EnsureAscii ? (is_ascii_copyable(...) ? scan : 0) : bulk. Compute it in an immediately-invoked lambda instead. The value stays const and the laziness is unchanged - the ascii scan still runs only on the ensure_ascii path when the first byte is copyable, and string_bulk_run only on the other path (EnsureAscii is a template bool, so the dead branch is folded away). Output is byte-for-byte identical; single_include regenerated. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01L1oJ2ggRHS37zeVe94QTA1 Signed-off-by: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -850,11 +850,16 @@ class serializer
|
||||
// for the scan. Without it, text whose characters all have to be
|
||||
// escaped - CJK under ensure_ascii, where every byte is >= 0x80 -
|
||||
// runs the scanner once per character only to be told zero.
|
||||
const std::size_t run = EnsureAscii
|
||||
? (is_ascii_copyable(data[i])
|
||||
? find_ascii_copyable_run(data + i, s.size() - i)
|
||||
: 0)
|
||||
: string_bulk_run(data + i, s.size() - i);
|
||||
const std::size_t run = [&]() -> std::size_t
|
||||
{
|
||||
if (EnsureAscii)
|
||||
{
|
||||
return is_ascii_copyable(data[i])
|
||||
? find_ascii_copyable_run(data + i, s.size() - i)
|
||||
: 0;
|
||||
}
|
||||
return string_bulk_run(data + i, s.size() - i);
|
||||
}();
|
||||
if (run != 0)
|
||||
{
|
||||
// emit any bytes still pending in string_buffer first to
|
||||
|
||||
Reference in New Issue
Block a user