From 45e19e47b2432bb43268e95c71ad66a0123247ab Mon Sep 17 00:00:00 2001 From: lisyarus Date: Mon, 5 Jan 2026 00:04:25 +0300 Subject: [PATCH] Fix parsing floating-point literals on clang --- libs/parser/rules/pslang.y | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/libs/parser/rules/pslang.y b/libs/parser/rules/pslang.y index cb1b14b..77ea339 100644 --- a/libs/parser/rules/pslang.y +++ b/libs/parser/rules/pslang.y @@ -48,7 +48,12 @@ template { T value; #ifdef __clang__ - value = std::strtoll(str.data(), nullptr, 10); + if constexpr (std::is_floating_point_v) + value = std::atof(str.data()); + else if constexpr (std::is_signed_v) + value = std::strtoll(str.data(), nullptr, 10); + else + value = std::strtoull(str.data(), nullptr, 10); #else auto result = std::from_chars(str.data(), str.data() + str.size(), value); if (result.ec != std::errc())