mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-04-21 12:05:15 +00:00
LibWasm: Allow Value::to<T>() to perform statically valid conversions
e.g. i32 -> i16 (if within range).
This commit is contained in:
parent
b10da81c7c
commit
eceb244bef
Notes:
sideshowbarker
2024-07-18 00:34:07 +09:00
Author: https://github.com/alimpfard Commit: https://github.com/SerenityOS/serenity/commit/eceb244bef Pull-request: https://github.com/SerenityOS/serenity/pull/18182 Reviewed-by: https://github.com/ADKaster ✅ Reviewed-by: https://github.com/LucasChollet
1 changed files with 6 additions and 4 deletions
|
@ -126,10 +126,12 @@ public:
|
|||
Optional<T> result;
|
||||
m_value.visit(
|
||||
[&](auto value) {
|
||||
if constexpr (IsSame<T, decltype(value)>)
|
||||
result = value;
|
||||
else if constexpr (!IsFloatingPoint<T> && IsSame<decltype(value), MakeSigned<T>>)
|
||||
result = value;
|
||||
if constexpr (IsSame<T, decltype(value)> || (!IsFloatingPoint<T> && IsSame<decltype(value), MakeSigned<T>>)) {
|
||||
result = static_cast<T>(value);
|
||||
} else if constexpr (!IsFloatingPoint<T> && IsConvertible<decltype(value), T>) {
|
||||
if (AK::is_within_range<T>(value))
|
||||
result = static_cast<T>(value);
|
||||
}
|
||||
},
|
||||
[&](Reference const& value) {
|
||||
if constexpr (IsSame<T, Reference>) {
|
||||
|
|
Loading…
Add table
Reference in a new issue